Первый проект на Camunda: создание и запуск бизнес-процесса

В этой статье рассмотрим, как нарисовать и запустить первый бизнес-процесс в камунде. Рассматривать будем наивный, неэффективный способ это сделать. Так же затрону важный момент процессных приложений — контекст. Видео-версия внутри.

Видео-версия

1. Бизнес-процесс

Будем делать бизнес-процесс командировок. Вот он:

Делаем такой бизнес-процесс

Процесс довольно простой, но его достаточно, чтобы проиллюстрировать подход. Сделайте такой же бизнес-процесс и разместите его в папке \resources\BPMN (в приложении из пред.урока)

Куда добавить bpmn файл в Camunda

Обратите внимание на папку META-INF и файл processes.xml — они нужны, чтобы камунда подхватывала ваши файлы. Создайте их.

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

Правила перехода на стрелке

Это выражение открывает нам важную тему для автоматизации процессов — контекст.

Что такое контекст в Camunda

С любым бизнес-процессом незримо связаны данные: если это процесс запроса командировок, ты мы должны знать кто, куда и когда летит. Без данных не существует бизнес-процессов.

Понятие контекста

BPMN не предоставляет средств моделирования контекста, и каждая BPMS-система предлагает какие-то свои варианты её описания.

В некоторых системах (IBM, ELMA и т.д.) контекст нужно обьявлять заранее и прописывать, какой квадратик к каким данным имеет доступ.

В Camunda контекст по-умолчанию глобальный, и все элементы бизнес-процесса имеют к нему доступ. Прописывать контекст заранее не надо.

Обращение к контекстной переменной в Camunda

Обращение к контекстной переменной осуществяется по её имени.

Таким образом необходимость принимать решения на развилках бизнес-процессов приводит к необходимости сохранить данные для этого решения.

Модель данных процесса

Чтобы успешно улететь в командировку, человек должен указать:

  • Откуда лететь
  • Куда лететь
  • Когда лететь туда
  • Когда лететь обратно
  • Почему надо лететь
  • Кто полетит
  • Какая стоимость командировки будет

Добавим такие поля на форму первой задачи:

Добавление полей на форму

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

Вот такая форма будет сгенерирована

Для других задач нужно тоже добавить атрибуты на форму. В Camunda, если переменная с названием уже есть в контексте, то её значение будет выведено на форму. Таким образом всё, что заполнено на первой задаче, будет доступно на второй и последующих.

В задачу согласования заявки надо добавить результат согласования и комментарий, в задачу покупки билетов — результат покупки билетов, описание заброннированого отеля и самолёта, комментарий к задаче. В задачах исправления заявки — комментарии от пред. сотрудников.

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

Результат и что с ним не так

Такой наивный способ сделать (кстати вот исходники) процесс приводит к убогим результатам:

  • Страшные формы — без валидации, без ограничения на чтение\запись, без подсказок и справочников.
  • Сотрудники не определяются автоматически, людям могут делать чужие задачи.
  • Нет уведомлений о новых задачах (это встроенное поведение camunda).
  • Нет отмены заявок.
  • Нет аналитики.
  • Если мы захотим обработку заявок на командировку превратить в несколько процессов, то нам прийдется перекидывать кучу полей между процессами.
  • Одни и теже атрибуты приходится прокидывать на каждую форму. При добавлении нового нужно пройти по всем задачам и проделать это упражнение.

Вывод 

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

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

Комментарии

Вам так же понравится

 
Спасибо! Подписывайтесь на меня в соц.сетях, чтобы быстро получать новые материалы по BPMN, BPM, BPMS

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: