/// <summary> /// Initializes a new <see cref="TransitionProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="StateDefinition"/> to process the transition of</param> /// <param name="transition">The <see cref="TransitionDefinition"/> to process</param> public TransitionProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, StateDefinition state, TransitionDefinition transition) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.State = state; this.Transition = transition; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="integrationEventBus">The service used to publish and subscribe to integration events</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="eventDefinition">The <see cref="ServerlessWorkflow.Sdk.Models.EventDefinition"/> that defines the <see cref="V1Event"/> to consume</param> public ConsumeEventProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IIntegrationEventBus integrationEventBus, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, EventDefinition eventDefinition) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.IntegrationEventBus = integrationEventBus; this.EventDefinition = eventDefinition; }
/// <summary> /// Initializes a new <see cref="SubflowProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="integrationEventBus">The service used to publish and subscribe to integration events</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="StateDefinition"/> the <see cref="SubflowReference"/> to process belongs to</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> public SubflowProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IIntegrationEventBus integrationEventBus, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, StateDefinition state, ActionDefinition action) : base(loggerFactory, context, activityProcessorFactory, options, activity, action) { this.IntegrationEventBus = integrationEventBus; this.State = state; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="jsonSerializer">The service used to serialize/deserialize to/from JSON</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="EventStateDefinition"/> to process</param> /// <param name="trigger">The <see cref="EventStateTriggerDefinition"/> to process</param> public EventStateTriggerProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IJsonSerializer jsonSerializer, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, EventStateDefinition state, EventStateTriggerDefinition trigger) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.JsonSerializer = jsonSerializer; this.State = state; this.Trigger = trigger; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> protected WorkflowActivityProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity) { this.Logger = loggerFactory.CreateLogger(this.GetType()); this.Context = context; this.ActivityProcessorFactory = activityProcessorFactory; this.Options = options.Value; this.Activity = activity; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="jsonSerializer">The service used to serialize/deserialize to/from JSON</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="ParallelStateDefinition"/> that defines the <see cref="BranchDefinition"/> to process</param> /// <param name="branch">The <see cref="BranchDefinition"/> to process</param> public BranchProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IJsonSerializer jsonSerializer, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ParallelStateDefinition state, BranchDefinition branch) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.JsonSerializer = jsonSerializer; this.State = state; this.Branch = branch; }
/// <summary> /// Initializes a new <see cref="AsyncFunctionProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="StateDefinition"/> the <see cref="EventReference"/> to process belongs to</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> /// <param name="triggerEvent">The <see cref="EventDefinition"/> that defines the <see cref="CloudEvent"/> to produce, thus triggering the async call</param> /// <param name="resultEvent">The <see cref="EventDefinition"/> that defines the <see cref="CloudEvent"/> to consume, thus ending the async call</param> public AsyncFunctionProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, StateDefinition state, ActionDefinition action, EventDefinition triggerEvent, EventDefinition resultEvent) : base(loggerFactory, context, activityProcessorFactory, options, activity, action) { this.State = state; this.TriggerEvent = triggerEvent; this.ResultEvent = resultEvent; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="jsonSerializer">The service used to serialize/deserialize to/from JSON</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="ForEachStateDefinition"/> that defines the iteration to process</param> /// <param name="iterationIndex">The index of the iteration to process</param> public IterationProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IJsonSerializer jsonSerializer, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ForEachStateDefinition state, int iterationIndex) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.JsonSerializer = jsonSerializer; this.State = state; this.IterationIndex = iterationIndex; }
/// <summary> /// Filters the output of the specified <see cref="StateDefinition"/> /// </summary> /// <param name="context">The <see cref="IWorkflowRuntimeContext"/> to use</param> /// <param name="state">The <see cref="StateDefinition"/> to filter the output for</param> /// <param name="output">The output data to filter</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/></param> /// <returns>The filtered output</returns> public static async Task <object?> FilterOutputAsync(this IWorkflowRuntimeContext context, StateDefinition state, object output, CancellationToken cancellationToken = default) { if (state.DataFilter == null || string.IsNullOrWhiteSpace(state.DataFilter.Output)) { return(output); } return(await context.EvaluateAsync(state.DataFilter.Output, output, cancellationToken)); }
/// <summary> /// Filters the input of the specified <see cref="ActionDefinition"/> /// </summary> /// <param name="context">The <see cref="IWorkflowRuntimeContext"/> to use</param> /// <param name="action">The <see cref="ActionDefinition"/> to filter the input for</param> /// <param name="input">The input data to filter</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/></param> /// <returns>The filtered input</returns> public static async Task <object?> FilterInputAsync(this IWorkflowRuntimeContext context, ActionDefinition action, object input, CancellationToken cancellationToken = default) { if (action.ActionDataFilter == null || string.IsNullOrWhiteSpace(action.ActionDataFilter.FromStateData)) { return(input); } return(await context.EvaluateAsync(action.ActionDataFilter.FromStateData, input, cancellationToken)); }
/// <summary> /// Evaluates the specified condition expression /// </summary> /// <param name="context">The <see cref="IWorkflowRuntimeContext"/> to use</param> /// <param name="expression">The condition expression to evaluate</param> /// <param name="data">The data to perform the evaluation against</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/></param> /// <returns>A boolean indicating whether or not the condition expression matches to the specified data</returns> public static async Task <bool> EvaluateConditionAsync(this IWorkflowRuntimeContext context, string expression, object data, CancellationToken cancellationToken = default) { var result = await context.EvaluateAsync(expression, data, cancellationToken); if (result == null) { return(false); } if (result is bool success) { return(success); } else { return(true); } }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> protected ActionProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ActionDefinition action) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.Action = action; }
/// <inheritdoc/> public ForEachStateProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ForEachStateDefinition state) : base(loggerFactory, context, activityProcessorFactory, options, activity, state) { }
/// <summary> /// Initializes a new <see cref="AsyncApiFunctionProcessor"/> /// </summary> /// <param name="serviceProvider">The current <see cref="ISerializerProvider"/></param> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="httpClientFactory">The service used to created <see cref="System.Net.Http.HttpClient"/>s</param> /// <param name="asyncApiReader">The service used to read <see cref="AsyncApiDocument"/>s</param> /// <param name="asyncApiClientFactory">The service used to create <see cref="IAsyncApiClient"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> /// <param name="function">The <see cref="FunctionDefinition"/> to process</param> public AsyncApiFunctionProcessor(IServiceProvider serviceProvider, ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IHttpClientFactory httpClientFactory, IAsyncApiDocumentReader asyncApiReader, IAsyncApiClientFactory asyncApiClientFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ActionDefinition action, FunctionDefinition function) : base(serviceProvider, loggerFactory, context, activityProcessorFactory, options, activity, action, function) { this.HttpClient = httpClientFactory.CreateClient(); this.AsyncApiReader = asyncApiReader; this.AsyncApiClientFactory = asyncApiClientFactory; }
/// <summary> /// Initializes a new <see cref="ODataFunctionProcessor"/> /// </summary> /// <param name="serviceProvider">The current <see cref="IServiceProvider"/></param> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="httpClientFactory">The service used to create <see cref="System.Net.Http.HttpClient"/>s</param> /// <param name="serializerProvider">The service used to provide <see cref="ISerializer"/>s</param> /// <param name="oauth2TokenManager">The service used to manahge <see cref="OAuth2Token"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> /// <param name="function">The <see cref="FunctionDefinition"/> to process</param> public ODataFunctionProcessor(IServiceProvider serviceProvider, ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IHttpClientFactory httpClientFactory, ISerializerProvider serializerProvider, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ActionDefinition action, FunctionDefinition function) : base(serviceProvider, loggerFactory, context, activityProcessorFactory, options, activity, action, function) { this.HttpClient = httpClientFactory.CreateClient(); this.SerializerProvider = serializerProvider; }
/// <inheritdoc/> public EndProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, EndDefinition end) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.End = end; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessor"/> /// </summary> /// <param name="serviceProvider">The current <see cref="IServiceProvider"/></param> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> /// <param name="function">The <see cref="FunctionDefinition"/> to process</param> public FunctionProcessor(IServiceProvider serviceProvider, ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ActionDefinition action, FunctionDefinition function) : base(loggerFactory, context, activityProcessorFactory, options, activity, action) { this.ServiceProvider = serviceProvider; this.Function = function; }
/// <inheritdoc/> public OperationStateProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IJsonSerializer jsonSerializer, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, OperationStateDefinition state) : base(loggerFactory, context, activityProcessorFactory, options, activity, state) { this.JsonSerializer = jsonSerializer; }
/// <summary> /// Initializes a new <see cref="WorkflowRuntime"/> /// </summary> /// <param name="logger">The service used to perform logging</param> /// <param name="hostApplicationLifetime">The service used to handle the lifetime of the <see cref="WorkflowRuntime"/>'s host application</param> /// <param name="integrationEventBus">The service used to publish and subscribe to integration events</param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="synapseRuntimeApi">The service used to interact with the Synapse Runtime API</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> public WorkflowRuntime(ILogger <WorkflowRuntime> logger, IHostApplicationLifetime hostApplicationLifetime, IIntegrationEventBus integrationEventBus, IWorkflowActivityProcessorFactory activityProcessorFactory, ISynapseRuntimeApi synapseRuntimeApi, IWorkflowRuntimeContext context) { this.Logger = logger; this.HostApplicationLifetime = hostApplicationLifetime; this.IntegrationEventBus = integrationEventBus; this.ActivityProcessorFactory = activityProcessorFactory; this.RuntimeApi = synapseRuntimeApi; this.Context = context; this.CancellationTokenSource = null !; }
/// <summary> /// Initializes a new <see cref="StateProcessor"/> /// </summary> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="state">The <see cref="StateDefinition"/> to process</param> protected StateProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, StateDefinition state) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.State = state; }
/// <summary> /// Initializes a new <see cref="WorkflowActivityProcessorFactory"/> /// </summary> /// <param name="serviceProvider">The current <see cref="IServiceProvider"/></param> /// <param name="logger">The service used to perform logging</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> public WorkflowActivityProcessorFactory(IServiceProvider serviceProvider, ILogger <WorkflowActivityProcessorFactory> logger, IWorkflowRuntimeContext context) { this.ServiceProvider = serviceProvider; this.Logger = logger; this.Context = context; }
/// <inheritdoc/> public StartProcessor(ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, StartDefinition start) : base(loggerFactory, context, activityProcessorFactory, options, activity) { this.Start = start; }
/// <summary> /// Initializes a new <see cref="RuntimeExpressionFunctionProcessor"/> /// </summary> /// <param name="serviceProvider">The current <see cref="IServiceProvider"/></param> /// <param name="loggerFactory">The service used to create <see cref="ILogger"/>s</param> /// <param name="context">The current <see cref="IWorkflowRuntimeContext"/></param> /// <param name="activityProcessorFactory">The service used to create <see cref="IWorkflowActivityProcessor"/>s</param> /// <param name="options">The service used to access the current <see cref="ApplicationOptions"/></param> /// <param name="activity">The <see cref="V1WorkflowActivity"/> to process</param> /// <param name="action">The <see cref="ActionDefinition"/> to process</param> /// <param name="function">The <see cref="FunctionDefinition"/> to process</param> public RuntimeExpressionFunctionProcessor(IServiceProvider serviceProvider, ILoggerFactory loggerFactory, IWorkflowRuntimeContext context, IWorkflowActivityProcessorFactory activityProcessorFactory, IOptions <ApplicationOptions> options, V1WorkflowActivity activity, ActionDefinition action, FunctionDefinition function) : base(serviceProvider, loggerFactory, context, activityProcessorFactory, options, activity, action, function) { }