Workflow Foundation[WF]控件解释
君若利其器,必先理其意!
控制流
DoWhile
- 名称:Do - While 循环
- 含义:先执行一次循环体,然后再判断条件是否满足,若满足则继续执行循环体,否则退出循环。
- 用法:常用于需要先执行一次操作,再根据结果决定是否继续循环的场景,如数据的初始化及后续处理。
ForEach
- 名称:泛型 For - Each 循环
- 含义:对集合中的每个元素执行指定的操作。
- 用法:遍历集合,例如遍历 List<string>中的每个字符串进行处理。
If
- 名称:条件判断
- 含义:根据条件的真假来决定执行不同的分支代码。
- 用法:如if (x > 10),当 x 大于 10 时执行相应代码块。
Parallel
- 名称:并行执行
- 含义:并行执行多个活动,提高执行效率。
- 用法:在多核处理器环境下,并行处理多个任务,如同时处理多个文件。
ParallelForEach
- 名称:泛型并行 For - Each 循环
- 含义:并行地对集合中的每个元素执行操作。
- 用法:适用于需要对集合元素进行并行处理的场景,加速处理速度。
Pick
- 名称:选择
- 含义:在多个分支中选择第一个满足条件的分支执行。
- 用法:常用于处理多个可能的输入事件,选择最先到达的事件处理。
PickBranch
- 名称:选择分支
- 含义:Pick 活动中的一个分支。
- 用法:定义在 Pick 活动中,包含一个条件和对应的活动。
Sequence
- 名称:顺序
- 含义:按顺序依次执行多个活动。
- 用法:用于组织一系列有先后顺序的操作。
Switch
- 名称:泛型 Switch 语句
- 含义:根据一个表达式的值,从多个分支中选择一个执行。
- 用法:类似于 C# 中的 switch 语句,用于多条件分支判断。
While
- 名称:While 循环
- 含义:当条件满足时,重复执行循环体。
- 用法:while (condition),只要 condition 为真就持续执行循环体。
流程图
Flowchart
- 名称:流程图
- 含义:以图形化方式定义工作流的流程。
- 用法:用于可视化地设计和描述工作流的步骤和逻辑。
FlowDecision
- 名称:流程决策
- 含义:在流程图中进行条件判断,决定流程走向。
- 用法:根据条件决定后续执行哪个分支。
FlowSwitch
- 名称:泛型流程 Switch
- 含义:在流程图中根据表达式的值选择不同的分支。
- 用法:类似于 Switch<T>,用于流程图中的分支选择。
状态机
StateMachine
- 名称:状态机
- 含义:定义状态和状态之间的转换,用于建模有状态的行为。
- 用法:如建模订单的不同状态及状态转换。
State
- 名称:状态
- 含义:状态机中的一个状态。
- 用法:定义状态的名称和进入、离开等行为。
FinalState
- 名称:最终状态
- 含义:状态机的结束状态。
- 用法:表示状态机执行结束的状态。
消息传递(Messaging)
CorrelationScope
- 名称:关联作用域
- 含义:用于关联消息,确保消息与正确的工作流实例相关联。
- 用法:在消息处理中,处理相关联的消息,如会话中的消息。
InitializeCorrelation
- 名称:初始化关联
- 含义:初始化消息关联的相关信息。
- 用法:在消息处理开始时,设置关联的初始值。
Receive
- 名称:接收
- 含义:接收消息。
- 用法:用于等待和接收外部发送的消息。
ReceiveAndSendReply
- 名称:接收并发送回复
- 含义:接收消息并发送回复消息。
- 用法:常用于服务端接收请求并返回响应。
Send
- 名称:发送
- 含义:发送消息。
- 用法:向外部发送消息。
SendAndReceiveReply
- 名称:发送并接收回复
- 含义:发送消息并等待接收回复。
- 用法:常用于客户端发送请求并等待响应。
TransactedReceiveScope
- 名称:事务性接收作用域
- 含义:在事务范围内接收消息。
- 用法:确保消息接收操作的原子性等事务特性。
运行时
Persist
- 名称:持久化
- 含义:将工作流的状态保存到存储介质中。
- 用法:在长时间运行的工作流中,保存状态以便后续恢复。
TerminateWorkflow
- 名称:终止工作流
- 含义:立即终止工作流的执行。
- 用法:在特定条件下,如出现严重错误时终止工作流。
NoPersistScope
- 名称:无持久化作用域
- 含义:在该作用域内,工作流状态不会被持久化。
- 用法:对于一些临时的、不需要持久化的操作。
基元
Assign
- 名称:赋值
- 含义:将一个值赋给变量。
- 用法:如x = 10,将 10 赋值给变量 x。
Delay
- 名称:延迟
- 含义:使工作流暂停指定的时间。
- 用法:Delay(TimeSpan.FromSeconds(5)),暂停 5 秒。
InvokeDelegate
- 名称:调用委托
- 含义:调用一个委托。
- 用法:用于执行自定义的委托方法。
InvokeMethod
- 名称:调用方法
- 含义:调用一个对象的方法。
- 用法:如obj.Method(),调用对象 obj 的 Method 方法。
WriteLine
- 名称:写入行
- 含义:将文本输出到控制台或日志等。
- 用法:WriteLine("Hello World"),输出 "Hello World"。
事务
CancellationScope
- 名称:取消作用域
- 含义:定义一个可以被取消的操作范围。
- 用法:在需要支持取消操作的场景中使用。
CompensableActivity
- 名称:可补偿活动
- 含义:一个可以被补偿的活动,用于事务回滚时的补偿操作。
- 用法:在事务失败时,执行对应的补偿逻辑。
Compensate
- 名称:补偿
- 含义:执行补偿操作。
- 用法:用于触发补偿逻辑。
Confirm
- 名称:确认
- 含义:确认一个事务操作已完成。
- 用法:在事务成功时,确认操作已完成。
TransactionScope
- 名称:事务作用域
- 含义:定义一个事务范围。
- 用法:在该范围内的操作具有事务特性。
集合
AddToCollection
- 名称:向集合添加元素(泛型)
- 含义:向集合中添加一个元素。
- 用法:如向 List<int>中添加一个整数。
ClearCollection
- 名称:清空集合(泛型)
- 含义:移除集合中的所有元素。
- 用法:清空 List<string>中的所有字符串。
ExistsInCollection
- 名称:判断元素是否在集合中(泛型)
- 含义:检查集合中是否存在指定元素。
- 用法:判断 List<char>中是否存在某个字符。
RemoveFromCollection
- 名称:从集合移除元素(泛型)
- 含义:从集合中移除指定元素。
- 用法:从 List<float>中移除一个浮点数。
错误处理
TryCatch
- 名称:尝试 - 捕获
- 含义:尝试执行代码,并捕获可能抛出的异常。
- 用法:try { // 代码块 } catch (Exception ex) { // 异常处理 }。
Throw
- 名称:抛出异常
- 含义:主动抛出一个异常。
- 用法:如throw new Exception("Error"),抛出一个自定义异常。
Rethrow
- 名称:重新抛出异常
- 含义:将捕获到的异常重新抛出。
- 用法:在捕获异常后,可能需要在更高层次处理时重新抛出。