BPMN - эксклюзивный шлюз, выходящий из параллельной ветки

введите здесь описание изображения

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

Если да, у меня есть несколько вопросов о том, как механизм бизнес-процессов должен справляться с этим.

Шаги сценария:

  1. Задача 2 и Задача 3 активны.
  2. Задача 3 завершена, и состояние шлюза заставляет вернуться к задаче 1.
  3. Задание 1 выполнено (второй раз)

Вопросы:

  1. На шаге 2, каково состояние Задачи 2? Он прерван или остается активным?
  2. На шаге 2 создается новый экземпляр задачи 1 или повторно открывается существующий?
  3. На шаге 3 (аналогично предыдущему вопросу) он порождает новые задачи 2 и 3 или повторно открывает существующую? Если он порождает новые, у нас теперь есть 2 актива Task2 одновременно? Как с этим должен справиться «объединяющий» шлюз?

person Guillaume Morin    schedule 21.04.2017    source источник


Ответы (1)


  1. Экземпляры действий на одном уровне иерархии обычно независимы друг от друга. В этом примере задача 2 все еще активна.
  2. После завершения экземпляра действия его нельзя открыть повторно. В этом примере создается второй экземпляр задачи 1.
  3. Может быть несколько экземпляров одного и того же действия. Всякий раз, когда поступает сигнал о входящем потоке действия, создается новый экземпляр этого действия. Что касается объединяющего параллельного шлюза: шлюз активируется, когда каждый из входящих потоков последовательностей сигнализируется хотя бы один раз. Активация использует только один такой сигнал на входящий поток. Если поток последовательности из задачи 2 сигнализируется второй раз, этот сигнал не будет использован. Следовательно, экземпляр процесса по-прежнему будет активен, а шлюз будет бесконечно ждать, пока другие потоки последовательности будут сигнализированы во второй раз. Таким образом, ваш технологический процесс не является оптимальным.

Дальнейшее чтение:

person thorben    schedule 21.04.2017
comment
Спасибо, это действительно помогает. По поводу вашего комментария: Активация потребляет только один такой сигнал на входящий поток. Если поток последовательности из задачи 2 сигнализируется второй раз, этот сигнал не будет использован. Что, если после Задачи 4 у меня будет еще один эксклюзивный шлюз, который может перенаправлять к Задаче 1. Затем, когда Задачи 2 и 3 будут выполнены во второй раз, объединяющий шлюз снова активируется, верно? Если это так, то у движка должен быть какой-то способ отличить этот «путь» от предыдущего? - person Guillaume Morin; 21.04.2017
comment
Да, шлюз снова активируется. Не уверен, что понял последний вопрос, но для шлюза не имеет значения, какие сигналы его запускают. т.е. если поток последовательности из второй задачи был передан дважды, любой из них будет использован. На заметку: движок camunda ведет себя неправильно в соответствии со спецификацией здесь. Он запускает шлюз, если какие-либо входящие потоки последовательностей были просигнализированы столько раз, сколько существует входящих потоков последовательностей, независимо от того, какие потоки последовательностей были просигнализированы. - person thorben; 21.04.2017