Условные переходы
=================

Условные переходы используются в маршрутах бизнес-процессов
для управления дальнейшим выполнением маршрута
в зависимости от значений данных и результатов выполнения этапов.

С помощью условных переходов можно реализовать разветвленную логику,
когда процесс развивается по разным сценариям
в зависимости от введенных пользователем данных
или состояния документа.


Раздел «Переходы»
-----------------

Настройка условных переходов выполняется
во вкладке **«Переходы»** соответствующего этапа маршрута.

Вкладка содержит:

* кнопку **«Редактировать»**;
* список настроенных переходов;
* переход по умолчанию с указанием результата выполнения.

.. figure:: /images/conditional_transitions_tab.png

   Вкладка «Переходы» этапа маршрута


Редактирование переходов
------------------------

Для настройки условных переходов:

1. Откройте этап маршрута.
2. Перейдите во вкладку **«Переходы»**.
3. Нажмите кнопку **«Редактировать»**.

После этого откроется диалоговое окно
**«Редактирование переходов»**,
в котором настраиваются условия и результаты переходов.


Структура условия перехода
--------------------------

Каждое условие перехода
представляет собой набор сравнений,
объединенных логическими операторами **«И»** или **«ИЛИ»**.

Условие считается выполненным,
если результат вычисления выражения равен *Истина*.


Сравнение в условии
-------------------

Каждое сравнение состоит из трех элементов:

* **Левый операнд**
  — идентификатор (id) компонента формы или поля реестра, значение которого участвует в проверке;

* **Оператор сравнения**
  — тип сравнения между значениями;

* **Правый операнд**
  — значение, с которым выполняется сравнение.


Операторы сравнения
-------------------

В системе доступны следующие операторы сравнения.


Для числовых значений
~~~~~~~~~~~~~~~~~~~~~

* ``=``
* ``<``
* ``>``
* ``<=``
* ``>=``
* ``<>``


Для строковых значений
~~~~~~~~~~~~~~~~~~~~~~

* совпадает
* не совпадает
* начинается с
* не начинается с
* заканчивается на
* не заканчивается на
* содержит
* не содержит


Переход по умолчанию
--------------------

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

Для перехода по умолчанию доступны следующие варианты действий.


Запуск маршрута по шаблону
~~~~~~~~~~~~~~~~~~~~~~~~~~

При выборе варианта **«Запустить маршрут по шаблону»**
необходимо указать шаблон маршрута,
который будет запущен автоматически.

Дополнительно настраиваются параметры:


Поле «Запускать от имени»
^^^^^^^^^^^^^^^^^^^^^^^^^

Определяет, от имени какого пользователя будет запущен маршрут.

Доступные варианты:

* **Не изменять**
  — маршрут запускается от имени пользователя, инициировавшего родительский процесс (по умолчанию);

* **Из компонента**
  — пользователь берется из компонента формы типа **«Объекты Synergy → Пользователи»**;

* **Указать**
  — пользователь выбирается вручную через стандартный компонент выбора пользователя.


Поле «После выполнения»
^^^^^^^^^^^^^^^^^^^^^^^

Определяет поведение маршрута
после завершения запущенного подмаршрута.

Доступные варианты:

* **Продолжить маршрут**
  — выполнение продолжается со следующим этапом основного маршрута;

* **Перейти к этапу**
  — выполняется переход к указанному этапу основного маршрута (по номеру или коду этапа).


Переход к этапу
~~~~~~~~~~~~~~~

Вариант **«Перейти к этапу»**
используется,
когда необходимо напрямую перейти
к определенному этапу основного маршрута
без запуска дополнительного маршрута.

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


Рекомендации по использованию
-----------------------------

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

* использовать понятные и однозначные условия;
* избегать избыточных сравнений;
* предусматривать переход по умолчанию;
* проверять корректность всех веток маршрута.

Корректно настроенные условные переходы
обеспечивают предсказуемое и управляемое
поведение бизнес-процесса.
