Как мне представить одновременные действия в jBPM, любое из которых может завершить процесс? - PullRequest
2 голосов
/ 05 июня 2010

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

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

Мое первоначальное мнение состоит в том, что либо у меня слишком сложная диаграмма перехода состояний с многократно повторяющимися "одними и теми же" промежуточными состояниями, или Я несу (внешнее) состояние с процессом {bool rejected;int engineerSignoffId;int lawyer1SignoffId;int lawyer2SignoffId}.

Или как-то так?Если так, как отказ инженера завершает подпроцесс, который находится в «Юристах»?

START->FORK->Engineer->Granted?---------------->Y->JOIN-->Granted
          |->Lawyers-->Granted?->by 2 lawyers?->Y---^
                  ^                          |
                  |--------------------------N 

Какой канонический ответ jBPM на это?Можете ли вы указать мне примеры или документацию таких ответов?

Спасибо.

1 Ответ

0 голосов
/ 24 декабря 2010

Ну, я не уверен, правильно ли я понял ваш вариант использования, но позвольте мне попробовать.

Отклоненные конечные состояния просты - их может быть много или одно, это не имеет значения. Если процесс достигает конечного состояния, процесс завершается. Отклонено. Конец истории: http://docs.jboss.com/jbpm/v4/userguide/html_single/#end

Теперь сделайте три человеческих задания для принятия. Один должен быть назначен на группу кандидатов-инженеров, а два других - на группу кандидатов-юристов. Когда человек выполняет задание (т.е. назначает себе), оно не может быть взято кем-либо еще. http://docs.jboss.com/jbpm/v4/userguide/html_single/#task

Затем все человеческие задачи должны быть объединены в конце с узлом, ожидающим всех одновременных путей для продолжения. Т.е .: соединяйте с правильной кратностью: http://docs.jboss.com/jbpm/v4/userguide/html_single/#decision

Я не уверен, какую версию JBPM вы используете, но это, конечно, также возможно в BPMN 2.0, если вы используете JBPM 5.

...