public WorkflowLaunchpad( IWorkflowInstanceStore workflowInstanceStore, IWorkflowFactory workflowFactory, IBookmarkFinder bookmarkFinder, ITriggerFinder triggerFinder, IDistributedLockProvider distributedLockProvider, IWorkflowInstanceDispatcher workflowInstanceDispatcher, IWorkflowInstanceExecutor workflowInstanceExecutor, IWorkflowRunner workflowRunner, IWorkflowRegistry workflowRegistry, IGetsStartActivities getsStartActivities, ElsaOptions elsaOptions, ILogger <WorkflowLaunchpad> logger) { _workflowInstanceStore = workflowInstanceStore; _bookmarkFinder = bookmarkFinder; _triggerFinder = triggerFinder; _distributedLockProvider = distributedLockProvider; _workflowInstanceDispatcher = workflowInstanceDispatcher; _elsaOptions = elsaOptions; _logger = logger; _getsStartActivities = getsStartActivities; _workflowRegistry = workflowRegistry; _workflowRunner = workflowRunner; _workflowInstanceExecutor = workflowInstanceExecutor; _workflowFactory = workflowFactory; }
public static ElsaOptions AddStartupActivities(this ElsaOptions options) { options.Services.AddStartupTask <RunStartupWorkflows>(); options.AddActivity <Activities.Startup>(); return(options); }
public CreateSubscriptions(IServiceBusFactory serviceBusFactory, ElsaOptions elsaOptions, IContainerNameAccessor containerNameAccessor) { _serviceBusFactory = serviceBusFactory; _containerNameAccessor = containerNameAccessor; _competingMessageTypes = elsaOptions.CompetingMessageTypes; _pubSubMessageTypes = elsaOptions.PubSubMessageTypes; }
public QuartzWorkflowInstanceScheduler(QuartzSchedulerProvider schedulerProvider, IDistributedLockProvider distributedLockProvider, ElsaOptions elsaOptions, ILogger <QuartzWorkflowInstanceScheduler> logger) { _schedulerProvider = schedulerProvider; _distributedLockProvider = distributedLockProvider; _elsaOptions = elsaOptions; _logger = logger; }
public async Task DispatchAsync(ExecuteWorkflowInstanceRequest request, CancellationToken cancellationToken = default) { var workflowInstance = await _workflowInstanceStore.FindByIdAsync(request.WorkflowInstanceId, cancellationToken); if (workflowInstance == null) { _logger.LogWarning("Cannot dispatch a workflow instance ID that does not exist"); return; } var workflowBlueprint = await _workflowRegistry.GetAsync(workflowInstance.DefinitionId, workflowInstance.TenantId, VersionOptions.SpecificVersion(workflowInstance.Version), cancellationToken); if (workflowBlueprint == null) { _logger.LogWarning("Workflow instance {WorkflowInstanceId} references workflow blueprint {WorkflowDefinitionId} with version {Version}, but could not be found", workflowInstance.Id, workflowInstance.DefinitionId, workflowInstance.Version); return; } var channel = _workflowChannelOptions.GetChannelOrDefault(workflowBlueprint.Channel); var queue = ElsaOptions.FormatChannelQueueName <ExecuteWorkflowInstanceRequest>(channel); EnqueueJob <WorkflowInstanceJob>(x => x.ExecuteAsync(request, CancellationToken.None), queue); }
public ServiceBusFactory(ElsaOptions elsaOptions, ILoggerFactory loggerFactory, IServiceProvider serviceProvider) { _elsaOptions = elsaOptions; _loggerFactory = loggerFactory; _serviceProvider = serviceProvider; _handlerActivator = new DependencyInjectionHandlerActivator(serviceProvider); }
public TypeBasedActivityProvider(ElsaOptions options, IDescribesActivityType describesActivityType, IActivityActivator activityActivator) { _describesActivityType = describesActivityType; _activityActivator = activityActivator; _elsaOptions = options; }
public LockingWorkflowRunner( IWorkflowRunner workflowRunner, IDistributedLockProvider distributedLockProvider, ElsaOptions elsaOptions) { _workflowRunner = workflowRunner; _distributedLockProvider = distributedLockProvider; _elsaOptions = elsaOptions; }
public LockingWorkflowInstanceExecutor( IWorkflowInstanceExecutor workflowInstanceExecutor, IDistributedLockProvider distributedLockProvider, ElsaOptions elsaOptions, ILogger <LockingWorkflowInstanceExecutor> logger) { _workflowInstanceExecutor = workflowInstanceExecutor; _distributedLockProvider = distributedLockProvider; _elsaOptions = elsaOptions; _logger = logger; }
public async Task DispatchAsync(ExecuteWorkflowDefinitionRequest request, CancellationToken cancellationToken = default) { var workflowBlueprint = await _workflowRegistry.GetAsync(request.WorkflowDefinitionId, request.TenantId, VersionOptions.Published, cancellationToken); if (workflowBlueprint == null) { _logger.LogWarning("No published version found for workflow blueprint {WorkflowDefinitionId}", request.WorkflowDefinitionId); return; } var channel = _workflowChannelOptions.GetChannelOrDefault(workflowBlueprint.Channel); var queue = ElsaOptions.FormatChannelQueueName <ExecuteWorkflowDefinitionRequest>(channel); await _commandSender.SendAsync(request, queue, default, cancellationToken);
public PurgeSubscriptions( IServiceBusFactory serviceBusFactory, ElsaOptions elsaOptions, ILogger logger, IDistributedLockProvider distributedLockProvider, string connectionString) { _serviceBusFactory = serviceBusFactory; _elsaOptions = elsaOptions; _logger = logger; _distributedLockProvider = distributedLockProvider; _managementClient = new ServiceBusAdministrationClient(connectionString); }
public ContinueRunningWorkflows( IWorkflowInstanceStore workflowInstanceStore, IWorkflowInstanceDispatcher workflowInstanceDispatcher, IDistributedLockProvider distributedLockProvider, ElsaOptions elsaOptions, ILogger <ContinueRunningWorkflows> logger) { _workflowInstanceStore = workflowInstanceStore; _workflowInstanceDispatcher = workflowInstanceDispatcher; _distributedLockProvider = distributedLockProvider; _elsaOptions = elsaOptions; _logger = logger; }
public ExecuteWorkflowDefinition( IStartsWorkflow startsWorkflow, IWorkflowRegistry workflowRegistry, IWorkflowInstanceStore workflowInstanceStore, IDistributedLockProvider distributedLockProvider, ElsaOptions elsaOptions, ILogger <ExecuteWorkflowDefinition> logger) { _startsWorkflow = startsWorkflow; _workflowRegistry = workflowRegistry; _workflowInstanceStore = workflowInstanceStore; _distributedLockProvider = distributedLockProvider; _elsaOptions = elsaOptions; _logger = logger; }
public TriggerWorkflows( IWorkflowInstanceStore workflowInstanceStore, IBookmarkFinder bookmarkFinder, ITriggerFinder triggerFinder, IDistributedLockProvider distributedLockProvider, IMediator mediator, ElsaOptions elsaOptions, ILogger <TriggerWorkflows> logger) { _workflowInstanceStore = workflowInstanceStore; _bookmarkFinder = bookmarkFinder; _triggerFinder = triggerFinder; _distributedLockProvider = distributedLockProvider; _mediator = mediator; _elsaOptions = elsaOptions; _logger = logger; }
public CreateSubscriptions(IServiceBusFactory serviceBusFactory, ElsaOptions elsaOptions, IContainerNameAccessor containerNameAccessor) { _serviceBusFactory = serviceBusFactory; _containerNameAccessor = containerNameAccessor; _competingMessageTypes = elsaOptions.CompetingMessageTypes.ToList(); _pubSubMessageTypes = elsaOptions.PubSubMessageTypes; var workflowChannelOptions = elsaOptions.WorkflowChannelOptions; var workflowChannels = workflowChannelOptions.Channels.ToList(); // For each workflow channel, register a competing message type for workflow definition and workflow instance consumers. foreach (var workflowChannel in workflowChannels) { _competingMessageTypes.Add(new CompetingMessageType(typeof(ExecuteWorkflowDefinitionRequest), ElsaOptions.FormatChannelQueueName <ExecuteWorkflowDefinitionRequest>(workflowChannel))); _competingMessageTypes.Add(new CompetingMessageType(typeof(ExecuteWorkflowInstanceRequest), ElsaOptions.FormatChannelQueueName <ExecuteWorkflowInstanceRequest>(workflowChannel))); } }
public ElsaOptionsBuilder(IServiceCollection services) { ElsaOptions = new ElsaOptions(); Services = services; AddAutoMapper = () => { // The profiles are added to AddWorkflowsCore so that they are not forgotten in case the AddAutoMapper function(option) is overridden. services.AddAutoMapper(Enumerable.Empty <Assembly>(), ServiceLifetime.Singleton); }; services.AddSingleton <InMemNetwork>(); services.AddSingleton <InMemorySubscriberStore>(); services.AddSingleton <InMemDataStore>(); services.AddMemoryCache(); services.AddSingleton <ICacheSignal, CacheSignal>(); DistributedLockingOptionsBuilder = new DistributedLockingOptionsBuilder(this); }
public static BackgroundJobServerOptions ConfigureForElsaDispatchers(this BackgroundJobServerOptions options, IServiceProvider serviceProvider) { var queues = options.Queues.ToHashSet(); // Add default worker queues. queues.AddRange(new[] { QueueNames.CorrelatedWorkflows }); // Add queue variations based on workflow channels, if any. var elsaOptions = serviceProvider.GetRequiredService <ElsaOptions>(); var channels = elsaOptions.WorkflowChannelOptions.Channels; foreach (var channel in channels) { queues.Add(ElsaOptions.FormatChannelQueueName <ExecuteWorkflowDefinitionRequest>(channel)); queues.Add(ElsaOptions.FormatChannelQueueName <ExecuteWorkflowInstanceRequest>(channel)); } options.Queues = queues.ToArray(); return(options); }
public ActivityActivator(ElsaOptions options, IWorkflowStorageService workflowStorageService) { _elsaOptions = options; _workflowStorageService = workflowStorageService; }
public OptionsContainerNameAccessor(ElsaOptions elsaOptions) => _elsaOptions = elsaOptions;
public ProgrammaticWorkflowProvider(ElsaOptions elsaOptions, IServiceProvider serviceProvider, Func <IWorkflowBuilder> workflowBuilder) { _workflows = elsaOptions.WorkflowFactory.CreateServices(serviceProvider); _workflowBuilder = workflowBuilder; }
public WorkflowStorageService(IEnumerable <IWorkflowStorageProvider> providers, ElsaOptions elsaOptions, IServiceProvider serviceProvider) { _defaultStorageProvider = (IWorkflowStorageProvider?)ActivatorUtilities.GetServiceOrCreateInstance(serviceProvider, elsaOptions.DefaultWorkflowStorageProviderType) !; _providersLookup = providers.ToDictionary(x => x.Name); }
public List(ElsaOptions elsaOptions) => _workflowChannels = elsaOptions.WorkflowChannelOptions.Channels.ToList();
public HangfireWorkflowDispatcher(IBackgroundJobClient jobClient, IWorkflowInstanceStore workflowInstanceStore, IWorkflowRegistry workflowRegistry, ElsaOptions elsaOptions, ILogger <HangfireWorkflowDispatcher> logger) { _jobClient = jobClient; _workflowInstanceStore = workflowInstanceStore; _workflowRegistry = workflowRegistry; _workflowChannelOptions = elsaOptions.WorkflowChannelOptions; _logger = logger; }
public QueuingWorkflowDispatcher(ICommandSender commandSender, IWorkflowInstanceStore workflowInstanceStore, IWorkflowRegistry workflowRegistry, ElsaOptions elsaOptions, ILogger <QueuingWorkflowDispatcher> logger) { _commandSender = commandSender; _workflowInstanceStore = workflowInstanceStore; _workflowRegistry = workflowRegistry; _workflowChannelOptions = elsaOptions.WorkflowChannelOptions; _logger = logger; }
public List(ElsaOptions elsaOptions, IEndpointContentSerializerSettingsProvider serializerSettingsProvider) { _serializerSettingsProvider = serializerSettingsProvider; _workflowChannels = elsaOptions.WorkflowChannelOptions.Channels.ToList(); }
public CreateSubscriptions(IServiceBusFactory serviceBusFactory, ElsaOptions elsaOptions) { _serviceBusFactory = serviceBusFactory; _messageTypes = elsaOptions.MessageTypes; }
public ActivityActivator(ElsaOptions options) { _elsaOptions = options; }