Welcome

首页 / 软件开发 / .NET编程技术 / Windows Workflow: 构建自定义活动以扩展您的工作流的作用范围

Windows Workflow: 构建自定义活动以扩展您的工作流的作用范围2011-11-17 msdn Matt Milner本文基于 .NET Framework 3.0 的预发布版本撰写而成。文中包含的所有信息均有变更可能。

本文讨论:

构建基本活动和复合活动

异步和基于事件的活动

自定义设计体验

验证和错误处理

本文使用了以下技术:

.NET Framework 3.0

自定义工作流 活动是 Windows® Workflow Foundation 的其中一个最重要的方面,在构建它们时需要考虑许多功能 。Don Box 和 Dharma Shukla 在他们于 2006 年 1 月撰写的文章“使用 Windows Workflow Foundation 的声明性模型简化开发”中,探讨了构建工作流的核心观点以及工作流运行时与活动之 间的交互(请参阅 msdn.microsoft.com/msdnmag/issues/06/01/WindowsWorkflowFoundation)。在本文 中,我会介绍为您的业务领域构建自定义活动时所需的核心组件,包括运行时职责、设计时体验和异步活 动开发。

构建自定义活动时,您必须做的第一个选择是构建简单活动还是复合活动。简单(或基本)活动是逻 辑和执行都封装在活动代码内的那些活动。简单活动示例有:Windows SDK 中的 SendEmail 活动或从数 据库查询数据的活动。

与此相反,复合活动要依赖于子活动的执行才能实现其目标。您可以按照 自己的需求以两种不同的方法创建复合活动。一种方法是构建这样的复合活动:它允许用户在设计时添加 子活动,并控制这些子活动的执行。例如,Windows Workflow Foundation 随附的 While 活动允许您添 加子活动,然后配置 While 活动的循环功能。While 复合活动主要用于管理其子活动的执行。构建复合 活动的另外一种方法是创建从现有复合活动(例如,Sequence 活动)派生的活动并添加一组活动作为子 活动以定义可重用组件。

可重用活动(如经理批准活动)有几个阶段最容易使用现有活动集合加 以模拟。经理批准活动可以使用诸如 IfElse 之类的活动来判断经理是否在线。如果在线,可以发送一条 即时消息;否则,发送一封电子邮件就可以了。此活动封装了请求批准的所有复杂逻辑,请求批准在工作 流中并且其本身就是一个工作流。此活动的用户只需在各自的工作流中使用这个复合活动就可以摆脱实际 与经理联系时所必须处理的复杂事务与细节。

要开始理解构建活动的概念,最好从一个非常基本 的活动着手,然后逐步将其构建为更为复杂的活动。为了说明这些概念,本文使用了两个主要活动:一个 是用于在 ASP.NET 成员身份库中创建用户的活动,一个是自定义 Switch 活动,用于模拟与同名代码概 念相类似的执行。这两个活动及其他活动的完整源代码可在本文提供的代码下载中找到。