Classe WorkflowControlControlActions

Namespace: Microsoft.Azure. Workflows.Sdk

Fornisce metodi di fabbrica per creare azioni di flusso di controllo che diramano, raggruppano, ripetono o fermano l'esecuzione. Accedi a questa classe tramite 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

Crea un'azione Scope che raggruppa le azioni annidate in un'unica IWorkflowAction.

IWorkflowAction Scope(Func<IChainableNode> actions)
Name Description TIPO Required
actions Factory che costruisce il grafico di azione annidato. 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");

Condition

Crea un'azione condizionale che valuta un'espressione booleana e invoglia l'esecuzione verso uno dei due rami.

IWorkflowAction Condition(Expression<Func<bool>> expression, Func<IChainableNode> trueBranch, Func<IChainableNode> falseBranch)
Name Description TIPO Required
expression Espressione booleana da valutare. Funzione di espressione<<bool>>
trueBranch Fabbrica per le vere azioni di ramo. Func<IChainableNode>
false Branch Factory per le false branch action. 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

Crea un'azione a ciclo che itera su una collezione ed esegue il grafico d'azione fornito per ogni elemento.

IWorkflowAction ForEach(Expression<Func<JToken>> items, Func<JToken, IChainableNode> actions)
Name Description TIPO Required
items Espressione per la raccolta da iterare. Funzione<di espressione<JToken>>
actions La fabbrica riceve l'articolo corrente e restituisce un grafico d'azione. 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");

Until

Crea un'azione a ciclo che ripete le sue azioni annidate finché l'espressione fornita non si valuta come vera.

IWorkflowAction Until(Expression<Func<bool>> expression, Func<IChainableNode> actions)
Name Description TIPO Required
expression Condizione di uscita booleana. Funzione di espressione<<bool>>
actions Factory che costruisce il grafico d'azione ripetuto. 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");

Interruttore

Crea un'azione di commutazione che valuta un input e invoglia l'esecuzione verso uno SwitchCase corrispondente o un ramo predefinito.

IWorkflowAction Switch(Expression<Func<JToken>> on, Func<Dictionary<string, SwitchCase>> cases, Func<IChainableNode> defaultCase = null)
Name Description TIPO Required
on Espressione per il valore da attivare. Funzione<di espressione<JToken>>
cases Etichetta di ritorno di fabbrica al case mapping SwitchCase. Stringa Dizionario<Func<, SwitchCase>>
Caso predefinito Factory per le azioni predefinite del case. 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

Crea un'azione di terminazione che interrompe il flusso di lavoro con un FlowStatus specificato e un messaggio opzionale.

IWorkflowAction Terminate(Expression<Func<FlowStatus>> status, Expression<Func<string>> message = null)
Name Description TIPO Required
status Espressione per stato di cessazione. Funzione<di espressione<FlowStatus>>
message Espressione per messaggio di terminazione. Stringa func<di espressione<>> No
var terminate = WorkflowActions.BuiltIn.Control.Terminate(
    status: () => FlowStatus.Failed,
    message: () => "Critical error occurred").WithName("StopWorkflow");