Windows Workflow Foundation 安裝程式並不安裝 SqlWorkflowPersistenceService 服務所需的資料庫,但會安裝為這些服務建立和配置資料庫所用的 SQL 指令碼。 本部分詳細說明正確配置供 SqlWorkflowPersistenceService 服務使用的 SQL Server 資料庫所需執行的步驟。
由 Windows Workflow Foundation 安裝的 SQL 服務使用 SQL Server 來儲存資訊。 對於這些任務,可以使用 Microsoft SQL Server 2005 Express、SQL Server 2000 或更高版本或 SQL Server 2000 Desktop Engine (MSDE)。
建立 SQL 永續性資料庫
-
在 SQL Server 2005 Express、SQL Server 2000 或更高版本或 SQL Server 2000 Desktop Engine (MSDE) 中,使用以下 SQL 查詢語句建立一個名為 WorkflowPersistenceStore 的新資料庫:CREATE DATABASE WorkflowPersistenceStore。
-
在 SQL 查詢分析器工作區中,從可用資料庫列表中選擇在步驟 1 中建立的資料庫。
-
在“檔案”選單上,單擊“開啟”,然後開啟 SQL 指令碼 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<語言>\SqlPersistence_Schema。
-
通過單擊“執行”或按 F5 來執行查詢,以便建立 SQL 永續性服務表。
-
在“檔案”選單上,單擊“開啟”,然後開啟 SQL 指令碼 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<語言>\SqlPersistence_Logic。
-
通過單擊“執行”或按 F5 來執行查詢,以便建立 SQL 永續性服務儲存過程。
向執行時引擎新增 SqlWorkflowPersistenceService
可以程式設計方式或通過使用應用程式配置檔案,向 Windows Workflow Foundation 執行時引擎新增執行時服務。
修改 SqlWorkflowPersistenceService 的 app.config
-
在 app.config 檔案的 Services 元素中,建立一個名為 add 的新元素。
-
向 add 元素新增名為 type 的屬性,該屬性的值為 System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。
-
向 add 元素新增名為 connectionString 的屬性,該屬性的值為 Initial Catalog=WorkflowPersistenceStore;Data Source=localhost;Integrated Security=SSPI。
注意:
可能需要修改連線字串,具體取決於 SQL Server 的配置。 此處顯示的連線字串假定,資料庫名稱為 WorkflowPersistenceStore,且 SQL Server 已安裝在用於應用程式開發的同一個系統上。 |
-
通過新增與 SqlWorkflowPersistenceService 類中定義的可配置屬性 (property) 相對應的屬性 (attribute),對 SqlWorkflowPersistenceService 服務進行配置。
例如,若要指定應在工作流進入空閒狀態時將其解除安裝(例如在使用了 DelayActivity 活動的情況下),請向 add 元素新增名為 UnloadOnIdle 的屬性,併為該屬性指定 true 值。
-
<add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionString="Initial Catalog=WorkflowPersistenceStore;Data Source=localhost;Integrated Security=SSPI;" UnloadOnIdle="true"/>
以程式設計方式向執行時引擎新增 SqlWorkflowPersistenceService
-
呼叫 WorkflowRuntime 類中定義的 AddService 方法,傳遞 SqlWorkflowPersistenceService 的新例項。
下面的示例演示如何使用與前面的過程中顯示的示例相同的配置來建立 SqlWorkflowPersistenceService 服務。 在此示例中,instanceOwnershipDuration 設定為 TimeSpan.MaxValue,而 loadingInterval 設定為 2 分鐘。 這些值是在 SqlWorkflowPersistenceService 類中使用的預設值。
-
[C#]
複製程式碼 using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { // Create the SqlWorkflowPersistenceService. string connectionString = ="Initial Catalog=WorkflowPersistenceStore;Data Source=localhost;Integrated Security=SSPI;" bool unloadOnIdle = true; TimeSpan instanceOwnershipDuration = TimeSpan.MaxValue; TimeSpan loadingInterval = new TimeSpan(0, 2, 0); SqlWorkflowPersistenceService persistService = new SqlWorkflowPersistenceService(connectionString, unloadOnIdle, instanceOwnershipDuration, loadingInterval); // Add the SqlWorkflowPersistenceService to the runtime engine. workflowRuntime.AddService( persistService ); // ... }
-