Справка по системе Платформа ELMA BPM
×
Меню

Маркеры операций

Маркер показывает, что у операции есть дополнительные параметры выполнения. В системе ELMA BPM существуют следующие маркеры:
Маркеры устанавливаются для операций:
Перечень доступных для операции маркеров зависит от её типа:
Кнопка Изменить маркер позволяет указать маркер операции. При этом в окне настройки операции появляется дополнительная вкладка, соответствующая маркеру.
Рис. 1. Кнопка "Изменить маркер" и окно выбора маркера операции

Условная операция

При выборе этого маркера в окне настройки операции появляется вкладка Условие выполнения.
Вкладка "Условие выполнения"
Условие выполнения операции можно задать в виде таблицы, содержащей одно или несколько условий (рис. 2) или с помощью сценария (рис. 3).
Табличный вид условия
В табличном виде предлагается добавить последовательно одно или несколько условий, а так же операцию, используемую для вычисления результата проверки условий. Если после вычислений получен результат "истина", операция запускается в работу, иначе операция пропускается и процесс продолжает работу, используя переход по умолчанию.
В каждом условии контекстная переменная процесса сравнивается либо с другой контекстной переменной, либо с заданным значением.
Рис. 2. Вкладка "Условие выполнения". Табличный вид условия
- добавить условие. - удалить условие.
Связка - операция, используемая для вычисления результата проверки условий:
Связка доступна в том случае, если задано более одного условия.
Внимание!
В таблице условий связки И, И-НЕ имеют приоритет перед связками ИЛИ, ИЛИ-НЕ. Например: Условие1 ИЛИ Условие2 И Условие3 ИЛИ-НЕ Условие4 И-НЕ Условие5 = Условие1 ИЛИ (Условие2 И Условие3) ИЛИ-НЕ (Условие4 И-НЕ Условие5).
Операнд 1 - контекстная переменная процесса.
Операция - операция сравнения.
Операнд 2 - контекстная переменная процесса или конкретное значение, с которым сравнивается Операнд 1.
Чтобы выбрать связку, операнды и операцию, нужно кликать мышью по соответствующим ссылкам в столбцах таблицы.
Вид условия "Сценарий"
В выпадающем списке выберите сценарий. Сценарий - это функция, написанная на языке C#. Сценарий можно выбрать из выпадающего списка или добавить с помощью кнопки . Используемый сценарий должен возвращать булево значение (тип данных C# bool, значение "true" или "false").
Кнопка Перейти позволяет перейти к выбранному сценарию на вкладке Сценарии процесса. На данной вкладке доступны специальные инструменты написания сценариев, такие как синтаксическая подсветка кода, технология автодополнения функций и переменных IntelliSense, ссылки на сборки и веб-сервисы.
Рис. 3. Вкладка "Условие выполнения". Вид условия Сценарий

Цикл

При выборе этого маркера в окне настройки операции появляется вкладка Условие выполнения цикла.
Вкладка "Условие выполнения цикла"
В блоке Время проверки условия продолжения цикла необходимо указать, когда необходимо проверять условие - до выполнения операции или после нее. В случае, если условие при достижении элемента не выполняется, а условия цикла проверяются после выполнения операции, операция будет выполнена. Если условие не выполняется, а условия цикла проверяются до выполнения операции, операция не будет выполнена ни разу.
Ниже, так же как для маркера Условная операция (см. выше), задайте условие в виде таблицы или сценария.
Операция повторяется до тех пор, пока выполняется условие выполнения цикла. Работа по процессу продолжается, если условие не выполнено.
Рис. 4. Вкладка "Условие выполнения цикла"

Множественное выполнение

Этот маркер доступен для операции Внешний подпроцесс (рис. 5).
Он используется, когда необходимо одновременно запустить несколько экземпляров подпроцесса. При этом родительский процесс не ожидает завершения этих экземпляров, продолжая работу в соответствии с моделью, а запущенные экземпляры подпроцесса выполняются независимо от родительского.
Чаще всего маркер Множественное выполнение применяется, когда требуется запустить подпроцесс и продолжить работу по родительскому процессу, не ожидая завершения подпроцесса.
При выборе этого маркера в окне настройки операции "Внешний подпроцесс" появляется вкладка Множественное выполнение.
Вкладка "Множественное выполнение"
На этой вкладке необходимо указать количество запускаемых экземпляров внешнего подпроцесса. Можно указать точное значение (рис. 5) или контекстную переменную, используемую для определения количества запускаемых экземпляров (рис. 6).
Рис. 5. Вкладка "Множественное выполнение". Точное значение количества запускаемых подпроцессов
Контекстная переменная - переменная, имеющая тип "Целое число". Она может быть заполнена с помощью сценария или в пользовательской задаче. Эта переменная должна быть заполнена до того, как в процессе будет достигнута настраиваемая операция.
Кнопка Добавить переменную позволяет создать в процессе новую контекстную переменную, имеющую тип "Целое число", используемую для хранения количества экземпляров подпроцесса.
Рис. 6. Вкладка "Множественное выполнение". Определение количества запускаемых подпроцессов через контекстную переменную
Пример
Как правило, требуется запуск множества внешних подпроцессов с различным набором контекстных переменных. В примере рассмотрим массовую постановку одной задачи множеству пользователей. Помимо списка пользователей, потребуется знать количество пользователей в списке и постановщика задачи. Количество пользователей будем вычислять в сценарии. Для определения постановщика задач настроим динамическую зону ответственности, используем переменную для определения/хранения исполнителя (рис. 7). Подпроцессы будем запускать по одному, последовательно перебирая список пользователей и передавая элементы списка в переменную Исполнитель задачи.
Рис. 7. Пример применения операции "Множественное выполнение". Настройки зоны ответственности родительского процесса
В итоге получим следующий набор контекстных переменных для родительского процесса, необходимых для запуска множества подпроцессов:
Кроме обязательных переменных определим также вспомогательные, передаваемые в подпроцесс:
От постановщика задачи при этом потребуется заполнить только Список исполнителей, Наименование и Текст задачи. Для этого разместим в его зоне ответственности единственную в процессе задачу "Поставить задачу и выбрать пользователей" и настроим в ней простую форму заполнения указанных контекстных переменных (рис. 8).
Рис. 8. Пример применения операции "Множественное выполнение". Настройки операции "Поставить задачу и выбрать пользователей"
После того, как постановщик задачи указал необходимые параметры, нам необходимо знать количество пользователей, указанное в списке. Для этого разместим в процессе операцию "Сценарий", для которой зададим сценарий подсчета количества элементов в блоке:
context.KolichestvoIspolniteley = context.SpisokIspolnitel.Count;
Далее размещаем Исключающий ИЛИ-Шлюз, из которого настраиваем 2 выхода:
Рис. 9. Пример применения операции "Множественное выполнение". Настройки перехода к множественному подпроцессу
В сценарии выбора исполнителя берем последний элемент списка исполнителей, и присваиваем его значение переменной Исполнитель задачи. Счетчик элементов списка, в качестве которого выступает переменная Количество исполнителей, уменьшаем на единицу:
context.KolichestvoIspolniteley = context.KolichestvoIspolniteley - 1;
context.IspolniteljZadachi = context.SpisokIspolnitel.ToArray()[(int)context.KolichestvoIspolniteley].Ispolnitelj;
Обратите внимание, что мы сначала уменьшаем счетчик на единицу, и только после этого используем его значения в качестве номера элемента массива. Это связано с тем, что массивы в языке C#, на котором пишутся сценарии, нумеруются с нуля, а значит номер последнего элемента массива на единицу меньше его размера.
Теперь необходимо передать настроенные контекстные переменные во внешний подпроцесс. Для этого разместим операцию "Внешний подпроцесс", выберем процесс который необходимо запустить. В контексте этого процесса нам необходимы следующие переменные:
Эти переменные должны использоваться в качестве входных значений (рис. 10).
Рис. 10. Пример применения операции "Множественное выполнение"Настройки контекста подпроцесса
Настраиваем для операции типа Внешний подпроцесс с маркером Множественное выполнение родительского процесса, названной в данном примере "Подпроцесс множественного выполнения", входные переменные (рис. 11).
Рис. 11. Пример применения операции "Множественное выполнение". Настройки операции "Подпроцесс множественного выполнения" родительского процесса
После запуска подпроцесса, в родительском процессе необходимо вернуться к размещенному ранее Исключающему ИЛИ-Шлюзу для проверки оставшегося количества исполнителей в списке. На этом завершается моделирование родительского процесса (рис. 12).
Рис. 12. Пример применения операции "Множественное выполнение". Графическая модель родительского процесса

См. также: