工作流中的每一个流程步骤、过程都可以说是一个流程活动,Windows Workflow Foundation中提供了多种适用于不同需求的活动组件,本篇简单介绍Windows Workflow Foundation里的CodeActivity、IfElseActivity、WhileActivity活动活动组件的基本使用方法。
一、CodeActivity(代码活动)
CodeActivity是最简单的一个活动组件,其功能就是执行一段自定义代码,该组件的应用很简单,从工具箱里拖拽一个CodeActivity组件到工作流设计器,通过其ExecuteCode属性指定该活动执行的方法,在指定的方法里编写需要执行的代码就OK。
二、SequenceActivity(序列活动)
SequenceActivity活动是一个复合活动,也就是说Sequence活动可以管理一个或多个子活动,这些子活动轮流执行,直到最后一个子活动完成.我们知道WhileActivity只允许包含一个子活动,我们就可以把Sequence活动作为其子活动,然后在Sequence活动中添加更多的子活动,While活动每循环一次,Sequence的所有子活动都会被执行。详细可参考:《WF编程》系列之15 - 顺序工作流与SequenceActivity 》这篇文章,这里就不做介绍。
三、IfElseActivity活动
根据字面就可以理解到这个活动是用来干嘛的,if--else分支判断活动,该活动有两个分支,IfElseActivity活动将从左到右的顺序检测判断条件并执行相宜的分支语句,默认左边的分支为判断条件成立时执行的分支,学习该活动最重要的应该是怎么去处理条件判断确定执行那一条分支流程,要实现这一功能判断通过Condition属性就可以搞定。
如果选择的是“声明性规则条件”那我们可以通过条件设计器直接指定判断条件,通过ConditionName属性可以新建判断条件或选择已经存在的判断条件,该条件可以是判断语句,也可以是表达式语句,如下写上了“1==1”的条件判断表达式,那肯定在流程中会执行“是”的分支。
如果是选择的“代码条件”就需要编写代码实现条件判断了,通过给Condition属性指定条件判断方法,在该方法中通过设置ConditionalEventArgs事件属性Result来确定执行那一条分支。
2 {
3 e.Result = true;
4 }
如上指定的条件判断表达式“1==1”和通过代码确定的条件判断值最终达到的效果都是一样的。IfElseActivity活动就关注判断条件的成立与否,确定下一步要执行的流程活动。
四、WhileActivity活动
WhileActivity循环活动,要使用循环处理的地方就可以用到它,使用方式和IfElseActivity活动差不多,这里不做详细介绍。需要注意的就是WhileActivity的内部必须要一个子活动,当然也可以是WhileActivity,如果是WhileActivity就成了循环嵌套。
通过一个简单的示例就可以理解到这个活动,上面指定了"this.Number < 100"为循环判断条件,在循环体的内部输出循环次数:
2 {
3 Console.WriteLine("第{0}次循环", ++Number);
4 }
CodeActivity、IfElseActivity、WhileActivity活动的基本用法就如上介绍,在真实的项目开发中结合业务需求使用就行了。