Открыть сервис

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).
  • Финансовые услуги: обработка кредитных заявок, расчёт комиссий, антифрод-проверки.
  • Здравоохранение: маршрутизация пациентов, управление клиническими испытаниями.

Пример использования

Типичный пример — процесс согласования командировки:

  1. Сотрудник заполняет форму заявки (User Task).
  2. Система проверяет бюджет (Service Task — вызов Java-класса).
  3. Если бюджет превышен, заявка направляется на согласование руководителю (Exclusive Gateway + User Task).
  4. После согласования заявка утверждается, и сотруднику отправляется уведомление (Service Task — вызов почтового сервиса).

Критика и ограничения

Несмотря на популярность, у Activiti есть ряд недостатков:

  • Сложность версионирования: в версиях до 7.x обновление схемы базы данных (migration) могло быть проблематичным.
  • Отсутствие встроенного портала: в отличие от коммерческих BPM-систем (например, Pega или IBM BPM), Activiti не предоставляет готового пользовательского интерфейса для конечных пользователей, требуя разработки фронтенда.
  • Раскол сообщества: появление форка Flowable привело к фрагментации экосистемы, и часть разработчиков и компаний перешла на Flowable, считая его более стабильным и документированным.

Сравнение с аналогами

ПлатформаОсновной языкЛицензияКлючевая особенность
ActivitiJavaApache 2.0Лёгкость, интеграция со Spring
FlowableJavaApache 2.0Форк Activiti, лучшая документация
CamundaJavaApache 2.0Мощный моделер, поддержка DMN (Decision Model and Notation)
jBPMJavaApache 2.0Глубокая интеграция с Drools (правила)
BonitaJavaGPL / КоммерческаяВизуальный дизайнер, встроенный портал

См. также

  • 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 →