Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Построение моделей бизнес-процессов

..pdf
Скачиваний:
22
Добавлен:
12.11.2023
Размер:
22 Mб
Скачать

схема исключающего объединения показана справа. Заметим, что параллельный шлюз активирует одновременно обе исходящие ветви (порождает 2 токена), но первым к эксклюзивному шлюзу придет токен из верхней ветви и он, пройдя шлюз, активирует задачу 2. Второй токен подойдет к эксклюзивному шлюзу только после выполнения задачи 1 и тоже запустит задачу 2. Таким образом, в одном экземпляре процесса задача 2 выполнится два раза.

Рис. 52. Эквивалентные слияния (объединения)

Инклюзивный шлюз / inclusive gateway реализует оператор ИЛИ (OR). Он представляет в процессе точку ветвления, в которой выбор маршрута основывается на условиях (conditional expressions), хранимых в каждом исходящем потоке. Вид этого шлюза показан на рис. 53.

Рис. 53. Инклюзивный шлюз

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

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

71

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

На рис. 54 приведен пример с инклюзивными шлюзами. С их помощью в модели отражены все варианты реакции на поступившее сообщение: вызов только одной из трех служб, вызов МЧС и полиции или МЧС и скорой помощи, или полиции и скорой помощи, или вызов всех трех служб. В случае когда сообщение не содержит признаков экстренного вызова (ни одно из трех условий не выполняется), используется поток по умолчанию.

Рис. 54. Обработка сообщения о происшествии

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

72

Рис. 55. Процесс приготовления еды

Если же требуется учесть возможность одновременного заказа обоих горячих блюд, то тогда на рис. 55 достаточно убрать эксклюзивные шлюзы, а у левого инклюзивного шлюза показать три исходящие ветви с условиями: салат, паста, бифштекс.

Другой пример применения инклюзивного шлюза – процесс подготовки товара к отправке (рис. 56). В процессе участвуют три исполнителя: клерк, работник склада и логистический менеджер. Процесс стартует при появлении товара, который необходимо отправить. Клерк решает, как отправить товар: обычной почтой или специальным перевозчиком, и одновременно рабочий склада пакует товар. При отправке перевозчиком клерк запрашивает квоты от перевозчиков и затем назначает перевозчика и готовит необходимые сопроводительные документы. Получив документы, работник склада перемещает товар в зону отправки. При отправке почтой клерк выясняет, необходима ли дополнительная страховка. Если страховка необходима, клерк обращается за ее получением к логистику и параллельно заполняет почтовую метку. После завершения действий клерка и логистика документы передаются на склад. В рассмотренном случае инклюзивный шлюз функционирует как параллельный (порождает токен для каждой исходящей ветви). Если же страховка не нужна, токен из входящей ветви проходит в одну исходящую ветвь, то есть шлюз не вносит никаких изменений в поток операций.

73

Рис. 56. Подготовка товара к отправке

Событийный шлюз /event-based gateway реализует исключающее ИЛИ (оператор XOR) на основе событий. Его вид показан на рис. 57.

Рис. 57. Событийный шлюз

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

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

тийным шлюзом: Сообщение, Сигнал, Таймер, Условие, Множест-

венное (включающий лишь вышеуказанные триггеры). Наряду с

74

событиями в исходящих ветвях шлюза применимы и задачи «получение сообщения» (рис. 58).

Рис. 58. Допустимые элементы в исходящих ветвях шлюза

Здесь не показано множественное (составное) событие, так как оно не поддерживается редактором BPMN.

Заметим, что событийный шлюз не может генерировать исключения.

Следует иметь в виду, что при событийном шлюзе положительный (Да) и отрицательный (Нет) ответы клиента (участника) есть два разных сообщения (события), приводящие к разным последующим действиям.

Пример с использованием событийного шлюза приведен на рис. 59.

Здесь процесс показан с точки зрения клиента. Заказав пиццу, клиент ожидает ее доставки. Если пиццу доставили, он съедает ее и процесс завершается успешно. Если же его время ожидания вышло, клиент жалуется в сервис доставки на задержку и продолжает ждать. Но если время ожидания затянулось, он снимает заказ и процесс оканчивается неудачей.

75

Рис. 59. Заказ пиццы

Теперь рассмотрим процесс лечения больного (рис. 60). Процесс начинается с поступления больного в приемное отделение больницы. Его регистрируют и помещают в палату. Спустя один день после назначения и начала лечения определяют текущие состояние здоровья больного. В зависимости от него принимают решение о дальнейших действиях. До выздоровления больного врачи проверяют его состояние каждый день. В этом примере предполагается всегдаоптимистический сценарий процесса.

Рис. 60. Процесс лечения больного

В спецификации BPMN приводятся еще два шлюза, основанные на событиях, которые могут быть использованы в начале процесса для запуска экземпляра процесса (рис. 61).

76

Рис. 61. Стартовый и параллельный событийные шлюзы

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

Рис. 62. Шлюз, создающий экземпляр процесса по событиям

Параллельный событийный шлюз (оператор И), вид которо-

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

77

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

Рис. 63. Параллельный событийный шлюз

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

Следует также заметить, что шлюзы, создающие экземпляр потока, практически не применяются и не поддерживаются основными моделерами BPMN.

Комплексный шлюз /complex gateway, изображение которого приведено на рис. 64, позволяет накладывать сложные условия как на входящие, так и на исходящие ветви, которые невозможно смоделировать другими видами шлюзов.

Рис. 64. Изображение комплексного шлюза

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

78

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

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

Рис. 65. Процесс «Постройка и запуск метрополитена»

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

5.2.8. Подпроцессы

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

ций процесса в виде действия с маркером + у нижней границы. Такой маркер обозначает свернутый подпроцесс (collapsed sub-process), детали которого не видны (рис. 66, слева). Другой

79

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

Рис. 66. Изображение свернутого и развернутого подпроцесса

BPMN различает пять типов стандартных маркеров свернутого подпроцесса: маркер свернутости (+ в квадратике), маркер цикла, многоэкземплярный маркер, маркер компенсации и маркер Ad Hoc. Свёрнутый подпроцесс может содержать до трех перечисленных маркеров (рис. 67).

Рис. 67. Маркеры свернутого подпроцесса

Маркер свернутости может сочетаться с остальными четырьмя маркерами, но недопустимо его сочетание одновременно с маркерами цикла и многоэкземплярности.

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

80

Соседние файлы в папке книги