2012-10-18 39 views
1

我有一個工作流,託管在工作流服務主機中,可以通過特定部分的三條路徑之一。我使用包含三個PickBranch活動的Pick活動創建了它。三個中的兩個具有ReceiveSendReply作爲觸發器,而另一個具有延遲。在分揀扳機或並行序列觸發時,延遲不會觸發

此時,我可以通過調用其中一個接收器來使工作流繼續,但如果我試圖讓延遲超時,它就不會發生。我也嘗試過在一個平行的活動中 - 再一次,接收者中的任何一個都會將工作流向前移動,但延遲時間不會超時/觸發。

我讀過的一切都表明它應該工作,但事實並非如此。我查看了工作流跟蹤日誌,我可以看到延遲正在執行,但它永遠不會回來。

146: Activity [160] "Delay Sequence" scheduled child activity [201] "Delay" 
147: Activity [201] "Delay" is Executing 
{ 
    Arguments 
     Duration: 00:10:00 
} 

有什麼其他的方式可以模擬這個。看起來,Pick應該做我需要的事情,但我不能讓它工作。爲了完整性,我創建了一個非常簡單的應用程序,其中我使用兩個接收器作爲選擇分支的觸發器進行建模,並將延遲作爲另一個的觸發器,並且它在那裏運行...

任何幫助/想法都會最受讚賞。謝謝!

回答

0

工作流程是否持續和卸載?延遲活動會引發這種情況,但如果您沒有在服務中運行,您可能必須自行處理工作流程的加載,因爲它已被卸載。

+0

對不起 - 我應該說明了這一點(並編輯了這篇文章):工作流託管在工作流服務主機中。工作流程已保存並卸載。但是,我見過的所有內容都表明,當工作流程託管在工作流服務主機中時(我的情況就是如此),當發生延遲時,工作流服務主機負責檢查延遲是否存在過期並在必要時恢復。情況並非如此嗎? –

+0

我相信是正確的。然而...如果你手動加載工作流會延遲火災? –

+0

我花了一點時間試圖重新創建你的場景......但失敗了!我能夠使用帶有書籤和延遲活動的選擇作爲升級,這是一種非常常見的情況。我添加了在閒置時卸載的行爲,但沒有添加持久性。按預期工作。然後,我將它在Appfabric下運行以進行持久性和監控,並設置爲閒置時卸載。仍然有效。然後,我開始了一個新實例,確認它正在等待書籤殺死IIS。如預期的那樣,延遲並沒有發生。但是一旦apppool再次啓動,延遲就像預期的那樣開始。你在使用持久性嗎? –

1

我發現我已經將CorrelationInitializer放在了錯誤的位置,並且它似乎干擾了Delay的回調機制。一旦我將初始化程序移到了正確的位置,延遲就開始工作了。感謝您的意見和幫助!