コード例 #1
0
        public static ElsaOptionsBuilder AddSqlServerActivities(this ElsaOptionsBuilder elsa)
        {
            elsa.Services
            .AddSingleton <ISqlClientFactory, SqlClientFactory>();
            elsa.AddActivity <Activities.ExecuteSqlQuery>();
            elsa.AddActivity <Activities.ExecuteSqlCommand>();

            elsa.AddSqlScripting();

            return(elsa);
        }
コード例 #2
0
        public static ElsaOptionsBuilder AddAzureServiceBusActivities(this ElsaOptionsBuilder options, Action <AzureServiceBusOptions>?configure)
        {
            if (configure != null)
            {
                options.Services.Configure(configure);
            }
            else
            {
                options.Services.AddOptions <AzureServiceBusOptions>();
            }

            options.Services
            .AddSingleton(CreateServiceBusConnection)
            .AddSingleton(CreateServiceBusManagementClient)
            .AddSingleton <IMessageSenderFactory, MessageSenderFactory>()
            .AddSingleton <IWorkerManager, WorkerManager>()
            .AddHostedService <StartWorkers>()
            .AddBookmarkProvider <MessageReceivedBookmarkProvider>()
            ;

            options.AddPubSubConsumer <UpdateWorkers, TriggerIndexingFinished>("WorkflowManagementEvents");
            options.AddPubSubConsumer <UpdateWorkers, TriggersDeleted>("WorkflowManagementEvents");
            options.AddPubSubConsumer <UpdateWorkers, BookmarkIndexingFinished>("WorkflowManagementEvents");
            options.AddPubSubConsumer <UpdateWorkers, BookmarksDeleted>("WorkflowManagementEvents");

            options
            .AddActivity <AzureServiceBusQueueMessageReceived>()
            .AddActivity <SendAzureServiceBusQueueMessage>()
            .AddActivity <SendAzureServiceBusTopicMessage>()
            .AddActivity <AzureServiceBusTopicMessageReceived>();

            return(options);
        }
コード例 #3
0
        /// <summary>
        /// Adds services which are common to temporal activities.  This method is intended for internal use only.
        /// </summary>
        /// <remarks>
        /// <para>
        /// Instead of calling this method directly, when setting up Elsa for temporal (time-based) activities,
        /// developers should make use of one of the implementation-specific add-temporal-activities methods.
        /// Without providing an implementation-specific configuration in <paramref name="configure"/>, this method
        /// will not fully set up the temporal activities.
        /// </para>
        /// </remarks>
        /// <param name="options">Elsa options</param>
        /// <param name="configure">The configuration for temporal activity options</param>
        public static ElsaOptionsBuilder AddCommonTemporalActivities(this ElsaOptionsBuilder options, Action <TimersOptions>?configure = default)
        {
            var timersOptions = new TimersOptions(options.Services);

            configure?.Invoke(timersOptions);

            options.Services
            .AddNotificationHandlers(typeof(UnscheduleTimers))
            .AddHostedService <ScopedBackgroundService <StartJobs> >()
            .AddBookmarkProvider <TimerBookmarkProvider>()
            .AddBookmarkProvider <CronBookmarkProvider>()
            .AddBookmarkProvider <StartAtBookmarkProvider>();

            options
            .AddActivity <Cron>()
            .AddActivity <Timer>()
            .AddActivity <StartAt>()
            .AddActivity <ClearTimer>();

            // Register a consumer to process instructions to schedule activities from bookmarks.
            options.AddCompetingConsumer <ScheduleBookmarkConsumer, ScheduleTemporalBookmark>("ScheduleBookmark");
            options.AddCompetingConsumer <ScheduleTriggerConsumer, ScheduleTemporalTrigger>("ScheduleBookmark");

            return(options);
        }
コード例 #4
0
        public static ElsaOptionsBuilder AddFileActivities(this ElsaOptionsBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddActivity <DeleteFile>()
            .AddActivity <EnumerateFiles>()
            .AddActivity <FileExists>()
            .AddActivity <OutFile>()
            .AddActivity <ReadFile>()
            .AddActivity <TempFile>()
            .AddActivity <WatchDirectory>();

            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, TriggerIndexingFinished>("WorkflowManagementEvents");
            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, TriggersDeleted>("WorkflowManagementEvents");
            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, BookmarkIndexingFinished>("WorkflowManagementEvents");
            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, BookmarksDeleted>("WorkflowManagementEvents");

            builder.Services.AddBookmarkProvider <FileCreatedBookmarkProvider>()
            .AddAutoMapperProfile <FileSystemEventProfile>()
            .AddSingleton <FileSystemWatchersStarter>()
            .AddHostedService <StartFileSystemWatchers>();

            return(builder);
        }
コード例 #5
0
        public static ElsaOptionsBuilder AddFileActivities(this ElsaOptionsBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddActivity <DeleteFile>()
            .AddActivity <EnumerateFiles>()
            .AddActivity <FileExists>()
            .AddActivity <OutFile>()
            .AddActivity <ReadFile>()
            .AddActivity <TempFile>()
            .AddActivity <WatchDirectory>();

            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, WorkflowDefinitionPublished>("WorkflowDefinitionEvents");
            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, WorkflowDefinitionRetracted>("WorkflowDefinitionEvents");
            builder.AddPubSubConsumer <RecreateFileSystemWatchersConsumer, WorkflowDefinitionDeleted>("WorkflowDefinitionEvents");

            builder.Services.AddBookmarkProvider <FileCreatedBookmarkProvider>()
            .AddAutoMapperProfile <FileSystemEventProfile>()
            .AddSingleton <FileSystemWatchersStarter>()
            .AddSingleton <Scoped <IWorkflowLaunchpad> >()
            .AddStartupTask <StartFileSystemWatchers>();

            return(builder);
        }
コード例 #6
0
        public static ElsaOptionsBuilder AddUserTaskActivities(this ElsaOptionsBuilder elsa)
        {
            elsa.Services
            .AddScoped <IUserTaskService, UserTaskService>()
            .AddBookmarkProvider <UserTaskBookmarkProvider>();

            return(elsa.AddActivity <UserTask>());
        }
コード例 #7
0
        public static ElsaOptionsBuilder AddBlobStorageActivities(this ElsaOptionsBuilder options)
        {
            options
            .AddActivity <WriteBlob>()
            .AddActivity <ReadBlob>()
            .AddActivity <BlobExists>()
            .AddActivity <DeleteBlob>()
            ;

            return(options);
        }
コード例 #8
0
        public static ElsaOptionsBuilder AddConsoleActivities(this ElsaOptionsBuilder options, TextReader?standardIn = default, TextWriter?standardOut = default)
        {
            options.Services
            .AddSingleton(standardIn ?? Console.In)
            .AddSingleton(standardOut ?? Console.Out);

            options
            .AddActivity <ReadLine>()
            .AddActivity <WriteLine>();

            return(options);
        }
コード例 #9
0
 public static ElsaOptionsBuilder AddUserActivities(this ElsaOptionsBuilder elsa)
 {
     return(elsa
            .AddActivity <CreateUser>()
            .AddActivity <DeleteUser>()
            .AddActivity <ActivateUser>()
            .AddActivity <DocumentContainer>()
            .AddActivity <UploadFile>()
            .AddActivity <DocumentUpdateFile>()
            .AddActivity <DocumentExtractor>()
            .AddActivity <DocumentAddIndex>()
            .AddActivity <GetDocument>());
 }
コード例 #10
0
        public static ElsaOptionsBuilder AddMassTransitActivities(this ElsaOptionsBuilder options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            options.Services.AddBookmarkProvider <MessageReceivedTriggerProvider>();

            return(options
                   .AddActivity <PublishMassTransitMessage>()
                   .AddActivity <ReceiveMassTransitMessage>()
                   .AddActivity <SendMassTransitMessage>());
        }
コード例 #11
0
        public static ElsaOptionsBuilder AddBlobStorageActivities(this ElsaOptionsBuilder options, Func <IServiceProvider, IBlobStorage>?configureBlobStorage = default)
        {
            if (configureBlobStorage != default)
            {
                options.UseStorage(configureBlobStorage);
            }

            options
            .AddActivity <WriteBlob>()
            .AddActivity <ReadBlob>()
            .AddActivity <BlobExists>()
            .AddActivity <DeleteBlob>()
            ;

            return(options);
        }
コード例 #12
0
        public static ElsaOptionsBuilder AddFileActivities(this ElsaOptionsBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddActivity <DeleteFile>()
            .AddActivity <EnumerateFiles>()
            .AddActivity <FileExists>()
            .AddActivity <OutFile>()
            .AddActivity <ReadFile>()
            .AddActivity <TempFile>();

            return(builder);
        }
コード例 #13
0
        public static ElsaOptionsBuilder AddAzureServiceBusActivities(this ElsaOptionsBuilder options, Action <AzureServiceBusOptions>?configure)
        {
            if (configure != null)
            {
                options.Services.Configure(configure);
            }
            else
            {
                options.Services.AddOptions <AzureServiceBusOptions>();
            }

            options.Services
            .AddSingleton(CreateServiceBusConnection)
            .AddSingleton(CreateServiceBusManagementClient)
            .AddSingleton <BusClientFactory>()
            .AddSingleton <IQueueMessageSenderFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <IQueueMessageReceiverClientFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <ITopicMessageSenderFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <ITopicMessageReceiverFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <IServiceBusQueuesStarter, ServiceBusQueuesStarter>()
            .AddSingleton <IServiceBusTopicsStarter, ServiceBusTopicsStarter>()
            .AddSingleton <Scoped <IWorkflowLaunchpad> >()
            .AddStartupTask <StartServiceBusQueues>()
            .AddStartupTask <StartServiceBusTopics>()
            .AddBookmarkProvider <QueueMessageReceivedBookmarkProvider>()
            .AddBookmarkProvider <TopicMessageReceivedBookmarkProvider>()
            ;

            options.AddPubSubConsumer <RestartServiceBusQueuesConsumer, WorkflowDefinitionPublished>("WorkflowDefinitionEvents");
            options.AddPubSubConsumer <RestartServiceBusQueuesConsumer, WorkflowDefinitionRetracted>("WorkflowDefinitionEvents");
            options.AddPubSubConsumer <RestartServiceBusQueuesConsumer, WorkflowDefinitionDeleted>("WorkflowDefinitionEvents");
            options.AddPubSubConsumer <RestartServiceBusTopicsConsumer, WorkflowDefinitionPublished>("WorkflowDefinitionEvents");
            options.AddPubSubConsumer <RestartServiceBusTopicsConsumer, WorkflowDefinitionRetracted>("WorkflowDefinitionEvents");

            options
            .AddActivity <AzureServiceBusQueueMessageReceived>()
            .AddActivity <SendAzureServiceBusQueueMessage>()
            .AddActivity <SendAzureServiceBusTopicMessage>()
            .AddActivity <AzureServiceBusTopicMessageReceived>()
            ;

            return(options);
        }
コード例 #14
0
        /// <summary>
        /// Adds services which are common to temporal activities.  This method is intended for internal use only.
        /// </summary>
        /// <remarks>
        /// <para>
        /// Instead of calling this method directly, when setting up Elsa for temporal (time-based) activities,
        /// developers should make use of one of the implementation-specific add-temporal-activities methods.
        /// Without providing an implementation-specific configuration in <paramref name="configure"/>, this method
        /// will not fully set up the temporal activities.
        /// </para>
        /// </remarks>
        /// <param name="options">Elsa options</param>
        /// <param name="configure">The configuration for temporal activity options</param>
        public static ElsaOptionsBuilder AddCommonTemporalActivities(this ElsaOptionsBuilder options, Action <TimersOptions>?configure = default)
        {
            var timersOptions = new TimersOptions(options.Services);

            configure?.Invoke(timersOptions);

            options.Services
            .AddNotificationHandlers(typeof(RemoveScheduledTriggers))
            .AddHostedService <ScopedBackgroundService <StartJobs> >()
            .AddBookmarkProvider <TimerBookmarkProvider>()
            .AddBookmarkProvider <CronBookmarkProvider>()
            .AddBookmarkProvider <StartAtBookmarkProvider>();

            options
            .AddActivity <Cron>()
            .AddActivity <Timer>()
            .AddActivity <StartAt>()
            .AddActivity <ClearTimer>();

            return(options);
        }
コード例 #15
0
        public static ElsaOptionsBuilder AddRebusActivities(this ElsaOptionsBuilder options, params Type[] messageTypes)
        {
            var services = options.Services;

            foreach (var messageType in messageTypes)
            {
                var handlerServiceType        = typeof(IHandleMessages <>).MakeGenericType(messageType);
                var handlerImplementationType = typeof(MessageConsumer <>).MakeGenericType(messageType);
                services.AddTransient(handlerServiceType, handlerImplementationType);
            }

            services
            .AddBookmarkProvider <MessageReceivedTriggerProvider>()
            .AddStartupTask(sp => ActivatorUtilities.CreateInstance <CreateSubscriptions>(sp, (object)messageTypes));

            options
            .AddActivity <PublishRebusMessage>()
            .AddActivity <SendRebusMessage>()
            .AddActivity <RebusMessageReceived>();

            return(options);
        }
コード例 #16
0
        public static ElsaOptionsBuilder AddRabbitMqActivities(this ElsaOptionsBuilder options)
        {
            options.Services
            .AddSingleton <BusClientFactory>()
            .AddSingleton <IMessageReceiverClientFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <IMessageSenderClientFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <IRabbitMqQueueStarter, RabbitMqQueueStarter>()
            .AddSingleton <Scoped <IWorkflowLaunchpad> >()
            .AddSingleton <IRabbitMqTestQueueManager, RabbitMqTestQueueManager>()
            .AddNotificationHandlersFrom <ConfigureRabbitMqActivitiesForTestHandler>()
            .AddStartupTask <StartRabbitMqQueues>()
            .AddBookmarkProvider <QueueMessageReceivedBookmarkProvider>();

            options.AddPubSubConsumer <RestartRabbitMqBusConsumer, WorkflowDefinitionPublished>("WorkflowDefinitionEvents");
            options.AddPubSubConsumer <RestartRabbitMqBusConsumer, WorkflowDefinitionRetracted>("WorkflowDefinitionEvents");

            options
            .AddActivity <RabbitMqMessageReceived>()
            .AddActivity <SendRabbitMqMessage>();

            return(options);
        }
コード例 #17
0
        public static ElsaOptionsBuilder AddMqttActivities(this ElsaOptionsBuilder options)
        {
            options.Services
            .AddSingleton <BusClientFactory>()
            .AddSingleton <IMessageReceiverClientFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <IMessageSenderClientFactory>(sp => sp.GetRequiredService <BusClientFactory>())
            .AddSingleton <IMqttTopicsStarter, MqttTopicsStarter>()
            .AddStartupTask <StartMqttTopics>()
            .AddBookmarkProvider <MessageReceivedBookmarkProvider>()
            .AddSingleton <IMqttTestClientManager, MqttTestClientManager>()
            .AddNotificationHandlersFrom <ConfigureMqttActivitiesForTestHandler>();

            options.AddPubSubConsumer <RestartMqttTopicsConsumer, TriggerIndexingFinished>("WorkflowManagementEvents");
            options.AddPubSubConsumer <RestartMqttTopicsConsumer, TriggersDeleted>("WorkflowManagementEvents");
            options.AddPubSubConsumer <RestartMqttTopicsConsumer, BookmarkIndexingFinished>("WorkflowManagementEvents");
            options.AddPubSubConsumer <RestartMqttTopicsConsumer, BookmarksDeleted>("WorkflowManagementEvents");

            options
            .AddActivity <MqttMessageReceived>()
            .AddActivity <SendMqttMessage>();

            return(options);
        }
コード例 #18
0
 public static ElsaOptionsBuilder AddEntityActivities(this ElsaOptionsBuilder options)
 {
     options.AddActivity <EntityChanged>();
     options.Services.AddBookmarkProvider <EntityChangedWorkflowTriggerProvider>();
     return(options);
 }
コード例 #19
0
 private static ElsaOptionsBuilder AddEmailActivitiesInternal(this ElsaOptionsBuilder services) => services.AddActivity <SendEmail>();
コード例 #20
0
    public static ElsaOptionsBuilder AddAbpActivities(this ElsaOptionsBuilder builder)
    {
        builder.AddActivity <AbpEventHandler>();

        return(builder);
    }
コード例 #21
0
 public static ElsaOptionsBuilder AddUserTaskActivities(this ElsaOptionsBuilder services)
 {
     return(services.AddActivity <UserTask>());
 }
コード例 #22
0
 private static ElsaOptionsBuilder AddRpaWebActivitiesInternal(this ElsaOptionsBuilder services) => services
 .AddActivity <OpenBrowser>()
 .AddActivity <CloseBrowser>()
 .AddActivity <NavigateToUrl>()
 .AddActivity <ClickElement>()
 .AddActivity <TypeText>()
 .AddActivity <GetText>()
 ;
コード例 #23
0
 private static ElsaOptionsBuilder AddHttpActivitiesInternal(this ElsaOptionsBuilder options) =>
 options
 .AddActivity <HttpEndpoint>()
 .AddActivity <WriteHttpResponse>()
 .AddActivity <SendHttpRequest>()
 .AddActivity <Redirect>();
コード例 #24
0
 public static ElsaOptionsBuilder AddDropboxActivities(this ElsaOptionsBuilder services) => services.AddActivity <SaveToDropbox>();