流程图工作流
本主题适用于 Windows Workflow Foundation 4。
流程图是用于设计程序的已知范例。Flowchart 活动通常用于实现非顺序工作流,但如果未使用 FlowDecision 节点,则也可以用于顺序工作流。
流程图工作流结构
Flowchart 活动是包含从 FlowNode 继承的流节点集合的活动。流节点可以包含要执行以及将执行指向其他流节点的子活动。
流节点的类型
根据执行元素时所需的流控制类型,使用不同的元素类型。流程图元素的类型包括:
FlowStep - 在流程图中建立一个执行步骤的模型。
FlowDecision - 基于布尔条件建立执行分支,类似于 If。
FlowSwitch – 基于独占 Switch 建立执行分支,类似于 Switch。
每个链接都具有一个 Action 属性,该属性定义可用于执行子活动的 ActivityAction,并且每个链接还具有一个或多个 Next 属性,这些属性定义元素完成执行后要执行的元素。
使用 FlowStep 节点创建一个基本的活动顺序
若要建立一个基本的顺序模型,在该模型中依次执行两个活动,请使用 FlowStep 元素。在下面的示例中,使用了两个 FlowStep 元素按顺序执行两个活动。
<Flowchart>
<FlowStep>
<Read Result = "[result]"/>
<FlowStep.Next>
<FlowStep>
<Write Text="[Hello + result]"/>
</FlowStep>
</FlowStep.Next>
</FlowStep>
</Flowchart>
使用 FlowDecision 节点创建条件流程图
若要在流程图工作流中建立条件流节点的模型(即,创建一个充当传统流程图的决策符号的链接),请使用 FlowDecision 节点。该节点的 Condition 属性设置为定义条件的 WorkflowElement,并且 True 和 False 属性设置为表达式计算结果为 true 或 false 时要执行的 FlowNode 实例。下面的示例演示如何定义使用 FlowDecision 节点的工作流。
<Flowchart>
<FlowStep>
<Read Result="[s]"/>
<FlowStep.Next>
<FlowDecision>
<IsEmpty Input="[s]" />
<FlowDecision.True>
<FlowStep>
<Write Text="Empty"/>
</FlowStep>
</FlowDecision.True>
<FlowDecision.False>
<FlowStep>
<Write Text="Non-Empty"/>
</FlowStep>
</FlowDecision.False>
</FlowDecision>
</FlowStep.Next>
</FlowStep>
</Flowchart>
使用 FlowSwitch 节点创建独占 Switch
若要建立某个流程图的模型,在该流程图中基于匹配的值选择了一个独占路径,请使用 FlowSwitch 节点。Expression 属性设置为 WorkflowElement’1,其中类型参数 Object 定义匹配选择的值,并且 Cases 属性定义要匹配条件表达式的键和 FlowNode 对象的字典,以及一组 FlowNode 对象,这些对象定义在给定情况与条件表达式匹配时的执行流方式。FlowSwitch 还定义一个 Default 属性,该属性定义没有情况与条件表达式匹配时的执行流方式。下面的示例演示如何定义使用 FlowSwitch 元素的工作流。
<Flowchart>
<FlowSwitch>
<FlowSwitch.Expression>
<ReadColor/>
</FlowSwitch.Expression>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch.Cases>
</FlowSwitch>
</Flowchart>