Задача [BPM5]: Процесс условного перехода в маршрутах

Формулировка проблемы: необходима возможность «разветвить» маршрут, либо запуская в зависимости от каких-либо условий шаблон маршрута, либо переходя к какому-либо этапу основного маршрута.

Решение: необходимо реализовать новый процесс действия Условный переход. Параметры этого процесса представляют собой набор условных переходов, которые исполняются по порядку (который можно изменять). Кроме этого, имеется возможность добавить Переход по умолчанию, который не содержит условий и всегда выполняется последним. Эти переходы можно представить в виде следующей конструкции (на псевдокоде):

if условие действие
elif условие действие
elif условие действие
...
else действие_по_умолчанию

Каждое условие представляет собой набор сравнений, которые можно соединять между собой логическими операторами «И» либо «ИЛИ». Новое сравнение в переход можно добавить, выбрав в списке соединения значение «И» либо «ИЛИ» (по умолчанию там указано «[нет]»), при этом появляется новая строка сравнения, связанная с предыдущим сравнением через, соответственно, «И» либо «ИЛИ». После этого из списка, принадлежащего этому сравнению, пункт «[нет]» пропадает — больше его выбрать нельзя. Удалить сравнение (кроме первого в переходе) можно, нажав на соответствующую иконку. Если удаляемое сравнение является последним в условном переходе, то у предыдущего сравнения значение соединения выставляется в «[нет]».

Каждое сравнение представляет собой упорядоченную тройку «левый операнд», «оператор сравнения», «правый операнд». Левым операндом может являться идентификатор компонента формы реестра, значение которого будет использоваться для сравнения, правый операнд — «Значение» — значение, с которым сравнивают левый операнд. Возможные операторы сравнения:

Рисунок 293. Диалог "Параметры процесса условного перехода"

Диалог "Параметры процесса условного перехода"

Рисунок 294. Диалог с добавленым "Переходом по умолчанию"

Диалог с добавленым "Переходом по умолчанию"

Рисунок 295. Диалог с добавленным "Переходом"

Диалог с добавленным "Переходом"

Рисунок 296. Диалог с несколькими переходами

Диалог с несколькими переходами

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