WF4.0 基础篇 (八) 控制流Activity
来源:互联网 发布:做预算的软件 编辑:程序博客网 时间:2024/05/16 06:28
本节主要介绍IF, Switch<T>, While, DoWhile, ForEach<T> 的使用.
本文例子下载:
http://files.cnblogs.com/foundation/controlActivitySample.rar
本文例子说明
控制流Activity
IF 条件
类名
System.Activities.Statements.If
文件
System.Activities.dll
结构说明
继承 NativeActivity
是一个 sealed类
override 了 [CacheMetadata方法] 与 [Execute方法]
[Condition]属性的类型为[ System.Activities.InArgument<bool> ],可以接受一个结果为[bool]的表达式
[Then] 属性 的类型为[System.Activities.Activity]
[Else] 属性 的类型为[System.Activities.Activity]
功能说明
[Then] 属性 Activity类型,如果[Condition]的表达式结果为[True],执行[Then]否则执行[Else]
例:
1. 在流程中添加string变量[myVariable]
2. 添加[Assign]为变量[myVariable]赋值"wxd"
3. 添加[If],[Condition]的表达式为[ myVariable ="wxd" ]
4. 在[If]的[Then]中添加[WriteLine]打印[ "Then:" + myVariable ]
在[If]的[Else]中添加[WriteLine]打印[ "Else:" + myVariable ]
流程
宿主
WorkflowInvoker.Invoke(newIfWorkflow());
结果
Switch<T> 分支
类名
System.Activities.Statements.Switch<T>
文件
System.Activities.dll
结构说明
继承 NativeActivity
是一个 sealed类
override 了 [CacheMetadata方法] 与 [Execute方法]
[Expression]属性的类型为[System.Activities.InArgument<T>],是case的 表达式
[Default] 属性 的类型为[System.Activities.Activity]
[Cases] 属性 的类型为[IDictionary<T, Activity>]
功能说明
在添加[Switch<T>]时,需要为case 表达式 [Expression属性] 指定类型
[Switch]会比效[Expression]的值与[Case集合]中每个分支值,如果有相等的就执行该分支,如果没的相等的就执行[Default]
[Switch]会自动检查[Case集合]中是否有相同的分支条件
例:
1. 在流程中添加string变量[myVariable]
2. 添加[Assign]为变量[myVariable]赋值"wxwinter"
3. 添加[Switch],[Expression]的表达式类型为[string],内容为[ myVariable]
4. 在[Default]中添加[WriteLine]打印["Case Default :" + myVariable]
添加[case],值为"wxd",在新添加的[case] 中添加[WriteLine]打印["Case wxd :" + myVariable]
添加[case],值为"lzm",在新添加的[case] 中添加[WriteLine]打印["Case lzm :" + myVariable]
流程
宿主
WorkflowInvoker.Invoke(newSwitchWorkflow());
结果
While 循环
类名
System.Activities.Statements.While
文件
System.Activities.dll
结构说明
继承 NativeActivity
是一个 sealed类
override 了 [CacheMetadata方法] 与 [Execute方法]
[Variables] 属性 的类型为[Collection<Variable>]
[Condition]属性 的类型为[Activity<bool>],可以接受一个结果为[bool]的表达式
[Body] 属性 的类型为[System.Activities.Activity]
功能说明
[While]中可以定义变量
当[Condition]条件为真时会执行[Body]中的内容
例:
1. 在流程中添加int变量[myVariable]
2. 添加[While],[Condition]的表达式为[myVariable<=10]
3. 在[While]的[Body]中添加[Assign],为变量[myVariable]赋值为 [myVariable + 1]
添加[WriteLine]打印变量[myVariable]的值
流程
宿主
WorkflowInvoker.Invoke(newWhileWorkflow());
结果
DoWhile 循环
类名
System.Activities.Statements.DoWhile
文件
System.Activities.dll
结构说明
继承 NativeActivity
是一个 sealed类
override 了 [CacheMetadata方法] 与 [Execute方法]
[Variables] 属性 的类型为[Collection<Variable>]
[Condition]属性 的类型为[Activity<bool>],可以接受一个结果为[bool]的表达式
[Body] 属性 的类型为[System.Activities.Activity]
功能说明
[DoWhile]中可以定义变量
当[Condition]条件为真时会执行[Body]中的内容, 当[Condition]条件为假时会执行[Body]中的内容一次
例:
1. 添加[DoWhile],[Condition]的表达式为[False]
2. 在[DoWhile]的[Body] 添加[WriteLine]打印"wxwinter"
流程
宿主
WorkflowInvoker.Invoke(newDoWhileWorkflow());
结果
ForEach<T> 循环
类名
System.Activities.Statements.ForEach<T>
文件
System.Activities.dll
结构说明
继承 NativeActivity
是一个 sealed类
override 了 [CacheMetadata方法] 与 [Execute方法]
[Body] 属性 的类型为[ActivityAction<T>]
[Values] 属性 的类型为[ InArgument<IEnumerable<T>> ]
功能说明
[Values] 属性为要循环的集合
[TypeArgument] 为要循环集合的的类型
[item]为循环时的临时变量,可在[Body]中被访问
例:
1. 创建一code activity 名为[CollectionActivity],
具有[Out]参数,类型为List<string>的参数[myOutCollection]
2. 在流程中添加List<string>变量[myCollection]
3. 在流程中添加[CollectionActivity],将[CollectionActivity.myOutCollection]参数绑定到 [myCollection] 变量
4. 在流程中添加[ForEach<T>],[TypeArgument]属性指定[string]
[Values] 属性绑定到 [myCollection] 变量
在[Body]中添加[writeLine],打印[item]
CollectionActivity
publicsealed class CollectionActivity : CodeActivity
{
publicOutArgument<System.Collections.Generic.List<string>> myOutCollection {get; set; }
protectedoverride void Execute(CodeActivityContext context)
{
System.Collections.Generic.List<string> list =new List<string>();
list.Add("wxd");
list.Add("lzm");
list.Add("wxwinter");
context.SetValue (this.myOutCollection,list );
}
}
流程
宿主
WorkflowInvoker.Invoke(newForEachWorkflow());
结果
- WF4.0 基础篇 (八) 控制流Activity
- WF4.0 基础篇 (八) 控制流Activity
- WF4.0 基础篇 (九) 控制流Activity
- WF4.0 基础篇 (二十三) 范型Activity
- WF4.0 基础篇 (二十四) Async Activity
- WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用
- WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用
- WF4.0 基础篇 (十四) Delay 与WF4中的线程
- WF4.0 基础篇 (二十) ActivityWithResult 有返回值Activity
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
- WF4.0 基础篇 (十六) CompensableActivity 补偿
- WF4.0 基础篇 (十七) Bookmark
- WF4.0 基础篇 (十八) Flowchart
- WF4.0 基础篇 (二十一) WorkflowInvoker
- WF4.0 基础篇 (二十二) Tracking
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
- WF4.0 基础篇 (一)开始使用WF
- WF4.0 基础篇 (四) 顺序容器Sequence 与CodeActivity
- 在Linux中使用线程
- [Baidu] 给一个整数数组,求连续子数组最大和
- CString和string区别
- [Google]如何用 互斥锁 实现 读写锁
- 2013/10/11传感器驱动的改写方案
- WF4.0 基础篇 (八) 控制流Activity
- char* CString string区别
- java的内存问题!
- 免费的wifi的背后
- UITableViewCell 重用 cell错乱问题
- 关于Win7下(连接到命名管道,写C盘文件)需要管理员权限
- java图片上传
- java的技巧要点!
- App Store上的开源应用汇总