1.2.2.1. Архитектура ВPM¶
В платформе Arta Synergy реализован движок бизнес процессов Arta BPM, который дает возможность аналитику настраивать и запускать бизнес процессы в runtime режиме без деплоя и перезапуска сервера приложений.
Определим термины, которые используются в Arta BPM:
- маршрут (route) представляет собой совокупность действий, выполняемых в опредленном порядке, с заданной логикой для решения задачи бизнес процесса
- этап маршрута (item) - составная часть маршрута. Маршрут состоит из последовательных этапов, по завершению которых маршрут считается завершенным
- подэтап маршрута (subitem) - часть этапа маршрута с заданной логикой. Этап может состоять из нескольких параллельных подэтапов
- тип процесса определяет логику подэтапа маршрута

Схема маршрута
Подэтап маршрута определяется типом процесса, например, согласование, работа, утверждение, блокирующий процесс и прочие. В Arta BPM предоставляются из коробки 24 типа процесса.
Процессы делятся по следующим признакам:
По назначению:
- стандартные процессы, доступные всем пользователям
- специальные процессы, настраиваемые synergy developer
По поведению:
- альтернативные, результат которых вляет на выполнение маршрута
- не альтернативные
По типу выполнения:
- автоматически выполняющиеся
- ожидающие действий пользователя
Подэтапов может быть несколько в этапе. Этап считается завершенным, когда все его подэтапы завершены. Маршрут завершится, когда последний его этап будет завершен.

Логика выполнения маршрута
Главная логика маршрута в запуске его этапов и ожидании сигнала от них. Этап запускает подэтапы, которые выполняют логику свойственную типу процесса подэтапа. Этап также переходит в состояние ожидания сигналов от подэтапов. При получении сигнала этап проверяет, все ли подэтапы завершены, если да, то завершается сам и посылает сигнал маршруту о завершении. Маршрут, получив сигнал, проверяет, есть ли следующие этапы для запуска, если да, то запускает следующий в очереди этап, иначе завершается.