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


На рисунке ниже приводится пример процесса создания договора, где после подготовки документа происходит его размещение в системе и отправка на согласование. Таким образом, действия «Разместить договор в системе» и «Отправить договор на согласование» должны выполниться оба. При этом не важно, в какой последовательности – то ли сначала будет размещен документ в системе, то ли наоборот, то ли эти действия выполнятся одновременно.

01_bpmn_parallel_gateway_model
Порядок применения логического оператора «И» может быть проиллюстрирован при помощи потока маркеров (tokens) процесса. Когда маркер процесса (МЭП), двигаясь по управляющему потоку, достигает логического оператора, он дублируется. В результате каждый исходящий управляющий поток генерирует свой МЭП:

02_bpmn_parallel_split_gatewayНа рисунке ниже показан порядок применения логического оператора «И» при объединении потоков. Когда один из маркеров, двигаясь по одному из параллельных потоков, достигает логического оператора, он не следует дальше, а дожидается, пока маркер из параллельного потока не достигнет логического оператора. Только после достижения всеми маркерами логического оператора они объединяются в единый маркер, который следует дальше по исходящему управляющему потоку:


03_bpmn_parallel_merge_gateway

Используя пример процесса, представленный на рисунке в начале статьи, нам будет достаточно просто понять концепцию применения экземпляров процесса. Каждая активация процесса создает новый экземпляр этого процесса. Модель, приведенная на рисунке, является типом процесса, т.е. модель описывает в общем, как должен составляться договор.
Если этот процесс запускается для некоторого определенного договора, например для договора закупки, то в этом случае общий процесс создает отдельный экземпляр процесса.
Для лучшего понимания этого процесса снова обратимся к рассмотрению движения маркера по процессу. Каждый раз, когда стартовое событие генерирует новый маркер, создается новый экземпляр процесса. Таким образом, вначале маркер соответствует экземпляру процесса. Если маркер разделяется при помощи логического оператора «И», то результирующие маркеры, полученные в результате деления, относятся к тому же экземпляру процесса. При этом они как бы являются частью изначального маркера, а объединяющий логический оператор «И» соединяет их снова в единый маркер экземпляра процесса.
Для объединяющего логического оператора «И» не достаточно, чтобы по каждому входящему управляющему потоку поступил произвольный маркер – для того, чтобы экземпляр процесса мог выполняться дальше необходимо соответствие маркеров одному экземпляру процесса. Это очень важно учитывать, если несколько экземпляров процесса выполняется параллельно. Так, в приведенном примере процесса параллельно могут начать выполняться несколько экземпляров процесса оформления договоров.

Читайте также:


Более подробно о применении методологии BPMN вы можете узнать из книги Томаса Альвеера "BPMN 2. Введение в стандарт моделирования бизнес-процессов"