教程:使用 ASP.NET 创建工作流应用程序
在 ASP.NET 中承载工作流应用程序时,有几个事项需要考虑;这些事项具体是指:创建工作流运行库、管理页流以及保存和检索数据。 此教程将演练创建基本工作流库和运行并与工作流交互的网站所需的一系列步骤。 本教程演示以下工作流主题:
创建工作流运行库。
向工作流运行库添加服务。
工作流与宿主应用程序之间的通信。
存储和检索工作流跟踪信息。
工作流持久性。
手动计划工作流。
在此应用程序中,当应用程序启动时将创建工作流运行库,并将其存储在 Application 集合中。 然后,页将通过此集合引用运行库;这样,整个 Web 应用程序将使用相同的运行库实例。
在 Application_Start 事件处理程序中创建运行库时,将添加用于跟踪、计划、持久性和宿主通信的服务。 当需要计划服务和宿主通信服务时,将通过 GetService 访问它们,但是跟踪服务和持久性服务与宿主应用程序无需进一步交互即可工作。
宿主应用程序和工作流之间的通信可通过三种方式来完成:
在创建工作流时,将参数从应用程序传递到工作流。 这些形参将作为实参发送到对 CreateWorkflow 的调用。
使用本地通信服务,将消息从宿主应用程序发送到正在运行的工作流。
通过跟踪基础结构,将消息从工作流以间接方式发送到宿主应用程序。 工作流使用 TrackData 方法将有关其自身的信息存储到 SQL 数据库。 然后,宿主通过 SqlTrackingQuery 检索此跟踪数据。 使用此方法来替代通信服务的原因是,在无状态 ASP 应用程序中,没有可以运行的用户代码来处理由工作流产生的事件。
此应用程序使用现成可用的 SqlWorkflowPersistenceService 来保存空闲工作流。 除了向运行库添加持久性服务之外,不需要更多的用户代码来保存工作流;在持久性服务正常工作之后,运行库将会根据需要自动保存、卸载和重新加载工作流。
由于 ASP 应用程序的要求,应用程序需要在自己的进程中运行工作流。 因为默认工作流计划服务在各自的进程中运行,所以不能使用它们。 本教程改用 ManualWorkflowSchedulerService 来驱动工作流执行。
将在本教程中生成的应用程序是一个贷款审批模拟器。 应用程序的第一部分允许用户创建贷款申请。 在用户输入贷款申请之后,将会创建并启动一个新的工作流实例。 在启动之后,工作流将会记录跟踪信息,当进入空闲状态后,将会保存到数据库中并卸载,而由运行库等待来自应用程序的消息。 应用程序的第二部分允许用户查看现有的贷款申请(通过检索跟踪信息)。 用户也可以将现有贷款申请标记为已批准或已拒绝;这将通过工作流运行库向关联的工作流发送消息。 当运行库接收到有关工作流的消息时,工作流将重新加载,然后使用 HandleExternalEventActivity 接收消息。 接着,工作流记录贷款是否得到了批准(通过工作流跟踪基础结构),然后完成。
完成本教程需要安装 Internet 信息服务。 还需要 Microsoft SQL Server 或 MSDE 来跟踪和保存工作流。
本节内容
相关章节
请参见
其他资源
Windows Workflow Foundation 教程
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。