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
与本系列相关的所有文档及代码索引请参考: