예제 #1
0
 public WorkflowController(IPersistenceProvider persistenceStore, IDistributedLockProvider lockProvider, IWorkflowRegistry registry, IQueueProvider queueProvider, IExecutionPointerFactory pointerFactory, ILoggerFactory loggerFactory)
 {
     _persistenceStore = persistenceStore;
     _lockProvider     = lockProvider;
     _registry         = registry;
     _queueProvider    = queueProvider;
     _pointerFactory   = pointerFactory;
     _logger           = loggerFactory.CreateLogger <WorkflowController>();
 }
예제 #2
0
 public EventConsumer(IWorkflowRepository workflowRepository, ISubscriptionRepository subscriptionRepository, IEventRepository eventRepository, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, WorkflowOptions options, IDateTimeProvider datetimeProvider)
     : base(queueProvider, loggerFactory, options)
 {
     _workflowRepository     = workflowRepository;
     _subscriptionRepository = subscriptionRepository;
     _eventRepository        = eventRepository;
     _lockProvider           = lockProvider;
     _datetimeProvider       = datetimeProvider;
 }
예제 #3
0
 public RunnablePoller(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IGreyList greylist, WorkflowOptions options)
 {
     _persistenceStore = persistenceStore;
     _greylist         = greylist;
     _queueProvider    = queueProvider;
     _logger           = loggerFactory.CreateLogger <RunnablePoller>();
     _lockProvider     = lockProvider;
     _options          = options;
 }
예제 #4
0
 public WorkflowConsumer(IPersistenceProvider persistenceProvider, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IWorkflowExecutor executor, IDateTimeProvider datetimeProvider, IGreyList greylist, WorkflowOptions options)
     : base(queueProvider, loggerFactory, options)
 {
     _persistenceStore = persistenceProvider;
     _greylist         = greylist;
     _executor         = executor;
     _lockProvider     = lockProvider;
     _datetimeProvider = datetimeProvider;
 }
예제 #5
0
 public LockingWorkflowRunner(
     IWorkflowRunner workflowRunner,
     IDistributedLockProvider distributedLockProvider,
     ElsaOptions elsaOptions)
 {
     _workflowRunner          = workflowRunner;
     _distributedLockProvider = distributedLockProvider;
     _elsaOptions             = elsaOptions;
 }
예제 #6
0
 public EventThread(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, WorkflowOptions options)
 {
     _persistenceStore = persistenceStore;
     _queueProvider    = queueProvider;
     _options          = options;
     _logger           = loggerFactory.CreateLogger <EventThread>();
     _lockProvider     = lockProvider;
     _thread           = new Thread(RunEvents);
 }
예제 #7
0
 public SyncWorkflowRunner(IWorkflowHost host, IWorkflowExecutor executor, IDistributedLockProvider lockService, IWorkflowRegistry registry, IPersistenceProvider persistenceStore, IExecutionPointerFactory pointerFactory, IQueueProvider queueService)
 {
     _host             = host;
     _executor         = executor;
     _lockService      = lockService;
     _registry         = registry;
     _persistenceStore = persistenceStore;
     _pointerFactory   = pointerFactory;
     _queueService     = queueService;
 }
예제 #8
0
 public KinesisStreamConsumer(AWSCredentials credentials, RegionEndpoint region, IKinesisTracker tracker, IDistributedLockProvider lockManager, ILoggerFactory logFactory, IDateTimeProvider dateTimeProvider)
 {
     _logger      = logFactory.CreateLogger(GetType());
     _tracker     = tracker;
     _lockManager = lockManager;
     _client      = new AmazonKinesisClient(credentials, region);
     _processTask = new Task(Process);
     _processTask.Start();
     _dateTimeProvider = dateTimeProvider;
 }
예제 #9
0
 public ContinueRunningWorkflows(
     IWorkflowInstanceStore workflowInstanceStore,
     IWorkflowInstanceDispatcher workflowInstanceDispatcher,
     IDistributedLockProvider distributedLockProvider,
     ILogger <ContinueRunningWorkflows> logger)
 {
     _workflowInstanceStore      = workflowInstanceStore;
     _workflowInstanceDispatcher = workflowInstanceDispatcher;
     _distributedLockProvider    = distributedLockProvider;
     _logger = logger;
 }
예제 #10
0
 public WorkflowThread(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IWorkflowExecutor executor, WorkflowOptions options)
 {
     _persistenceStore = persistenceStore;
     _queueProvider    = queueProvider;
     _executor         = executor;
     _options          = options;
     _logger           = loggerFactory.CreateLogger <WorkflowThread>();
     _lockProvider     = lockProvider;
     _thread           = new Thread(RunWorkflows);
     persistenceStore.EnsureStoreExists();
 }
예제 #11
0
 public WorkflowController(IPersistenceProvider persistenceStore, IDistributedLockProvider lockProvider, IWorkflowRegistry registry, IQueueProvider queueProvider, IExecutionPointerFactory pointerFactory, ILifeCycleEventHub eventHub, ISearchIndex searchIndex, ILoggerFactory loggerFactory)
 {
     _persistenceStore = persistenceStore;
     _lockProvider     = lockProvider;
     _registry         = registry;
     _queueProvider    = queueProvider;
     _pointerFactory   = pointerFactory;
     _eventHub         = eventHub;
     _searchIndex      = searchIndex;
     _logger           = loggerFactory.CreateLogger <WorkflowController>();
 }
예제 #12
0
 public WorkflowHost(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, WorkflowOptions options, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider)
 {
     PersistenceStore = persistenceStore;
     QueueProvider    = queueProvider;
     Options          = options;
     Logger           = loggerFactory.CreateLogger <WorkflowHost>();
     _serviceProvider = serviceProvider;
     Registry         = registry;
     LockProvider     = lockProvider;
     persistenceStore.EnsureStoreExists();
 }
예제 #13
0
 public LockingWorkflowInstanceExecutor(
     IWorkflowInstanceExecutor workflowInstanceExecutor,
     IDistributedLockProvider distributedLockProvider,
     ElsaOptions elsaOptions,
     ILogger <LockingWorkflowInstanceExecutor> logger)
 {
     _workflowInstanceExecutor = workflowInstanceExecutor;
     _distributedLockProvider  = distributedLockProvider;
     _elsaOptions = elsaOptions;
     _logger      = logger;
 }
예제 #14
0
 public WorkflowController(IPersistenceProvider persistenceStore, IDistributedLockProvider lockProvider, IWorkflowRegistry registry, IQueueProvider queueProvider, IExecutionPointerFactory pointerFactory, ILifeCycleEventHub eventHub, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowMiddlewareRunner middlewareRunner)
 {
     _persistenceStore = persistenceStore;
     _lockProvider     = lockProvider;
     _registry         = registry;
     _queueProvider    = queueProvider;
     _pointerFactory   = pointerFactory;
     _eventHub         = eventHub;
     _serviceProvider  = serviceProvider;
     _middlewareRunner = middlewareRunner;
     _logger           = loggerFactory.CreateLogger <WorkflowController>();
 }
예제 #15
0
 public WorkflowHost(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, WorkflowOptions options, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IEnumerable <IBackgroundTask> backgroundTasks, IWorkflowController workflowController)
 {
     PersistenceStore    = persistenceStore;
     QueueProvider       = queueProvider;
     Options             = options;
     Logger              = loggerFactory.CreateLogger <WorkflowHost>();
     _serviceProvider    = serviceProvider;
     Registry            = registry;
     LockProvider        = lockProvider;
     _backgroundTasks    = backgroundTasks;
     _workflowController = workflowController;
 }
예제 #16
0
 public PurgeSubscriptions(
     IServiceBusFactory serviceBusFactory,
     ElsaOptions elsaOptions,
     ILogger logger,
     IDistributedLockProvider distributedLockProvider,
     string connectionString)
 {
     _serviceBusFactory       = serviceBusFactory;
     _elsaOptions             = elsaOptions;
     _logger                  = logger;
     _distributedLockProvider = distributedLockProvider;
     _managementClient        = new ServiceBusAdministrationClient(connectionString);
 }
예제 #17
0
        public StartJobs(IBookmarkFinder bookmarkFinder, IWorkflowInstanceScheduler workflowScheduler, IDistributedLockProvider distributedLockProvider, ILogger <StartJobs> logger)
        {
            _bookmarkFinder          = bookmarkFinder;
            _workflowScheduler       = workflowScheduler;
            _distributedLockProvider = distributedLockProvider;
            _logger = logger;

            _retryPolicy = Policy
                           .Handle <Exception>()
                           .WaitAndRetryForeverAsync(retryAttempt =>
                                                     TimeSpan.FromSeconds(5)
                                                     );
        }
예제 #18
0
 public LocalStorageModuleCatalog(IOptions <LocalStorageModuleCatalogOptions> options, IDistributedLockProvider distributedLockProvider, ILogger <LocalStorageModuleCatalog> logger)
 {
     _options       = options.Value;
     _discoveryPath = _options.DiscoveryPath;
     if (!_discoveryPath.EndsWith(PlatformInformation.DirectorySeparator))
     {
         _discoveryPath += PlatformInformation.DirectorySeparator;
     }
     // Resolve IConnectionMultiplexer as multiple services to avoid crash if the platform ran without Redis
     // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.1#service-registration-methods
     _distributedLockProvider = distributedLockProvider;
     _logger = logger;
 }
예제 #19
0
 public WorkflowHost(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, WorkflowOptions options, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IEnumerable <IBackgroundTask> backgroundTasks, IWorkflowController workflowController, ILifeCycleEventHub lifeCycleEventHub)
 {
     PersistenceStore    = persistenceStore;
     QueueProvider       = queueProvider;
     Options             = options;
     Logger              = loggerFactory.CreateLogger <WorkflowHost>();
     _serviceProvider    = serviceProvider;
     Registry            = registry;
     LockProvider        = lockProvider;
     _backgroundTasks    = backgroundTasks;
     _workflowController = workflowController;
     persistenceStore.EnsureStoreExists();
     lifeCycleEventHub.Subscribe(HandleLifeCycleEvent);
 }
예제 #20
0
 public WorkflowHost(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, WorkflowOptions options, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IEnumerable <IBackgroundTask> backgroundTasks, IWorkflowController workflowController, ILifeCycleEventHub lifeCycleEventHub, ISearchIndex searchIndex, IActivityController activityController)
 {
     PersistenceStore    = persistenceStore;
     QueueProvider       = queueProvider;
     Options             = options;
     Logger              = loggerFactory.CreateLogger <WorkflowHost>();
     _serviceProvider    = serviceProvider;
     Registry            = registry;
     LockProvider        = lockProvider;
     _backgroundTasks    = backgroundTasks;
     _workflowController = workflowController;
     _searchIndex        = searchIndex;
     _activityController = activityController;
     _lifeCycleEventHub  = lifeCycleEventHub;
 }
예제 #21
0
 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;
 }
예제 #22
0
        public StartJobs(
            IBookmarkFinder bookmarkFinder,
            ITriggerFinder triggerFinder,
            IDistributedLockProvider distributedLockProvider,
            ICommandSender commandSender,
            ILogger <StartJobs> logger)
        {
            _bookmarkFinder          = bookmarkFinder;
            _triggerFinder           = triggerFinder;
            _distributedLockProvider = distributedLockProvider;
            _commandSender           = commandSender;
            _logger = logger;

            _retryPolicy = Policy
                           .Handle <Exception>()
                           .WaitAndRetryForeverAsync(_ => TimeSpan.FromSeconds(5)
                                                     );
        }
예제 #23
0
        public CreateSubscriptions(IServiceBusFactory serviceBusFactory, ElsaOptions elsaOptions, IContainerNameAccessor containerNameAccessor, IDistributedLockProvider distributedLockProvider)
        {
            _serviceBusFactory       = serviceBusFactory;
            _elsaOptions             = elsaOptions;
            _containerNameAccessor   = containerNameAccessor;
            _distributedLockProvider = distributedLockProvider;
            _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 MessageTypeConfig(typeof(ExecuteWorkflowDefinitionRequest), ElsaOptions.FormatChannelQueueName("ExecuteWorkflow", workflowChannel)));
                _competingMessageTypes.Add(new MessageTypeConfig(typeof(ExecuteWorkflowInstanceRequest), ElsaOptions.FormatChannelQueueName("ExecuteWorkflow", workflowChannel)));
            }
        }
 public void Setup()
 {
     Subject = CreateProvider();
     Subject.Start();
 }
예제 #25
0
 public DistributedLock(string name, string key, IDistributedLockProvider provider, DistributedLockOptions options, ILoggerFactory loggerFactory = null) : base($"{name}/{key}")
 {
     _provider = provider;
     _options  = options;
     _logger   = loggerFactory?.CreateLogger(GetType().FullName);
 }
예제 #26
0
 public WorkflowConsumer(IPooledObjectPolicy <IPersistenceProvider> persistencePoolPolicy, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IPooledObjectPolicy <IWorkflowExecutor> executorPoolPolicy, IDateTimeProvider datetimeProvider, WorkflowOptions options)
     : base(queueProvider, loggerFactory, options)
 {
     _persistenceStorePool = new DefaultObjectPool <IPersistenceProvider>(persistencePoolPolicy);
     _executorPool         = new DefaultObjectPool <IWorkflowExecutor>(executorPoolPolicy);
     _lockProvider         = lockProvider;
     _datetimeProvider     = datetimeProvider;
 }
예제 #27
0
 public CheckRunHandler(IGlobalConfigurationProvider globalConfigurationProvider, IGitHubClientProvider gitHubCLientProvider, IRepositoryConfigurationProvider repositoryConfigurationProvider, IDistributedLockProvider distributedLockProvider, ILogger logger) : base(globalConfigurationProvider, gitHubCLientProvider, repositoryConfigurationProvider, distributedLockProvider, logger)
 {
 }
 internal DistributedLockProxy(IDistributedLockProvider provider, string name)
 {
     _provider = provider;
     _name     = name;
 }
예제 #29
0
 public QuartzWorkflowDefinitionScheduler(QuartzSchedulerProvider schedulerProvider, IDistributedLockProvider distributedLockProvider, ElsaOptions elsaOptions, ILogger <QuartzWorkflowDefinitionScheduler> logger)
 {
     _schedulerProvider       = schedulerProvider;
     _distributedLockProvider = distributedLockProvider;
     _elsaOptions             = elsaOptions;
     _logger = logger;
 }
예제 #30
0
 public EventConsumer(IPersistenceProvider persistenceStore, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IDistributedLockProvider lockProvider, WorkflowOptions options)
     : base(queueProvider, loggerFactory, options)
 {
     _persistenceStore = persistenceStore;
     _lockProvider     = lockProvider;
 }