ASP.NET工作流的创建与启动 |
本文标签:ASP.NET工作流 创建 Windows Workflow Foundation 是为了在不同的宿主应用程序环境中运行 。 ASP.NET Web 窗体就是一种这样的支持环境 。 但是,当为 Windows Workflow Foundation 创建基于 Web 的宿主应用程序时,必须设计宿主基础结构以解决 ASP.NET 应用程序和传统 Windows 窗体应用程序之间的关键体系结构差异 。 例如,ASP.NET 应用程序可以同时为多个同步的用户提供服务 。 在这种服务器环境中,应用程序的设计方式必须有效地利用可用的系统内存 。 这些情况下,Windows Workflow Foundation 提供卸载工作流实例的 SqlWorkflowPersistenceService 服务 。 另外,ASP.NET 在收到请求时会发出响应 。 默认情况下,工作流运行时以异步方式执行工作流 。 因此,可能会在工作流完成之前呈现页面和发送响应 。 为了避免这种情况,Windows Workflow Foundation 提供 ManualWorkflowSchedulerService 服务以便同步运行工作流 。 这使您的 Web 窗体能够将工作流状态信息返回给用户 。 ASP.NET工作流的创建:创建 WorkflowRuntime 对象 使用 ASP.NET 中的 Global.asax 文件可以处理与开始和结束 Web 应用程序时引发的各个 Web 会话或事件相关的 Web 窗体事件 。 ASP.NET 中的 Session 对象是为每个请求 Web 页的用户创建的,Application 对象是在每个会话中共享的单个对象 。 下面的示例演示如何处理 Application_Start 事件以创建 WorkflowRuntime 实例和添加 ManualWorkflowSchedulerService 。 完成此操作后,通过使用 StartRuntime 方法启动运行时,您可以将 WorkflowRuntime 实例保存到随 ASP.NET 一起提供的 Application 对象中 。 在以后对应用程序中 Web 页的请求中,您可以检索此单个 WorkflowRuntime 实例以启动工作流 。
当应用程序完成时,ASP.NET 引发 Application_End 事件 。 下面的代码演示如何检索在 Application_Start 事件期间创建的 WorkflowRuntime 对象,以便调用 StopRuntime 方法 。
ASP.NET工作流的启动:在 ASP.NET Web 窗体中启动工作流 在上一节中,在 Application_Start 事件期间创建了 WorkflowRuntime 实例 。 在 Web 应用程序处理请求时,会一直保留此对象 。 下面的代码演示如何从 ASP.NET 中的 Application 对象中检索 WorkflowRuntime 实例 。 之后,使用 GetService 方法检索用于启动工作流的 ManualWorkflowSchedulerService,以便同步运行工作流 。 为此,调用在 WorkflowRuntime 类中定义的 CreateWorkflow 方法,随后调用从 CreateWorkflow 调用中返回的 WorkflowInstance 对象中的 Start 方法 。 由于将 ManualWorkflowSchedulerService 添加到了 WorkflowRuntime,因此调用 RunWorkflow 方法,传递 WorkflowInstance 对象的 InstanceId 。
以上就介绍了ASP.NET工作流的创建与启动 。 |