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