Не знаю, как у вас, но моя жизнь состоит из хаотичных «воркфлоу» и «процессов», полных сюрпризов и неожиданных ошибок, которые не работают так, как ожидается, потому что я сама немного сумасшедшая, забывчивая и непредсказуемая. Однако в бизнесе такой хаос недопустим, и именно поэтому компании стремятся автоматизировать свои процессы и обращаются к разработчикам, чтобы мы нашли решение. К счастью, существует множество платформ, позволяющих создавать надёжные, масштабируемые и управляемые воркфлоу, которые можно визуализировать так, чтобы любой заинтересованный (с техническими знаниями или без) мог видеть, что происходит в процессе. Эта статья — краткое введение в платформы автоматизации воркфлоу Camunda и Flowable, демонстрация примера автоматизации, лучшие практики и основные сложности при использовании этих платформ.

Как видно из вступления, Camunda и Flowable — это две open source платформы для автоматизации бизнес-процессов и воркфлоу, предоставляющие инструменты для создания, управления и визуализации процессов, правил и рабочих потоков. Подробнее о Camunda и Flowable можно узнать на их официальных сайтах:
Обе платформы построены на стандарте BPMN 2.0, который задаёт графическую нотацию для моделирования воркфлоу: бизнес-процессов, правил, интерфейсов, исполнения, мониторинга и оптимизации. Camunda и Flowable — форки Activiti, инструмента автоматизации бизнес-процессов, который считается менее универсальным и мощным, чем Camunda. Однако Flowable, в отличие от Activiti, по функциям очень близок к Camunda. Camunda отделилась от Activiti в 2013 году, а Flowable — в 2016, и разрабатывается теми же инженерами, что и Activiti.
Пользовательский интерфейс
Camunda предоставляет бесплатный инструмент моделирования — Camunda Modeler. Есть веб- и десктоп-версии. Обе позволяют моделировать BPMN-диаграммы, DMN-таблицы, формы и коннекторы к внешним системам без работы с XML. При желании можно просмотреть или отредактировать исходный XML.
Camunda больше не поддерживает плагины для Eclipse или IntelliJ и рекомендует использовать Camunda Modeler как отдельный инструмент, не связанный с IDE. Если ассоциировать BPMN-файлы с Camunda Modeler в системе, они будут открываться в Modeler даже из любимой IDE, например, из IntelliJ IDEA через «Open With». Для IntelliJ есть сторонний плагин для просмотра и редактирования BPMN, но создать новую модель Camunda в IDE нельзя — нужен Camunda Modeler. Иногда это неудобно — переключаться между IDE и Modeler.
Flowable по интерфейсу похож на Camunda. У Flowable есть плагин для Eclipse — Flowable Eclipse Designer. Если проект в Eclipse, это удобно: не нужно переключаться на внешний инструмент для создания моделей. Плагин умеет, например, автоматически генерировать юнит-тесты для диаграмм Flowable. Но если вы терпеть не можете Eclipse, придётся использовать Flowable Web Modeler. Также в IntelliJ IDEA есть Flowable BPMN visualiser plugin для просмотра и редактирования диаграмм Flowable, но для создания новых диаграмм всё равно нужен Eclipse или Flowable Modeler.
Оба интерфейса — Camunda и Flowable — сильно кастомизируются. Можно создавать собственные элементы, коннекторы и фигуры, специфичные для вашего бизнеса.
В Camunda Modeler внешний вид можно изменить через css-файл (app.css) в папке установки. Можно добавлять плагины — свои или скачанные с GitHub, написанные на JavaScript с использованием Camunda Modeller API. Для загрузки плагина путь указывается в plugins секции файла config.app.js. Также можно создавать шаблоны элементов с предзаполненными значениями — для этого нужен json, реализующий Camunda Element Schema. Подробнее — в документации Camunda.
Flowable, как и Camunda, позволяет расширять функциональность Flowable Designer. Можно расширять палитру и формат вывода. В отличие от Camunda, где плагины — это js, у Flowable Designer расширения — JAR-файлы. Подробнее — в документации Flowable.
Flowable пока не поддерживает шаблоны элементов, как Camunda.
Помимо моделирования, обе платформы дают интерфейсы для мониторинга, распределения задач и администрирования. В Camunda для мониторинга процессов и поиска проблем есть Camunda Cockpit: можно отслеживать производительность, исправлять ошибки, приостанавливать процессы, редактировать и удалять задачи, мигрировать инстансы процессов на новую версию. У Flowable нет единого Cockpit, но есть отдельные приложения: Flowable IDM (SSO, управление ролями и доступом), Flowable Task (управление задачами, запуск и остановка процессов), Flowable Admin (мониторинг и изменение процессов). В целом, Camunda даёт больше контроля и возможностей расследования проблем в одном приложении.
Возможности
Обе платформы поддерживают моделирование бизнес-процессов (BPMN) и таблиц решений (DMN). Недавно Camunda добавила создание форм и распределение задач, что есть и у Flowable. Форму можно создать прямо в моделлере и назначить на user task.
Обе платформы поддерживают DRD — Decision Requirement Diagram, позволяющий моделировать несколько таблиц реше��ий в одном DRD, а не через процесс с множеством outcome-правил.
Flowable выделяется поддержкой и развитием CMMN-движка (Case Management Model and Notation) для непредсказуемых процессов. Flowable утверждает, что объединение CMMN, BPMN и DMN в одном инструменте позволяет создавать более человечные и событийные модели. Camunda прекратила развитие CMMN-функций: включить CMMN в Camunda Modeler можно, но по умолчанию он выключен. По исследованиям Camunda, CMMN используют немногие, а большинство процессов предсказуемы, и небольшие отклонения можно моделировать через subprocess.
Flowable также поддерживает динамическое внедрение процессов — подгрузку фрагмента процесса по требованию (AI или человеком) в уже запущенный инстанс. Это полезно, если не хочется завязываться на конкретные условия для запуска процесса, а требуется запускать его по ситуации. Это упрощает модель процесса, так как не нужно прописывать условия для срабатывания. Подробнее — в документации Flowable.
На момент написания статьи Camunda эти функции не поддерживает.
Интеграция с внешними системами
Camunda позволяет интегрироваться с другими системами через широкий набор REST API и коннекторов.
Camunda предоставляет облачные коннекторы, включая Kafka Streams, AWS, Azure. Например, для интеграции с AWS Lambda есть специальный коннектор, также есть коннекторы для AWS SQS и SNS.
Есть бизнес-коннекторы (Salesforce, SWIFT), коннекторы для productivity-приложений (Microsoft Teams, Slack), коннекторы для корпоративного контента (Box, Opentext), дата-коннекторы (BI-системы, data lakes, хранилища данных).
Можно создавать свои коннекторы через Integration Framework. Подробнее — в документации Camunda.
Flowable, как и Camunda, предостав��яет готовые интеграции с внешними системами: event stream-интеграции с AWS SQS, Kafka, RabbitMQ, ActiveMQ для событийных процессов. Также есть интеграция с мессенджерами (например, Whatsapp) и абстрактные data source-интеграции, поддержка реляционных и нереляционных БД. Однако готовых интеграций у Flowable меньше, чем у Camunda.
Развертывание
Flowable гибче Camunda по вариантам развёртывания. Camunda можно развернуть в облаке и on-premises, а Flowable — ещё и в гибридном режиме.
Языки
Обе платформы поддерживают:
Java
Groovy
Kotlin
JavaScript
Python
Дополнительно Camunda поддерживает PHP и .NET.
Camunda или Flowable?
В конечном счёте выбор зависит от проекта и его задач. Обычно Flowable подходит, если требуется большая гибкость в деплойменте, поддержка непредсказуемых процессов с динамическими инъекциями и CMMN.
Camunda больше подходит для крупных проектов со сложными процессами и интеграциями с внешними системами.
Пример: автоматизация процесса для кинолога
У меня есть большой щенок весом 70 кг, который недавно стал бояться некоторых собак. Чтобы помочь ему, я обратилась к кинологу. Кинолог дорогой и востребованный, у него много клиентов. Иногда я думаю, как он всем отвечает и выставляет счета. Может быть, у него всё автоматизировано...

Диаграмма Camunda для консультации по поведению собаки: Клиент обращается за советом — запускается Advice Generation Process. Сначала вопрос отправляется ИИ, тот генерирует ответ, ответ дорабатывается и отправляется клиенту по email. Затем формируется счёт за услугу.
Наверное, стоило бы просто использовать ChatGPT напрямую, а не платить кинологу.
Лучшие практики
Допустим, мы решили автоматизировать бизнес-процесс с помощью Camunda. Используем Camunda Modeler и начинаем моделировать. Но со временем модели могут стать сложными для понимания и поддержки, если не следовать лучшим практикам.
Читаемость
Модель должна быть простой, понятной и чётко подписанной. Действия должны иметь описательные названия, чтобы было ясно, что происходит. Шлюзы должны называться согласно типу: например, XOR — как вопрос с взаимоисключающими ответами, а исходящие потоки — с соответствующими подписями.
Все сгенерированные id и названия должны быть заменены на осмысленные, с использованием языка бизнеса, чтобы модель была понятна всем (разработчикам и аналитикам).
Моделировать следует системно, слева направо. Не рекомендуется использовать пересекающиеся потоки, если сложно понять направление, но допустимо, если все потоки идут к одной цели и это понятно.
Следует избегать неявных BPMN-конструкций.
Единая точка ответственности
Модель процесса должна быть максимально простой и решать только одну задачу. Действия внутри процесса — только одну функцию. Обработка всех данных в одном шаге — антипаттерн.
Сложные процессы можно разбивать на подпроцессы — вложенные, событийные или внешние. Визуально подпроцессы видны из родительского процесса.
Переиспользуемость
Некоторые шаги и потоки могут повторяться в разных процессах. Для этого создаются подпроцессы (call activity), которые можно использовать повторно (например, выставление счетов или обработка ошибок).
Шаблоны элементов — ещё один способ переиспользования шагов и обеспечения консистентности.
Корректная обработка ошибок
Всегда возможно, что что-то пойдёт не так. Например, если в Advice Generation Process возникла ошибка интеграции с OpenAI, нужно предусмотреть обработку: отправить клиенту письмо с извинением и завершить процесс.
Можно также:
откатиться к предыдущей транзакции
повторить попытку
установить таймеры
использовать error boundary events, error event subprocess
Высокая производительность
И Camunda, и Flowable имеют встроенные средства мониторинга и отчетности. Настоятельно рекомендуется регулярно использовать их для отслеживания экземпляров процессов и выявления узких мест и проблем с производительностью.
Вызовы
Графические нотации BPMN представляют собой xml-файлы. Они содержат не только информацию о процессе, действиях и элементах, но и графическое представление — как эти элементы расположены. Поэтому при внесении изменений разработчиками такие файлы очень сложно подвергать код-ревью, особенно если не были соблюдены лучшие практики и не даны осмысленные метки и идентификаторы для действий, правил и условий.
Иногда помогает предоставление изображений диаграммы до и после изменений. Однако это может ввести в заблуждение, если изображение не отражает реальных изменений.
Аналогично, сложно разрешать конфликты при слиянии, так как необходимо определить, какие изменения в xml-файле оставить, объединить или отклонить, а такие файлы могут быть очень сложными и содержать информацию о положении разных элементов.
Camunda, Flowable и другие BPMN-платформы ориентированы на состояния, и их трудно поддерживать, когда изменяется поток или данные для определённого состояния. Обычно рекомендуется анализировать поведение процесса в новой версии на исторических данных, чтобы избежать серьёзных ошибок.
Изменения также могут повлиять на производительность, поэтому требуется мониторинг, настройка конфигураций и тонкая оптимизация для обеспечения оптимальной работы.
Заключение
В этом посте было дано краткое введение в платформы автоматизации процессов Camunda и Flowable, а также предпринята попытка объяснить, зачем их использовать. Эти платформы позволяют автоматизировать рабочие процессы и процессы, распределение задач, формы и таблицы решений. Flowable — более легковесная платформа, которую можно очень эффективно использовать с Eclipse. Camunda предоставляет более расширенные возможности мониторинга, анализа и устранения проблем по сравнению с Flowable. Выбор между этими двумя платформами зависит от проекта и требований.
Обе платформы позволяют автоматизировать, выполнять и отслеживать бизнес-процессы. Camunda и Flowable также обеспечивают более наглядное представление происходящего в процессе для всех заинтересованных сторон.
Однако на практике внедрение этих платформ может быть непростым, особенно если процессы требуют изменений. Некоторы�� трудности можно снизить или избежать, следуя рекомендуемым лучшим практикам, предлагаемым обеими платформами.

Подписывайтесь на наш телеграм-канал BPM Developers — про бизнес-процессы: новости, гайды, полезная информация и юмор.