logo

[ELMA3] Пример назначения задачи нескольким пользователям с помощью подпроцесса

Пример показывает, каким образом можно в бизнес-процессе назначить одинаковые задачи нескольким пользователям одновременно.


Назначить задачи нескольким пользователям одновременно можно, используя внешний подпроцесс с маркером Множественное выполнение. Но тогда контекст из подпроцесса обратно в родительский передаваться не будет.
Сделать это можно следующим образом:

1. В задаче записать в контекстную переменную типа Блок всех пользователей, которым нужно раздать одинаковые задачи (в Блоке должно быть свойство типа Пользователь).

2. После задачи нужно поставить операцию Сценарий, в котором записать в контекстную переменную количество элементов в блоке:

context.Kolichestvo = context.Blok.Count;


3. Поставить еще одну операцию Сценарий:

context.Kolichestvo = context.Kolichestvo-1;
context.Adresat = (User)context.Blok.ToArray()[(int)context.Kolichestvo].Ispolnitelj;

Контекстные переменные процесса:

  • Блок - блок, содержащий исполнителей задачи;
  • Адресат - выходная переменная типа Пользователь;
  • Количество - переменная типа Целое число.

4. Затем поставить операцию Внешний подпроцесс, указать маркер Множественное выполнение, в настройках указать входную переменную Адресат. Внутри внешнего процесса нужно, чтобы зона ответственности была динамическая с использованием выбора из списка, переменную для определения исполнителя следует выбрать Адресат. Во внешнем подпроцессе должна быть входная переменная типа Пользователь, используемая в зоне ответственности.

5. Поставить условие проверки окончания блока. Для этого можно поставить Исключающий ИЛИ-Шлюз, на переходах которого проверять переменную Количество: если она не равна нулю, то переходим на второй сценарий, где будет выбран следующий элемент. Если Количество равно 0, то уходим в конец процесса.