Ответ
Activiti — это open-source Java-фреймворк и движок бизнес-процессов (BPM), реализующий спецификацию BPMN 2.0 (Business Process Model and Notation). Он предназначен для моделирования, исполнения и мониторинга бизнес-процессов внутри приложений.
Ключевые концепции:
- BPMN 2.0: Стандартная нотация для описания процессов (задачи, шлюзы, события, потоки).
- Process Engine: Ядро, которое разворачивает BPMN-диаграммы и управляет жизненным циклом экземпляров процессов.
- База данных: Activiti сохраняет состояние процессов в реляционную БД (H2, PostgreSQL, MySQL и др.), обеспечивая персистентность и возможность кластеризации.
Основные сервисы ядра:
| Сервис | Назначение |
|---|---|
RepositoryService |
Управление развертыванием BPMN-моделей (.bpmn20.xml файлы). |
RuntimeService |
Запуск новых экземпляров процессов и управление ими. |
TaskService |
Работа с пользовательскими задачами (создание, завершение, назначение). |
HistoryService |
Доступ к историческим данным о выполненных процессах и задачах. |
Базовый пример инициализации и запуска процесса:
// 1. Создание ProcessEngine (часто через Spring Boot Starter)
ProcessEngine processEngine = ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration()
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
.buildProcessEngine();
// 2. Развертывание процесса из BPMN-файла
RepositoryService repoService = processEngine.getRepositoryService();
Deployment deployment = repoService.createDeployment()
.addClasspathResource("onboarding-process.bpmn20.xml")
.deploy();
// 3. Запуск экземпляра процесса
RuntimeService runtimeService = processEngine.getRuntimeService();
Map<String, Object> variables = new HashMap<>();
variables.put("employeeName", "John Doe");
ProcessInstance instance = runtimeService.startProcessInstanceByKey("employeeOnboarding", variables);
Типичные сценарии использования: автоматизация workflow (согласование заявок, онбординг сотрудников), оркестрация микросервисов, выполнение сложных последовательностей бизнес-правил.