2014-10-20 15 views
3

Picture of the ProblemBPM 2.0並行網關等待/獨家門戶新的迭代

這裏是我的問題:後叉已被單獨檢查所有三個序列的流動,如果它們是消極的我想有一個不同的進程P2正在啓動。 P2完成後,我想回到從P1開始的過程,我想在分叉後再次檢查所有三個序列流。

也許一個例子有助於理解:我們假設C1是正數,C3在第一次迭代中是負數,所以系統在合併網關處等待C3,而另一個迭代在處理P2之後開始。現在在第二次檢查中,C1 & C3是正數,而C2是負數。問題在於:即使C2在第二次迭代中爲負數,排他網關也會加入序列流,就好像所有檢查都是正面的。我希望它只在所有檢查在SAME迭代中呈陽性時才加入它們。

回答

1

加入具有合併網關的並行分支,然後僅使用一個專用網關檢查條件。這更容易理解和維護,因爲它使用較少的網關。

join branches


如果C1,C2和C3,應儘快終止,你可以提取三個分支到一個子進程。如果一個分支失敗,子進程會拋出一個信號,並且周圍的進程會捕獲它。

sub process


沒有子流程,您需要一個額外的獨家門戶和連接到網關合並在每個分支中的每個活動。這加起來很快,如果C1,C2和C3不是簡單的活動,而是序列,但對於簡單的工作流程可能沒問題。

P2之後的合併網關可防止競爭條件。例如,如果P2在C3之前完成,因此第二次迭代將在第一次結束之前開始。

(最終你需要在每次活動後,一個額外的並行網關的一個分支,以拆分的路徑。)

without sub process

+0

謝謝您的回答。確實需要儘快終止C1,C2和C3,我想盡量避免將它們放入子進程中。你認爲還有另一種可能嗎? – DEls 2014-10-20 16:55:37

+1

@DEls:是的,沒有子流程是可能的,但它是一個大混亂,因爲你需要爲每個活動額外的網關。如果C1,C2和C2不是單個活動,而是快速加起來的序列。我不會在生產代碼中這樣實現它。我會用一個例子更新我的答案,直到明天(Ascii不能這樣做)。 – 2014-10-20 17:05:14

+0

感謝您的好解釋。你用什麼編輯器來創建模型?它看起來很好,很簡單。 – DEls 2014-10-21 09:17:47