WorkflowControlActions-Klasse

Namespace: Microsoft.Azure. Workflows.Sdk

Bietet Factory-Methoden zur Erstellung von Kontrollflussaktionen, die verzweigen, gruppieren, wiederholen oder die Ausführung stoppen. Zugriff auf diese Klasse über WorkflowBuiltInActions mit WorkflowActions.BuiltIn.Control.

Verwendung

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

Methodik

Geltungsbereich

Erstellt eine Scope-Aktion, die verschachtelte Aktionen zu einer einzigen IWorkflowAction gruppiert.

IWorkflowAction Scope(Func<IChainableNode> actions)
Name Beschreibung Typ Erforderlich
actions Die Fabrik, die den verschachtelten Aktionsgraphen erstellt. Func<IChainableNode> Yes
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");

Zustand

Erstellt eine bedingte Aktion, die einen booleschen Ausdruck auswertet und die Ausführung an einen von zwei Zweigen weiterleitet.

IWorkflowAction Condition(Expression<Func<bool>> expression, Func<IChainableNode> trueBranch, Func<IChainableNode> falseBranch)
Name Beschreibung Typ Erforderlich
expression Booleanischer Ausdruck zur Beurteilung. Ausdruck<Func<bool>> Yes
trueBranch Factory für die wahren Zweigaktionen. Func<IChainableNode> Yes
falseBranch Fabrik für die falschen Filialaktionen. Func<IChainableNode> Yes
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

Erstellt eine Schleifenaktion, die über eine Sammlung iteriert und für jedes Element den bereitgestellten Aktionsgraphen ausführt.

IWorkflowAction ForEach(Expression<Func<JToken>> items, Func<JToken, IChainableNode> actions)
Name Beschreibung Typ Erforderlich
items Ausdruck für die Sammlung, um zu iterieren. Ausdruck<Func<JToken>> Yes
actions Die Fabrik erhält den aktuellen Artikel und gibt einen Aktionsgraphen zurück. Func<JToken, IChainableNode> Yes
var forEach = WorkflowActions.BuiltIn.Control.ForEach(
    items: () => JArray.Parse("[\"one\",\"two\"]"),
    actions: (item) => WorkflowActions.BuiltIn.Compose(inputs: () => $"Item: {item}").WithName("ProcessItem")
).WithName("LoopItems");

Until

Erzeugt eine Schleifenaktion, die ihre verschachtelten Aktionen wiederholt, bis der angegebene Ausdruck auf true ausgewertet wird.

IWorkflowAction Until(Expression<Func<bool>> expression, Func<IChainableNode> actions)
Name Beschreibung Typ Erforderlich
expression Boolesche Austrittsbedingung. Ausdruck<Func<bool>> Yes
actions Fabrik, die den Graphen für wiederholte Aktionen erstellt. Func<IChainableNode> Yes
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");

Option

Erstellt eine Switch-Aktion, die eine Eingabe auswertet und die Ausführung an einen passenden SwitchCase oder einen Standard-Sprung leitet.

IWorkflowAction Switch(Expression<Func<JToken>> on, Func<Dictionary<string, SwitchCase>> cases, Func<IChainableNode> defaultCase = null)
Name Beschreibung Typ Erforderlich
on Ausdruck für den Wert, der aktiviert werden soll. Ausdruck<Func<JToken>> Yes
cases Werkseitiger Rücksendungsetikett auf SwitchCase-Mapping. Func-Wörterbuch-String<<, SwitchCase>> Yes
defaultCase Factory für die Standard-Fallaktionen. 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

Erstellt eine Beenden-Aktion, die den Workflow mit einem bestimmten FlowStatus und einer optionalen Nachricht stoppt.

IWorkflowAction Terminate(Expression<Func<FlowStatus>> status, Expression<Func<string>> message = null)
Name Beschreibung Typ Erforderlich
status Ausdruck für den Beendigungsstatus. Ausdruck<Func<FlowStatus>> Yes
message Ausdruck für Kündigungsnachricht. Ausdrucks-Func-String<<>> No
var terminate = WorkflowActions.BuiltIn.Control.Terminate(
    status: () => FlowStatus.Failed,
    message: () => "Critical error occurred").WithName("StopWorkflow");