2017-04-21 133 views
0

enter image description hereBPMN - 唯一網關走出去並行分支

首先的是,即使有效的有獨家門戶走出去,落後的平行通道的類似說明?

如果是,我對業務流程引擎應該如何處理這個問題有一些疑問。

情景步驟:

  1. 任務2和任務3是活動的。
  2. 任務3完成,並且該網關條件使其回到任務1.
  3. 任務1完成時(第二次)

問題:

  1. 在步驟2,任務2的狀態如何?它是中止還是仍然活躍?
  2. 在步驟2,它是創建任務1的新實例還是重新打開現有的實例?
  3. 在第3步(類似於前一個問題),它是否產生新的任務2和3或重新打開現有的任務?如果它產生新的,我們現在是否同時有兩個活動Task2? '合併'網關應該如何處理這個問題?

回答

3
  1. 層次結構相同級別上的活動實例通常是相互獨立的。在這個例子中,任務2仍然有效。
  2. 活動實例一旦完成,它就不能重新打開。在這個例子中,任務1的第二個實例被創建。
  3. 可以有多個相同活動的實例。每當一個活動的傳入流發出信號時,就會創建一個該活動的新實例。關於合併並行網關:當每個傳入序列流至少發送一次信號時,網關激活。激活僅消耗每個輸入流量的這種信號。如果來自任務2的序列流再次發出信號,則該信號不會被消耗。因此,流程實例仍然處於活動狀態,網關無限等待其他序列流再次發送信號。因此你的過程設計不是最佳的。

延伸閱讀:

+0

謝謝,這確實有幫助。關於您的評論:激活每個傳入流只消耗一個這樣的信號。如果來自任務2的序列流再次發出信號,則該信號不會被消耗。如果在任務4之後,我有另一個可以重定向到任務1的獨佔網關,那麼當任務2和3再次完成時,合併網關會再次激活嗎?如果是這種情況,那麼引擎必須有一些方法來區分這個「路徑」與前一個? –

+0

是的,網關再次激活。不知道我是否理解最後一個問題,但對於網關,哪些信號觸發它並不重要。即如果來自任務2的序列流已經被髮信兩次,則任何這些將被消耗。在旁註:camunda引擎不符合規範這裏正確行爲。它觸發一個網關,如果*任何*進入的序列流已被髮送信號的次數與進入的序列流次數一樣多,無論哪個*序列流已被髮信號通知。 – thorben