取消工作流程範例

Download sample

這個範例會示範如何結束正在等候永遠不會發生之外部事件的工作流程。此工作流程是提交經費支出報表及等候核准的經費支出報告範例。不過,此範例已建立為核准事件永遠不會發生。

主控台應用程式會實作取消工作流程功能,讓不結束的工作流程結束。這個功能和呼叫 Terminate 方法結束工作流程的差異是,終止是強制和異常性結束,不會執行任何例外狀況或補償處理常式。這個範例使用的方法可讓例外狀況處理常式和補償處理常式回溯,最後會結束工作流程。

為了完成這項作業,主應用程式會查詢執行階段,探索哪個活動正在封鎖工作流程。工作流程的佇列名稱是在 GetWorkflowQueueData 方法中傳回。工作流程未處理的例外狀況會透過 EnqueueItem 方法傳遞至這個佇列。

Note注意:

在這個範例中,閒置事件是用來判斷工作流程是否因等候事件而暫停,但更穩固的應用程式應確認工作流程不會因其他原因閒置。

範例輸出如下:

取消工作流程範例輸出

若要建置範例

  1. 按一下 [下載範例] 來下載範例。

    這樣會將範例專案擷取到本機硬碟上。

  2. 按一下 [開始],並依序指向 [程式集] 和 [Microsoft Windows SDK],再按一下 [CMD 殼層]。

  3. 移至範例的來源目錄。

  4. 在命令提示字元上,輸入 MSBUILD <Solution file name>

若要執行範例

  • 在 [SDK 命令提示字元] 視窗中,執行 CancelWorkflow\bin\debug 資料夾 (若是範例的 VB 版本,則是 CancelWorkflow\bin 資料夾) 中的 .exe 檔案,該資料夾位於此範例的主要資料夾下方。

資料庫組態

Windows Workflow Foundation 所安裝的 SQL 服務會使用 Microsoft SQL Server 來儲存資訊。您可以使用 SQL Server 2005 Express、SQL Server 2000 (含) 以後版本或 SQL Server 2000 Desktop Engine (MSDE) 來執行這些工作。

Windows Workflow Foundation 安裝程式不會安裝這些服務所需的資料庫,但是會安裝 SQL 指令碼來為這些服務建立及設定資料庫。

下列步驟說明如何建立及設定此範例中的服務所使用的資料庫。

若要建立及設定 SQL Server 資料庫

  1. 如果您使用 Microsoft SQL Server 2005 Express、SQL Server 2000 (含) 以後版本或 SQL Server 2000 Desktop Engine (MSDE),請使用下列 SQL 查詢陳述式 (Statement) 建立一個名為 SqlPersistenceService 的新資料庫:

    CREATE DATABASE SqlPersistenceService

    注意:在工作流程應用程式中同時使用 SqlTrackingServiceSqlWorkflowPersistenceService 時,建議您使用單一資料庫,以保持持續性並方便進行追蹤。

  2. 在 SQL Query Analyzer 工作區中,於可用資料庫的清單中選取您在步驟 1 建立的資料庫。

  3. 在 [檔案] 功能表上,按一下 [開啟],並開啟 SQL 指令碼 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\SqlPersistenceService_Schema

  4. 按一下 [執行] 或按下 F5 執行查詢,以建立 SQL 持續性服務資料表。

  5. 在 [檔案] 功能表上,按一下 [開啟],並開啟 SQL 指令碼 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\SqlPersistenceService_Logic.

  6. 按一下 [執行] 或按下 F5 執行查詢,以建立 SQL 持續性服務預存程序。

請參閱

參考

GetWorkflowQueueData
EnqueueItem
WorkflowQueueInfo
TerminateActivity
Terminate

其他資源

裝載範例
Hosting the Windows Workflow Foundation Runtime

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.