Формулировка проблемы: необходима возможность «разветвить» маршрут, либо запуская в зависимости от каких-либо условий шаблон маршрута, либо переходя к какому-либо этапу основного маршрута.
Решение: необходимо реализовать новый процесс
действия Условный переход
. Параметры этого
процесса представляют собой набор условных
переходов, которые исполняются по порядку (который можно
изменять). Кроме этого, имеется возможность добавить
Переход по умолчанию
, который не содержит условий
и всегда выполняется последним. Эти переходы можно представить в
виде следующей конструкции (на псевдокоде):
if условие действие elif условие действие elif условие действие ... else действие_по_умолчанию
Каждое условие представляет собой набор
сравнений, которые можно соединять между собой
логическими операторами «И» либо «ИЛИ». Новое сравнение в переход
можно добавить, выбрав в списке соединения значение «И» либо «ИЛИ»
(по умолчанию там указано «[нет
]»), при этом
появляется новая строка сравнения, связанная с предыдущим сравнением
через, соответственно, «И» либо «ИЛИ». После этого из списка,
принадлежащего этому сравнению, пункт «[нет
]»
пропадает — больше его выбрать нельзя. Удалить сравнение (кроме
первого в переходе) можно, нажав на соответствующую иконку. Если
удаляемое сравнение является последним в условном переходе, то у
предыдущего сравнения значение соединения выставляется в
«[нет
]».
Каждое сравнение представляет собой упорядоченную тройку «левый операнд», «оператор сравнения», «правый операнд». Левым операндом может являться идентификатор компонента формы реестра, значение которого будет использоваться для сравнения, правый операнд — «Значение» — значение, с которым сравнивают левый операнд. Возможные операторы сравнения:
=
, <
,
>
, <=
,
>=
, <>
— для
численных значений
«совпадает», «не совпадает», «содержит», «не содержит», «начинается с», «не начинается с», «заканчивается на», «не заканчивается на» - для строковых значений.
езультатом вычисления условия может быть истина
или ложь
. В случае истинного результата обработка
следующих переходов прекращается и либо запускается маршрут по
шаблону (с опциональным указанием пользователя, от имени которого
его запускать), либо указывается номер этапа основного маршрута, к
которому нужно перейти. Переход по умолчанию (если он имеется)
всегда выполняется последним.