Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Якорь
зачем нужны очереди ресурсов
зачем нужны очереди ресурсов
Очереди ресурсов необходимы для хранения данных и последовательного доступа к ним. 

Информация
title

Очереди ресурсов применяются в целях:

  • ускорения обработки данных (например, когда параллельно работают 2 и более роботов)
  • обмена данными между роботами, в особенности если роботы исполняются на разных машинах
  • получения данных в определенном порядке

...

  • Значения. Это данные различного типа (строка, число, коллекция, путь к папке и т.д.)
  • Параметров. Параметры ресурса – это его дополнительные свойства, необходимые при поиске и работе с ресурсами. Подробнее о параметрах: "Карточка очереди ресурсов"
ресурсов может
Информация
title

С очередью

ресурсов может работать:

  • Пользователь Пользователь - через интерфейс Оркестратора
  • Программный робот при помощи действий, которые могут добавлять новые ресурсы в очередь, удалять старые, получать и изменять их значение и параметры. Это действия из группы "Оркестратор", подгруппы "Очереди ресурсов":
    • Создать ресурс
    • Изменить ресурс
    • Получить коллекцию ресурсов
    • Получить ресурс по ID
    • Получить ресурс по условию
    • Разблокировать ресурс
    • Удалить ресурс
    • Завершить обработку ресурса

...

Если роботы должны обрабатывать ресурсы из одной и той же очереди, то без дополнительных ограничений они начнут брать в работу одни и те же ресурсы. Чтобы такое не происходило, можно использовать механизм блокировок ресурсов. В целом он

Подсказка
titleМеханизм блокировок ресурсов работает следующим образом:
  1. Робот 1 читает 1-й ресурс и при этом сразу его блокирует для других роботов.
  2. 1-й ресурс уже заблокирован Роботом 1, поэтому Робот 2 не сможет его получить и начнет читать 2-й ресурс. И также заблокирует 2-й ресурс для других роботов.
  3. Робот 1 заканчивает работу с 1-м ресурсом и устанавливает ему статус "Обработан".
  4. Робот 1 ищет следующий ресурс. 2-й ресурс уже заблокирован Роботом 2, поэтому Робот 1 не сможет его получить и начнет читать 3-й ресурс, блокируя его для других роботов.
  5. Робот 2 заканчивает работу со 2-м ресурсом и устанавливает ему статус "Обработан".
  6. Робот 2 ищет следующий ресурс:
    • 1-й ресурс уже в статусе "Обработан", поэтому Робот 2 его не найдет
    • 3-й ресурс уже заблокирован Роботом 1, поэтому Робот 1 не сможет его получить
    В итоге Робот 2 начнет читать 4-й ресурс, блокируя его для других роботов.
  7.  И т.д.

Таким образом, два робота последовательно обрабатывают ресурсы очереди, не пересекаясь друг с другом.

Тот, кто устанавливает блокировку, является ее инициатором. Есть несколько правил относительно инициаторов:

  • Если блокировку устанавливает робот, то инициатором является не сам робот, а его экземпляр. Например, дважды запустили одного и того же робота, т.е. 2 его экземпляра. 1-й экземпляр блокирует ресурс, и становится инициатором этой блокировки. 2-й экземпляр уже не сможет управлять этим заблокированным ресурсом, т.к. его инициатором является 1-й экземпляр.
  • Установленная блокировка не накладывает ограничений на инициатора этой блокировки. Инициатор может обрабатывать свой заблокированный ресурс, снимать установленную блокировку.
  • Если инициатор блокировки - робот, на пользователя это не накладывает никакие ограничения: он может читать, изменять ресурс, в том числе менять и установленные блокировки. Роботы такими правами не обладают: если инициатор блокировки кто угодно, но не данный экземпляр робота, то работа с ресурсом для него будет ограничена.
Информация

В платформе Robin предусмотрено несколько видов блокировок:

  1. На чтение. Если ресурс заблокирован на чтение, то он будет скрыт системой от всех других роботов, кроме инициатора этой блокировки. Роботы не смогут найти ресурс действиями с поиском по условию, т.к роботы не найдут ресурс, то не смогут ни прочитать, ни изменить его. Однако есть небольшое исключение при попытке поиска ресурса по его точному идентификатору (если он заранее известен):
    • Если выполняется поиск ресурса для его чтения, то робот сможет найти ресурс, но встанет в ожидание снятия блокировки на чтение (максимальное время ожидания настраивается в соответствующем действии робота). Т.е. без снятия блокировки прочитать ресурс все равно нельзя
    • Если выполняется поиск ресурса для его изменения, то робот сможет найти и изменить ресурс, т.к. блокировка на чтение не блокирует изменение ресурса
  2. На запись. Если ресурс заблокирован только на запись, другие роботы (кроме инициатора) смогут найти этот ресурс и получить его значение и параметры. Но изменение ресурса им будет недоступно. Если робот попытается изменить такой ресурс, то робот встанет в ожидание снятия блокировки на запись (максимальное время ожидания настраивается в соответствующем действии робота).
  3. На чтение и на запись. Ресурсы, заблокированные и на запись, и на чтение, обладает совокупностью особенностей этих блокировок. При этом допустимо, что у этих блокировок могут быть разные инициаторы.

Если робот заблокировал ресурсы, и не снял с них блокировку перед завершением своей работы, то система автоматически снимет эти блокировки. Не будут сняты только блокировки, для которых установлена конкретная дата их снятия.

...

  1. Нажать на кнопку "Изменить параметры ресурса" в строке с нужным ресурсом (в таблице ресурсов). Откроется окно "Параметры ресурса":
  2. Внести необходимые корректировки.
  3. Нажать на кнопку «Сохранить» для подтверждения внесенных изменений. Или нажать на кнопку "Отменить", если решили не применять изменения.Окно "Параметры ресурса" закроется.

Описание окна "Параметры ресурса"

Название кнопки\поля

Описание

Идентификатор ресурсаНередактируемая строка с идентификатором ресурса, параметры которого открыли

Поле "Статус"

Выпадающий список, в котором можно поменять статус ресурса

Информация

Возможные статусы:

  • Новый
  • В работе
  • Обработан
  • Ошибка

Пользователь может изменять статус ресурса на любой другой статус в любом порядке

Поле "Теги"

Слова или фразы, дополнительно описывающие ресурс (в основном нужны при поиске ресурса роботом)

У каждого тега есть кнопка в виде крестика для его удаления

По нажатию на кнопку  добавляется поле для ввода ввода нового тега. Максимально допустимое количество символов при вводе тега = - 30

Поле "Приоритет"

Приоритет обработки ресурса относительно других ресурсов очереди

Допустимые значения: целые числа от 0 и выше

Чекбокс "Заблокировать на чтение"

Если чекбокс включен:

  • ресурс будет заблокирован на чтение
  • поле "Дата снятия блокировки на чтение" активно для редактирования
  • справа отображается инициатор блокировки

Подробнее о работе блокировок описано выше

Поле "Дата снятия блокировки на чтение"

Поле для ввода даты и времени, до наступления которых ресурс будет заблокирован на чтение

Если ресурс был заблокирован роботом, а пользователь меняет или убирает дату в этом поле, то инициатором блокировки становится пользователь

Необходимое значение даты/времени можно указать вручную или при помощи формы выбора даты и времени, которая открывается по нажатию на кнопку

Если чекбокс "Заблокировать на чтение" выключен, данное поле недоступно для редактирования

Чекбокс "Заблокировать на запись"

Если чекбокс включен:

  • ресурс будет заблокирован на запись
  • поле "Дата снятия блокировки на запись" активно для редактирования
  • справа отображается инициатор блокировки

Подробнее о работе блокировок описано выше

Поле "Дата снятия блокировки на запись"

Поле для ввода даты и времени, до наступления которых ресурс будет заблокирован на запись

Если ресурс был заблокирован роботом, а пользователь меняет или убирает дату в этом поле, то инициатором блокировки становится пользователь

Необходимое значение даты/времени можно указать вручную или при помощи формы выбора даты и времени, которая открывается по нажатию на кнопку

Если чекбокс "Заблокировать на запись" выключен, данное поле недоступно для редактирования

Кнопка "Сохранить"При нажатии на кнопку окно закрывается, все внесенные изменения сохраняются

Кнопка "Отменить"

При нажатии появляется окно с подтверждением отмены внесенных изменений: