代码改变世界

WF 4.0 beta1活动概览(2):Flowchart、Messaging、PowerShell以及Migration

2009-06-11 08:20 by Windie Chai, ... 阅读, ... 评论, 收藏, 编辑
本文接着来介绍一下WF 4.0 beta1的其他几个活动分类:Flowchart、Messaging、PowerShell和Migration。

Flowchart

Flowchart是WF中新引进的一种模型。Flowchart是一种众所周之的、可以直观地表示业务过程的图表。业务分析师、架构师和开发人员都会将Flowchart作为一种共同的语言来来表示业务过程。

Flowchart是一种非常强大的结构,因为它提供了简单的顺序序列,并且还具有回滚到上一执行点的能力。 而且这种图表的概念在计算机学科之外的其他学科中也被广为接受。

活动

描述

设计器外观

Flowchart

是Flowchart的根活动。由于Flowchart本身也是一个活动,所以它可以被添加到任何容器活动中。

例如,我们可以将Flowchart添加到Sequence中,也可以将其添加到另一个Flowchart中。

右图中的绿色圆球表示Flowchart的start node

Flowchart

FlowDecision

FlowDecision在Flowchart中模拟了条件性分支。可以将它视为Procedual的If活动在Flowchart世界中的替身。

此活动包含一个Boolean类型的表达式Condition。如果该表达式计算为True,True分支就会被执行(否则计划执行False分支)。

FlowDecision

 

FlowSwitch

FlowSwitch活动根据一个expression来选择下一个节点。可以将FlowSwitch视为Procedual的Switch在Flowchart世界中的替身。

FlowSwitch 

Messaging

WF 4.0的消息处理活动被设计为支持面向消息的工作流,并且能将消息处理更好地集成到工作流中。它们能够让工作流将数据发送到其他系统中,并从其他系统中接收数据。这些活动可以通过关联(Correlation)来组合在一起,藉此来模拟许多复杂的消息交换模式(Message Exchange Patterns)。

 

活动

描述

设计器外观

Receive

模拟消息的单向接收。它可以接收下列类型的数据:Message、DataContract类型、XmlSerializable类型以及MessageContracts。

Receive 

ReceiveAndSendReply

此活动模板表现为一对已关联的Receive 活动和SendReply 活动。

通过使用此模板,你可以等待消息进来,然后发送一个回复给发送者。

由于Receive和SendReply位于Sequence中,你就可以在它们之间添加其他活动。

ReceiveAndSendReply 

Send

模拟消息的单向发送。

它可以接收下列类型的数据:Message、DataContract类型、XmlSerializable类型以及MessageContracts。

此活动可以以下列两种方式来使用:

  1. 客户端:此活动可以用来向服务发送请求。这可以看做是一个WCF客户端在调用一个服务操作。客户端没有执行约定接口。
  2. 在服务器端,Send活动可以用来向上一个Receive发送一个回复。此时Send和Receive活动必须拥有相同的OperationName、Action以及CorrelationHandle。
Send

 

SendAndReceiveReply

此活动模板表现为一对已关联好的Send活动和ReceiveReply活动。

通过使用此模板,你可以发送一个消息,然后等待目标的回复。

由于Send和ReceiveReply位于Sequence中,你就可以在它们之间添加其他活动。

SendAndReceiveReply 

PowerShell

PowerShell活动,顾名思意,在WF程序中允许调用PowerShell cmdlet和脚本。

请注意,这些活动目前出现在在beta1的工具栏中,但在发布RTM后将不再可用。这是因为.NET Framework不允许依赖于自身并没有提供的技术。目前之所以这么做,是因为有许多客户需要PowerShell活动。在RTM中,你会发现这些活动会在SDK中以示例的形式出现。

 

活动

描述

设计器外观

InvokePowerShell

调用一个不包含返回值的PowerShell cmdlet。InvokePowerShell可以用来调用简单的cmdlets和脚本。我们还可以向cmdlet传递参数和输入对象。执行之后,此活动会提供一组错误信息(如果发生错误的话)。

 InvokePowerShell

 

InvokePowerShell<T>

此活动调用PowerShell cmdlet,并接收返回的结果。这种类型的活动都要比非泛型版本多一个InitializationAction。

InitializationAction用来将cmdlet的执行结果隐射到工作流的变量。

InvokePowerShellT

 

Migration

WF 3.x 和4.0 可以并存,但我们只能使用Interop活动来在WF 4.0的工作流中使用WF 3.x的活动。

 

活动

描述

设计器外观

Interop

Interop是一个WF 4.0活动,它封装了WF 3.x的活动(从

System.Workflow.ComponentModel.Activity派生而来的非抽象CLR类型),于是便允许WF 3.x的活动是用在WF 4.0的工作六种。请注意,这里说的WF 3.x活动可以是一个叶活动,也可以是一个完整的已编译的工作流(活动树)。

Interop活动连接了WF 4.0和WF 3.x活动执行模型的桥梁,使数据流可以跨越Interop边界,并且在WF 4.0工作流实例中启用了WF 3.x活动的持久性和跟踪。

Interop活动允许WF开发人员逐步地转移到WF 4.0模型中:

  • 使用WF 3.x的活动来快速地体验WF 4.0
  • 封装开发人员不准备在WF 4.0模型中重新设计的WF 3.x活动
  • 封装那些开发人员不拥有或者无法操作源代码的WF 3.x活动(例如他们购买了第三方开发的活动)
Interop

 

请注意!

这是一个漫长的旅程,对吗?但这仅仅是开始。WF 4.0有着大量的新功能,我也热切地渴望在以后的文章中和大家一起分享。

本文简单的介绍了活动工具箱中提供的活动。如果你想要立即查看这些活动,可以下载WF samples。 查看位于%SamplesRoot%\WF\Built-InActivities文件夹中的示例是一个不错的出发点。

本文翻译自:http://blogs.msdn.com/endpoint/archive/2009/05/29/a-tour-on-the-wf4-activity-palette.aspx