在我们学习 Workflow Foundation 之前,必须先分析一下 Visual Studio 2005 工具箱,认识一下都有什么活动。下图中显示的工具箱列出了WF支持的所有标准活动,用户可以用来设计流程步骤的顺序及其相互关系,以便形成工作流模型的活动。
注:没有标准明的是目前还不能给出正确的说明,以免误导大家
![](https://images.cnblogs.com/cnblogs_com/cnwf/DocImage/0201.JPG) |
下表提供每个活动的简短说明,以及这些活动适用于哪些方案。 |
活动 | 说明 | CallExternalMethod | | Code | 使您能够向工作流中添加 VB .NET 或 C# 代码以执行自定义操作。但是,这些代码不应该用对 Web 服务等外部资源的依赖性来阻塞工作流。 | CompensatableSequence | | CompensatableTransactionScope | | Compensate | 使您能够在发生错误时调用代码来撤消或者补偿已经由工作流执行的操作。通常,对于现在已被取消的操作,您可能希望向先前已经获得成功通知的用户发送电子邮件。 | ConditionedActivityGroup (CAG) | 使您的工作流能够基于特定于每个活动的准则有条件地执行一组子活动,直到针对 CAG 整体满足完成条件。子活动相互独立并可能并行执行。 | Delay | 使您能够控制工作流的定时以及将延迟内置到工作流。您可以在 Delay 活动上提供超时,以便工作流在恢复执行之前暂停。 | EventDriven | 代表一系列其执行由事件触发的活动。第一个子活动必须能够等待外部事件。可行的首要子活动是 EventSink 和 Delay。在这种情况下,Delay 用作超时。 | EventHandlingScope | | FaultHandler | | HandleExternalEvent | | IfElse | 使您的工作流能够有条件地执行多个可供选择的分支之一。可在每个分支上放置一个条件,而条件为真的第一个分支将执行。无需在最后一个分支上放置条件,因为它被视为“else”分支。 | InvokeWebService | 使您的工作流能够调用 Web 服务方法。您需要指定要使用的代理类(使用 WSDL),以及您想要调用的方法的名称。同步和异步调用都受到支持。 | InvokeWorkflow | 使您的工作流能够调用或启动另一个工作流(可达到任意深度)。例如,被调用的工作流可以调用第三个工作流,该工作流又可以调用第四个工作流,等等。递归调用不受支持。受支持的调用模型是发后不理。 | Listen | 使工作流能够等待(可能存在的)多个事件之一,或者在指定的超时间隔之后停止等待,并且基于结果分支。可向每个分支中添加一个或多个由事件驱动的活动。只有第一个满足条件的分支被执行;其他分支都不会运行。 | Parallel | 使您的工作流能够相互独立地执行两个或更多个操作。该活动在继续执行之前会等待这些操作终止。 | Policy | 使您能够表示或执行规则集合。 | Replicator | 使您的工作流能够创建给定活动的任意多个实例,并且顺序或同时执行它们。 | Sequence | 使您能够协调一组子活动的连续执行。该序列在最后一个子活动完成之后完成。 | SetState | 使您的状态机工作流能够指定向新状态的转换。 | State | 表示状态机工作流中的状态。 | StateFinalization | | StateInitialization | 在 State 活动中,用作在状态转换时执行的子活动的容器。 | Suspend | 挂起工作流的操作,以便能够在发生某个错误条件时进行干预。当工作流实例挂起时,将记录错误。可指定一个消息字符串来帮助管理员诊断发生了什么事情。与当前实例关联的所有状态信息都被保存,并且这些信息会在管理员继续执行时恢复。 | SynchronizationScope | | Terminate | 使您能够在发生任何异常情况时立即结束工作流的操作。如果是在 Parallel 活动内部调用,则所有分支都被突然终止,而无论它们的当前状态如何。当工作流终止时,会记录错误,并提供一个消息以帮助管理员弄清楚发生了什么事情。 | Throw | 使您能够引发指定类型的异常。使用该活动等效于在用户代码中引发异常的代码处理程序。该活动是引发 .NET 异常的声明性方式。 | TransactionScope | | WebServiceFault | | WebServiceInput | | WebServiceOutput | | While | 使您的工作流能够在一个条件被满足时执行一个或多个活动。在每次迭代之前,都评估该条件。如果为真,则所有子活动都会执行;否则,该活动完成。可指定声明性条件或代码条件。 | | | 活动表示使用 Windows Workflow Foundation 进行工作流编程的声明性方法。使用活动,可在设计时创作工作流模型并将值分配给每个活动的属性。如果选择带有代码分隔功能的工作流项,则最后的结果会作为 XML 标记保存到具有 .xoml 扩展名的工作流标记文件中。否则,创作的模型将作为对工作流对象模型的一系列调用持久保存在设计器生成的 C# 或 VB.NET 类文件中。前一种方法类似于 ASP.NET 页,而后一种方法类似于 Windows 窗体应用程序所采用的方法。 |