Зависимые запросы
Зависимые запросы BPMN
Автор: Олег Борознов, 14.01.2018
Предположим, что мы хотим смоделировать процесс BPMN, содержащий несколько одинаковых запросов, происходящих в ходе его выполнения. Рассмотрим простой пример процесса «Проверка кредитоспособности заемщика». В этом примере мы хотим исключить двойное проведение кредитной проверки по заемщику, если такая проверка была запущена ранее. Предположим, что мы выполняем проверку кредитоспособности заемщика и получили еще один запрос на проверку для того же заемщика. Эта задача может быть решена различными способами. Общим для всех моделируемых решений будет то, что перед проверкой кредитоспособности необходимо проверять ранее запущенные проверки, т.е. совпадающие (зависимые) запросы.
Решение с использованием события BPMN «Сигнал»
Событие «Сигнал» является одним из наиболее простых способов моделирования взаимодействия BPMN между различными запросами. Недостаток сигнала в том, что он не имеет определенного получателя, а распространяется на все множество получателей. Таким образом, поток операций в процессе будет приостановлен до тех пор, пока сигнал не будет обработан.
Решение сценария с использованием события BPMN «Сообщение»
Это решение немного сложнее, чем первое, т.к. событие BPMN «Сообщение» всегда имеет конкретного получателя, которого нужно определить. Кроме того, необходимо предусмотреть альтернативный вариант завершения процесса, на случай, когда есть ожидающие запросы. Однако, это решение позволяет решить проблему, возникающую в случае использования события с типом «Сигнал».
Решение сценария с использования события BPMN «Таймер» и цикла
В этом примере проверка кредитоспособности заемщика может быть выполнена только после того как будет завершена обработка всех прочих запросов. Недостатком цикла являются возможные задержки по времени (причем, значительные), а также дополнительные расходы на управление циклом.
Хотите быстро освоить BPMN?
Пройдите обучение в нашем учебном центре! |
Начать курс обучения