0
我有一個主要由相同元素組成的工作流程。
每個元素的定義如下:當所有工作流程序列都空閒時檢測
工作流可以簡單地堆疊在一個序列中這些元件,它可以並行運行它們,它可能已經在它們之間分支等 - 完全自由的工作流設計師整個事情是作爲一個WCF服務託管的,但如果可能的話,我寧願不要依賴它。
這整個設置的高層次的想法是這樣的:
- 當工作流啓動時,這些元素開始射擊了,此起彼伏,迅速跳過上面條件分支。前一個元素的完成會導致下一個元素的開始 - 如工作流中所定義。
- 在某些情況下,當條件
[B]
正確時,元素可能會佔用底部分支並等待WCF調用。 - 遲早或者所有元素都會停止,或者工作流完全結束。
我需要的是當所有元素停止等待WCF調用時捕捉那一刻。
在這一點上,我需要執行一些計算,這些計算會影響進一步的工作流程。因此,我需要準確地捕捉那一刻。
一些注意事項:
- 我保證不會WCF調用會來之前我做這些計算。因此,與WCF調用相關的可能的競爭條件超出了範圍。
- 我沒有控制流量的應用程序。換句話說,我在IIS中託管,因此可能會在不通知的情況下重新啓動,並且無法設置定時器,長時間運行的循環,消息泵等。
- 我不控制工作流程的設計。
- 但是,我完全控制元素的設計。事實上,這個元素實際上是一個
NativeActivity
(這就是爲什麼該圖來自Visio :-),我控制的源代碼。 - 我也在某種程度上控制主機環境。也就是說,我可以對工作流託管的Web應用程序進行修改。
- 整個工作流「附加」到業務對象,並且所有元素都有權訪問它。
中使用的技術謝謝你領先。然而。我沒有看到名爲'WorkflowInstanceStateRecord'的類。 TrackingParticipant的第一個參數。Track'方法是'TrackingRecord',它沒有名爲'State'的屬性或類似的屬性。我也看不到一個服務定位器,它允許我訪問工作流主機並通過ID獲取工作流實例。任何幫助? –
啊,明白了!它是'WorkflowInstanceRecord',裏面沒有「State」。現在找到它。當我在挖掘的時候堅持下去...... –
好的,所以我可以跟蹤跟蹤參與者的沉默時刻,這很有效。但是現在我發現自己無法從該參與者中獲取關聯的業務對象。我的活動從註冊爲工作流程擴展的DI容器中獲取存儲庫。活動可以通過它們的'NativeActivityContext'到達DI容器。但參與者呢? –