Подпроцесы могут быть также использованы для отображения параллельной деятельности (рис. П1.7.).
Рис. П1.7. Использование подпроцесса для отображения параллельной деятельности
Существуют следующие маркеры для подпроцессов (рис. П1.8):
- маркер стандартного цикла;
- маркер многих экземпляров;
- маркер компенсации;
- маркер процессов ad-hoc.
Рис. П1.8. Изображение подпроцесса с маркерами
Маркер цикла и многих экземпляров объединяться не могут. Другие маркеры могут объединяться друг с другом, например, компенсация и Ad-Hoc (рис. П1.8).
Повторно используемый подпроцесс
Повторно используемый подпроцесс (Reusable Sub-Process (Call Activity)), определяет точку, в которой используется глобальный процесс или глобальная задача. Пример изображения повторно используемого процесса представлен на рис. П1.9.
Повторно используемый процесс отображается толстой линией.
Рис. П1.9. Изображение повторно используемого подпроцесса
Событийный подпроцесс
Событийный подпроцесс(Event Sub-Process)специализированный подпроцесс, который выполняется внутри процесса/подпроцесса Родителя. Подпроцесс не имеет входящих и исходящих потоков деятельности. Он не является частью нормального потока процесса/подпроцесса Родителя.
Подпроцесс может появляться или не появляться пока выполняется процесс/подпроцесс Родитель. Подпроцесс может появляться многократно.
У этого подпроцесса может быть только одно событие начала.
Событием начала могут быть сообщение, ошибка, эскалация, компенсация, условное, сигнал, множественное.
Пока подпроцесс Родителя активен, событийный подпроцесс стартует. Когда событийный подпроцесс стартует подпроцесс Родителя может прерываться или не прерываться событийным подпроцессом. Прерывание подпроцесса Родителя определяется событием начала событийного подпроцесса.
Пример изображения событийного процесса представлен на рис. Рис. П1.10.
Рис. П1.10. Изображение событийного подпроцесса
Транзакция
Транзакция представляет собой подпроцесс, для которого может быть задано несколько вариантов выхода потока: для успешного выполнения транзакции, ее отмены и выполнения с ошибкой.
В случае отмены транзакции (внутри транзакции произошло завершающее событие с результатом «отмена» или поступило соответствующее сообщение) все выполненные до этого момента действия внутри нее будут отменены (компенсированы), причем в обратном порядке.
В случае сбоя ход процесса внутри транзакция прерывается без компенсации и управление переходит на событие сбоя.
Пример отображения транзакции представлен на рис П1.11.
Транзакция отображается двойной линией.
Рис. П1.11. Изображение Транзакции
Подпроцессы Ad - Hoc
Ad - Hocпредставляет собой специализированный подпроцесс, включающий группу деятельностей, которым не требуются связи между деятельностями. Деятельности выполняются в произвольной последовательности. Не обязательно все, возможно с повторами. Условия выхода задается атрибутами подпроцесса.
Пример подпроцесса Ad - Hocредставлен на рис. П.12.
Рис. П1.11. Изображение подпроцесса Ad – Hoc
Правила использования подпроцессов
Модель бизнес-процесса должна разрабатываться в два этапа. Сначала разрабатывается модель, отображающая подпроцессы бизнес-процесса, затем - модели, отображающие детали подпроцессов.
На каждом уровне должно быть 7 плюс/минус два деятельности.
Последовательные потоки подпроцесса не должны пересекать его границ.
Пример процесса верхнего уровня представлен на рис. П.1.12.
Рис. П1.12. Пример процесса верхнего уровня
Приложение 2. описание СОБыТИЙ в нотации BPMN 2.0
Существуют три типа событий:
- события начала, отображающие начало процесса;
- события конца, отображающие окончание процесса;
- промежуточные события, отображающие нечто происходящее между началом и концом процесса.
Промежуточные сообщениямогут располагаться внутри потока процесса или на границе деятельностей.
Указанные события существуют в двух вариантах:
1. События типа «Catch» (поймать, получать);
2. События типа «Throw» (бросать, отправлять).
Начальные события и некоторые промежуточные события являются событиями типа «Catch» (поймать, получать).
Конечные события и некоторые промежуточные события являются событиями типа «Throw» (бросать, отправлять).
Промежуточные сообщения, располагающиеся на границе деятельности, могут быть только типа «Catch» (поймать, получать).