Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二

关于工作流设计器

即使是很简单的工作流设计,你可能都很难去观看整个工作流图形。幸运的是,设计器有一些非常有用的工具区帮助我们在一个大的工作流上去工作。在设计器的右上角,点击Collapse(收缩)链接。工作流图会如图Figure1-20所示。

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第1张图片

 

这可以让你非常快速的看到最顶层的活动。点击Expand All(展开所有)按钮。这时会展开所有的活动,但是现在你只可以看到工作流图的一部分。点击右下角的Overview按钮,这时会出现一个展示整个工作流图的窗口。你可以拖放到你喜欢的地方。关闭overview窗口,然后点击Fit to screen按钮。这时设计器会很快地变焦,使工作流图适应屏幕的大小,展示整个工作流图。根据你显示器的大小,它可能太小了,这时你可以点击右下角的下拉列表来缩放工作流图的大小。最后你点击“放大”按钮(也是在右下角),这时工作流图会变回原来的100%的状态。

双击“Sound Bell”活动。“Sound Bell”会展开自己和它的子活动。为了帮助你知道焦点处于工作流的哪个位置,设计器为我们提供了一个导航条,如图Figure1-21所示。

 

你可以点击导航条的任何一个链接。点击Workflow1链接会展示整个工作流图。

 

让我们看得更深入

让我们主要看一下我们做了什么。首先,我之前提到过工作流是用xaml文件定义的。到目前为止,你已经用图形化的方式来定义工作流。现在我们会看一下设计器实际上是怎么生成工作流设计的。在Solution Explorer(解决方案)中,右击Sequence.xaml文件,选择Code View(代码视图)。你会看到一个警告:文件已经打开。点击Yes,让它关闭设计器窗口。.xaml代码将会如Listing1-2所示。

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第2张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第3张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第4张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第5张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第6张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第7张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第8张图片

Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二_第9张图片

 

 

 

 

 

 

 

 

我让一些行粗体显示是为了帮你找到最顶层的活动。首先,Variables节点定义了两个variables(变量)。接着是一个WriteLine活动,名叫“Hello”,和一个If活动名叫“Adjust for PM”。接着是一个While活动名叫“Sound Bells”,一个WriteLine活动名叫“Display Time”,和一个If活动叫“Greeting”。

其中一个重点我想你知道的是这里没有一句执行的代码。这个文件只是一个属性的集合。例如,去递增counter,你可能希望看到下面一句代码:

 

counter = counter + 1

 

而这里用了一个Assign来包含一个counter和一个counter + 1。把counter = counter + 1放在Assign的活动中去完成。代码只在活动的类中执行,而在工作流的定义中是没有可执行的代码的。

 

与之前版本的不同

如果你使用过之前工作流的版本(version 3.0 或者3.5),你可能想知道到底现在有什么不同。WF 4.0跟原来的版本是完全不同的。过去的版本的程序可以很好的在.Net4.0中运行,因为之前的活动和服务基本上没什么改变。而WF 4.0却是完全新的设计。WF 4.0的活动和服务是不可以在之前的版本运行的。所以你可以使用WF 3.5又或者使用WF 4.0来设计。但是你不可以来回切换,除了一小部分脚本,我们将在后面讨论。

WF 3.5中,有一个代码类和一个设计视图类。代码类包含了为CodeActivity(活动事件)服务的应用、包含了对类成员的定义和事件委托的定义。在WF 4.0中是没有代码类的。可能最值得关注的是WF 4.0中没有CodeActivety。为了去弥补这个功能,WF 4.0提供了活动去实现之前在CodeActivity实现的功能。WriteLineAssign就是两个这样的活动。如果预定义的活动不足够去满足需求,你可以去创建一个用户活动,在用户活动中你可以使用CodeActivity来实现所需的功能。

另一个不同点是WF 4.0明确使用variables(变量)和arguments(参数)。因为这里是没有代码文件的,你不可以简单的添加类成员来应付你程序开发的需要,在这里,你需要使用工作流特有的方式来定义variablesarguments(具体的定义已述,不懂的,请看回前面的论述)。

最后,你可能注意到在Program.cs中是没有工作流运行时的,在之前的版本,你会创建一个工作流运行时类,然后调用它的CreateWorkflow()方法。在WF 4.0中,只需调用以下代码:

 

WorkflowInvoker.Invoke(new Workflow1());

 

已经讲了很多的不同点,还有其他,例如已经没有状态机工作流。我不详细的说,是因为这本书的目的不是为了讲述WF 4.0的不同点。我不想去讲述一些明显的改变,你应该发动你的大脑去思考。

你可能感兴趣的:(工作流)