Beginning WF4读书笔计 - 第三章 02FlowSwitch和Parallel

 FlowSwitch

    其实“FlowSwitch”活动与“FlowDecision”活动类似,只不过“FlowSwitch”可以有不受限制的分支个数,而“FlowDecision”只有“True/False”两个分支。功能与C#中的“switch”关键字有类似的功能。

    在设计器中“FlowSwitch”活动形状如下:

 

 

添加“FlowSwitch”活动

    首先在工作流设计器的最底部拖入一个“FlowSwitch”活动。由于在工具箱中,“FlowSwitch”活动是基于泛形的,所以在拖入时会弹出一个类型选择对话框。在本例中我们是对整型进行操作,所以只需要选择“Int32”即可。接下来分别从“Morning”、“Afternoon”和“Evening”活动建立与“FlowSwitch”的连接。在“FlowSwitch”活动中有一个“Expression”的属性,这个属性用于匹配各个分支的值。在本例中,我们将在的季节提示不同的“祝福”,所以在“Expression”设置如下值:

CInt(((DateTime.Now.Month Mod 12) + 1) / 4)

 

     通过对表达式的分析,我们会发现12月、1月和2月将返回1;3月、4月、5月返回2,依此类推。接下来我们就将分别实现这四个季度的“祝福”活动了。

 

添加“FlowStep”活动

    “FlowSwitch”的分支叫做“FlowStep”,但是在工具箱中并没有这个元素,你也无需为每个分支建立这个活动,这些会在你从“FlowSwitch”绘出连接时自动创建。接下来我们在靠近“FlowSwitch”的周四周,分别创建五个“WriteLine”活动,并分别设置它们的“DisplayName”为“Winter”、“Spring”、“Summer”、“Autumn”和“Default”。完成之后,从“FlowSwitch”中分别建立与它们的连接。

    接下来,我们选中连接“Winter”的线,并在其属性中设置“Case”值为“1”。类似操作,分别为“Spring”、“Summer”和“Autumn”设置为“2”、“3”和“4”,而“Default”我们则需要对其属性中的“IsDefaultCase”复选框选上,完成之后效果类似:

 

    当然要完全达与上面一样的效果,我们还得把“Winter”等活动的“Text”设置为类似“Happy Winter”。当然“Default”活动的“Text”除外,要设置为如下,以便输出更精确的信息。

"Season calculated as: " + CInt(((DateTime.Now.Month Mod 12) + 1) / 4).ToString()

 

运行程序(F5

 

  

Parallel

    接下来我们将展示“Parallel”活动,“Parallel”活动是一个可以使许多活动并行执行的容器(宿主)。在本例中,每个分支都将显示一段信息,如果我们对显示的顺序并不在意的话,就可以让他们在“Parallel”活动中进行并行显示。

 

添加“Parallel”活动

    从工具箱中拖一个“Parallel”活动到工作流视图的底部,并从各“WriteLine”活动建立与它的连接。如下图:

 

 

添加分支

    双击“Parallel”活动,将进入其内部设计页面。进行后,我们拖入三个“WriteLine”活动,分别用于显示日期、时间和星期。并且分别在它们的“Text”中设置表达式如下:

         “Time:” + DateTime.Now.TimeOfDay.ToString()

         “Date:” + DateTime.Now.Date.ToShortDateString()

         “Today is :” + DateTime.Now.ToString(“dddd”)

 

    此时“Parallel”的设计视图如下:

 

 补充:

    在“Parallel”的作何分支中,只请允许有一个活动。如果想支持多个活动,那么可以先在分支中放一个“Sequence”活动,再把其它活动置于其内。

 

    好了,到目前为止,总流程视图将类似如下:

 

 

运行程序(F5

 

 

源代码:Chapter03

 

与本系列相关的所有文档及代码索引请参考:

《Beginning WF : Windows Workflow in .NET 4.0》读书笔记

posted @ 2013-04-10 14:41  家住腊树下  阅读(538)  评论(0编辑  收藏  举报