Windows 工作流概述
工作流是一组存储为模型的名为活动的基本单元,该模型用于描述实际进程。 工作流提供了一种方法,用于描述多项短期运行或长期运行的工作之间的执行顺序和依赖关系。 此工作从头到尾地贯穿模型,并且活动可以人工执行或由系统功能执行。
工作流运行时引擎
每个正在运行的工作流实例都是由进程内运行时引擎创建和维护的,托管进程通过以下类之一与其交互:
WorkflowInvoker,它像调用方法一样调用工作流。
WorkflowApplication,用于对单个工作流实例的执行进行显式控制。
WorkflowServiceHost,用于多实例方案中基于消息的交互。
上述每个类对表示为负责活动执行的 ActivityInstance 的核心活动运行时进行包装。 在一个应用程序域中可以并发运行多个 ActivityInstance 对象。
上述三个主机交互对象中的每一个都是从称为工作流程序的活动树中创建的。 使用这些类型或对 ActivityInstance 进行包装的自定义宿主,可以在包括控制台应用程序、基于窗体的应用程序、Windows 服务、ASP.NET Web 网站和 Windows Communication Foundation (WCF) 服务在内的任何 Windows 进程内执行工作流。
托管进程中的工作流组件
工作流组件之间的交互
下图演示工作流组件彼此之间如何进行交互。
在上图中,Invoke 类的 WorkflowInvoker 方法用于调用多个工作流实例。 WorkflowInvoker 用于不需要由宿主管理的轻型工作流;需要由宿主管理的工作流(如 Bookmark 恢复)必须改用 Run 来执行。 无需等待一个工作流实例完成即可调用下一个工作流实例;运行时引擎支持同时运行多个工作流实例。 调用的工作流如下:
一个包含 Sequence 子活动的 WriteLine 活动。 父活动的 Variable 绑定到子活动的 InArgument。 有关变量、参数和绑定的详细信息,请参阅变量和参数。
一个调用
ReadLine
的自定义活动。 将 OutArgument 活动的ReadLine
返回给调用 Invoke 方法。一个派生自 CodeActivity 抽象类的自定义活动。 CodeActivity 可以使用作为 CodeActivityContext 方法的参数提供的 Execute 访问运行时功能(如跟踪和属性)。 有关这些运行时功能的详细信息,请参阅工作流跟踪和工作流执行属性。