Embedded Subprocess
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Подпроцесс — это активность, которая содержит другие активности, шлюзы, события и т. д. и сама по себе образует процесс, являющийся частью более крупного процесса. Подпроцесс полностью определяется внутри родительского процесса (поэтому его часто называют встроенным подпроцессом).
У подпроцессов есть два основных сценария использования:
-
Подпроцессы позволяют вести иерархическое моделирование. Многие инструменты моделирования позволяют сворачивать подпроцессы, скрывая все детали подпроцесса и отображая высокоуровневый, сквозной обзор бизнес-процесса.
-
Подпроцесс создаёт новую область видимости для событий. События, выбрасываемые в ходе исполнения подпроцесса, могут быть пойманы Boundary Event на границе подпроцесса, тем самым создавая для этого события область видимости, ограниченную подпроцессом.
Использование подпроцесса накладывает некоторые ограничения:
-
Подпроцесс может иметь только один none Start Event, другие типы стартовых событий не допускаются. Подпроцесс должен иметь хотя бы одно End Event. Обратите внимание, что спецификация BPMN 2.0 позволяет опускать стартовые и завершающие события в подпроцессе, однако текущая реализация движка этого не поддерживает.
-
Потоки операций не могут пересекать границы подпроцесса.
Подпроцесс визуализируется как типичная активность, то есть прямоугольник со скруглёнными углами. Если подпроцесс свёрнут, отображаются только его имя и знак плюс, давая высокоуровневый обзор процесса:
Если подпроцесс развёрнут, шаги подпроцесса отображаются внутри его границ:
Одна из основных причин использовать подпроцесс — определить область видимости для события. Это иллюстрирует следующая модель процесса: если нас спонтанно пригласили на ужин, мы отменим процесс готовки. Однако, если мы уже едим, мы больше не будем реагировать на приглашение. Говоря более технически, областью видимости события-сообщения является подпроцесс, поэтому сообщение может быть получено только пока подпроцесс активен.
Подпроцесс определяется элементом 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 |
Дополнительные ресурсы
-
Подпроцессы http://camunda.org/bpmn/reference.html#activities-subprocess в справочнике по моделированию BPMN 2.0 http://camunda.org/bpmn/reference.html
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org