Workflow 4.0 新特性与WCF服务集成指南

在Visual Studio 2010 RTM中,可以看到WF3.5和WF4之间存在许多差异。WF4的主要变化之一是移除了状态机工作流,并提供了更好的替代品“流程图”。此外,WCF工作流服务4.0的实现方式也有很大不同,不再有代码后置文件。所有这些变化都是为了提高性能和更好地理解工作流。

本文面向那些对工作流3.0、3.5和WCF服务有一定了解的读者,尽管所有其他初学者也可以通过下载源代码来学习工作流。

Workflow 4.0中的新特性和替代品

让看看4.0和3.5中的工作流模板之间的差异。状态机工作流被流程图所替代。众所周知,WF3.0或3.5中有两种类型的工作流:顺序和状态机。可以向这些工作流添加活动。在WF4中,工作流是一个包含其他活动的活动。这就是为什么在WF4中只有一个活动库项目模板的原因。流程图工作流是微软提出的更好的选择。大多数人都知道流程图的控制,这种工作流正是基于相同的概念工作的。

在Workflow 4.0中,完全基于XAML设计,不再有代码后置概念。但是,如果有人想要调用任何方法,有适当的控制项,如方法调用器和配置类型和方法名称。将在下面详细解释如何在WF4.0中调用方法。

自定义实现和自定义活动

可以通过创建活动库并在XAML设计器中配置来实现自定义实现。

消息流和工作流实例

Workflow4.0服务从接收请求开始,以向服务客户端发送响应结束。所有实现都可以在这两个主要活动之间完成。

通过检查“Receive Request”上的以下属性“CanCreateInstance”来创建新的工作流实例(如上图所示)。不需要像以前那样创建工作流实例。

在工作流实例中创建公共变量

以前,通常在代码后置文件中创建公共变量,但在工作流4中,只允许从工作流XAML设计器中创建变量。这些公共变量可以作为参数或方法的返回值,或进行任何类型的操作。

按照以下步骤创建变量:

  1. 选择最顶层的活动(序列),然后点击窗口底部的变量链接。
  2. 按照下图所示,给出名称、类型、范围和默认值。可以通过下拉列表中的浏览选项提供自定义类型。

如所见,解决方案包含两个服务项目,工作流服务和WCF服务,以及用于测试与所有这些服务集成的Web客户端。由于混合两个合同并不好,也容易为每个客户端定义合同,因此服务合同是分开的。数据合同是一个单独的程序集,将被所有项目引用。在这个示例应用程序中,WCF客户端是通过服务工厂调用的,也可以在Web客户端中使用相同的方法来调用工作流服务。

public class SapAdapterClient { public static string VerifyCredit(Basket basket) { return ServiceFactory.CreateInstance().VerifyCredit(basket); } }

这是一个自定义类,它调用WCF服务并将结果返回给工作流服务。WCF客户端是通过服务工厂调用的,这将使调用WCF服务。

  1. 在workflowservice项目中创建一个类,该类中包含调用WCF服务的方法。
  2. 从工具箱中放置“Invoke method”活动到“Primitives”下。
  3. 点击“Target Type”下拉菜单,点击“browse for types”并选择创建的类以调用WCF服务。
  4. 在方法名称文本区域中输入方法名称。
  5. 点击属性并设置参数和结果。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485