Платформа бизнес-процессов

У нас есть проблемы ...

  1. Сложная распределенная схема бизнес-процессов
  2. Сложность разработки
  3. Надежность
  4. $$$

И мы начали рассматривать сторонние решения

  1. Apache Activiti
  2. Camunda

Системы очень похожие между собой. 

Идеи Activiti и сам проект лежит в основе Camunda.

В мире Open-Source мы обратили вниманиена 2 популярных проекта:

Почему не Activiti ?

  1. Выше производительность
  2. Помимо BPMN поддерживается так-же и DMN и даже CMMN нотации
  3. Для Camunda уже написаны готовые компоненты для мониторинга и администрирования
  4. Развивается быстрее 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 - результаты выполнения условий. И поля куда эти условия будут записаны в контексте процесса.

Кастомизация редактора

В редакторе можно менять вообще все !

  • Можно менять параметры у существующих элементов
  • Можно добавлять свои элементы
  • Можно создавать свои неймспейсы с элементами
  • Добавлять / убирать элементы меню замены или добавления графических элементов
  • ...

Всегда есть "НО": Это достаточно трудоемко.

Приходится тратить достаточно времени.

Необходимо переопределять / менять большое кол-во кода. Нет единого места, есть куча разрозненных файлов.

Надежность

  1. Сама платформа изначально проектировалась максимально простой. Сложно сломать что то совсем простое
  2. Есть возможность писать автотесты для бизнес-процессов
  3. В любом случае процесс не упадет. Никуда не удалится и ничего с ним не случится плохого. Он приостановится и будет ждать решения проблемы
  4. Есть возможность определять границы транзакций

СУБД

Официально заявлена поддержка следующих:

  • 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-решение, которое включает поддержку )

Редактор распостраняется под собственной лицензией.

Он практически не ограничивает использование продукта.

Елинственное, что нельзя делать - убирать логотип со сссылкой проекта из нижнего правого угла.

Какие выгоды ?

  1. Избавляемся от сложной распределенной схемы бизнес-процессов
  2. Избавляемся от необходимости разрабатывать бизнес-процессы программистами
  3. Это же Open Source ! Это нам не будет ничего стоить. А взамен мы получаем быстроразваивающуюся платформу бизнес-процессов.
  4. Надежность
  5. Простоту тестирования
  6. Гибкость. Платформа разрабатывается на языке Java. С применением актуальных тенденций и технологий.

План действий

  1. Необходимо адаптировать редактор для задач Эталона
  2. Необходимо адаптировать АПИ, а лучше написать новый АПИ Эталона для Камунды рядом со старым. Чтобы не сломать рабочее решение на Ансамбле.
  3. Необходимо адаптировать саму платформу Камунды для задач Эталона

Разработку лучше начать как можно скорее !

Так мы смогли бы получить решение с минимальной функциональностью уже через 2 месяца работы команды.

Узнать больше

Можно по ссылке: https://camunda.com/bpmn/reference/

DMN Симулятор - https://camunda.com/dmn/simulator/

Проект редактора: https://github.com/bpmn-io/bpmn-js

Camunda

By nikitamugen

Camunda

  • 706