Embedded Subprocess

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

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

У подпроцессов есть два основных сценария использования:

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

  • Подпроцесс создаёт новую область видимости для событий. События, выбрасываемые в ходе исполнения подпроцесса, могут быть пойманы Boundary Event на границе подпроцесса, тем самым создавая для этого события область видимости, ограниченную подпроцессом.

Использование подпроцесса накладывает некоторые ограничения:

  • Подпроцесс может иметь только один none Start Event, другие типы стартовых событий не допускаются. Подпроцесс должен иметь хотя бы одно End Event. Обратите внимание, что спецификация BPMN 2.0 позволяет опускать стартовые и завершающие события в подпроцессе, однако текущая реализация движка этого не поддерживает.

  • Потоки операций не могут пересекать границы подпроцесса.

Подпроцесс визуализируется как типичная активность, то есть прямоугольник со скруглёнными углами. Если подпроцесс свёрнут, отображаются только его имя и знак плюс, давая высокоуровневый обзор процесса:

subprocess

Если подпроцесс развёрнут, шаги подпроцесса отображаются внутри его границ:

subprocess expanded

Одна из основных причин использовать подпроцесс — определить область видимости для события. Это иллюстрирует следующая модель процесса: если нас спонтанно пригласили на ужин, мы отменим процесс готовки. Однако, если мы уже едим, мы больше не будем реагировать на приглашение. Говоря более технически, областью видимости события-сообщения является подпроцесс, поэтому сообщение может быть получено только пока подпроцесс активен.

subprocess attached

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

<startEvent id="outerStartEvent" />
<!-- ... other elements ... -->
<subProcess id="subProcess">
   <startEvent id="subProcessStart" />
   <!-- ... other subprocess elements ... -->
   <endEvent id="subProcessEnd" />
</subProcess>

Расширения Camunda

Атрибуты

Элементы расширения

Ограничения

Атрибут camunda:exclusive учитывается только если атрибут camunda:asyncBefore или camunda:asyncAfter установлен в true

Дополнительные ресурсы

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org