作法:啟用工作流程與工作流程服務的持續性
本文描述如何啟用工作流程與工作流程服務的持續性。
啟用工作流程的持續性
您可以將執行個體存放區與 WorkflowApplication 產生關聯,方法是使用 WorkflowApplication 類別的 InstanceStore 屬性。 Persist 方法會將工作流程儲存或保存在與應用程式相關的執行個體存放區中。 Unload 方法會將工作流程保存在執行個體存放區中,然後從記憶體卸載該執行個體。 Load 方法會使用儲存在執行個體持續性儲存區中的工作流程資料,將工作流程載入至記憶體中。
Persist 方法會執行下列步驟:
- 暫停工作流程排程器,直到工作流程進入閒置狀態為止。
- 將工作流程保存或儲存在持續性存放區中。
- 恢復工作流程排程器。
Unload 方法會執行下列步驟:
- 暫停工作流程排程器,直到工作流程進入閒置狀態為止。
- 將工作流程保存或儲存在持續性存放區中。
- 處置記憶體中的工作流程執行個體。
工作流程位於無持續性區域時,Persist 和 Unload 方法都會封鎖,直到該工作流程離開無持續性區域為止。 不保存區完成後,此方法會繼續進行保存或卸載作業。 如果不保存區未在逾時時間過去前完成,或者持續性處理序所花的時間過長,就會擲回 TimeoutException
。
在程式碼中啟用持續性
WorkflowServiceHost 類別的 DurableInstancingOptions 成員具有名為 InstanceStore 的屬性,您可以使用該屬性將執行個體存放區與 WorkflowServiceHost 產生關聯。
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
開啟 WorkflowServiceHost 時,如果 DurableInstancingOptions.InstanceStore 不是 Null,就會自動啟用持續性。
一般來說,服務行為會使用 InstanceStore 屬性,提供要與工作流程服務主機搭配使用的實體執行個體存放區。 例如,SqlWorkflowInstanceStoreBehavior
建立 SqlWorkflowInstanceStore 的執行個體,對其進行設定,並將其指派給 DurableInstancingOptions.InstanceStore。
使用應用程式設定檔啟用持續性
在 app.config 或 web.config 檔案中加入下列程式碼,即可使用應用程式組態檔啟用持續性:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您要連接到 Azure SQL,Azure 資源受控識別是建議的驗證方法。