Реимплементация процессов -------------------------- В Synergy 4.1 был полностью исключен модуль JBPM, который использовался для управления процессами в документах. Теперь вся реализация процессов полностью включена в ядро платформы. При этом было изменено поведение так называемых "специальных процессов" - то есть тех, которые выполняются автоматически, без участия пользователя. К специальным процессам относятся: * назначение на должность * перевод * увольнение * копирование в личное дело * назначение календаря * копирование в карточку * переназначение работ * отправка документа по форме * сопоставление в реестр * событие реестра * результат запроса * таймер Для всех этих типов действий была добавлена возможность запуска группы последовательных этапов **в единой транзакции**: для этапа со специальным процессом добавлена возможность добавления к нему последовательных подэтапов. Таким образом обеспечивается транзакционная целостность специальных процессов. Изменения без поддержки обратной совместимости ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #. В Административном приложении удален раздел "Обслуживание системы" - "Процессы". Обновление процессов после обновления системы не требуется. #. Удалены методы API, обеспечивающие обновление процессов: - ``rest/api/admin/processes/available`` - ``rest/api/admin/processes/not_actual`` - ``rest/api/admin/processes/update`` #. Удалена схема базы данных ``jbpmdb``. Пример ~~~~~~~~~~~ Рассмотрим синтетический, но достаточно наглядный пример, когда нужно одним приказом об отпуске сотрудника изменить его статус, переназначить его работы на другого сотрудника, скопировать сведения об отпуске в личную карточку сотрудника, а сам приказ - в его личное дело. Маршрут активации записи реестра приказов может быть таким: 1. Согласование 2. Назначение календаря 3. Копирование в личное дело 4. Копирование в карточку 5. Переназначение работ 6. Регистрация Сначала добавим этапы "Согласование" и “Назначение календаря”. Текущий вид редактора маршрутов: .. figure:: ../_static/image_1.png Обратите внимание на выделенную кнопку |добавить подэтап| "Добавить последовательный": эта кнопка активна только для специальных процессов и добавляет новый последовательный подэтап, который будет выполнен в единой транзакции с текущим этапом: .. figure:: ../_static/image_3.png .. |добавить подэтап| image:: ../_static/image_2.png При добавлении нового последовательного подэтапа список доступных типов действий фильтруется: в нем отображаются только специальные процессы. Последовательные подэтапы визуально выделяются в маршруте пунктирной стрелкой слева. Группа подэтапов может быть целиком перемещена вверх или вниз в маршруте с помощью стрелок |стрелка вверх| или |стрелка вниз|, перемещать подэтапы внутри группы можно обычными стрелками. .. |стрелка вверх| image:: ../_static/image_4.png .. |стрелка вниз| image:: ../_static/image_5.png Добавим еще несколько последовательных подэтапов в группу: .. figure:: ../_static/image_6.png Видно, что последовательные этапы нумеруются внутри своей группы. Полный маршрут реестра приказов выглядит таким образом: .. figure:: ../_static/image_7.png При такой организации маршрута в случае возникновения ошибки при выполнении одного из последовательных подэтапов будут полностью отменены изменения, внесенные каждым из предыдущих подэтапов этой транзакции. .. note:: При обновлении Synergy специальные процессы **не будут** автоматически оформлены в такие группы последовательных подэтапов. Разработчику Synergy нужно будет самостоятельно проверить маршруты, настроенные в приложениях, и при необходимости перенастроить их для обеспечения транзакционной целостности их выполнения.