2011-03-24 72 views
0

我有一個使用SqlWorkflowInstanceStore的自託管的WF 4服務。我配置它,像這樣:下來使用SqlInstanceStore時,我必須顯式配置持久性和卸載設置嗎?

 var behavior = new SqlWorkflowInstanceStoreBehavior(connStr); 
     TimeSpan detectionPeriod = behavior.RunnableInstancesDetectionPeriod; 
     behavior.InstanceCompletionAction = InstanceCompletionAction.DeleteNothing; 
     behavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry; 
     behavior.InstanceEncodingOption = InstanceEncodingOption.None; 
     host.Description.Behaviors.Add(behavior); 

Futher在我的代碼,我explitly加入IdleBehavior行爲給主機,以確保卸載正在使用。基本上,我不確定SqlInstanceStore在做什麼,特別是卸載工作流程。它是否自己管理,或者我仍然需要添加我的IdleBehavior,如下所示:

 // Idle behaviour 
     var idleBehavior = new WorkflowIdleBehavior(); 

     host.Description.Behaviors.Add(idleBehavior); 

在此先感謝。

回答

2

WorkflowIdleBehavior將讓WorkflowServiceHost在工作流程未處於活動狀態時自動保留/卸載工作流程。你不需要這樣做,但它有助於可擴展性。即使沒有空閒行爲,工作流程狀態也會在執行期間保存。

+0

謝謝Maurice。如果通過InstanceStore的內部管理在執行過程中保存,是否可以安全地假設它也自動從內存中卸載工作流? – Ian 2011-03-24 12:07:52

+0

不,該狀態將作爲某些操作的結果保存,但不會從內存中卸載工作流實例。您需要明確使用空閒行爲,關閉服務主機或使用控制端點。 – Maurice 2011-03-24 12:28:27

+0

非常好,謝謝Maurice。 – Ian 2011-03-24 13:30:12