2010-10-01 120 views
2

我覺得我的問題有點直截了當,但我在「背景信息」部分中添加了一些我的問題的細節,以免它太模糊。Windows工作流延遲活動行爲

問題

如何在WorkflowServiceHost中確定一個持久的活動,那就是閒置由於延時,達到延時超時?它是否會將其加載到內存中並經常檢查,或者在這裏發生了其他事情?

背景信息

所以,我是一個有點新的工作流程,我試圖確定使用它,將用3個月的延遲一個業務流程的可行性。基本上,業務流程是允許客戶進行3個月的升級服務試用。爲了達到這個目標,我正在考慮實施一個Pick活動,它將WCF Receive(「取消升級接收」)和一個3個月的延遲活動分開。如果延遲到期,它們會永久升級並更新計費。或者,如果取消初始化,那麼,好吧...是啊,你有這個想法:)

所以....我關心的是如何使用SQL工作流持久性實現延遲。我不想在持久性存儲中結束500次活動,必須每10分鐘加載3個月,以便檢查延遲活動是否過期。

回答

0

我在用更小的時間窗口看着這個相同的問題。我仍然很想聽到/如何使用工作流解決這個問題?

我正在使用WF4和一個選擇,如上所述,然後我的解決方案是嘗試使用appfabric重新初始化基於延遲計時器的工作流程。這是基於什麼我讀到這裏:Hosting workflow services with durable timers/delays,這在這裏:Activation of workflow service instances

我已經測試了挑,一面延遲完美的作品,但現在我要測試的AppFabric出來。

也許,我會在這裏回顧一下它的工作原理。或者你可以給我一些見解?

1

根據https://msdn.microsoft.com/en-us/library/ee829473(v=vs.110).aspx,這種工作方式是:

的SQL工作流實例存儲運行週期性喚醒一個內部任務,在持久數據庫檢測到可運行或激活工作流實例

一種活化工作流程是指滿足以下條件任一工作流:

  • 實例已解鎖,並且有一個掛起的計時器已過期。
  • 實例上有一個過期的鎖。
  • 實例已解鎖,其狀態爲正在執行。

因此,OP的建議(「它是否加載到內存中並經常檢查」)是正確的。

我還沒有證實這種行爲我自己,而是偶然發現了這個線程,因爲我一直在尋找的答案完全相同的問題,然後找到相關MSDN文章,我想與大家分享。

希望這會有所幫助。