Программа camunda что это

Содержание

Стильная, модная, молодежная разработка BPM на Camunda

BPM-разработка — дело непростое. Это обусловлено тем, что процесс должен быть читаемым и понятным заказчику, а не только корректным с технической точки зрения.

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

2018 год принципиально изменил наш подход к разработке бизнес-процессов. Ниже — о том, как эволюционировал этот подход и как менялись мы.

Вместо пролога

Наш отдел занимается разработкой бизнес-процессов — начиная от самых маленьких и незначительных, заканчивая крупными и крайне прибыльными. До последнего времени для разработки мы использовали продукт от IBM, который позволяет достаточно быстро выпустить в продакшен работающий бизнес-процесс.

Camunda BPM для начинающих. 0. Введение.

IBM BPM — мощная платформа, которая включает богатый набор возможностей, таких как описание самих процессов, UI-форм, интеграционных модулей. К тому же эта платформа имеет довольно низкий порог входа, что позволяет начинающим разработчикам практически сразу погружаться в проект. Но есть у этого продукта и недостатки, которые если и не тормозят разработку, то уж точно не способствуют скорости и качеству:

  • Нет вменяемого контроля версий. IBM BPM просто не дает возможности нормально хранить процессы (код) в репозитории и использует свое собственное хранилище, которое не знает о таком понятии, как merge, например.
  • Разработка на Java 6. Возможно, на момент написания этой статьи уже можно разрабатывать на Java 7, но в 2019 году это слабое утешение.
  • IBM BPM крутится на WebSphere, в итоге разработчикам надо запасаться терпением при каждом обновлении своего модуля. К тому же это дополнительная головная боль для админов, которым периодически приходится возвращать к жизни этого монстра в случае его зависания.
  • Разработка интеграционных модулей в среде Integration Designer, которая в действительности является затюненным не в лучшую сторону Eclipse.
  • Нет нормальной возможности Unit-тестирования.
  • Высокая стоимость платформы.

image

Со всеми этими ограничениями трудно находиться на плаву. Чуть менее года назад поступило предложение попробовать движок Camunda для описания бизнес-процессов. Для начала был выбран не очень большой, но достаточно важный процесс по регистрации терминалов для юрлиц.

Так как его мы переписывали полностью, старого кода почти не было, мы могли практически ни в чем себя не ограничивать и поэтому в качестве языка разработки выбрали Kotlin. Было интересно попробовать этот новый язык, о котором слышали по большей части положительные отзывы. На некоторых других проектах в нашем отделе был успешный опыт внедрения. Финальный стек получился таким: Camunda, Spring Boot 2, Kotlin, Postgre.

Что это такое Camunda?

image

Camunda — это open-source-платформа для моделирования бизнес-процессов, которая написана на Java и в качестве языка разработки использует Java. Она представляет собой набор библиотек, которые и позволяют выполнять описанные процессы. Для интеграции Camunda в проект достаточно добавить несколько зависимостей.

Для хранения процессов можно выбрать in-memory или персистентную СУБД — в зависимости от задач. Мы выбрали Postgre, так как нам важна история для «разбора полетов». По умолчанию платформа разворачивается на H2.

Разработка состоит из двух частей: создание flow-процесса в специальной утилите Camunda Modeler и написание java-кода, который обрабатывает шаги процесса, описанные на диаграмме. Чтобы из процесса вызвать java-код, достаточно реализовать интерфейс JavaDelegate, поднять этот Bean (можно указать делагат по полному имени, но через Bean удобнее и гибче) в контексте и указать его id на нужном шаге процесса. На Kotlin делегат выглядит еще более лаконично. Логика работы делегатов довольно проста: что-то вычитали из контекста, выполнили какие-то действия и положили обратно в контекст.

image

Рабочее окно Camunda Modeler

Пример делегата на Java:

Пример делегата на Kotlin:

import org.camunda.bpm.engine.delegate.DelegateExecution import org.camunda.bpm.engine.delegate.JavaDelegate class KotlinExampleDelegate: JavaDelegate < override fun execute(execution: DelegateExecution) < val someVar = execution.getVariable(«someVariable») //some code execution.setVariable(«otherVariable», «someValue») >>

В делегате можно описывать бизнес-логику, интеграции и всё, что душе угодно.

Мы стараемся создавать прослойку в виде бизнесового компонента с логикой, а сам делегат использовать только как связующее звено с flow процесса, чтобы как можно меньше смешивать код и процесс.

В большинстве случаев этот подход удобен и работает успешно. Взаимодействие с процессом происходит через DelegateExecution, который позволяет, например, работать с контекстом, инцидентами и так далее.

Это то, чего мы хотели?

В самом начале, при выборе инструмента, мы искали решение со следующими возможностями:

  • Восстановление процесса ровно с того места, где произошел сбой, и желательно, чтобы это было из коробки.
  • Некоторый GUI, где можно посмотреть, что вообще с процессом происходит.
  • Возможность написания юнит-тестов не только на логику и интеграцию, но и на сам процесс.
  • Java 8 и выше.
  • Развитое сообщество.

Хорошо читаемый трейс, возможность задания числа попыток выполнить шаг перед падением, кастомный обработчик при падении — например, если при падении мы хотим поменять статус некоторой сущности на Error. Последнее сделать достаточно легко, просто реализовав DefaultIncidentHandler. Правда, есть забавный момент при работе этого обработчика: код восстановления из ошибки срабатывает при каждом заходе на шаг процесса. Не могу сказать, что это — супербаг или проблема. Скорее, об этом нужно просто помнить и учитывать при разработке.

Мы решили это примерно так:

override fun resolveIncident(context: IncidentContext) < val incidentList = Context.getCommandContext().incidentManager.findIncidentByConfiguration(context.configuration) if (incidentList.isNotEmpty()) < // некоторый код при восстановлении инцидента >>

GUI у Camunda есть, и он неплохой.

Но если хочется чуть больше, например миграцию инстансов между версиями процессов, то уже придется потрудиться. В дефолтном UI только минимальный функционал, зато есть очень мощный Rest API, который позволяет создать свою админку — крутую и навороченную.

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

Rest у Camunda действительно мощный и позволяет творить с процессами практически что угодно. Например, стартовать процесс можно по /process-definition/key/aProcessDefinitionKey/start таким нехитрым запросом:

< «variables»: < «aVariable» : < «value» : «aStringValue», «type»: «String» >, «anotherVariable» : < «value» : true, «type»: «Boolean» >>, «businessKey» : «myBusinessKey» >

Пример взят из официальной документации, которая содержит обширное описание различных кейсов использования этого API.

Для юнит-тестирования мы используем обычный Junit. Плюс есть довольно интересная библиотека для тестирования самого процесса — ‘org.camunda.bpm.extension’, name: ‘camunda-bpm-assert’. С ее помощью можно описывать тесты для проверки flow-процесса.

Читайте также:
Программа delphi что это

Это довольно удобно, так как искать проблемы в случае багов во flow зачастую сложнее, чем в коде. Такое тестирование защищает, например, от неаккуратного рефакторинга и несколько раз действительно нас выручало.

Необходимость в Java 8 частично отпала, так как использование Kotlin на многих процессах устранило потребность в «восьмерке». Kotlin очень хорошо вписался в проект и позволил сосредоточиться только на написании бизнес-логики. Трудно поверить, но в основном всё то, что говорят о крутости Kotlin, — правда. Сущности с большим числом полей, которыми славятся практически все приложения с интеграциями, теперь выглядят не так страшно, и маппинги между сущностями стали гораздо более читабельными. Часто критикуемое null safety действительно работает и выручает в большинстве случаев.

Community у Camunda достаточно развитое. Об этом говорит тот факт, что постоянно появляются новые библиотеки на GitHub для тестирования и метрик.

Приятно, что Camunda отлично интегрируется со Spring. Добавить необходимых зависимостей, пару аннотаций и пару конфигурационных бинов — собственно, вот и вся интеграция! В результате мы пишем обычное spring-приложение, к которому все привыкли, добавляя flow бизнес-процесса. Взаимодействие происходит через Java API, которое позволяет выполнять манипуляции с процессами из java-кода.

Например, запустить процесс можно всего одной командой:

runtimeService.startProcessInstanceByKey( «MyTestProcess», «MyBusinessKey», mapOf( «key1» to «value1», «key2» to «value2», ) )

Здесь MyTestProcess — Id-шник процесса, а не инстанса. MyBusinessKey — уникальный ключ для запускаемого инстанса процесса. Мы обычно используем для этого поля некое бизнесовое значение — для более быстрой навигации между инстансами и поиском.

Примерно таким же образом можно разбудить «заснувший» процесс.

Заметных минусов или каких-то проблем, с которыми мы столкнулись, особо вспомнить не получается. В итоге за довольно короткий промежуток времени получилось сделать вполне рабочий процесс и благополучно вывести его в продакшен. На платформе внедряются другие процессы и вполне успешно. Сейчас на Camunda у нас запущено около 15 приложений, на которых единовременно крутится около 100 тысяч процессов.

image

Вместо эпилога

Вот несколько ресурсов, которые были полезны при внедрении описанного выше стека. Рекомендую ознакомиться с ними, если интересна дополнительная информация по теме.

  • Camunda хорошо документирована — большинство нужных кейсов мы нашли в официальной документации.
  • Более детально про платформу, интересные кейсы и вообще про bpm можно посмотреть на этом канале. Его ведет наш коллега, который и предложил использовать Camunda.
  • Хороший доклад от Павла Финкельштейна про внедрение Kotlin.

Источник: habr.com

Camunda Modeler

Camunda Modeler — приложение для моделирования бизнес-процессов в нотациях BPMN, DMN и СMMN.

Установка приложения. Зайти на страницу скачивания приложения (ссылка ниже). Выбрать нужную ОС и скачать. Распаковать ZIP-файл В новой папке на диске C. Запустить файл с расширением EXE. Следуя инструкциям установить Camunda Modeler.

Создать ярлык на рабочем столе.
После установки приложение является по сути портабельным. Это значит, что папку с приложением можно перемещать в другое место на диске или устанавливать на другие компьютеры просто методом копирования этой папки без инсталляции.
Экспортировать работу можно в два растровых формата PNG и JPG, в векторный формат SVG, а также сохранять проект в родном xml-подобном формате BPMN.

Онлайн-версия. Есть онлайн-версия Camunda (ссылка ниже). Работает аналогично десктопной версии. Экспортировать схемы на диск пользователя можно в формате SVG (формат векторной графики на основе XML) и сохранять в родном формате BPMN. Импортировать в онлайн Camunda можно только родной формат BPMN. Есть некоторая разница в возможностях версий.

Так в десктопной версии блоки можно заливать цветом, а в онлайновой — нельзя. Еще в онлайновой версии нельзя вызвать Properties Panel.
Схемы, созданные ранее в онлайн-версии, импортируются без проблем. Схемы, созданные ранее в дескопной версии, импортируются не все, на некоторые схемы генерится ошибка парсинга. Простые схемы, даже с цветными блоками, имортируются нормально.

Camunda Modeler — лишь один из и самый первый в линейке продуктов компании Camunda, которая обладает целой экосистемой исполнения, мониторинга, оптимизации бизнес процессов. Экосистема продуктов Camunda:

Маленькие хитрости

Элемент действие по умолчанию не очень большой и текст даже среднего объема вместить в него красиво проблематично. Камунда не позволяет в визуальном интерфейсе менять размеры этого прямоугольника.

  1. Выделить элемент (признаком выделения будет возникновение панельки инструментов справа от элемента).
  2. На Properties Panel скопировать в буфер обмена его ID.
  3. Открыть панель XML источника и поиском найти элемент с этим ID (искать bpmnElement=»ID»), в котором есть параметры width и height в тэге (этих ID будет встречаться много, нужный элемент — ближе к концу кода)
  4. Изменить, например, width до нужного размера.
  5. Вернуться на закладку Diagram.

Текстовую аннотацию нельзя прилепить к соединяющей действие→действие, или действие→событие линии (поток операций). Хотя на иллюстрациях BPMN в интернете — можно.

  1. Создать текстовую аннотацию как позволяет Камунда, т.е. прилепить ее к действию или событию. Но с помощью ломанной линии, где первая линия ведет куда вам хотелось бы, а вторая (и третья, если потребуется) сливается с потоком операций до ближайшего действия/события.
  2. Выделить линию текстовой аннотации.
  3. На Properties Panel скопировать в буфер обмена ее ID.
  4. Открыть панель XML источника и поиском найти элемент с этим ID, в котором линии представлены тэгами
  5. Удалить все тэги кроме первого.
  6. Вернуться на закладку Diagram.

(Иметь в виду, что при последующей попытке перетащить эту текстовую аннотацию на другую позицию, Камунда поймет, что ее обманули, и снова прилепит аннотацию к валидному с ее точки зрения элементу)
(В свежей версии 2.2.4 этой проблемы уже нет)

У таких элементов как событие, поток операций и шлюзы есть параметр Name, который часто используется при создании диаграмм в качестве комментария к своему родительскому элементу. Но Камунда его крайне ограничивает по ширине и не позволяет в визуальном редакторе его изменять. Более того, если найти по ID и изменить width у этого элемента в XML-коде (как демонстрировалось выше), то Камунда на это никак не реагирует.

  1. Импортировать схему в SVG (это формат векторных изображений на основе XML).
  2. Открыть сохраненный файл в Notepad++.
  3. Найти в нем нужный элемент с нужными параметрами по ID.
  4. Отредактировать проблемные параметры.

(Синтаксис SVG не совпадает с синтаксисом Камундовского формата BPMN. Камунда сохраняет SVG, вытянув весь полезный код в одну строку, что затрудняет ориентацию в коде. Для решения незадачи рекомендуется установить в Notepad++ плагин XML Tools, с помощью которого можно привести код в удобочитаемый вид командой [Pretty print (XML only — with lines break)] из меню плагина.)

Ассоциацию можно провести между действием и базой данных только однонаправленной стрелкой, а хотелось бы изобразить обмен данными с БД двунаправленной стрелкой.

  1. Создать ассоциацию между действием и базой данных.
  2. Создать ассоциацию в обратном направлении — от базы данных к действию.
  3. Совместить обе ассоциации.

Невозможно закрасить элемент каким-нибудь цветом.

  1. Найти элемент по ID как в предыдущих примерах.
  2. К элементу добавить атрибут bioc_fill=»#C8E6C9″ с HEX цветом заливки и/или bioc_stroke=»#43A047″ с HEX цветом рамки.

Ссылки

  • Home page
  • Download (версии для Windows, Linux и Mac)
  • Tutorials
  • Camunda online

Конкуренты

ARIS Express. Бесплатный продукт. [Страница скачивания]. После инсталляции программы она будет работать только после того, как вы пройдете процедуру регистрации в сообществе ARIS и получите логин и пароль, которые надо будет ввести во время первого запуска программы. На общем диске «p:Функциональные Папки4 IT Департамент50 Distrib3 Utilfor_BPMNARIS_Express» лежит портабельная версия программы.

Читайте также:
Nightly что это за программа

Bizagi Modeler. Бесплатный продукт. [Страница скачивания]. Без регистрации не дадут скачать и запустить после инсталляции. Здесь лежит скачанный после регистрации инсталлятор «p:Функциональные Папки4 IT Департамент50 Distrib3 Utilfor_BPMN».

Software Ideas Modeler. Платный продукт. [Страница скачивания] триальных версий. Понравился больше предыдущих двух. Работает быстрее, решает бо́льший спектр задач.

ELMA BPM. Платный отечественный продукт. [Описание продукта] на сайте производителя. Не скачивал для тестирования, но судя по скриншотам, отзывам, основательности сайта, это достойный и удобный продукт.

Grapholite. Платный редактор деловой графики. [Обзор и скачивание бесплатной портабельной версии]. Удобнейший редактор, который имеет богатый набор готовых элементов для моделирования BPMN схем. Работает без тормозов.

MyDraw. Платный редактор деловой графики. [Обзор и скачивание бесплатной портабельной версии]. Мощный редактор, который имеет очень богатый набор готовых элементов для моделирования BPMN схем. Работает без тормозов.

Примечание: Функционал у перечисленных программы богаче, чем у Camunda, и ограничений, налагаемых нотацией, меньше. Но в Camunda создавать диаграммы нагляднее, легче, быстрее меньше вероятности нарушить нотацию. Все продукты, кроме двух последних, имеют механизмы исполнения процессов.

Источник: www.newart.ru

Автоматизация бизнес процессов

Мощный механизм выполнения бизнес процессов BPMN и решений DMN в сочетании с основными приложениями для автоматизации процессов.

BPMN рабочий процесс

Навальный Camunda Workflow Engine — это правильный выбор для управления (микро-) обслуживания и управления человеческими задачами. Вы можете использовать его как удаленную службу REST или встроить ее в свое Java-приложение.

DMN Механизмы

Навальный Механизм принятия решений Camunda принимает ведомые бизнес-решения таблицы решений. Этот движок предварительно интегрирован с механизмом рабочего процесса, но вы также можете использовать его как отдельное приложение через REST или внутри вашего приложения Java.

Конструктор

Навальный Camunda Modeler — это простое в использовании приложение для редактирования диаграмм процессов BPMN и таблиц решений DMN. Вы можете развернуть созданные файлы на Camunda Engines для их выполнения.

Задачи

Навальный Список задач Camunda Tasklist — это готовое к использованию веб-приложение, которое позволяет конечным пользователям работать над назначенными им задачами. Он обеспечивает дополнительную видимость при использовании Camunda Workflow Engine для управления человеческими задачами.

Мониторинг

Навальный С Camunda Cockpit вы можете следить за рабочими процессами и решениями в области производства, обнаруживать, анализировать и решать технические проблемы. Cockpit — идеальный инструмент для технических операций.

Администрирование

Навальный Управляйте своим веб-приложением Camunda или пользователями REST API, организовывайте их группами и предоставляйте разрешения с помощью Camunda Admin. Вы также можете интегрировать существующее управление пользователями через LDAP.

Оптимизация

Навальный Используйте Camunda Optimize для создания красивых отчетов и упорядочивайте их на панели мониторинга бизнеса. Настройте оповещения, которые срабатывают при пропуске целей производительности, и используйте расширенную аналитику для выявления узких мест в процессах.

Источник: camundarus.ru

Camunda — что это такое?

Camunda — это BPM-движок для автоматизации бизнес-процессов. Что значат эти слова и какую пользу вы можете получить от использования этого движка читайте в этой статье.

Какое вам дело до Camunda

Camunda может очень сильно, в десятки раз (например если вы устали от «статусов»), снизить затраты на автоматизацию бизнес-процессов иили оркестрацию микросервисов. Это достигается за счёт:

  • Camunda поддерживает BPMN, нотацию описания бизнес-процессов. В BPMN можно нарисовать логику любой сложности, а движок её выполнит. Большинство процессных вещей, которые можно сделать в BPMN, делать в чистом коде дороже в десятки раз. Узнать больше о BPMN можно из моей рассылки.

Пример бизнес-процесса в BPMN, который может быть автоматизирован в Camunda

Пример бизнес-процесса в BPMN

  • Открытые исходники позволяют однозначно понимать как работает софт, а отличная документация (вот описание всех rest методов) позволяет очень быстро врубиться в то, как интегрировать движок в свою инфраструктуру.
  • Camunda поддерживает последнюю версию Java, или вообще любой JVM-язык — Kotlin, Scala и т.д.
  • Отличная архитектура внутри — движок делает то, что от него ожидается самым очевидным и ожидаемым способом. Нет никаких лишних абстракций, которые необходимо изучать.
  • Удобство разработки, тестирования и встраивания в CICD за счёт того, что Camunda можно использовать просто как библиотеку в Java-приложении. Camunda не ограничивает разработчика какими-то своими условиями. Используйте любые удобные инструменты — статистические анализаторы, тестовые фрейморвки, средства сборки, средства контроля версий.

Для тех, кто торопится

Я разработал бесплатный облачный сервис для рисования и обсуждения BPMN, который поддерживает Camunda, с коллегами. Он очень экономит время и делает обсуждение удобным. Регистрируйтесь!

Компоненты системы

Camunda — это набор приложений Modeler, Task List, BPMN Engine, DMN Engine, Cockpit, Admin,Optimize.

Архитектура приложений Camunda

Архитектура приложений Camunda

  • Modeler (скачать) — это приложение для создания моделей BPMN процессов. Эти модели нужны для других частей системы.

Интерфейс Camunda modeler

  • Task list — это веб-приложение, в котором исполнители выполняют задачи, поставленные на них бизнес-процессом.

Интерфейс camunda tasklist

Интерфейс camunda tasklist

  • BPMN Engine — это непосредственно движок, которые отвечает за интерпритацию BPMN в объекты JAVA, сохранение объектов в базе и реализацию других вещей (типа листенеров активностей), которые крутятся вокруг процессов.

Структура Сamunda BPMN Engine

Структура BPMN Engine

  • DMN Engine — аналогично BPMN Engine, только для DMN.
  • Cockpit — это веб-приложение для просмотра состояния процессов. В бесплатной версии он сильно обрезан по функционалу.

Camunda Cockpit

  • Admin — это веб-приложение для управления правами пользователей и пользователями.
  • Optimize — это веб-приложение для анализа бизнес-процессов. Оно платное.

Optimize

Слабая связность компонентов между собой позволяет их заменять, разрабатывая свои. Например, я написал свой Cockpit, который намного функциональнее бесплатного.

Как попробовать Camunda самому

Движок можно использовать в 2 сценариях:
1. Standalone-сервер — это значит что вы запускаете отдельное приложение Camunda и закидываете в него свои процессные приложение в виде .war-файлов. В этом видео указан полный цикл разработки таких приложений.

Standalone вариант использования

2. Библиотека внутрь java-приложения — это значит, что вы указываете зависимости в своем приложении и работаете с camunda через Java API.

Embedded вариант использования

Embedded вариант использования

В этом видео можно посмотреть как сделать своё первое stand-alone приложение:

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

В итоге

За счёт бесплатности и классной архитектуры система может решать кучу ваших проблем и прямо сейчас. Если вы планируете её использовать в своей работе и хотите быстро разобраться, как интегрировать этот BPM-движок в вашу инфраструктуру и как лучше построить архитектуру приложений, то мои консультации могут вам помочь.

Вы уже работаете с системой? Как вам? Расскажите в комментариях и поделитесь этой статьей в соц.сетях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник: bpmn2.ru

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Я часто обсуждаю микросервисную архитектуру с людьми, далекими от Java: разработчиками C#, Node.JS/JavaScript или приверженцами Golang. Все они сталкиваются с тем, что им нужен механизм оркестровки в микросервисной архитектуре или просто инструмент для оптимизации рабочего процесса и получения возможности упорядочения, обработки тайм-аутов, Saga и компенсирующих транзакций.

BPM-платформа с открытым исходным кодом от Camunda отлично подходит для таких задач. Дружелюбие по отношению к разработчику — одна из ключевых особенностей продукта. Но если взглянуть на его документацию, может сложиться впечатление, что в основном «дружелюбие» Camunda направлено на Java-разработчиков. Платформа предоставляет множество возможностей для подключения собственных функций и расширений, но все это делается на Java. Так ли это на самом деле?

Читайте также:
Фирма что это за программа

Нет! На самом деле, можно легко запустить Camunda без каких-либо знаний Java и настроить архитектуру для кода на любом языке, по вашему выбору. В этой статье мы рассмотрим:

  • базовую архитектуру;
  • REST API;
  • советы по существующим клиентским библиотекам для языков, отличных от Java;
  • пример использования C # и Node.JS;
  • способы запуска сервера Camunda (Docker или Tomcat).

Архитектура

Camunda написана на Java и для запуска нуждается в виртуальной машине Java (JVM). Camunda предоставляет REST API, который позволяет вам писать на любом языке, который вам нравится, и использовать REST с Camunda:

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Рабочие процессы в Camunda определяются в BPMN, который в основном представляет собой XML-файл. Его можно смоделировать с помощью Camunda Modeler .

Запуск Camunda через предварительно созданный образ Docker

Самый простой способ запустить Camunda — это использовать Docker. Альтернативные способы запуска Camunda описаны далее в этой статье.

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

В этом случае достаточно просто запустить:

docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest

Вам не нужно волноваться о Linux, виртуальных машинах Java или Tomcats. Dockerfiles и основная документация (например, инструкция по подключению к нужным базам данных) доступны на Github .

Если вы хотите запустить Camunda Enterprise Edition, вы можете легко изменить Dockerfile .

Однако у запуска Camunda с помощью Docker есть один недостаток: вы получите версию Tomcat, которая не всегда включает последние исправления. Чтобы как-то обойти это, вы можете самостоятельно создать Docker-образ на основе нужного дистрибутива Tomcat, как показано в этом примере, либо воспользоваться одним из решений, описанных ниже.

Развертывание модели процесса

Давайте рассмотрим пример, используя шаблон Saga для классического бронирования поездок, где вы хотите вызвать три действия подряд и корректно компенсировать успешно выполненные действия в случае более позднего сбоя. Представленный в форме BPMN он выглядит следующим образом:

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Теперь вы можете использовать REST API для развертывания модели процесса . Предположим, вы сохранили его с именем trip.bpmn и запустили Camunda через Docker, чтобы он был доступен на localhost: 8080:

curl -w «n» -H «Accept: application/json» -F «deployment-name=trip» -F «enable-duplicate-filtering=true» -F «deploy-changed-only=true» -F «[email protected]» http://localhost:8080/engine-rest/deployment/creat

Теперь вы можете запускать новые экземпляры рабочего процесса с помощью REST API и передавать данные, которые вы хотите видеть в качестве переменных экземпляра рабочего процесса:

curl -H «Content-Type: application/json» -X POST -d ‘>,»businessKey» : «12345»>>’ http://localhost:8080/engine-rest/process-definition/key/FlowingTripBookingSaga/start

Следующий интересный вопрос: как Camunda вызывает процедуры, подобные бронированию автомобиля? Camunda может не только сразу вызывать сервисы (Push-Principle), используя некоторые встроенные коннекторы , но и помещать рабочие элементы в своего рода встроенную очередность. После чего worker может получить рабочие элементы через REST, выполнить работу и сообщить Camunda о завершении (Pull-Principle).

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Итак, сначала вам нужно выполнить fetchAndLock (поскольку другие worker могут получать задачи одновременно для масштабирования системы):

curl -H «Content-Type: application/json» -X POST -d ‘<«workerId»:»worker123″,»maxTasks»:1,»usePriority»:true,»topics»:[<«topicName»: «reserve-car»>, «lockDuration»: 10000, «variables»: [«someData»]>]>’ http://localhost:8080/engine-rest/external-task/fetchAndLock

Затем сообщите Camunda, что worker завершил работу (обратите внимание, что вы должны ввести идентификатор external task, полученный в первом запросе):

curl -H «Content-Type: application/json» -X POST -d ‘>’ http://localhost:8080/engine-rest/external-task/EXTERNAL_TASK_ID/complete

Вот и все — вам до сих пор не потребовалось никакой Java, верно? И этого достаточно для начала работы!

Клиентские библиотеки

Вызвать REST API легко в любом языке программирования. В JavaScript это удобно делать с помощью JQuery, а в C# — задействовать System.Net.Http и Newtonsoft.Json. Но на это потребуется время. Поэтому вы можете просто воспользоваться какой-нибудь клиентской библиотекой.

На данный момент доступно несколько готовых клиентских библиотек:

  • JavaScript: ссылка . Поддерживается Camunda;
  • Java: ссылка . Поддерживается Camunda;
  • C#: ссылка и ссылка . Оба этих проекта находятся в промежуточном состоянии и практически бездействуют, но могут послужить хорошей отправной точкой;
  • PHP: ссылка — не слишком полная и не включающая последние изменения API библиотека, но я знаю проекты, использующие её.

За исключением JavaScript и Java, клиентские библиотеки не являются частью самого продукта Camunda. Не ожидайте, что они будут поддерживать все возможности REST API Camunda. Если библиотека не предоставляет определенной функции, это не значит, что ее там нет, всегда проверяйте REST API Camunda. Типовые проекты используют библиотеки в качестве отправной точки и шаблона.

Пример с C#

Используя указанную выше клиентскую библиотеку, мы можем просто написать:

var camunda = new CamundaEngineClient(«http://localhost:8080/engine-rest/engine/default/», null, null); // Deploy the BPMN XML file from the resources camunda.RepositoryService.Deploy(«trip-booking», new List < FileParameter.FromManifestResource(Assembly.GetExecutingAssembly(), «FlowingTripBookingSaga.Models.FlowingTripBookingSaga.bpmn») >); // Register workers registerWorker(«reserve-car», externalTask => < // here you can do the real thing! Like a sysout 🙂 Console.WriteLine(«Reserving car now. «); camunda.ExternalTaskService.Complete(workerId, externalTask.Id); >); registerWorker(«cancel-car», externalTask => < Console.WriteLine(«Cancelling car now. «); camunda.ExternalTaskService.Complete(workerId, externalTask.Id); >); registerWorker(«book-hotel», externalTask => < Console.WriteLine(«Reserving hotel now. «); camunda.ExternalTaskService.Complete(workerId, externalTask.Id); >); // Register more workers. StartPolling(); string processInstanceId = camunda.BpmnWorkflowService.StartProcessInstance(«FlowingTripBookingSaga», new Dictionary() < >);

Полностью рабочий исходный код можно найти в Интернете: ссылка . Другой пример доступен по адресу ссылка .

Пример с Node.js

var Workers = require(‘camunda-worker-node’); var workers = Workers(‘http://localhost:8080/engine-rest’, < workerId: ‘some-worker-id’ >); workers.registerWorker(‘reserve-car’, [ ‘someData’ ], function(context, callback) < var someNewData = context.variables.someData + » — added something»; callback(null, < variables: < someNewData: someNewData >>); >); workers.shutdown();

Более подробную информацию можно найти на сайте github.com

Альтернативные способы запуска Camunda

Пользовательский образ Docker с «Camunda standalone WAR»

В качестве альтернативы готовому образу Docker из Camunda вы можете самостоятельно подготовить Tomcat (например, на основе официальных образов Docker Tomcat), а затем скопировать в него Camunda как один из так называемых WAR-файлов.

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Если у вас имеется много дополнительных требовании и вы можете настроить среду сборки Java, вы также можете настроить Camunda Standalone war. Настройте сборку Maven как в этих примерах: сборка Maven с конфигурацией war или сборка Maven с Overlay .

Запуск дистрибутива Camunda Tomcat

Еще один вариант — просто скачать дистрибутив Camunda Tomcat, разархивировать его и запустить. Для этого потребуется только Java Runtime Environment (JRE), установленная на вашем компьютере. Её можно легко скачать отсюда .

Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java)

Чтобы изменить базу данных или сделать что-то еще, вам нужно настроить Tomcat, как описано в документации . Я знаю, что Tomcat может показаться сложным, но на самом деле это очень просто. И Google знает ответы на все, что может потребоваться в процессе.

Запуск Camunda с использованием Tomcat

Последняя альтернатива — это самостоятельно настроить Tomcat и установить в него Camunda, следуя описанию установки . Это даст возможность использовать любую версию Tomcat, которую вы предпочитаете, или, например, установить ее в качестве службы Windows.

Запуск Camunda в производство

Как правило, для этого будет необходимо выполнить какие-то окончательные настройки для запуска Camunda. В Camunda есть рекомендации, очень подробно это описывающие, но я не стану затрагивать их в этой статье — назову только один пример: REST API дистрибутива по умолчанию не настроен на проверку подлинности. Возможно, вы захотите изменить это.

Подведение итогов

Как вы могли заметить, начать работать с Camunda очень просто, независимо от языка, который вы используете. Ключевой момент состоит в том, что все взаимодействие осуществляется через REST API. Установка тоже довольно проста, особенно при использовании Docker.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник: prohoster.info

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru