命名空间:Microsoft.Azure。Workflows.Sdk
提供工厂方法,用于创建分支、分组、重复或停止执行的控制流动作。 通过 WorkflowBuiltInActions 访问该类,使用 WorkflowActions.BuiltIn.Control。
用法
// Access control actions via WorkflowActions.BuiltIn.Control
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var scope = WorkflowActions.BuiltIn.Control.Scope(() =>
{
var step1 = WorkflowActions.BuiltIn.Compose(inputs: () => "Process").WithName("Process");
return step1;
}).WithName("ProcessingScope");
trigger.Then(scope);
WorkflowFactory.CreateStatefulWorkflow("ControlFlowExample", trigger);
Methods
Scope
创建一个范围动作,将嵌套动作归入单一 的 IWorkflowAction。
IWorkflowAction Scope(Func<IChainableNode> actions)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| actions | 构建嵌套动作图的工厂。 | Func<IChainableNode> | 是的 |
var scope = WorkflowActions.BuiltIn.Control.Scope(() =>
{
var step1 = WorkflowActions.BuiltIn.Compose(inputs: () => "Step 1").WithName("Step1");
var step2 = WorkflowActions.BuiltIn.Compose(inputs: () => "Step 2").WithName("Step2");
return step1.Then(step2);
}).WithName("MyScope");
条件
创建一个条件动作,评估布尔表达式,并将执行路由到两个分支之一。
IWorkflowAction Condition(Expression<Func<bool>> expression, Func<IChainableNode> trueBranch, Func<IChainableNode> falseBranch)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| 表达式 | 用布尔表达式来评估。 | 表达<式 Func<bool>> | 是的 |
| trueBranch | 工厂是真正分支行动的产物。 | Func<IChainableNode> | 是的 |
| falseBranch | 虚假分支动作的工厂。 | Func<IChainableNode> | 是的 |
var condition = WorkflowActions.BuiltIn.Control.Condition(
expression: () => trigger.TriggerOutput.Body != null,
trueBranch: () => WorkflowActions.BuiltIn.Compose(inputs: () => "Has body").WithName("True"),
falseBranch: () => WorkflowActions.BuiltIn.Compose(inputs: () => "No body").WithName("False")
).WithName("CheckBody");
ForEach
创建一个循环动作,遍历集合并执行每个项目提供的动作图。
IWorkflowAction ForEach(Expression<Func<JToken>> items, Func<JToken, IChainableNode> actions)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| items | 集合的迭代表达式。 | 表达式<Func<JToken>> | 是的 |
| actions | 工厂接收当前项目并返回动作图。 | Func<JToken, IChainableNode> | 是的 |
var forEach = WorkflowActions.BuiltIn.Control.ForEach(
items: () => JArray.Parse("[\"one\",\"two\"]"),
actions: (item) => WorkflowActions.BuiltIn.Compose(inputs: () => $"Item: {item}").WithName("ProcessItem")
).WithName("LoopItems");
直到
创建一个循环动作,重复其嵌套动作,直到所提供的表达式被评估为真。
IWorkflowAction Until(Expression<Func<bool>> expression, Func<IChainableNode> actions)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| 表达式 | 布尔退出条件。 | 表达<式 Func<bool>> | 是的 |
| actions | 工厂里构建重复动作图。 | Func<IChainableNode> | 是的 |
var counterVar = WorkflowActions.BuiltIn.Variables.InitializeVariable<int>(
name: () => "counter",
value: () => 0).WithName("Counter");
var until = WorkflowActions.BuiltIn.Control.Until(
expression: () => counterVar.Value.Value<int>() >= 10,
actions: () => WorkflowActions.BuiltIn.Variables.IncrementVariable<int>(
name: () => "counter", value: () => 1).WithName("Increment")
).WithName("RepeatUntil10");
开关
创建一个交换操作,评估输入并将执行路由到匹配的 SwitchCase 或默认分支。
IWorkflowAction Switch(Expression<Func<JToken>> on, Func<Dictionary<string, SwitchCase>> cases, Func<IChainableNode> defaultCase = null)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| on | 值的表达式,用于开启。 | 表达式<Func<JToken>> | 是的 |
| 例 | 出厂时将机箱标签退回SwitchCase映射。 | Func<词典<字符串,SwitchCase>> | 是的 |
| 默认案例 | 默认的机箱操作是出厂设置。 | Func<IChainableNode> | 否 |
var switchAction = WorkflowActions.BuiltIn.Control.Switch(
on: () => trigger.TriggerOutput.Body,
cases: () => new Dictionary<string, SwitchCase>
{
["case1"] = new SwitchCase("value1",
WorkflowActions.BuiltIn.Compose(inputs: () => "Case 1").WithName("HandleCase1")),
["case2"] = new SwitchCase("value2",
WorkflowActions.BuiltIn.Compose(inputs: () => "Case 2").WithName("HandleCase2"))
},
defaultCase: () => WorkflowActions.BuiltIn.Compose(inputs: () => "Default").WithName("HandleDefault")
).WithName("RouteByValue");
Terminate
创建一个终止动作,通过指定的 FlowStatus 和可选消息停止工作流。
IWorkflowAction Terminate(Expression<Func<FlowStatus>> status, Expression<Func<string>> message = null)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| 状态 | 终止状态表达。 | 表达<式 Func<FlowStatus>> | 是的 |
| 消息 | 终止消息表达式。 | 表达<式函子<字符串>> | 否 |
var terminate = WorkflowActions.BuiltIn.Control.Terminate(
status: () => FlowStatus.Failed,
message: () => "Critical error occurred").WithName("StopWorkflow");
相关内容
- AgentToolContext 类定义
- IChainableNode 接口定义
- 可实现工作流程操作接口定义
- IWorkflowAction 接口定义
- IWorkflowOperation 接口定义
- IWorkflowProvider 接口定义
- IWorkflowTrigger 接口定义
- OperationChain 类定义
- 类型工作流动作接口定义
- 类型化工作流触发器接口定义
- WorkflowActionBase 类定义
- WorkflowActions 类定义
- WorkflowBuiltInActions 类定义
- WorkflowBuiltInTriggers 类定义
- WorkflowContext 类定义
- WorkflowFactory 类定义
- WorkflowManagedActions 类定义
- WorkflowManagedTriggers 类定义
- WorkflowProviderExtensions 类定义
- WorkflowTriggerBase 类定义
- 工作流程触发类定义
- WorkflowVariableActions 类定义