Classe WorkflowControlControlActions

Namespace: Microsoft.Azure. Workflows.Sdk

Fornece métodos de fábrica para criar ações de fluxo de controlo que ramificam, agrupam, repetem ou param a execução. Acede a esta classe através do WorkflowBuiltInActions usando WorkflowActions.BuiltIn.Control.

Usage

// 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

Cria uma ação Scope que agrupa ações aninhadas numa única IWorkflowAction.

IWorkflowAction Scope(Func<IChainableNode> actions)
Name Descrição Tipo Obrigatório
actions Factory que constrói o grafo de ações aninhado. Func<IChainableNode> Sim
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");

Condition

Cria uma ação condicional que avalia uma expressão booleana e encaminha a execução para um de dois ramos.

IWorkflowAction Condition(Expression<Func<bool>> expression, Func<IChainableNode> trueBranch, Func<IChainableNode> falseBranch)
Name Descrição Tipo Obrigatório
expressão Expressão booleana para avaliar. Função<de expressão<bool>> Sim
trueBranch Fábrica para as verdadeiras ações ramificadas. Func<IChainableNode> Sim
falseBranch Fábrica para as ações de ramificação falsa. Func<IChainableNode> Sim
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

Cria uma ação em loop que itera sobre uma coleção e executa o grafo de ações fornecido para cada item.

IWorkflowAction ForEach(Expression<Func<JToken>> items, Func<JToken, IChainableNode> actions)
Name Descrição Tipo Obrigatório
items Expressão para a coleção iterar. Função de Expressão<<JToken>> Sim
actions A fábrica recebe o item atual e devolve um gráfico de ação. Func<JToken, IChainableNode> Sim
var forEach = WorkflowActions.BuiltIn.Control.ForEach(
    items: () => JArray.Parse("[\"one\",\"two\"]"),
    actions: (item) => WorkflowActions.BuiltIn.Compose(inputs: () => $"Item: {item}").WithName("ProcessItem")
).WithName("LoopItems");

Até

Cria uma ação em loop que repete as suas ações aninhadas até que a expressão fornecida seja avaliada como verdadeira.

IWorkflowAction Until(Expression<Func<bool>> expression, Func<IChainableNode> actions)
Name Descrição Tipo Obrigatório
expressão Condição de saída booleana. Função<de expressão<bool>> Sim
actions Fábrica que constrói o gráfico de ação repetido. Func<IChainableNode> Sim
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");

Alternar

Cria uma ação de comutação que avalia uma entrada e encaminha a execução para um SwitchCase correspondente ou para um ramal padrão.

IWorkflowAction Switch(Expression<Func<JToken>> on, Func<Dictionary<string, SwitchCase>> cases, Func<IChainableNode> defaultCase = null)
Name Descrição Tipo Obrigatório
on Expressão para o valor a ativar. Função de Expressão<<JToken>> Sim
cases Etiqueta de caixa de devolução de fábrica para o mapeamento do SwitchCase. Cadeia de Dicionário<de Func<, SwitchCase>> Sim
defaultCase Factory para as ações padrão da caixa. Func<IChainableNode> No
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

Cria uma ação de terminar que para o fluxo de trabalho com um FlowStatus especificado e uma mensagem opcional.

IWorkflowAction Terminate(Expression<Func<FlowStatus>> status, Expression<Func<string>> message = null)
Name Descrição Tipo Obrigatório
estado Expressão para estado de cessação. Função<de Expressão<FlowStatus>> Sim
mensagem Expressão para mensagem de terminação. Cadeia de funções<de expressão<>> No
var terminate = WorkflowActions.BuiltIn.Control.Terminate(
    status: () => FlowStatus.Failed,
    message: () => "Critical error occurred").WithName("StopWorkflow");