Платформа бизнес-процессов
У нас есть проблемы ...
- Сложная распределенная схема бизнес-процессов
- Сложность разработки
- Надежность
- $$$
И мы начали рассматривать сторонние решения
- Apache Activiti
- Camunda
Системы очень похожие между собой.
Идеи Activiti и сам проект лежит в основе Camunda.
В мире Open-Source мы обратили вниманиена 2 популярных проекта:
Почему не Activiti ?
- Выше производительность
- Помимо BPMN поддерживается так-же и DMN и даже CMMN нотации
- Для Camunda уже написаны готовые компоненты для мониторинга и администрирования
- Развивается быстрее Activiti
Camunda просто лучше:
Решит наши проблемы ?
Давайте разбираться
Сложная распределенная система
Что хочется:
Что есть:
Производительность
кол-во одновременных запусков экземпляра в секунду
кол-во сохранений состояний экземпляров в секунду
кол-во сохранений переменных контекста в БД в секунду
Команда постоянно работает над повышением производительности
- Синяя полоса - новый механизм сохранения состояний, примененный в новой версии Camunda 7.0;
- Красная полоса - старый механизм, применяемый в старых версиях.
Прирост производительности составляет +40 обработанных экземпляров в секунду.
При этом было запущено более 220 тыс. экземпляров процессов.
В которых было по 15 точек изменения состояния.
На чем проверяют производительность разработчики Camunda ?
- Intel Core i5 (4 ядра, 2.5 Ггц)
- SSD,
- 8Гб оперативной памяти
- Archlinux Kernel 3.12.8
Современные игры не пойдут ...
А Camunda очень даже :)
Масштабируемость
Существует Центральный источник данных,
к которому могут иметь доступ несколько узлов, ответственных за выполнение процессов BPMN.
Простота при разработке процессвов
- Полная поддержка BPMN 2.0
- Поддержка DMN
- Поддержка CMMN
- REST API
- JAVA API ( Поддержка OSGI, CDI, Spring, ... )
- Возможность писать обработчики так-же и на Node JS
На простом примере посмотрим разницу 2-ух подходов разработки процессов
в Ensemble ( BPL ) и Camunda ( BPMN )
BPL
Схемы BPL предполагают простую последовательность.
При этом вся схема должна сойтись в одной точке. Что приводит к огромной вложенности, в случае сложно-подчиненных процессов.
Всегда есть одна точка старта.
Всегда есть одна точка конца.
BPMN
позволяет декомпозировать процесс по действиям.
Обратите внимание, у нас появляется вторая точка запуска по событию !
Продолжаем декомпозировать и улучшать
Всю схему удобно представлять в виде блоков, если мы не знаем, какие конкретно процессы происходят внутри каждого
У вас еще не возник вопрос ?
Тогда его задам я. Действительно ли в одной схеме могут находится 2 и более разных процесса ?
Да. Это так :)
В одной схеме действительно могут находится разные процессы. Такие схемы называются Колаборацией ( Collaboration ).
Модель принятия решений
Модель принятия решений (DMN) является отраслевым стандартом для моделирования и принятия решений, которые определяются бизнес правилами.
Зачем мне эти бизнес правила и модели ?
Я же все могу описать условиями внутри схемы !
Хороший вопрос.
Давайте разберемся на примере.
Мы пригласили гостей на ужин.
Вопрос в том, какое блюдо мы должны подготовить.
В этом примере, мы следуем очень простой логике решения: в зависимости от текущего сезона мы решаем блюдо.
Если это Осень, мы будем готовить Ребрышки.
Если Зима, Ростбиф и так далее.
OK, Camunda. Приготовь ужин
Мы можем убрать все лишние условия в таблицу с бизнес-правилами
( Decide Dish ).
Нам нужен DMN
Получилось проще, не правда ли ?
Заглянем внутрь DMN
Input - входящие параметры и условия, написанные на языке FEEL
Output - результаты выполнения условий. И поля куда эти условия будут записаны в контексте процесса.
Кастомизация редактора
В редакторе можно менять вообще все !
- Можно менять параметры у существующих элементов
- Можно добавлять свои элементы
- Можно создавать свои неймспейсы с элементами
- Добавлять / убирать элементы меню замены или добавления графических элементов
- ...
Всегда есть "НО": Это достаточно трудоемко.
Приходится тратить достаточно времени.
Необходимо переопределять / менять большое кол-во кода. Нет единого места, есть куча разрозненных файлов.
Надежность
- Сама платформа изначально проектировалась максимально простой. Сложно сломать что то совсем простое
- Есть возможность писать автотесты для бизнес-процессов
- В любом случае процесс не упадет. Никуда не удалится и ничего с ним не случится плохого. Он приостановится и будет ждать решения проблемы
- Есть возможность определять границы транзакций
СУБД
Официально заявлена поддержка следующих:
- MySQL 5.6 / 5.7
- MariaDB 10.0 / 10.2
- Oracle 10g / 11g / 12c
- IBM DB2 9.7 /10.1 / 10.5 / 11.1 (excluding IBM z/OS for all versions)
- PostgreSQL 9.1 / 9.3 / 9.4 / 9.6
- Microsoft SQL Server 2008 R2/2012/2014/2016
- H2 1.4
ISC Cache в списке нет. Надеюсь, никто не расстроился :)
И это даже еще не все !
Для Camunda представлено большое кол-во поддерживаемых технологий в рамках дочерних подпроектов.
Изучить все возможности можно на GitHub проекта: https://github.com/camunda
Портал задач
Портал администратора
Портал мониторинга
Веб приложения
Портал задач
Сильно напоминает Эталон, в миниатюре, не правда ли ?
Портал администрирования
Портал мониторинга
Очень интересная часть веб-интерфейса.
Посмотрим подробнее.
Мониторинг конкретного процесса
Конкретного экземпляра процесса
Мониторинг поставок
$$$
Сам движок и вообще вся платформа распостраняется по лицензии Apache 2.0.
Которая никак не ограничивает использование продукта в своих целях.
Но и гарантии никто не дает.
( Есть и Enterprise-решение, которое включает поддержку )
Редактор распостраняется под собственной лицензией.
Он практически не ограничивает использование продукта.
Елинственное, что нельзя делать - убирать логотип со сссылкой проекта из нижнего правого угла.
Какие выгоды ?
- Избавляемся от сложной распределенной схемы бизнес-процессов
- Избавляемся от необходимости разрабатывать бизнес-процессы программистами
- Это же Open Source ! Это нам не будет ничего стоить. А взамен мы получаем быстроразваивающуюся платформу бизнес-процессов.
- Надежность
- Простоту тестирования
- Гибкость. Платформа разрабатывается на языке Java. С применением актуальных тенденций и технологий.
План действий
- Необходимо адаптировать редактор для задач Эталона
- Необходимо адаптировать АПИ, а лучше написать новый АПИ Эталона для Камунды рядом со старым. Чтобы не сломать рабочее решение на Ансамбле.
- Необходимо адаптировать саму платформу Камунды для задач Эталона
Разработку лучше начать как можно скорее !
Так мы смогли бы получить решение с минимальной функциональностью уже через 2 месяца работы команды.
Узнать больше
Можно по ссылке: https://camunda.com/bpmn/reference/
DMN Симулятор - https://camunda.com/dmn/simulator/
Проект редактора: https://github.com/bpmn-io/bpmn-js
Camunda
By nikitamugen
Camunda
- 706