Не знаю, как у вас, но моя жизнь состоит из хаотичных «воркфлоу» и «процессов», полных сюрпризов и неожиданных ошибок, которые не работают так, как ожидается, потому что я сама немного сумасшедшая, забывчивая и непредсказуемая. Однако в бизнесе такой хаос недопустим, и именно поэтому компании стремятся автоматизировать свои процессы и обращаются к разработчикам, чтобы мы нашли решение. К счастью, существует множество платформ, позволяющих создавать надёжные, масштабируемые и управляемые воркфлоу, которые можно визуализировать так, чтобы любой заинтересованный (с техническими знаниями или без) мог видеть, что происходит в процессе. Эта статья — краткое введение в платформы автоматизации воркфлоу 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 — про бизнес-процессы: новости, гайды, полезная информация и юмор.
LevinAlex
К сожалению, не раскрыто главное, как это использовать. Это просто редактор диаграм или это как-то можно использовать непосредственно действующими лицами во время прохождения процесса, кроме как просто смотреть схему?
stas_makarov Автор
Нет, это не просто редактор -- обе из них.
Прежде всего, это движок, который может исполнять процессы.
Вокруг него некая обвязка, чтобы эти процессы создавать -- включая графический редактор.
В принципе, это open source, но есть платные опции, это надо смотреть подробнее.