Основная работа по созданию и редактированию схем бизнес-процессов в системе Camunda производится средствами приложения Camunda Modeler. Это приложение является бесплатным и его можно просто скачать с сайта Camunda в любом из трех вариантов:
- под Windows (поддерживаются Windows 7/8/10, как 32-разрядные, так и 64-разрядные)
- MacOSX (версия 10.11 и более поздние)
- Ubuntu (версия 12.04 и более поздние). На других дистрибутивах Linux, таких, как Fedora и Debian, CamundaModeler тоже запускаться не отказывается. В CentOS 8 для запуска CamundaModeler потребовалась предварительная установка пакета libXScrnSaver-1.2.3-1.el8.x86_64.rpm.
Camunda Modeler не требует установки: в любой операционной системе достаточно разархивировать скачанный архив, а затем запустить ее при помощи соответствующего файла:
- в Windows— при помощи Camunda Modeler.exe;
- в Mac OS — при помощи Camunda Modeler.app;
- в Linux — при помощи файла camunda-modeler (для новичков в Linux — нужно перейти в каталог с этим файлом и выполнить команду ./camunda-modeler).
Под какой операционной системой вы бы не запустили Camunda Modeler, интерфейс и функциональные возможности этой программы будут одинаковы. Окно Camunda Modeler с простейшей диаграммой BPMN может выглядеть так, как представлено на рис.
Посмотрим на интерфейс Camunda Modeler внимательнее.
Вверху — обычное меню, при этом при помощи команды File | New File или аналогичной кнопки на панели инструментов у нас есть возможность создать диаграмму одного из четырех поддерживаемых типов:
- BPMN (Business Process Management Notation)— наиболее распространенный тип диаграмм, описывающий стандартизированные бизнес-процессы. В качестве примера можно, например, привести заведение нового поставщика у ритейлера со сбором необходимых документов или процесс утверждения заявки на кредит;
- CMMN (Case Management Model and Notation)— тип диаграммы для обработки кейсов (ситуаций). Стандарт CMMN во многом похож на BPMN (и отчасти взаимозаменяем). Обычно он используется тогда, когда на бизнес-процесс могут сильно влиять различные внешние факторы и нужен более гибкий подход (и с большим влиянием факторов внешней среды), чем в BPMN. В качестве примера можно привести, например, производственное предприятие, которое делает изделие под заказ. Это предприятие может принять один и тот же заказ от одного и того же заказчика, а может и не принять, если считает, что оборудование потребуется под более выгодные заказы. А может, наоборот, принять невыгодный заказ, чтобы установить отношения с важным заказчиком в надежде на получение более крупных заказов;
- DMN (Decision Making and Notation)— тип диаграммы (или таблицы), который используется для поддержки принятия решений. Можно считать этот тип диаграмм дополнением к BPMN, которое позволяет не перегружать диаграммы BPMN огромным количеством шлюзов. Представим, например, бизнес-процесс по одобрению кредитной заявки на потребительский кредит. В BPMN можно очень удобно нарисовать схему прохождения документов, но на этапе утверждения кредита кредитным инспектором ему нужно принять во внимание множество факторов: текущую кредитную нагрузку, кредитную нагрузку членов семьи, кредитную историю, уровень заработной платы, место работы и т.п. Если все эти факторы попытаться разместить при помощи шлюзов на диаграмме BPMN, то диаграмма выйдет очень сложной и перегруженной. Поэтому практичнее моменты, связанные с принятием решений, вынести в отдельную диаграмму или таблицу DMN.
CMMN и DMN — инструменты относительно новые и применяются на предприятиях редко, поэтому в большинстве случаев когда речь идет об описании бизнес-процессов, имеются ввиду именно диаграммы BPMN. Поэтому возможности Camunda мы будем рассматривать в основном применительно к BPMN.
Чтобы можно было рассмотреть возможности интерфейса Camunda, в меню File | New File выберем BPMN Diagram.
Диаграммы в Camunda Modeler можно просматривать в двух режимах: в обычном графическом режиме диаграммы и в режиме XML. Переключение между этими режимами производится при помощи ярлычков в нижнем левом углу (см. рис.)
Стандарт BPMN 2.0 описывает не только графические элементы для диаграмм BPMN, но и их представление в формате XML (хотя в разных редакторах диаграмм BPMN могут использоваться свои дополнительные элементы и атрибуты, которые другими редакторами будут игнорироваться). Поэтому, если у вас есть диаграммы BPMN, подготовленные в другом редакторе, в большинстве ситуаций их вполне возможно перенести в Camunda Modeler.
Иногда приходится вносить изменения вручную прямо в код XML для диаграммы, но это требуется нечасто (и, по возможности, конечно, нужно этого избегать).
На Панели инструментов обратим внимание на кнопку Deploy Current Diagram (Развернуть текущую диаграмму) — см. рис.
Эта кнопка позволяет поместить диаграмму на сервер Camunda (тестовый или производственный) прямо из Camunda Modeler. При нажатии на нее откроется окно, аналогичное представленному на рис.
Конечно, можно пойти и обходным путем: сохранить диаграмму в файле формата BPMN и уже потом выложить ее на сервер, но выгрузка напрямую обычно удобнее.
Диаграмму можно сохранить и в графических форматах PNG/JPEG/SVG, если, например, вам потребовалось распечатать схему сложного бизнес-процесса для обсуждения.
В левой части Camunda Modeler находится Палитра элементов (Elements palette) — см. рис.
Разработчики диаграмм BPMN обычно берут элементы из этой палитры, перетаскивают в область диаграммы (центральную область окна Camunda Modeler) и настраивают. Заметим, что элементов, на первый взгляд, в палитре существенно меньше, чем предусмотрено стандартом BPMN. Связано это с тем, что в палитре присутствует лишь базовый набор элементов: другие элементы получаются из базовых путем преобразования их в области диаграммы. Например, в нашей диаграмме преобразовать стартовое событие в событие-сообщение можно так, если щелкнуть по объекту стартового события, нажать в контекстном наборе фигур на гаечный ключ и в списке типов сообщений выбрать Message Start Event (см. рис.).
Из этого же контекстного набора фигур очень удобно выбрать следующий элемент бизнес-процесса, вместо того, чтобы перетягивать его из палитры и затем связывать.
Пользовательских элементов в Camunda Modeler не предусмотрено. Их функциональность можно реализовывать при помощи шаблонов элементов/связанных классов Java (про эти возможности будет рассказано в следующих разделах). Можно также воспользоваться бесплатной альтернативой Camunda Modeler, которая называется BPMN.IO и в которой пользовательские элементы предусмотрены изначально.
Мастерство создателя диаграмм BPMN во многом заключается в том, насколько правильно он выбирает и расставляет элементы палитры (а также настраивает их свойства). Про работу с элементами диаграмм BPMN будет рассказано в следующих разделах.
В центральной части окна Camunda Modeler расположена сама диаграмма. Реальные рабочие процессы могут очень большими по размеру и включать в себя большое количество элементов, поэтому для комфортной работы разработчику бизнес-процессов рекомендуется большой монитор (а лучше — несколько). Чуть упростить навигацию по диаграмме позволит мини-карта (Minimap), кнопка для включения которой расположена в правом верхнем углу окна диаграммы.
В правой части окна Camunda Modeler расположена Панель свойств (Properties Panel) — см. рис.
В этом окне производится настройка свойств как самого процесса BPMN, так и его элементов.
Обычная последовательность работы с процессами BPMN (CMMN, DMN) в Camunda Modeler выглядит следующим образом:
- Средствами Camunda Modeler создаем новый процесс (диаграмму BPMN) и настраиваем его свойства.
- Размещаем на этой диаграмме элементы, меняем типы, связываем элементы.
- Настраиваем свойства элементов (на этом этапе производится привязка программного кода и форм к элементам).
- Публикуем процесс на тестовом сервере и запускаем его для проверки работоспособности (из самого Camunda Modeler запустить процесс, увы, нельзя).
- Выявляем проблемы и вносим изменения в процесс. Чтобы не возникало ситуаций вида «починил одно — в результате отвалилось другое», очень рекомендуется использовать юнит-тесты.
- Публикуем окончательную версию процесса на производственном сервере, предоставляем пользователям разрешения на этот процесс и интерфейс для его запуска.
Все эти моменты будут рассмотрены в следующих разделах.
Основная работа по созданию и редактированию схем бизнес-процессов в системе Camunda производится средствами приложения Camunda Modeler. Это приложение является бесплатным и его можно просто скачать с сайта Camunda в любом из трех вариантов:
- под Windows (поддерживаются Windows 7/8/10, как 32-разрядные, так и 64-разрядные)
- MacOSX (версия 10.11 и более поздние)
- Ubuntu (версия 12.04 и более поздние). На других дистрибутивах Linux, таких, как Fedora и Debian, CamundaModeler тоже запускаться не отказывается. В CentOS 8 для запуска CamundaModeler потребовалась предварительная установка пакета libXScrnSaver-1.2.3-1.el8.x86_64.rpm.
Camunda Modeler не требует установки: в любой операционной системе достаточно разархивировать скачанный архив, а затем запустить ее при помощи соответствующего файла:
- в Windows— при помощи Camunda Modeler.exe;
- в Mac OS — при помощи Camunda Modeler.app;
- в Linux — при помощи файла camunda-modeler (для новичков в Linux — нужно перейти в каталог с этим файлом и выполнить команду ./camunda-modeler).
Под какой операционной системой вы бы не запустили Camunda Modeler, интерфейс и функциональные возможности этой программы будут одинаковы. Окно Camunda Modeler с простейшей диаграммой BPMN может выглядеть так, как представлено на рис.
Посмотрим на интерфейс Camunda Modeler внимательнее.
Вверху — обычное меню, при этом при помощи команды File | New File или аналогичной кнопки на панели инструментов у нас есть возможность создать диаграмму одного из четырех поддерживаемых типов:
- BPMN (Business Process Management Notation)— наиболее распространенный тип диаграмм, описывающий стандартизированные бизнес-процессы. В качестве примера можно, например, привести заведение нового поставщика у ритейлера со сбором необходимых документов или процесс утверждения заявки на кредит;
- CMMN (Case Management Model and Notation)— тип диаграммы для обработки кейсов (ситуаций). Стандарт CMMN во многом похож на BPMN (и отчасти взаимозаменяем). Обычно он используется тогда, когда на бизнес-процесс могут сильно влиять различные внешние факторы и нужен более гибкий подход (и с большим влиянием факторов внешней среды), чем в BPMN. В качестве примера можно привести, например, производственное предприятие, которое делает изделие под заказ. Это предприятие может принять один и тот же заказ от одного и того же заказчика, а может и не принять, если считает, что оборудование потребуется под более выгодные заказы. А может, наоборот, принять невыгодный заказ, чтобы установить отношения с важным заказчиком в надежде на получение более крупных заказов;
- DMN (Decision Making and Notation)— тип диаграммы (или таблицы), который используется для поддержки принятия решений. Можно считать этот тип диаграмм дополнением к BPMN, которое позволяет не перегружать диаграммы BPMN огромным количеством шлюзов. Представим, например, бизнес-процесс по одобрению кредитной заявки на потребительский кредит. В BPMN можно очень удобно нарисовать схему прохождения документов, но на этапе утверждения кредита кредитным инспектором ему нужно принять во внимание множество факторов: текущую кредитную нагрузку, кредитную нагрузку членов семьи, кредитную историю, уровень заработной платы, место работы и т.п. Если все эти факторы попытаться разместить при помощи шлюзов на диаграмме BPMN, то диаграмма выйдет очень сложной и перегруженной. Поэтому практичнее моменты, связанные с принятием решений, вынести в отдельную диаграмму или таблицу DMN.
CMMN и DMN — инструменты относительно новые и применяются на предприятиях редко, поэтому в большинстве случаев когда речь идет об описании бизнес-процессов, имеются ввиду именно диаграммы BPMN. Поэтому возможности Camunda мы будем рассматривать в основном применительно к BPMN.
Чтобы можно было рассмотреть возможности интерфейса Camunda, в меню File | New File выберем BPMN Diagram.
Диаграммы в Camunda Modeler можно просматривать в двух режимах: в обычном графическом режиме диаграммы и в режиме XML. Переключение между этими режимами производится при помощи ярлычков в нижнем левом углу (см. рис.)
Стандарт BPMN 2.0 описывает не только графические элементы для диаграмм BPMN, но и их представление в формате XML (хотя в разных редакторах диаграмм BPMN могут использоваться свои дополнительные элементы и атрибуты, которые другими редакторами будут игнорироваться). Поэтому, если у вас есть диаграммы BPMN, подготовленные в другом редакторе, в большинстве ситуаций их вполне возможно перенести в Camunda Modeler.
Иногда приходится вносить изменения вручную прямо в код XML для диаграммы, но это требуется нечасто (и, по возможности, конечно, нужно этого избегать).
На Панели инструментов обратим внимание на кнопку Deploy Current Diagram (Развернуть текущую диаграмму) — см. рис.
Эта кнопка позволяет поместить диаграмму на сервер Camunda (тестовый или производственный) прямо из Camunda Modeler. При нажатии на нее откроется окно, аналогичное представленному на рис.
Конечно, можно пойти и обходным путем: сохранить диаграмму в файле формата BPMN и уже потом выложить ее на сервер, но выгрузка напрямую обычно удобнее.
Диаграмму можно сохранить и в графических форматах PNG/JPEG/SVG, если, например, вам потребовалось распечатать схему сложного бизнес-процесса для обсуждения.
В левой части Camunda Modeler находится Палитра элементов (Elements palette) — см. рис.
Разработчики диаграмм BPMN обычно берут элементы из этой палитры, перетаскивают в область диаграммы (центральную область окна Camunda Modeler) и настраивают. Заметим, что элементов, на первый взгляд, в палитре существенно меньше, чем предусмотрено стандартом BPMN. Связано это с тем, что в палитре присутствует лишь базовый набор элементов: другие элементы получаются из базовых путем преобразования их в области диаграммы. Например, в нашей диаграмме преобразовать стартовое событие в событие-сообщение можно так, если щелкнуть по объекту стартового события, нажать в контекстном наборе фигур на гаечный ключ и в списке типов сообщений выбрать Message Start Event (см. рис.).
Из этого же контекстного набора фигур очень удобно выбрать следующий элемент бизнес-процесса, вместо того, чтобы перетягивать его из палитры и затем связывать.
Пользовательских элементов в Camunda Modeler не предусмотрено. Их функциональность можно реализовывать при помощи шаблонов элементов/связанных классов Java (про эти возможности будет рассказано в следующих разделах). Можно также воспользоваться бесплатной альтернативой Camunda Modeler, которая называется BPMN.IO и в которой пользовательские элементы предусмотрены изначально.
Мастерство создателя диаграмм BPMN во многом заключается в том, насколько правильно он выбирает и расставляет элементы палитры (а также настраивает их свойства). Про работу с элементами диаграмм BPMN будет рассказано в следующих разделах.
В центральной части окна Camunda Modeler расположена сама диаграмма. Реальные рабочие процессы могут очень большими по размеру и включать в себя большое количество элементов, поэтому для комфортной работы разработчику бизнес-процессов рекомендуется большой монитор (а лучше — несколько). Чуть упростить навигацию по диаграмме позволит мини-карта (Minimap), кнопка для включения которой расположена в правом верхнем углу окна диаграммы.
В правой части окна Camunda Modeler расположена Панель свойств (Properties Panel) — см. рис.
В этом окне производится настройка свойств как самого процесса BPMN, так и его элементов.
Обычная последовательность работы с процессами BPMN (CMMN, DMN) в Camunda Modeler выглядит следующим образом:
- Средствами Camunda Modeler создаем новый процесс (диаграмму BPMN) и настраиваем его свойства.
- Размещаем на этой диаграмме элементы, меняем типы, связываем элементы.
- Настраиваем свойства элементов (на этом этапе производится привязка программного кода и форм к элементам).
- Публикуем процесс на тестовом сервере и запускаем его для проверки работоспособности (из самого Camunda Modeler запустить процесс, увы, нельзя).
- Выявляем проблемы и вносим изменения в процесс. Чтобы не возникало ситуаций вида «починил одно — в результате отвалилось другое», очень рекомендуется использовать юнит-тесты.
- Публикуем окончательную версию процесса на производственном сервере, предоставляем пользователям разрешения на этот процесс и интерфейс для его запуска.
Все эти моменты будут рассмотрены в следующих разделах.
Евгений Тришечкин
ведущий Java-разработчик ростовского офиса компании Usetech
Меня зовут Евгений Тришечкин, я ведущий Java разработчик ростовского офиса компании Usetech, и сегодня хочу поделиться с вами применением Camunda BPM в Java разработке.
В рамках статьи я расскажу об основных компонентах системы управления бизнес-процессами Camunda. Покажу развертывание системы, моделирование и деплой простого процесса. А также, на примере созданного процесса, проиллюстрирую взаимодействие Java/SpringBoot приложения с Camunda.
Давайте сначала разберемся с терминологией и выясним, что же такое BPM, BPMS и BPMN.
BPM (Business process management) — концепция управления организацией, рассматривающая бизнес-процессы как особые ресурсы предприятия, непрерывно адаптируемые к постоянным изменениям, и полагающаяся на такие принципы, как понятность и видимость бизнес-процессов в организации за счет их моделирования с использованием формальных нотаций, использования программного обеспечения моделирования, симуляции, мониторинга и анализа бизнес-процессов, возможность динамического перестроения моделей бизнес-процессов силами участников и средствами программных систем.
Другими словами, BPM отвечает на вопросы, где, когда, зачем, как и какая задача выполняется и кто отвечает за ее выполнение.
BPMS (Business Process Management System) – программное обеспечение, обеспечивающее прикладную реализацию концепции BPM.
BPMN (Business Process Modeling Notation) – нотация (система графических обозначений и их описание в формате XML) бизнес-процесса.
BPMS на рынке существует великое множество, включая лидеров рынка – Oracle или IBM. Из названия понятно, что эти системы очень мощные, сильные, дорогие и подходят далеко не каждой организации, а стоимость их внедрения может начинаться от 100.000 евро и выше. Понятно, что только крупные компании могут себе позволить внедрить такую систему.
- На мой взгляд небольшим компаниям стоит обратить внимание на другие системы, внедрение которых обойдется в меньшие деньги. Например, российская компания ELMA запустила свой собственный продукт ELMA BPM, написанный на стеке .NET и имеющий бесплатную версию. Цена на Enterprise версию также вполне демократичная, кроме того, на сайте можно найти обучающие курсы и много другой полезной информации.
- Из зарубежных вендоров с демократическими ценами или бесплатными версиями я бы выделил jBPM.
- И еще одна бесплатная BPM система Аctivity, которую в 2013 году форкнули и из которой получилась известная многим Camunda BPM.
Компания Camunda Services, которая является вендором Camunda BPM, долгое время занималась консультированием организаций в области управления бизнес-процессами, но в результате создала свой продукт и начала активно его развивать.
В сети есть разные сравнения Аctivity и Camunda и, по большей части, они в пользу последней, да и список компаний, использующих камунду достаточно обширный: Deutsche Bank, Goldman Sachs Group, Тинькофф банк, Сбер, Теле 2 и т.д.
Мы все понимаем, что бизнес-процесс должен быть максимально понятным. Моделирование процессов происходит с применением нотаций (нотации — это система графических обозначений и их описание в формате XML). Нотаций существует довольно много, но самая популярная из них, конечно, текущая версия BPMN 2.0 (2.0.2 – 2014 г), которая постепенно развивается и пополняется новыми элементами.
Рассмотрим пример бизнес-процесса, описанном нотацией BPMN:

Евгений Тришечкин
ведущий Java-разработчик ростовского офиса компании Usetech
Меня зовут Евгений Тришечкин, я ведущий Java разработчик ростовского офиса компании Usetech, и сегодня хочу поделиться с вами применением Camunda BPM в Java разработке.
В рамках статьи я расскажу об основных компонентах системы управления бизнес-процессами Camunda. Покажу развертывание системы, моделирование и деплой простого процесса. А также, на примере созданного процесса, проиллюстрирую взаимодействие Java/SpringBoot приложения с Camunda.
Давайте сначала разберемся с терминологией и выясним, что же такое BPM, BPMS и BPMN.
BPM (Business process management) — концепция управления организацией, рассматривающая бизнес-процессы как особые ресурсы предприятия, непрерывно адаптируемые к постоянным изменениям, и полагающаяся на такие принципы, как понятность и видимость бизнес-процессов в организации за счет их моделирования с использованием формальных нотаций, использования программного обеспечения моделирования, симуляции, мониторинга и анализа бизнес-процессов, возможность динамического перестроения моделей бизнес-процессов силами участников и средствами программных систем.
Другими словами, BPM отвечает на вопросы, где, когда, зачем, как и какая задача выполняется и кто отвечает за ее выполнение.
BPMS (Business Process Management System) – программное обеспечение, обеспечивающее прикладную реализацию концепции BPM.
BPMN (Business Process Modeling Notation) – нотация (система графических обозначений и их описание в формате XML) бизнес-процесса.
BPMS на рынке существует великое множество, включая лидеров рынка – Oracle или IBM. Из названия понятно, что эти системы очень мощные, сильные, дорогие и подходят далеко не каждой организации, а стоимость их внедрения может начинаться от 100.000 евро и выше. Понятно, что только крупные компании могут себе позволить внедрить такую систему.
- На мой взгляд небольшим компаниям стоит обратить внимание на другие системы, внедрение которых обойдется в меньшие деньги. Например, российская компания ELMA запустила свой собственный продукт ELMA BPM, написанный на стеке .NET и имеющий бесплатную версию. Цена на Enterprise версию также вполне демократичная, кроме того, на сайте можно найти обучающие курсы и много другой полезной информации.
- Из зарубежных вендоров с демократическими ценами или бесплатными версиями я бы выделил jBPM.
- И еще одна бесплатная BPM система Аctivity, которую в 2013 году форкнули и из которой получилась известная многим Camunda BPM.
Компания Camunda Services, которая является вендором Camunda BPM, долгое время занималась консультированием организаций в области управления бизнес-процессами, но в результате создала свой продукт и начала активно его развивать.
В сети есть разные сравнения Аctivity и Camunda и, по большей части, они в пользу последней, да и список компаний, использующих камунду достаточно обширный: Deutsche Bank, Goldman Sachs Group, Тинькофф банк, Сбер, Теле 2 и т.д.
Мы все понимаем, что бизнес-процесс должен быть максимально понятным. Моделирование процессов происходит с применением нотаций (нотации — это система графических обозначений и их описание в формате XML). Нотаций существует довольно много, но самая популярная из них, конечно, текущая версия BPMN 2.0 (2.0.2 – 2014 г), которая постепенно развивается и пополняется новыми элементами.
Рассмотрим пример бизнес-процесса, описанном нотацией BPMN:
На картинке изображен процесс регистрации нового пользователя на портале, в достаточно упрощенном формате.
Здесь нарисован пул процесса и отдельными линиями – дорожки процесса. Каждая дорожка — это отдельная роль бизнес-процессов. Верхняя — это инициатор процессов, посередине – портал и внизу – ответственный за исполнение бизнес-процессов.
Зеленый кружок — стартовые события процессов, красные кружки – конечные события процессов.
Прямоугольник — задачи (=таски), которые исполняются во время жизненного цикла бизнес-процесса.
Задачи со значком шестеренок — сервисные задачи, которые не требуют участия оператора.
Задачи со значком человечка – это те задачи, которые требуют участия человека.
Данная система создана для примера и сильно упрощена, в полноценных системах присутствуют и другие элементы, шлюзы, которые реализуют ветвление, есть перехватчики событий, таймеры, и многое другое.
- Платформа управления бизнес-процессами, реализующая стандарты BPMN (Business Process Model and Notation), DMN (Decision Model and Notation) и CMMN (Case Management Model and Notation).
- Community версия имеет открытый исходный код, лицензия Apache-2.0.
- Основана на технологическом стеке популярного языка программирования Java. Имеет интеграцию с Spring/Spring Boot.
DMN – это модель принятия решения, которая представляет собой таблицу входных значений и результирующего выходного значения. Полезна в таких задачах, как принятие решения. Допустим, нужно принять решения о выдаче кредита или открытии счета и именно в этой таблице DMN вы найдете множество вводных параметров и выходной параметр, то есть результат – выдавать кредит или нет.
Компоненты CAMUNDA BPM (Community)
Давайте подробнее рассмотрим компоненты комьюнити версии Camunda:
- Camunda Modeler – кросс-платформенное приложение с графическим интерфейсом, в котором бизнес-аналитик или архитектор процесса может моделировать иили редактировать схемы процессов. Поддерживает нотации BPMN 2.0, DMN 1.1, CMMN 1.1. Это отдельное кросс-платформенное приложение с графическим интерфейсом, в котором бизнес-аналитик или архитектор процесса может составлять иили редактировать схемы процессов.
- Camunda Tasklist — веб-приложение, через которое конечные пользователи могут зайти, посмотреть какие задачи на у них назначены и выполнить какие-то действия.
- Camunda Cockpit – веб-приложение, которое создано для операторов или владельцев бизнес-процессов, обеспечивающее мониторинг и управление бизнес-процессами
- Camunda Admin – веб-приложение, интерфейс администратора системы, в котором идет управление ролями, пользователя, группами и т.д.
- Центральная часть системы Camunda BPM – это движок, который управляет процессом в соответствии с нарисованными схемами и нотациями CMMN и тд, и преобразует их в код, а потом — исполняет.
- Обратите внимание, что над движком существует надстройка, которая реализует REST или Java API. REST/Java API — программный интерфейс системы, обеспечивающий взаимодействие как с внешними (REST), так и внутренними (Java) компонентами. Rest API достаточно обширный, удобный и позволяет реализовывать всякие кастомные приложения. Например, там можно написать свой таск-лист, но подробнее мы рассмотрим эту возможность чуть позже.
Компоненты Camunda BPM (Enterprise)
Enterprise версия – платная, договор, тех поддержка 247 и в техническом плане она получше комьюнити версии. Например, появляются:
Enterprise Cockpit — расширенная версия Camunda Cockpit, содержащая в себе дополнительные функции: развертывание описаний процессов, перезапуск экземпляров процессов, расширенный поиск по экземплярам процессов, миграция экземпляров процессов между версиями.
Camunda Optimize — оптимизация и улучшение бизнес-процессов, выявление «узких мест», отчеты и «тепловые карты» процессов, все это помогает улучшить, оптимизировать и модернизировать бизнес-процессы.
Пример тепловой карты процесса
Тепловая карта показывает относительную частоту выполнения той или иной задачи в процессе. Она помогает визуализировать результат и принять решение, какой участок более нагружен и за счет каких ресурсовдействий его можно разгрузить.
Способы развертывания Camunda BPM
Как я ранее писал, Camunda BPM написана на тех. стеке Java, поэтому у нее есть много способов развертывания.
Первый и самый простой – встроенная библиотека в приложении и именно его мы будем подробно разбирать.
Второй способ тоже подходит для Java приложений — сервис внутри сервера приложений или контейнера сервлетов («расшаренный» сервис), который могут использовать другие приложения, развернутые в контейнере.
Третий способ, если приложения написаны не на Java, развернуть Camunda как отдельно стоящий сервер и приложение будут с ним контактировать по Rest API удаленно.
Четвертый способ для высоконагруженных систем — кластерное развёртывание для высоконагруженных систем, когда есть общая база данных и несколько нод с камундой.
Практическая часть – пробуем Camunda своими руками
- Заходим на https://start.camunda.com/.
- Знакомимся с Initializr, который достаточно примитивный, но рабочий. В нем вводим — группу, артефакт, версию Сamunda, версию Java (она никак там не ограничивается, я пробовал java 135 — все нормально, проект сгенерировался). Хочу обратить ваше внимание, что другие языки программирования кроме Java, Scala, Kotlin, выбрать нельзя.
- Скачиваем и открываем сгенерированный проект.
Внутри мы видим один класс Application — @SpringBootApplication, как я и писал ранее, камунда хорошо интегрируется со SpringBoot. А также в проекте есть файл с настройками приложения и файл с описанием процесса в формате BPM.
Процесс состоит из следующих этапов: стартовое событие, пользовательская задача, конечное событие. Пользовательская задача, самая простая, выглядит так: пользователь открыл задачу, нажал – завершить задачу и процесс завершился.
Но давайте немного усложним задачу и внесем изменения в процесс. Процесс мы сделаем процессом регистрации пользователя на портале, тот пример, о котором мы говорили в начале статьи и к которому обещал вернуться. Для этого нам нужно изменить стартовое событие и добавить туда переменную «username», которая добавляется через Camunda Modeler (кросс-платформенное решение, скачивается с официального сайта, бесплатное)
В результате у нас получилось модифицировать стартовое событие. Дальше необходимо модифицировать пользовательскую задачу, тут же добавляем форму с именем пользователя. Причем имя пользователя мы делаем «read only», чтобы тот человек, который будет утверждать создание нового пользователя не мог изменить его имя. А также добавляем переменную «decision», которая позволяет утвердить или отклонить эту регистрацию.
Запускаем экземпляр процесса. Для запуска экземпляра процесса заходим в приложение Camunda Tasklist (веб-приложение, через которое конечные пользователи могут зайти, посмотреть какие задачи на них назначены и выполнить какие-то действия) и нажимаем «Запустить процесс».
Находим свой демо процесс, который мы создали и видим форму запуска процесса.
После этого появляется окошко для ввода имени пользователя (переменная username), заполняем его и запускаем процесс.
Процесс запущен, и мы видим, что на пользователя Demo упала задача. Задача, как и ожидается называлась отклонить или утвердить регистрацию. Выделяем ее и видим форму, которую мы создавали. Также мы видим имя пользователя, которое нельзя редактировать, а решение – можно. Завершаем задачу, нажав кнопку «Complete» и на этом процесс завершается.
Давайте добавим немного экшена в процесс и усложним задачу – создадим ветвления.
Для этого добавляем к существующему процессу — шлюз, который будет «ветвить» этот алгоритм:
- Если
decisionравенtrue, тогда создать нового пользователя. - Если
decisionравенfalse, то просто отправить уведомление о том, что пользователь не создан.
И также создаем конечное событие. В результате у нас появляются два сервисных таска: создать нового пользователя и отправить уведомление. Сервисные таски, как я уже писал ранее, это таски, которые не требуют участия оператора в их выполнении. Следовательно, в них должна быть заложена логика и здесь мы покажем простой способ взаимодействия с Java кодом.
Выделяем модуль или сервисный таск и в нем прописываем implementation, выбирая способ Delegate Expression и добавляем в Delegate Expression собственное имя. Собственно этот бин нам и нужно создать в коде.
Для этого создаем класс CreateNewUser, помечаем его как компонент, чтобы спринг создал в контексте соответствующий бин, а этот класс должен имплементировать JavaDelegate.
В JavaDelegate есть метод execute, который и будет выполняться, когда поток выполнения придет в этот сервисный таск. На примере выше мы видим, что из переменной DelegateExecution можно вытащить переменную процесса, то есть username, которую мы вводили при старте процесса. Если все пройдет успешно, то в логе мы увидим сообщение, что пользователь успешно зарегистрирован.
Аналогично поступим в другим сервисным таском – отправить уведомление.
Также пропишем Delegate Expression, добавляем ему имя бина «notifyUser» и создаем соответствующий компонент, реализующий JavaDelegate в коде.
Внутри метода execute мы возьмем переменную decision, также через объект DelegateExecution, и в зависимости от этой переменной вы увидите разные сообщения:
- если
decisionравенtrue, то мы видим «, добро пожаловать на портал!» - если
decisionравенfalse, то мы видим «, вам отказано в регистрации»
Вот этот способ через DelegateExecution работает только в случае с Java приложениями.
Возникает вопрос: а что делать, если приложение не на Java или если Camunda развернута на отдельном сервер?
В этом случае выбираете способ имплементации не Delegate Expression, а External и просто указываете какой-то топик, куда будет отправлен месседж и, соответственно, через очереди будет делегироваться выполнение в ваш код.
Последний шаг – запустить все то, что мы создали. Вводим имя
Видим таск «утвердитьотклонить регистрацию». Допустим, мы отклоняем регистрацию. Тогда не ставим галочку в поле «Утвердить?» и нажимаем «Complete».
После этого переходим в логи и видим, что пользователю Дарт Вейдер отказано в регистрации
Если мы принимаем регистрацию, то ставим галочку в поле «Утвердить?» и нажимаем «Complete». В этом случае процесс исполняется по другой ветке и в логах отображается по-другому.
Вместо вывода
Выше я описал самую простую схему процесса. В реальности же системы намного сложнее с множественными ветвлениями, а в эти диаграммы BPM можно вставлять другие таски, которые могут реализовать нотации DMN.
Camunda не позиционирует себя как low-code или no-code система. Camunda позиционирует себя как систему, где должно быть разумное сочетание, своеобразный симбиоз, между бизнесом, аналитиками и разработкой.
Полезные ссылки
- Быстрый старт
- Описание стандарта BPMN0
- Описание Rest API
- Практический курс BPMN0 от российской компании ELMA

Camunda — это отличный бесплатный BPM-движок для автоматизации бизнес-процессов. В этой статье я расскажу как по шагам сделать первую заготовку проекта с использованием языка Kotlin и Camunda. Уровень сложности материала низкий — статья снабжена скриншотами и видеоверсией. Вам нужно просто пройти по инструкции.
Вот видеоверсия статьи, кому-то может быть удобнее:
Как вообще можно использовать Camunda
Camunda можно использовать в двух вариантах:
- Standalone-сервер — в этом случае вы ставите приложение с сервером отдельно и заливаете на него свои процессы с помощью .war-файлов. База общая, исполнители задач общие, админка общая.
Я разбирал такой вариант подробно на видео.
- Библиотека внутри приложения — в этом случае вы разрабатывает обычное Java-приложение (в нашем случае Kotlin), и в зависимостях указываете Camunda. База своя, задачи свои, админка своя, исполнители свои.
Первый вариант удобнее для эксплуатации — следить нужно только за одной базой и одной камундой, но создает проблему “шумных соседей” — если кто-то из коллег сделает кривой процесс, то лягут все.
Второй способ удобнее полной независимостью, но создает сложности в администрировании и управлении задачами. Какой вариант выбирать каждая компания сама решает, но я за второй: все проблемы решаются, а вот в первом с шумными соседями ничего не сделать. И это ОЧЕНЬ больно и неприятно на проде, когда вы начинаете падать из-за коллег.
Предварительная подготовка рабочего места
Для создания первого проекта на Camunda вам потребуется:
- Среда разработки — IntelliJ Idea (https://www.jetbrains.com/idea/download/#section=windows). В этой штуке мы будем программировать.
- Сама Java — https://java.com/ru/download/ . Эта штука позволит среде разработки понять, что мы написали и обьяснить компьютеру.
- Postgresql https://www.postgresql.org/download/windows/ . Это база данных, Camunda будет сохранять туда информацию о всём происходящем.
- Excamad — https://github.com/KotskinKotskin/camunda-excamad/releases . Это дополнительная админка, которая позволит нам лучше понимать что происходит в Camunda.
- Camunda modeler — https://camunda.com/products/modeler/ . Эта штука поможет нам создавать диаграммы в BPMN и решения в DMN.
Поставьте всё себе на компьютер,сложностей не должно возникнуть. Если возникли, то пишите в комментарии, разберемся.
Почему Kotlin и Spring(boot)
Вместо Java мы будем использовать язык Kotlin — это статически типизированный язык программирования, работающий поверх JVM. Он более лаконичный и безопасный, чем Java. И порог входа в него немного ниже, что в этом случае нам очень важно.
Еще мы будем использовать Spring — это набор библиотек для Java, которые делают жизнь проще. А Spring boot — это еще одна штука, которая делает жизнь разработчика со Spring еще проще 🙂 В ообщем, программерская магия, которая не имеет отношения к статье.
Создаем приложение
- Создаем приложение — воспользуемся сайтом https://start.spring.io/, он сформирует для нас структуру проекта и добавит нужные зависимости. Установите такие параметры:
- Скачиваем папку с приложением.
- Запускаем IDEA и откройте в ней папку с приложением:
В параметрах укажите что разрешаете авто-импорт зависимостей.
- Создаем базу данных в postgres: запустите приложение PgAdmin, войдите в него с логином и паролем, которое указывали при установке.Подключитесь к локальному серверу и создайте базу camundabpmn2
- Указываем данные для подключения к базе в файле application.properties
logging.level.org.springframework.web=DEBUG spring.datasource.url=jdbc:postgresql://localhost/camundabpmn2 spring.datasource.username=postgres spring.datasource.password=mypassword spring.jpa.generate-ddl=true spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
Вы получили работающее приложение, давайте проверим что всё ок. Запустите его:
Запускаем пустую Camunda
Для запуска камунды нам нужно добавить зависимости в файл pom.xml. В этом файле хранится информация о том, какие внешние библиотеки мы используем. Добавим много библиотек — для тестирования, логирования, саму Camunda, REST интерфейсы, работа c JSON. За что отвечает каждая из библиотек понятно из названия. В итоге раздел в pom.xml должен выглядеть так:
<dependencies>
<dependency>
<groupId>io.github.microutils</groupId>
<artifactId>kotlin-logging</artifactId>
<version>1.6.24</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.extension.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-test</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.assert</groupId>
<artifactId>camunda-bpm-assert</artifactId>
<version>3.0.0-alpha1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm.assert</groupId>
<artifactId>camunda-bpm-assert</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.camunda.spin</groupId>
<artifactId>camunda-spin-dataformat-json-jackson</artifactId>
<version>1.6.7</version>
</dependency>
<dependency>
<groupId>org.camunda.spin</groupId>
<artifactId>camunda-spin-core</artifactId>
<version>1.6.7</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-spin</artifactId>
<version>7.10.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Ждём, пока скачаются все зависимости (полоска в правом нижнем углу).
- В главный класс дописываем аннотацию @EnableProcessApplication
- Добавляем проект excamad в папку static, для того чтобы заработала моя дополнительная админка
- Запускаем приложение, перейдем по ссылке http://localhost:8080/. Если видим приглашение зарегистрироваться, делаем учетную запись demo/ demo
- Заходим по ссылке http://localhost:8080/index.html, видим котиков — значит excamad работает. В разделе settings пропишем http://localhost:8080/rest/
Если вы сделали всё правильно, то у вас готова чистая Camunda на Kotlin. Теперь её можно наполнять вашими бизнес-процессами, этим займемся в других статьях.
В итоге
Как вы видите, сделать подготовительную работу для последующей автоматизации на Camunda совсем не сложно. Проще, чем развернуть кластер IBM BPM. У вас получилось? Напишите о вашем опыте в статье.
Продолжение статьи.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
ТэгиCamunda
Вам так же понравится
Разбираемся в основных компонентах системы управления бизнес-процессами Camunda на примере создания простого процесса.
Меня зовут Евгений Тришечкин, я ведущий Java разработчик ростовского офиса компании Usetech, и сегодня хочу поделиться с вами применением Camunda BPM в Java разработке.
В рамках статьи я расскажу об основных компонентах системы управления бизнес-процессами Camunda. Покажу развертывание системы, моделирование и деплой простого процесса. А также, на примере созданного процесса, проиллюстрирую взаимодействие Java/SpringBoot приложения с Camunda.
Давайте сначала разберемся с терминологией и выясним, что же такое BPM, BPMS и BPMN.
BPM (Business process management) — концепция управления организацией, рассматривающая бизнес-процессы как особые ресурсы предприятия, непрерывно адаптируемые к постоянным изменениям, и полагающаяся на такие принципы, как понятность и видимость бизнес-процессов в организации за счет их моделирования с использованием формальных нотаций, использования программного обеспечения моделирования, симуляции, мониторинга и анализа бизнес-процессов, возможность динамического перестроения моделей бизнес-процессов силами участников и средствами программных систем.
Другими словами, BPM отвечает на вопросы, где, когда, зачем, как и какая задача выполняется и кто отвечает за ее выполнение.
BPMS (Business Process Management System) – программное обеспечение, обеспечивающее прикладную реализацию концепции BPM.
BPMN (Business Process Modeling Notation) – нотация (система графических обозначений и их описание в формате XML) бизнес-процесса.
BPMS на рынке существует великое множество, включая лидеров рынка – Oracle или IBM. Из названия понятно, что эти системы очень мощные, сильные, дорогие и подходят далеко не каждой организации, а стоимость их внедрения может начинаться от 100.000 евро и выше. Понятно, что только крупные компании могут себе позволить внедрить такую систему.
- На мой взгляд небольшим компаниям стоит обратить внимание на другие системы, внедрение которых обойдется в меньшие деньги. Например, российская компания ELMA запустила свой собственный продукт ELMA BPM, написанный на стеке .NET и имеющий бесплатную версию. Цена на Enterprise версию также вполне демократичная, кроме того, на сайте можно найти обучающие курсы и много другой полезной информации.
- Из зарубежных вендоров с демократическими ценами или бесплатными версиями я бы выделил jBPM.
- И еще одна бесплатная BPM система Аctivity, которую в 2013 году форкнули и из которой получилась известная многим Camunda BPM.
Компания Camunda Services, которая является вендором Camunda BPM, долгое время занималась консультированием организаций в области управления бизнес-процессами, но в результате создала свой продукт и начала активно его развивать.
В сети есть разные сравнения Аctivity и Camunda и, по большей части, они в пользу последней, да и список компаний, использующих камунду достаточно обширный: Deutsche Bank, Goldman Sachs Group, Тинькофф банк, Сбер, Теле 2 и т.д.
Мы все понимаем, что бизнес-процесс должен быть максимально понятным. Моделирование процессов происходит с применением нотаций (нотации — это система графических обозначений и их описание в формате XML). Нотаций существует довольно много, но самая популярная из них, конечно, текущая версия BPMN 2.0 (2.0.2 – 2014 г), которая постепенно развивается и пополняется новыми элементами.
Рассмотрим пример бизнес-процесса, описанном нотацией BPMN:
На картинке изображен процесс регистрации нового пользователя на портале, в достаточно упрощенном формате.
Здесь нарисован пул процесса и отдельными линиями – дорожки процесса. Каждая дорожка — это отдельная роль бизнес-процессов. Верхняя — это инициатор процессов, посередине – портал и внизу – ответственный за исполнение бизнес-процессов.
Зеленый кружок — стартовые события процессов, красные кружки – конечные события процессов.
Прямоугольник — задачи (=таски), которые исполняются во время жизненного цикла бизнес-процесса.
Задачи со значком шестеренок — сервисные задачи, которые не требуют участия оператора.
Задачи со значком человечка – это те задачи, которые требуют участия человека.
Данная система создана для примера и сильно упрощена, в полноценных системах присутствуют и другие элементы, шлюзы, которые реализуют ветвление, есть перехватчики событий, таймеры, и многое другое.
Что же такое Camunda BPM?
- Платформа управления бизнес-процессами, реализующая стандарты BPMN (Business Process Model and Notation), DMN (Decision Model and Notation) и CMMN (Case Management Model and Notation).
- Community версия имеет открытый исходный код, лицензия Apache-2.0.
- Основана на технологическом стеке популярного языка программирования Java. Имеет интеграцию с Spring/Spring Boot.
DMN – это модель принятия решения, которая представляет собой таблицу входных значений и результирующего выходного значения. Полезна в таких задачах, как принятие решения. Допустим, нужно принять решения о выдаче кредита или открытии счета и именно в этой таблице DMN вы найдете множество вводных параметров и выходной параметр, то есть результат – выдавать кредит или нет.
Компоненты CAMUNDA BPM (Community)
Давайте подробнее рассмотрим компоненты комьюнити версии Camunda:
- Camunda Modeler – кросс-платформенное приложение с графическим интерфейсом, в котором бизнес-аналитик или архитектор процесса может моделировать и\или редактировать схемы процессов. Поддерживает нотации BPMN 2.0, DMN 1.1, CMMN 1.1. Это отдельное кросс-платформенное приложение с графическим интерфейсом, в котором бизнес-аналитик или архитектор процесса может составлять и\или редактировать схемы процессов.
- Camunda Tasklist — веб-приложение, через которое конечные пользователи могут зайти, посмотреть какие задачи на у них назначены и выполнить какие-то действия.
- Camunda Cockpit – веб-приложение, которое создано для операторов или владельцев бизнес-процессов, обеспечивающее мониторинг и управление бизнес-процессами
- Camunda Admin – веб-приложение, интерфейс администратора системы, в котором идет управление ролями, пользователя, группами и т.д.
- Центральная часть системы Camunda BPM – это движок, который управляет процессом в соответствии с нарисованными схемами и нотациями CMMN и тд, и преобразует их в код, а потом — исполняет.
- Обратите внимание, что над движком существует надстройка, которая реализует REST или Java API. REST/Java API — программный интерфейс системы, обеспечивающий взаимодействие как с внешними (REST), так и внутренними (Java) компонентами. Rest API достаточно обширный, удобный и позволяет реализовывать всякие кастомные приложения. Например, там можно написать свой таск-лист, но подробнее мы рассмотрим эту возможность чуть позже.
Компоненты Camunda BPM (Enterprise)
Enterprise версия – платная, договор, тех поддержка 24\7 и в техническом плане она получше комьюнити версии. Например, появляются:
Enterprise Cockpit — расширенная версия Camunda Cockpit, содержащая в себе дополнительные функции: развертывание описаний процессов, перезапуск экземпляров процессов, расширенный поиск по экземплярам процессов, миграция экземпляров процессов между версиями.
Camunda Optimize — оптимизация и улучшение бизнес-процессов, выявление «узких мест», отчеты и «тепловые карты» процессов, все это помогает улучшить, оптимизировать и модернизировать бизнес-процессы.
Пример тепловой карты процесса
Тепловая карта показывает относительную частоту выполнения той или иной задачи в процессе. Она помогает визуализировать результат и принять решение, какой участок более нагружен и за счет каких ресурсов\действий его можно разгрузить.
Способы развертывания Camunda BPM
Как я ранее писал, Camunda BPM написана на тех. стеке Java, поэтому у нее есть много способов развертывания.
Первый и самый простой – встроенная библиотека в приложении и именно его мы будем подробно разбирать.
Второй способ тоже подходит для Java приложений — сервис внутри сервера приложений или контейнера сервлетов («расшаренный» сервис), который могут использовать другие приложения, развернутые в контейнере.
Третий способ, если приложения написаны не на Java, развернуть Camunda как отдельно стоящий сервер и приложение будут с ним контактировать по Rest API удаленно.
Четвертый способ для высоконагруженных систем — кластерное развёртывание для высоконагруженных систем, когда есть общая база данных и несколько нод с камундой.
Практическая часть – пробуем Camunda своими руками
- Заходим на https://start.camunda.com/.
- Знакомимся с Initializr, который достаточно примитивный, но рабочий. В нем вводим — группу, артефакт, версию Сamunda, версию Java (она никак там не ограничивается, я пробовал java 135 — все нормально, проект сгенерировался). Хочу обратить ваше внимание, что другие языки программирования кроме Java, Scala, Kotlin, выбрать нельзя.
- Скачиваем и открываем сгенерированный проект.
Внутри мы видим один класс Application — @SpringBootApplication, как я и писал ранее, камунда хорошо интегрируется со SpringBoot. А также в проекте есть файл с настройками приложения и файл с описанием процесса в формате BPM.
Процесс состоит из следующих этапов: стартовое событие, пользовательская задача, конечное событие. Пользовательская задача, самая простая, выглядит так: пользователь открыл задачу, нажал – завершить задачу и процесс завершился.
Но давайте немного усложним задачу и внесем изменения в процесс. Процесс мы сделаем процессом регистрации пользователя на портале, тот пример, о котором мы говорили в начале статьи и к которому обещал вернуться. Для этого нам нужно изменить стартовое событие и добавить туда переменную «username», которая добавляется через Camunda Modeler (кросс-платформенное решение, скачивается с официального сайта, бесплатное)
В результате у нас получилось модифицировать стартовое событие. Дальше необходимо модифицировать пользовательскую задачу, тут же добавляем форму с именем пользователя. Причем имя пользователя мы делаем «read only», чтобы тот человек, который будет утверждать создание нового пользователя не мог изменить его имя. А также добавляем переменную «decision», которая позволяет утвердить или отклонить эту регистрацию.
Запускаем экземпляр процесса. Для запуска экземпляра процесса заходим в приложение Camunda Tasklist (веб-приложение, через которое конечные пользователи могут зайти, посмотреть какие задачи на них назначены и выполнить какие-то действия) и нажимаем «Запустить процесс».
Находим свой демо процесс, который мы создали и видим форму запуска процесса.
После этого появляется окошко для ввода имени пользователя (переменная username), заполняем его и запускаем процесс.
Процесс запущен, и мы видим, что на пользователя Demo упала задача. Задача, как и ожидается называлась отклонить или утвердить регистрацию. Выделяем ее и видим форму, которую мы создавали. Также мы видим имя пользователя, которое нельзя редактировать, а решение – можно. Завершаем задачу, нажав кнопку «Complete» и на этом процесс завершается.
Давайте добавим немного экшена в процесс и усложним задачу – создадим ветвления.
Для этого добавляем к существующему процессу — шлюз, который будет «ветвить» этот алгоритм:
- Если
decisionравенtrue, тогда создать нового пользователя. - Если
decisionравенfalse, то просто отправить уведомление о том, что пользователь не создан.
И также создаем конечное событие. В результате у нас появляются два сервисных таска: создать нового пользователя и отправить уведомление. Сервисные таски, как я уже писал ранее, это таски, которые не требуют участия оператора в их выполнении. Следовательно, в них должна быть заложена логика и здесь мы покажем простой способ взаимодействия с Java кодом.
Выделяем модуль или сервисный таск и в нем прописываем implementation, выбирая способ Delegate Expression и добавляем в Delegate Expression собственное имя. Собственно этот бин нам и нужно создать в коде.
Для этого создаем класс CreateNewUser, помечаем его как компонент, чтобы спринг создал в контексте соответствующий бин, а этот класс должен имплементировать JavaDelegate.
В JavaDelegate есть метод execute, который и будет выполняться, когда поток выполнения придет в этот сервисный таск. На примере выше мы видим, что из переменной DelegateExecution можно вытащить переменную процесса, то есть username, которую мы вводили при старте процесса. Если все пройдет успешно, то в логе мы увидим сообщение, что пользователь успешно зарегистрирован.
Аналогично поступим в другим сервисным таском – отправить уведомление.
Также пропишем Delegate Expression, добавляем ему имя бина «notifyUser» и создаем соответствующий компонент, реализующий JavaDelegate в коде.
Внутри метода execute мы возьмем переменную decision, также через объект DelegateExecution, и в зависимости от этой переменной вы увидите разные сообщения:
- если
decisionравенtrue, то мы видим «, добро пожаловать на портал!» - если
decisionравенfalse, то мы видим «, вам отказано в регистрации»
Вот этот способ через DelegateExecution работает только в случае с Java приложениями.
Возникает вопрос: а что делать, если приложение не на Java или если Camunda развернута на отдельном сервер?
В этом случае выбираете способ имплементации не Delegate Expression, а External и просто указываете какой-то топик, куда будет отправлен месседж и, соответственно, через очереди будет делегироваться выполнение в ваш код.
Последний шаг – запустить все то, что мы создали. Вводим имя
Видим таск «утвердить\отклонить регистрацию». Допустим, мы отклоняем регистрацию. Тогда не ставим галочку в поле «Утвердить?» и нажимаем «Complete».
После этого переходим в логи и видим, что пользователю Дарт Вейдер отказано в регистрации
Если мы принимаем регистрацию, то ставим галочку в поле «Утвердить?» и нажимаем «Complete». В этом случае процесс исполняется по другой ветке и в логах отображается по-другому.
Вместо вывода
Выше я описал самую простую схему процесса. В реальности же системы намного сложнее с множественными ветвлениями, а в эти диаграммы BPM можно вставлять другие таски, которые могут реализовать нотации DMN.
Camunda не позиционирует себя как low-code или no-code система. Camunda позиционирует себя как систему, где должно быть разумное сочетание, своеобразный симбиоз, между бизнесом, аналитиками и разработкой.
Полезные ссылки
BeginnerTime estimate: 15 minutes
Design and deploy a process
In Camunda 8, you have two options to design and deploy a process, but for the purposes for this guide you will find instructions for Web Modeler.
- To create a BPMN diagram, navigate to Web Modeler via the square-shaped icon in the top left corner of the page. Click Modeler, and then click New project.
- Name your project and select Create new file > BPMN Diagram.
- Give your model a descriptive name, and then give your model a descriptive id within the General tab inside the properties panel on the right side of the screen.
- Create a task by dragging the rectangular task icon from the palette, or by clicking the existing start event and clicking the task icon. Make sure there is an arrow connecting the start event to the task.
- Name the task by double-clicking the task or using the properties panel.
- Create an end event by dragging the end event icon from the palette, or by clicking the existing start event and clicking the end event icon.
- No need to save. Web Modeler will autosave every change you make.
You can share read-only models with teammates and other stakeholders via a link. To do this, follow the steps below:
- From your diagram, click the three vertical dots to the right of the Run button. Click Share.
- The Create share link modal will appear. Click Create link to generate a sharable link.
- Your Link URL will appear along with a blue Copy button. Note other options and features available when sharing a diagram, such as sharing via email.
- Send your link to your stakeholder to allow them to view the process. They do not need a Camunda account to view the process.
Collaborate on a process
If you want to invite collaborators to work on your process together, you’ll need to first make sure they have the proper permissions and roles.
- First, add your colleague to the Organization. Click your account name then Organization Management.
- Navigate to Users > Add New User. Add your colleague’s email and assign them an appropriate role — Developer is likely a good default option here as the user will have full access to Console, Operate, and Tasklist without deletion privileges. See all roles and permissions for additional details.
- Click Add. An email will be sent to the email you provided. Your colleague must hit Join to finish adding them to the organization.
- Now that they’re added to the organization, you can add them to a project. Open Modeler, navigate to your project and open the Collaborators panel on the right side.
- Click Add user and find your colleague you added to your organization. Assign their role with the dropdown and click Send invites.
- After your colleague clicks Accept invitation, they will have access to the project based on the role you assigned.
Время на прочтение
6 мин
Количество просмотров 8.3K
В этом году вышел релиз Camunda 8 — это последнее обновление мажорной версии платформы за минувшие семь лет. В статье я поделюсь собственным опытом работы в «восьмерке» и расскажу об основных отличиях от предыдущей версии, но при этом не полезу глубоко «под капот», а опишу их глазами аналитика.
Что такое Camunda: систематизируем сведения из интернета
Мой коллега Сергей, бекенд-разработчик, ёмко и в то же время достаточно точно определил основную суть и назначение этого инструмента:
«Совместное использование BPMN и Camunda приводит к наибольшей степени вовлеченности участников разработки в бизнес-процессы, к более детальному пониманию всех цепочек процессов, и в итоге — к получению командного компаса по лабиринтам процессов».
Camunda — тот самый Low-Code, который дает много готовых решений для автоматизации бизнес-процессов «из коробки». Не буду здесь подробно их расписывать: возможности платформы хорошо описаны на официальном сайте. Важно понимать, что Camunda — это BPMN и Java.
Если использование языка Java дает широкий простор для творчества разработчикам, то BPMN позволяет остальным членам команды лучше понимать друг друга. Почему? — Наличие диаграмм обеспечивают необходимую наглядность, что обеспечивает лучшее понимание логики бизнес-процессов.
Существует множество роликов и публикаций, посвященных платформе Camunda и опыту ее применения в различных проектах. В этих материалах достаточно подробно описаны сложности и ошибки, с которыми сталкиваются команды на практике, а также есть рекомендации, как их избежать. Эти советы сохраняют свою актуальность и сегодня, но при одном условии: важно учитывать изменения, которые появились с выходом новой версии Camunda. С некоторыми из них, существенными для задач аналитика, познакомимся ниже.
Что нового и какие вопросы вызывает восьмая версия
Как уже было отмечено, члены проектной команды взаимодействуют, опираясь на BPMN-диаграммы, которые позволяют всем одинаково понимать логику бизнес-процессов.
BPMN также помогает взаимодействовать с представителями бизнеса: заказчик после вводной демонстрации и необходимых пояснений понимает нотацию и достаточно хорошо ориентируется в элементах диаграммы. Бывает и такое, что заказчик сам знает и активно использует BPMN.
Тем не менее, обилие элементов нотации (~480 элементов), в частности большое количество событий и шлюзов, может сбить с толку команду и вызвать затруднения при работе со схемами бизнес-процессов.
Хорошая новость как раз в том, что в восьмой версии Camunda сократили число элементов, доступных для построения диаграмм.
Что же изменилось?
События (Эвенты)
Из новой версии исключили:
1. Стартовые события следующих типов:
-
conditional start event;
-
signal start event (поддержка сигналов на момент публикации ещё не реализована).
2. Промежуточные события следующих типов:
-
escalation intermediate throw event;
-
conditional intermediate catch event;
-
link intermediate catch event;
-
link intermediate throw event;
-
compensation intermediate throw event;
-
signal intermediate catch event;
-
signal intermediate throw event.
3. Завершающие события следующих типов:
-
escalation end event;
-
compensation end event;
-
signal end event;
-
terminate end event — пожалуй, самая большая потеря, так как «terminate end event» — достаточно удобная штука. На мой взгляд.
4. Boundary events следующих типов:
-
escalation boundary event;
-
conditional boundary event;
-
compensation boundary event;
-
signal boundary event;
-
escalation boundary event (non-interrupting);
-
conditional boundary event (non-interrupting);
-
signal boundary event (non-interrupting).
А что осталось?
1. Помимо простых событий каждого вида по-прежнему доступны:
-
message start event;
-
timer start event;
-
message intermediate catch event;
-
message intermediate throw event;
-
timer intermediate event;
-
message end event;
-
error end event.
2. А также следующий набор boundary events:
-
message boundary event;
-
timer boundary event;
-
error boundary event;
-
message boundary event (non-interrupting);
-
timer boundary event (non-interrupting).
Шлюзы
Шлюзы следующих типов также не поддерживаются новой версией платформы:
-
inclusive gateway;
-
complex gateway.
Доступны только:
-
parallel gateway;
-
event based gateway;
-
exclusive gateway.
Таски
Набор доступных тасков не изменился. Изменения затронули внутреннюю структуру.
Одно из заметных преобразований — отсутствие блока «Implementation» среди атрибутов сервис-таска. Его заменили на «Task definition», который теперь не содержит предопределенных типов. К примеру, необходимости указывать «JavaClass» больше нет: не таск ссылается на «JavaClass», а сам код обращается к нужному таску. А для сервис-таска достаточно указать атрибут type и число попыток запуска в случае неудачи — атрибут retries (по умолчанию равен 3).
Такое решение по началу сбивает с толку, но по своей сути оно намного ближе к Low-Code по сравнению с тем, что было в предыдущей версии.
Коннекторы
Появились коннекторы, своего рода Low-Code интеграции, которые разделяют на:
-
Входящие — позволяют запустить какой-либо процесс извне (снаружи);
-
Исходящие — позволяют обращаться к сторонним системам.
Выделяют также коннекторы различных уровней — от подключения к брокеру сообщений, к примеру, Apache Kafka, до отправки e-mail и хранения файлов.
Готовый набор коннекторов содержит «Integration Framework», где вы можете найти подходящее решение для вашей задачи.
Modeler
«Cawemo» заменил облачный «Camunda Modeler», у которого также осталось десктопная версия.
В ней по-прежнему можно создавать и редактировать модели седьмой версии, но с переносом их в восьмую могут возникнуть сложности. Официальная документация содержит инструкцию — Migrating from Camunda Platform 7 — по миграции между версиями, но не всегда это возможно. К счастью, поддержка седьмой версии останется на ближайшие 5 лет.
Другие изменения
Да, этот материал преимущественно для аналитиков, но всё же полезно знать и о других важных изменениях. Коротко затронем основные.
Платформа в новой версии разворачивается отдельно. Встраивать движок в приложение через «Springboot» теперь нельзя. Бизнес-процесс и «Workers» разделены. «Workers» интегрируются через коннекторы.
В «Camunda Automate» вошли «Zeebe» (заменил «Engine»), «Tasklist» и «Operate», который заменил «Cockpit».
«Zeebe» теперь обеспечивает возможность одновременной обработки большего числа инстансов, поскольку обновленная версия платформы не содержит узкое место, которым являлась реляционная БД. Её функции выполняют «Zeebe broker» и «Zeebe gateway».
Gateway содержит информацию о «Workers» и знает, какие таски они могут выполнять. Таски привязываются к воркерам через тот самый атрибут type, о которым я упоминал выше. Это также обеспечивает переиспользование воркеров, достаточно указать нужное значение атрибута type. Broker выступает балансировщиком нагрузки и коммутирует инстансы и воркеры между собой. Атрибут retries при этом определяет число попыток вызова.
БД в «семёрке» представляла собой один кластер, «Zeebe» разворачивается в нескольких нодах. Все данные об инстансах хранятся в брокере, а исторические данные пишутся в «Elastic», куда обращаются «Tasklist» и «Operate». В «семёрке» они обращались в БД, что создавало дополнительную нагрузку.
Сам «Tasklist» не сильно изменился. Из интересного — в UI появилась возможность забирать данные прямо из «GraphQL».
«Operate» появился из-за перехода на «Zeebe» и необходимости взаимодействовать с «Elastic». Здесь также обновился интерфейс, который, по заверениям разработчиков, стал более удобным.
Как все это отражается на практике
Уменьшение числа доступных элементов для построения диаграмм незначительно сказывается на возможностях моделирования бизнес-процессов, но при этом размывает границу между схемами различных уровней моделирования. Иными словами, схемы становятся проще, а причин отдельно проектировать модели согласовательного и аналитического уровней — меньше.
Что происходит, когда бизнес-сторона «может в BPMN»
С одной стороны, нашей команде повезло: на одном из моих проектов заказчик предоставил большое количество схем в нотации BPMN для всего своего процесса, где полностью расписал логику, используя «всю мощь» BPMN.
С другой — большое количество символов, обилие переходов между тасками, зачастую без шлюзов, использование большей части доступных символов событий и развитие процесса во всех возможных направлениях поначалу просто сбивали с толку.
Перед нами встала задача не только переделать схемы под обновленную версию Camunda, но и привести их в порядок, сохранив всю заложенную логику. Каким образом?
События и ссылки мы заменили сообщениями. Комплексные шлюзы — совокупным использованием параллельных и исключающих. В итоге совместными усилиями нам удалось достаточно быстро оптимизировать все процессы. Отсутствие части элементов нотации никак не помешало, напротив облегчило восприятие получившихся схем. В своей работы мы в основном полагались на официальную документацию — Overview Components | Camunda Platform 8 Docs.
Заключение
Новая версия Camunda, может и ограничивает «всю мощь» BPMN, но взамен предлагает не меньшее могущество. При этом новый «Modeler» становится ещё более приспособленным, гибким для работы бизнес-аналитика, дает ему всё меньше поводов заглядывать «под капот».
Может сложиться впечатление, что обновление — своего рода попытка вовсе исключить из процесса разработки продукта аналитика как единицу. Но наша деятельность не ограничивается только моделированием диаграмм.
Обновление мажорной версии в большей степени направлено на повышение производительности платформы. При этом оно также способствует ускорению описания и согласования бизнес-процессов с заказчиком и облегчает взаимодействие с разработчиками. У последних становится меньше поводов возвращать схемы на доработку, а сэкономленное время всегда можно потратить на другие задачи проекта.
Вот таким стало мое знакомство с обновленной версией платформы Camunda. По мере накопления опыта и набора критической массы, я продолжу знакомить вас с тонкостями работы аналитика с этим инструментом, а пока — делитесь собственными результатами и задавайте вопросы в комментариях.
Олег Саверкин
Аналитик IRLIX





































В параметрах укажите что разрешаете авто-импорт зависимостей.

















