这篇文章主要介绍“ASP.NET工作流的创建与启动方法”,在日常操作中,相信很多人在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 实例以启动工作流。
void Application_Start(object sender, EventArgs e) { System.Workflow.Runtime.WorkflowRuntime workflowRuntime = new System.Workflow.Runtime.WorkflowRuntime(); System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService manualService = new System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService(); workflowRuntime.AddService(manualService); workflowRuntime.StartRuntime(); Application["WorkflowRuntime"] = workflowRuntime; }
当应用程序完成时,ASP.NET 引发 Application_End 事件。 下面的代码演示如何检索在 Application_Start 事件期间创建的 WorkflowRuntime 对象,以便调用 StopRuntime 方法。
void Application_End(object sender, EventArgs e) { System.Workflow.Runtime.WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as System.Workflow.Runtime.WorkflowRuntime; 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。
protected void StartRuntime_Click(object sender, EventArgs e) { WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as WorkflowRuntime; ManualWorkflowSchedulerService manualScheduler = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService; WorkflowInstance instance = workflowRuntime.CreateWorkflow( typeof(ASPNetSequentialWorkflow)); instance.Start(); manualScheduler.RunWorkflow(instance.InstanceId); }
到此,关于“ASP.NET工作流的创建与启动方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。