“取消工作流”示例

Download sample

此示例演示如何退出正在等待永远不会发生的外部事件的工作流。 该工作流是一个费用报告示例,用于提交费用报表并等待批准。 但是,该示例在创建时被设计为批准事件将永远不会到达。

宿主控制台应用程序实现一个取消工作流功能,该功能可使无终止的工作流退出。 此功能和调用 Terminate 方法终止工作流之间的不同之处在于:终止是不会运行任何异常或补偿处理程序的强制性非正常退出。 此示例使用的方法允许异常处理程序和补偿处理程序展开,并最终终止工作流。

为此,宿主应用程序将查询运行时以确定哪个活动正在阻止工作流。 将在 GetWorkflowQueueData 方法中返回工作流的队列名称。 工作流未处理的异常将通过 EnqueueItem 方法传送到此队列。

提示

在此示例中,将使用空闲的事件来确定工作流是否处于暂停状态在等待事件,但更可靠的应用程序应确认工作流没有因为其他原因处于空闲状态。

示例的输出将如下所示:

“取消工作流”示例输出

生成示例

  1. 通过单击**“下载示例”**来下载该示例。

    这会将示例项目提取到本地硬盘。

  2. 单击**“开始”,依次指向“程序”“Microsoft Windows SDK”,然后单击“CMD 外壳”[CMD Shell]**。

  3. 转到示例的源目录。

  4. 在命令提示符处键入 MSBUILD <解决方案文件名>

运行示例

  • 在 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 查询语句创建名为 SqlPersistenceService 的新数据库:

    CREATE DATABASE SqlPersistenceService

    注意:在工作流应用程序中同时使用 SqlTrackingServiceSqlWorkflowPersistenceService 时,建议对持久性服务和跟踪服务使用单一数据库。

  2. 在 SQL 查询分析器工作区中,从可用数据库列表中选择在步骤 1 中创建的数据库。

  3. 在**“文件”菜单上,单击“打开”**,并打开 SQL 脚本 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<语言>\SqlPersistenceService_Schema

  4. 通过单击**“执行”**来执行查询,或按 F5 创建 SQL 持久性服务表。

  5. 在**“文件”菜单上,单击“打开”**,并打开 SQL 脚本 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<语言>\SqlPersistenceService_Logic

  6. 通过单击**“执行”**来执行查询,或按 F5 创建 SQL 持久性服务存储过程。

请参见

参考

GetWorkflowQueueData
EnqueueItem
WorkflowQueueInfo
TerminateActivity
Terminate

其他资源

“宿主”示例
Hosting the Windows Workflow Foundation Runtime

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。