IChainableNode-Schnittstelle

Namespace: Microsoft.Azure. Workflows.Sdk

Definiert den Fluent-Chaining-Vertrag zur Zusammensetzung von Workflow-Operationen in sequentielle und parallele Ausführungspipelines unter Verwendung des Methodenmusters Then() . Sowohl IWorkflowOperation als auch OperationChain implementieren diese Schnittstelle, sodass Sie lineare und verzweigte Workflows flüssig zusammensetzen können.

Verwendung

var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var compose = WorkflowActions.BuiltIn.Compose(inputs: () => "Hello").WithName("Greet");
var response = WorkflowActions.BuiltIn.Response(responseBody: () => $"{compose.Output}").WithName("Reply");

trigger
    .Then(compose)
    .Then(response);

Methodik

Dann (IWorkflowAction)

Verkettet eine anschließende IWorkflowAction, die nach erfolgreichem Abschluss des aktuellen Knotens ausgeführt wird. Das ist die übliche Überlastung beim Aufbau sequentieller Workflows.

OperationChain Then(IWorkflowAction action)
Name Beschreibung Typ Erforderlich
action Die Aktion, um an die aktuelle Kette anzuhängen. IWorkflowAction Yes
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var compose = WorkflowActions.BuiltIn.Compose(inputs: () => "Hello").WithName("Greet");
var response = WorkflowActions.BuiltIn.Response(responseBody: () => $"{compose.Output}").WithName("Reply");

trigger
    .Then(compose)
    .Then(response);

Dann(IWorkflowAction, FlowStatus[])

Kettet eine anschließende IWorkflowAction mit expliziten FlowStatus Bedingungen. Verwenden Sie diese Überlastung, wenn die angehängte Aktion erst ausgeführt werden sollte, nachdem die vorherige Aktion einen der angegebenen Statusse erreicht hat.

OperationChain Then(IWorkflowAction action, FlowStatus[] runAfter)
Name Beschreibung Typ Erforderlich
action Die Aktion, um an die aktuelle Kette anzuhängen. IWorkflowAction Yes
runAfter Die Statuswerte, die es ermöglichen, die angehängte Aktion auszuführen. FlowStatus[] Yes
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var process = WorkflowActions.BuiltIn.Compose(inputs: () => "Process").WithName("Process");
var errorHandler = WorkflowActions.BuiltIn.Compose(inputs: () => "Error occurred").WithName("HandleError");

trigger
    .Then(process)
    .Then(errorHandler, runAfter: new[] { FlowStatus.Failed, FlowStatus.TimedOut });

Dann(IWorkflowAction, RunAfter[])

Kettet eine anschließende IWorkflowAction mit expliziter Konfiguration pro Vorgänger RunAfter . Nutze diese Überladung in Fan-In-Szenarien, in denen die nächste Aktion auf mehrere Vorgängerketten warten muss.

OperationChain Then(IWorkflowAction action, RunAfter[] runAfter)
Name Beschreibung Typ Erforderlich
action Die Aktion zum Anhängen nach Abschluss der konfigurierten Vorgänger. IWorkflowAction Yes
runAfter Die per-Vorgänger-Run-after-Definitionen steuert, wann die Aktion ausgeführt wird. RunAfter[] Yes
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var leftChain = trigger
    .Then(WorkflowActions.BuiltIn.Compose(inputs: () => "Left").WithName("Left"));
var rightChain = trigger
    .Then(WorkflowActions.BuiltIn.Compose(inputs: () => "Right").WithName("Right"));
var merged = WorkflowActions.BuiltIn.Compose(inputs: () => "Done").WithName("Merged");

leftChain
    .Join(rightChain)
    .Then(merged, runAfter: new[]
    {
        new RunAfter(leftChain, FlowStatus.Succeeded),
        new RunAfter(rightChain, FlowStatus.Succeeded),
    });

Then(Func<IChainableNode, OperationChain[]>)

Teilt den aktuellen Knoten in mehrere parallele Zweige auf. Der Callback empfängt den aktuellen IChainableNode und muss OperationChain-Instanzen zurückgeben, die denselben Root-Knoten teilen.

OperationChain Then(Func<IChainableNode, OperationChain[]> branches)
Name Beschreibung Typ Erforderlich
branches Ein Callback, der einen oder mehrere Zweige vom aktuellen Knoten erzeugt. Func<IChainableNode, OperationChain[]> Yes
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var branch1 = WorkflowActions.BuiltIn.Compose(inputs: () => "Branch 1").WithName("Branch1");
var branch2 = WorkflowActions.BuiltIn.Compose(inputs: () => "Branch 2").WithName("Branch2");
var merged = WorkflowActions.BuiltIn.Compose(inputs: () => "Merged").WithName("Merged");

trigger
    .Then(parent => new[]
    {
        parent.Then(branch1),
        parent.Then(branch2),
    })
    .Then(merged);