Interface IChainableNode

Namespace: Microsoft.Azure. Workflows.Sdk

Define o contrato de encadeamento fluente para compor operações de workflow em pipelines de execução sequenciais e paralelas usando o Then() padrão de método. Tanto o IWorkflowOperation como o OperationChain implementam esta interface para que possas compor fluxos de trabalho lineares e ramificados de forma fluente.

Usage

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

Methods

Então(IWorkflowAction)

Encadeia uma IWorkflowAction subsequente para ser executada após o nó atual ser concluído com sucesso. Esta é a sobrecarga padrão para construir fluxos de trabalho sequenciais.

OperationChain Then(IWorkflowAction action)
Name Descrição Tipo Obrigatório
ação A ação para adicionar à cadeia atual. IWorkflowAction Sim
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);

Then(IWorkflowAction, FlowStatus[])

Chains uma subsequente IWorkflowAction com condições explícitas FlowStatus . Use esta sobrecarga quando a ação anexada só deve ser executada depois de a ação anterior atingir um dos estados especificados.

OperationChain Then(IWorkflowAction action, FlowStatus[] runAfter)
Name Descrição Tipo Obrigatório
ação A ação para adicionar à cadeia atual. IWorkflowAction Sim
runAfter Os valores de estado que permitem a execução da ação anexada. FlowStatus[] Sim
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 });

Então(IWorkflowAction, RunAfter[])

Encadeia uma IWorkflowAction subsequente com configuração explícita por predecessor RunAfter . Use esta sobrecarga em cenários de ventilação, onde a próxima ação tem de esperar por várias cadeias predecessoras.

OperationChain Then(IWorkflowAction action, RunAfter[] runAfter)
Name Descrição Tipo Obrigatório
ação A ação a adicionar após a conclusão dos predecessores configurados. IWorkflowAction Sim
runAfter As definições de run-after por predecessor que controlam quando a ação é executada. RunAfter[] Sim
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),
    });

Então(Func<IChainableNode, OperationChain[]>)

Divide o nó atual em múltiplos ramos paralelos. O callback recebe o IChainableNode atual e deve devolver instâncias OperationChain que partilhem o mesmo nó raiz.

OperationChain Then(Func<IChainableNode, OperationChain[]> branches)
Name Descrição Tipo Obrigatório
branches Um callback que cria um ou mais ramificações a partir do nó atual. Func<IChainableNode, OperationChain[]> Sim
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);