Так как теперь в бизнес-процессе обрабатывается не только отпуск за свой счёт, но и другие виды отпусков, изменим шаблон названия задачи Подготовить приказ на отпуск. Ранее в шаблоне названия мы использовали вид отпуска. Теперь настроим шаблон следующим образом: Подготовить приказ на отпуск для {$__createdBy.__name}.
Кроме этого, на форме задачи добавим вложенные свойства приложения Отпуск: Сотрудник и Вид отпуска.
Настройки свойства «Отпуск» на форме задачи
Настройка формы задачи «Подготовить приказ на отпуск»
Теперь настроим бизнес-процесс таким образом, чтобы задача на подготовку приказа не приходила, если он не требуется. Для этого будем использовать Шлюз.
Важно
Шлюзы представляют собой точки принятия решения в процессе. Они используются для того, чтобы направить процесс по той или иной ветке в зависимости от определённых условий.
Например, если сумма счёта большая, то его согласует не только непосредственный начальник сотрудника, оформившего счёт, но и генеральный директор. Если же сумма незначительная, то заявителю сразу выдадут деньги.
Шлюз работает только с контекстом бизнес-процесса. Чтобы была возможность определить, нужен приказ или нет, передадим эти данные из элемента приложения Вид отпуска в контекст бизнес-процесса.
Добавим в контекст процесса свойство Требуется приказ типа Выбор «да/нет».
Добавление нового свойства в контекст бизнес-процесса
Создадим в контексте бизнес-процесса ещё одно свойство и назовём его Дата начала отпуска. Его мы будем использовать для расчёта срока подготовки приказа.
Далее добавим на схему процесса элемент Присваивание, который поможет записать данные из элемента приложения в контекст бизнес-процесса. Разместим его после элемента Оповещение о согласовании, добавим переход.
Элемент «Присваивание» на схеме бизнес-процесса
Перейдём в настройки элемента Присваивание на вкладку Таблица соответствия и установим следующие соответствия:
- в поле Требуется приказ контекста процесса запишется значение поля Требуется приказ, соответствующее виду отпуска и содержащееся в элементе приложения Отпуск;
- в поле Дата начала отпуска контекста процесса запишется значение поля Дата начала, содержащееся в элементе приложения Отпуск.
Настройки элемента «Присваивание»
Установим срок выполнения задачи Подготовить приказ на отпуск: за 3 рабочих дня до даты начала отпуска.
Настройка времени выполнения задачи
Вынесем на схему процесса исключающий шлюз между элементом Присваивание и задачей Подготовить приказ на отпуск, добавим переходы.
Важно
Исключающий шлюз направляет процесс только по одному исходящему переходу.
Как только процесс достигнет шлюза, система проверит заданные условия и выберет тот переход, для которого условие выполнилось. Порядок проверки задаётся в настройках шлюза, на вкладке
Переходы.
Для исключающего шлюза обязательно должен быть указан переход по умолчанию.
Подпишем переход из Шлюза в задачу и настроим условие перехода. Процесс перейдёт к задаче Подготовить приказ на отпуск, если свойство процесса Требуется приказ имеет значение Да.
Настройка условий перехода
Шлюз на схеме бизнес-процесса
Теперь добавим ещё один переход из шлюза — на случай, когда сотрудник оформляет отпуск по временной нетрудоспособности, т. е. больничный. В этом случае необходимо, чтобы процесс приостановился до окончания отпуска, а после окончания отпуска инициатор получит задачу:
- с указанием номера больничного листа;
- возможностью продлить отпуск.
Для этого создадим в контексте бизнес-процесса новые свойства:
- Номер больничного листа типа Строка;
- Дата окончания отпуска типа Дата/время.
Контекст бизнес-процесса
Дату окончания будем получать из приложения Отпуск. Для этого изменим настройки элемента Присваивание, добавив получение в поле контекста Дата окончания отпуска значение Дата окончания из элемента приложения Отпуск.
Настройки элемента «Присваивание»
Добавим на схему бизнес-процесса элемент Таймер и соединим его со шлюзом:
Таймер на схеме бизнес-процесса
Настроим условия перехода:
Настройки перехода
Теперь настроим таймер. В сроке выполнения укажем переменную бизнес-процесса Дата окончания отпуска. В этом случае бизнес-процесс остановится на элементе Таймер до даты окончания отпуска. Как только она наступит, бизнес-процесс двинется дальше по схеме.
Настройки таймера
Добавим переход по умолчанию из шлюза. Он понадобится, например, в том случае, когда поле Требуется приказ окажется пустым. Такое может произойти, когда это поле будет не заполнено в элементе приложения Вид отпуска.
Переход по умолчанию на схеме бизнес-процесса
В случае, если параметр Требуется приказ не установлен, сотрудник отдела кадров получит задачу подготовить приказ. В этом примере мы добавили отдельный переход, а не использовали существующий для демонстрации логики настройки бизнес-процесса.
Перейдём в настройки шлюза и выберем переход по умолчанию:
Настройка перехода по умолчанию
На схему бизнес-процесса в зону ответственности инициатора добавим задачу Указать больничный лист и соединим её с Таймером.
Настроим форму задачи:
- добавим свойство Отпуск и его вложенные свойства: Вид отпуска, Дата начала, Дата окончания, Причина в режиме только для чтения;
- добавим свойство Номер больничного листа и сделаем его обязательным для заполнения.
Настройка формы задачи
Настроим переходы из задачи:
- для продления больничного листа и оповещения об этом руководителя;
- для закрытия больничного листа и оповещения об этом сотрудника отдела кадров. Вместо оповещения можно добавить задачу бухгалтеру для расчёта суммы больничных и её выплаты. Мы пропустим этот шаг, чтобы не повторять настройки уже знакомых элементов.
Обратим внимание на переход Продлить больничный. Если пользователь его выберет, он должен будет увидеть текущую дату окончания, а также указать новую дату окончания больничного. Настроим форму подтверждения для перехода.
Настройка формы подтверждения для перехода
На форме перехода выведем вложенное свойство Дата окончания приложения Отпуск, а также Дату окончания отпуска из контекста процесса. Для наглядности переименуем название на форме Даты окончания отпуска в Новую дату окончания больничного.
Настройки формы подтверждения для перехода
Пример формы подтверждения перехода в задаче
После продления больничного и оповещения руководителя необходимо записать обновлённую Дату окончания в элемент приложения Отпуск. Для этого воспользуемся блоком Изменение элемента. Установим его между оповещением Больничный лист продлен и Таймером, добавим переходы.
Блок «Изменение элемента» на схеме бизнес-процесса
В настройках блока Изменение элемента в качестве переменной выберем Отпуск. На вкладке Значения полей установим связь между полем приложения Дата окончания и переменной, содержащей новую дату окончания отпуска.
Настройка блока «Изменение элемента»
Настройка блока «Изменение элемента»
Изменим названия элементов для наглядности:
Схема бизнес-процесса