Архитектура ВPM --------------- В платформе Arta Synergy реализован движок бизнес процессов Arta BPM, который дает возможность аналитику настраивать и запускать бизнес процессы в runtime режиме без деплоя и перезапуска сервера приложений. Определим термины, которые используются в Arta BPM: * маршрут (route) представляет собой совокупность действий, выполняемых в опредленном порядке, с заданной логикой для решения задачи бизнес процесса * этап маршрута (item) - составная часть маршрута. Маршрут состоит из последовательных этапов, по завершению которых маршрут считается завершенным * подэтап маршрута (subitem) - часть этапа маршрута с заданной логикой. Этап может состоять из нескольких параллельных подэтапов * тип процесса определяет логику подэтапа маршрута .. figure:: _static/img/architecture/bpm_structure.png Схема маршрута Подэтап маршрута определяется типом процесса, например, согласование, работа, утверждение, блокирующий процесс и прочие. В Arta BPM предоставляются из коробки 24 типа процесса. Процессы делятся по следующим признакам: По назначению: * стандартные процессы, доступные всем пользователям * специальные процессы, настраиваемые synergy developer По поведению: * альтернативные, результат которых вляет на выполнение маршрута * не альтернативные По типу выполнения: * автоматически выполняющиеся * ожидающие действий пользователя Подэтапов может быть несколько в этапе. Этап считается завершенным, когда все его подэтапы завершены. Маршрут завершится, когда последний его этап будет завершен. .. figure:: _static/img/architecture/bpm_logic.png Логика выполнения маршрута Главная логика маршрута в запуске его этапов и ожидании сигнала от них. Этап запускает подэтапы, которые выполняют логику свойственную типу процесса подэтапа. Этап также переходит в состояние ожидания сигналов от подэтапов. При получении сигнала этап проверяет, все ли подэтапы завершены, если да, то завершается сам и посылает сигнал маршруту о завершении. Маршрут, получив сигнал, проверяет, есть ли следующие этапы для запуска, если да, то запускает следующий в очереди этап, иначе завершается.