Activiti
Activiti — это легковесная платформа с открытым исходным кодом для управления бизнес-процессами (BPM) и рабочими потоками (workflow), реализованная на языке Java. Activiti позволяет моделировать, развёртывать, выполнять и мониторить бизнес-процессы, описанные в нотации BPMN 2.0 (Business Process Model and Notation). Платформа разрабатывается под эгидой компании Alfresco и распространяется на условиях лицензии Apache 2.0.
История
Проект Activiti был основан в 2010 году как ответвление (fork) от другой популярной BPM-системы — jBPM. Основная причина создания нового движка заключалась в желании разработчиков (включая Тома Бейенса и Йорга ван дер Маса) создать более лёгкую, простую в интеграции и ориентированную на сообщество платформу, в отличие от более тяжёлой и коммерциализированной jBPM.
Первая стабильная версия Activiti 5.0 была выпущена в декабре 2010 года. Она сразу привлекла внимание благодаря своей модульной архитектуре, поддержке Spring и встроенному веб-редактору процессов Activiti Explorer. В 2013 году вышла версия 5.13, которая стала основой для многих корпоративных внедрений.
В 2017 году произошёл раскол сообщества. Компания Alfresco, владеющая торговой маркой Activiti, выпустила коммерческую версию Activiti Enterprise (позже переименованную в Alfresco Process Services). Параллельно группа ключевых разработчиков создала форк под названием Flowable, который продолжил развитие оригинальной кодовой базы. Сам Activiti в версии 6.x и 7.x стал развиваться в сторону облачных решений и микросервисной архитектуры, получив название Activiti Cloud.
На 2024 год актуальной является версия Activiti 8.x, которая представляет собой полностью переработанную платформу, ориентированную на контейнеризацию (Docker, Kubernetes) и событийно-ориентированную архитектуру.
Архитектура и ключевые компоненты
Activiti имеет модульную архитектуру, что позволяет использовать его как в виде встроенной библиотеки в приложении, так и в качестве отдельного сервера процессов.
Движок процессов (Process Engine)
Ядро платформы. Это набор Java-библиотек, отвечающих за:
- Создание и управление экземплярами процессов — запуск, приостановка, завершение.
- Управление задачами (Task Service) — назначение, выполнение, делегирование задач пользователям.
- Управление переменными процесса — хранение и передача данных между узлами процесса.
- Управление сигналами и сообщениями — асинхронное взаимодействие между процессами и внешними системами.
- Управление историей — хранение данных о завершённых процессах для анализа и аудита.
Моделер (Modeler)
Веб-приложение (или плагин для Eclipse/IntelliJ IDEA), позволяющее визуально создавать диаграммы BPMN 2.0. Моделер генерирует XML-файл (BPMN-файл), который затем развёртывается на движке. В Activiti 7+ используется современный веб-моделер на JavaScript (Angular/React).
REST API
Activiti предоставляет обширный REST API (начиная с версии 5.12), что позволяет управлять процессами, задачами и данными через HTTP-запросы. Это делает платформу удобной для интеграции с фронтенд-приложениями (React, Vue.js) и микросервисами.
Формы (Forms)
Встроенная система для создания пользовательских форм, привязанных к задачам. Формы могут быть простыми (HTML) или сложными (на основе JavaScript-фреймворков). Данные из форм автоматически передаются в переменные процесса.
Ключевые возможности
Поддержка BPMN 2.0
Activiti полностью поддерживает спецификацию BPMN 2.0, включая:
- Базовые элементы: события (start, end, intermediate), действия (tasks), шлюзы (gateways — exclusive, parallel, inclusive).
- Расширенные элементы: подпроцессы (embedded, ad-hoc, transaction), границы событий (boundary events), сигналы, сообщения, ошибки.
- Пользовательские задачи (User Tasks): задачи, выполняемые человеком с назначением на роль или конкретного пользователя.
- Сервисные задачи (Service Tasks): автоматические вызовы Java-классов, веб-сервисов (SOAP/REST) или скриптов (Groovy, JavaScript).
Интеграция с экосистемой Java
- Spring Framework: Activiti тесно интегрирован со Spring, что позволяет использовать Dependency Injection, транзакции и управление сессиями.
- Spring Boot: начиная с версии 6, Activiti предоставляет стартеры для Spring Boot, что позволяет развернуть движок за несколько минут.
- JPA (Java Persistence API): возможность использовать существующие JPA-сущности в качестве переменных процесса.
Масштабируемость и кластеризация
Activiti поддерживает работу в кластерном режиме (с общей базой данных), что позволяет распределять нагрузку между несколькими узлами движка. Для распределённых сценариев используется Activiti Cloud, который опирается на Apache Kafka и RabbitMQ.
Управление версиями процессов
При развёртывании нового BPMN-файла Activiti автоматически создаёт новую версию процесса. Старые экземпляры продолжают выполняться по старой версии, а новые запуски идут по новой. Это позволяет проводить обновления без остановки системы.
Применение
Activiti используется в различных отраслях и сценариях:
- Автоматизация документооборота: согласование договоров, обработка заявок, управление входящей корреспонденцией.
- Управление заказами: обработка заказов от поступления до отгрузки, включая проверку кредитного лимита и резервирование товара.
- IT-процессы: автоматизация DevOps-пайплайнов (например, развёртывание приложений), управление инцидентами (ITIL).
- Финансовые услуги: обработка кредитных заявок, расчёт комиссий, антифрод-проверки.
- Здравоохранение: маршрутизация пациентов, управление клиническими испытаниями.
Пример использования
Типичный пример — процесс согласования командировки:
- Сотрудник заполняет форму заявки (User Task).
- Система проверяет бюджет (Service Task — вызов Java-класса).
- Если бюджет превышен, заявка направляется на согласование руководителю (Exclusive Gateway + User Task).
- После согласования заявка утверждается, и сотруднику отправляется уведомление (Service Task — вызов почтового сервиса).
Критика и ограничения
Несмотря на популярность, у Activiti есть ряд недостатков:
- Сложность версионирования: в версиях до 7.x обновление схемы базы данных (migration) могло быть проблематичным.
- Отсутствие встроенного портала: в отличие от коммерческих BPM-систем (например, Pega или IBM BPM), Activiti не предоставляет готового пользовательского интерфейса для конечных пользователей, требуя разработки фронтенда.
- Раскол сообщества: появление форка Flowable привело к фрагментации экосистемы, и часть разработчиков и компаний перешла на Flowable, считая его более стабильным и документированным.
Сравнение с аналогами
| Платформа | Основной язык | Лицензия | Ключевая особенность |
|---|---|---|---|
| Activiti | Java | Apache 2.0 | Лёгкость, интеграция со Spring |
| Flowable | Java | Apache 2.0 | Форк Activiti, лучшая документация |
| Camunda | Java | Apache 2.0 | Мощный моделер, поддержка DMN (Decision Model and Notation) |
| jBPM | Java | Apache 2.0 | Глубокая интеграция с Drools (правила) |
| Bonita | Java | GPL / Коммерческая | Визуальный дизайнер, встроенный портал |
См. также
- BPMN 2.0
- Управление бизнес-процессами
- Рабочий поток
- Spring Framework
Источники
- Официальная документация проекта Activiti (activiti.org)
- BPMN 2.0 Specification (OMG)
- Книга «Activiti in Action» (Tijs Rademakers, 2012)
- Статья «A Comparative Study of Open Source BPM Systems» (Journal of Systems and Software, 2016)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →