2012-02-26 59 views
0

我有兩個接收動作(開始和結束)的工作流(附加圖像)。 這兩個操作都與WorkflowId參數相關。我也有FinishWorkflow(布爾)參數。開始/結束來自兩個不同動作的工作流服務

我想用Start Action啓動工作流程,然後等到FinishWorkflow參數更改爲true(使用FinishWorkflow操作)。

我認爲FinishWorkflow動作完成後,整個工作流程完成,因此StartWorkflow動作不會等待並檢查FinishWorkflow參數。 您是否知道如何更改FinishWorkflow動作,以便它不會結束整個工作流程?

TIA

enter image description here

+0

你的問題很難理解,不知道你想要解決什麼。你知道平臺更新1中有一個狀態機嗎?我只是喜歡它,所以使用它,只要有可能。觸發器,轉換,國家等。 – rfcdejong 2012-02-26 22:17:39

回答

3

是的,你的情況是有點難以理解。爲什麼您的開始工作流在一個選擇內?您是否期望取消開始工作流程操作?

你當然可以完全擺脫挑選,並有一個序列與開始工作流 - >做一些東西 - >完成工作流,但我懷疑這只是因爲你的圖超過了簡化你的方案。

也許你應該問自己是

怎樣的人/代碼中調用我做完手術得到通知,該過程可以完成或(取決於您希望如何實現的),他們的呼叫完成失敗了,他們需要再試一次?

如果以上都不適用,因爲您正在使用單向消息傳遞,那麼攻擊問題的一種方法是將FinishWorkflow保留在while循環中,條件設置爲「FinishWorkflow = false」,因此它將保持循環直到FinishWorkflow變量設置爲true後的最後一次調用。然後你可以擺脫Inner Pick,Branch2和延遲等等。你需要的唯一一個Pick是在開始和分支之後將包含你的While與其中的Finish並且分支2將包含你擁有的任何計算代碼,當完成後,會將完成工作流程變量設置爲true。

請記住,接收活動將阻止當前分支並等待消息,因此您不需要延遲來檢查值,實際上有一個延遲,您的活動將不必要地喚醒並尋找輸入什麼時候沒有。相當昂貴且不可擴展。

+0

我通過在while循環中放置整個選擇器來解決這個問題。 – Jarek 2012-02-27 16:03:45