Example #1
0
        public override IEnumerable <BookmarkResult> GetBookmarks(BookmarkProviderContext context)
        {
            var activityType = context.ActivityType;
            var eventType    = (string)activityType.Attributes[NotificationActivityTypeProvider.EventTypeAttribute];

            return(new[] { Result(new NotificationBookmark(eventType)) });
        }
Example #2
0
        public override IEnumerable <BookmarkResult> GetBookmarks(BookmarkProviderContext context)
        {
            var activityType  = context.ActivityType;
            var eventType     = (string)activityType.Attributes[NotificationActivityTypeProvider.EventTypeAttribute];
            var correlationId = context.ActivityExecutionContext.WorkflowExecutionContext.CorrelationId;

            return(new[] { Result(new NotificationBookmark(eventType, correlationId)) });
        }
Example #3
0
        public override ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext context, CancellationToken cancellationToken)
        {
            var activityType  = context.ActivityType;
            var eventType     = (string)activityType.Attributes[NotificationActivityTypeProvider.EventTypeAttribute];
            var correlationId = context.ActivityExecutionContext.WorkflowExecutionContext.CorrelationId;
            var bookmarks     = new[] { new NotificationBookmark(eventType, correlationId) };

            return(new ValueTask <IEnumerable <IBookmark> >(bookmarks));
        }
Example #4
0
        private async IAsyncEnumerable <BookmarkResult> GetBookmarksInternalAsync(BookmarkProviderContext <SignalReceived> context, [EnumeratorCancellation] CancellationToken cancellationToken)
        {
            var signalName = (await context.ReadActivityPropertyAsync(x => x.Signal, cancellationToken)) !.ToLowerInvariant();

            yield return(Result(new SignalReceivedBookmark
            {
                Signal = signalName
            }));
        }
Example #5
0
        public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <HttpEndpoint> context, CancellationToken cancellationToken)
        {
            var path          = ToLower(await context.Activity.GetPropertyValueAsync(x => x.Path, cancellationToken)) !;
            var correlationId = ToLower(context.ActivityExecutionContext.WorkflowExecutionContext.CorrelationId);
            var methods       = (await context.Activity.GetPropertyValueAsync(x => x.Methods, cancellationToken))?.Select(x => x.ToLowerInvariant()) ?? Enumerable.Empty <string>();

            HttpEndpointBookmark CreateBookmark(string method) => new(path, method, correlationId);

            return(methods.Select(CreateBookmark));
        }
Example #6
0
 public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <EntityChanged> context, CancellationToken cancellationToken) =>
 new[]
 {
     new EntityChangedBookmark(
         entityName: await context.Activity.GetPropertyValueAsync(x => x.EntityName, cancellationToken),
         action: await context.Activity.GetPropertyValueAsync(x => x.Action, cancellationToken),
         contextId: context.ActivityExecutionContext.WorkflowExecutionContext.WorkflowInstance.ContextId,
         correlationId: context.ActivityExecutionContext.WorkflowExecutionContext.WorkflowInstance.CorrelationId
         )
 };
Example #7
0
        public override IEnumerable <BookmarkResult> GetBookmarks(BookmarkProviderContext <RunWorkflow> context)
        {
            var childWorkflowInstanceId = context.GetActivity <RunWorkflow>().GetPropertyValue(x => x.ChildWorkflowInstanceId);

            if (string.IsNullOrWhiteSpace(childWorkflowInstanceId))
            {
                yield break;
            }

            yield return(new BookmarkResult(new RunWorkflowBookmark
            {
                ChildWorkflowInstanceId = childWorkflowInstanceId !
            }));
        private async Task <IList <WorkflowTrigger> > GetTriggersForBookmarkProvider(
            IBookmarkProvider provider,
            BookmarkProviderContext context,
            IActivityBlueprint activityBlueprint,
            IWorkflowBlueprint workflowBlueprint,
            CancellationToken cancellationToken = default)
        {
            var bookmarkResults = (await provider.GetBookmarksAsync(context, cancellationToken)).ToList();

            return(bookmarkResults
                   .Select(x => new WorkflowTrigger(workflowBlueprint, activityBlueprint.Id, x.ActivityTypeName ?? activityBlueprint.Type, _bookmarkHasher.Hash(x.Bookmark), x.Bookmark))
                   .ToList());
        }
Example #9
0
        public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <Cron> context, CancellationToken cancellationToken)
        {
            var cronExpression = await context.Activity.GetPropertyValueAsync(x => x.CronExpression, cancellationToken);

            if (context.Mode == BookmarkIndexingMode.WorkflowInstance)
            {
                var executeAt = context.Activity.GetState(x => x.ExecuteAt);

                if (executeAt == null)
                {
                    return(Enumerable.Empty <IBookmark>());
                }

                return(new[]
        private async IAsyncEnumerable <BookmarkResult> GetBookmarksInternalAsync(BookmarkProviderContext <SignalReceived> context, [EnumeratorCancellation] CancellationToken cancellationToken)
        {
            var signalName = (await context.ReadActivityPropertyAsync(x => x.Signal, cancellationToken))?.ToLowerInvariant().Trim();

            // Can't do anything with an empty signal name.
            if (string.IsNullOrEmpty(signalName))
            {
                yield break;
            }

            yield return(Result(new SignalReceivedBookmark
            {
                Signal = signalName
            }));
        }
Example #11
0
        public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <StartAt> context, CancellationToken cancellationToken)
        {
            var executeAt = await GetExecuteAtAsync(context, cancellationToken);

            if (executeAt != null)
            {
                return new[]
                       {
                           new StartAtBookmark
                           {
                               ExecuteAt = executeAt.Value,
                           }
                       }
            }
            ;

            return(Enumerable.Empty <IBookmark>());
        }
Example #12
0
        public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <Timer> context, CancellationToken cancellationToken)
        {
            var interval = await context.Activity.GetPropertyValueAsync(x => x.Timeout, cancellationToken);

            var executeAt = GetExecuteAt(context, interval);

            if (executeAt != null)
            {
                return new[]
                       {
                           new TimerBookmark
                           {
                               ExecuteAt = executeAt.Value,
                               Interval  = interval
                           }
                       }
            }
            ;

            return(Enumerable.Empty <IBookmark>());
        }
Example #13
0
        private async IAsyncEnumerable <IBookmark> GetBookmarksInternalAsync(BookmarkProviderContext <SignalReceived> context, [EnumeratorCancellation] CancellationToken cancellationToken)
        {
            var signalName  = (await context.Activity.GetPropertyValueAsync(x => x.Signal, cancellationToken)) !;
            var signalScope = (await context.Activity.GetPropertyValueAsync(x => x.Scope, cancellationToken)) !;

            if (context.Mode == BookmarkIndexingMode.WorkflowBlueprint || signalScope == SignalScope.Global)
            {
                yield return(new SignalReceivedBookmark
                {
                    Signal = signalName
                });

                yield break;
            }

            if (signalScope == SignalScope.Instance)
            {
                yield return(new SignalReceivedBookmark
                {
                    Signal = signalName,
                    WorkflowInstanceId = context.ActivityExecutionContext.WorkflowInstance.Id
                });
            }
        }
Example #14
0
        public override bool SupportsActivity(BookmarkProviderContext context)
        {
            var activityType = context.ActivityType;

            return(activityType.Attributes.ContainsKey(NotificationActivityTypeProvider.NotificationAttribute));
        }
Example #15
0
        public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext context, CancellationToken cancellationToken)
        {
            var activityType = context.ActivityExecutionContext.ActivityBlueprint.Type;

            var queueOrTopic = activityType == nameof(AzureServiceBusQueueMessageReceived)
                ? await context.ReadActivityPropertyAsync <AzureServiceBusQueueMessageReceived, string>(x => x.QueueName, cancellationToken)
                : await context.ReadActivityPropertyAsync <AzureServiceBusTopicMessageReceived, string>(x => x.TopicName, cancellationToken);

            var subscription = activityType == nameof(AzureServiceBusTopicMessageReceived)
                ? await context.ReadActivityPropertyAsync <AzureServiceBusTopicMessageReceived, string>(x => x.SubscriptionName, cancellationToken)
                : default;

            return(new[] { Result(new MessageReceivedBookmark(queueOrTopic !, subscription)) });
Example #16
0
        public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext context, CancellationToken cancellationToken)
        {
            var path    = ToLower((string)context.ActivityType.Attributes["Path"]) !;
            var methods = (await context.ReadActivityPropertyAsync <HttpEndpoint, HashSet <string> >(x => x.Methods, cancellationToken))?.Select(ToLower) ?? Enumerable.Empty <string>();

            BookmarkResult CreateBookmark(string method) => Result(new(path, method), nameof(HttpEndpoint));

            return(methods.Select(CreateBookmark));
        }
Example #17
0
        public override bool SupportsActivity(BookmarkProviderContext context)
        {
            var activityType = context.ActivityType;

            return(activityType.Attributes.ContainsKey(WebhookActivityTypeProvider.WebhookMarkerAttribute));
        }
 public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <SignalReceived> context, CancellationToken cancellationToken) =>
Example #19
0
        public override bool SupportsActivity(BookmarkProviderContext context)
        {
            var activityType = context.ActivityExecutionContext.ActivityBlueprint.Type;

            return(activityType is nameof(AzureServiceBusQueueMessageReceived) or nameof(AzureServiceBusTopicMessageReceived));
        }
Example #20
0
        public override async ValueTask <IEnumerable <IBookmark> > GetBookmarksAsync(BookmarkProviderContext <SignalReceived> context, CancellationToken cancellationToken)
        {
            var workflowInstanceId = context.Mode == BookmarkIndexingMode.WorkflowBlueprint ? default : context.ActivityExecutionContext.WorkflowInstance.Id;

                                     return(new[]
        public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <WatchDirectory> context, CancellationToken cancellationToken)
        {
            var changeTypes = await context.ReadActivityPropertyAsync(a => a.ChangeTypes, cancellationToken);

            var notifyFilters = await context.ReadActivityPropertyAsync(a => a.NotifyFilters, cancellationToken);

            var path = await context.ReadActivityPropertyAsync(a => a.Path, cancellationToken);

            var pattern = NormalizeWildcard(await context.ReadActivityPropertyAsync(a => a.Pattern, cancellationToken));
            var result  = Result(new FileSystemEventBookmark(path, pattern, changeTypes, notifyFilters));

            return(new[] { result });
        }
        public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <RebusMessageReceived> context, CancellationToken cancellationToken)
        {
            var messageType = await context.ReadActivityPropertyAsync(x => x.MessageType, cancellationToken);

            if (messageType == null)
            {
                return(Enumerable.Empty <BookmarkResult>());
            }

            return(new[]
            {
                Result(new MessageReceivedBookmark
                {
                    MessageType = messageType.Name
                })
            });
        }
 public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <ReceiveMassTransitMessage> context, CancellationToken cancellationToken) =>
        public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <HttpEndpoint> context, CancellationToken cancellationToken)
        {
            var path    = ToLower((await context.ReadActivityPropertyAsync(x => x.Path, cancellationToken)) !);
            var methods = (await context.ReadActivityPropertyAsync(x => x.Methods, cancellationToken))?.Select(ToLower) ?? Enumerable.Empty <string>();

            BookmarkResult CreateBookmark(string method) => Result(new(path, method));

            return(methods.Select(CreateBookmark));
        }
 public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <AzureServiceBusQueueMessageReceived> context, CancellationToken cancellationToken) =>
Example #26
0
 public virtual ValueTask <bool> SupportsActivityAsync(BookmarkProviderContext <TActivity> context, CancellationToken cancellationToken = default) => new(SupportsActivity(context));
 public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <SignalReceived> context, CancellationToken cancellationToken) => await GetBookmarksInternalAsync(context, cancellationToken).ToListAsync(cancellationToken);
Example #28
0
        public override async ValueTask <IEnumerable <BookmarkResult> > GetBookmarksAsync(BookmarkProviderContext <UserTask> context, CancellationToken cancellationToken)
        {
            var actions = (await context.ReadActivityPropertyAsync(x => x.Actions, cancellationToken)) !;

            return(actions.Select(x => Result(new UserTaskBookmark(x))).ToList());
        }
Example #29
0
 private static async Task <Instant?> GetExecuteAtAsync(BookmarkProviderContext <StartAt> context, CancellationToken cancellationToken) =>
 context.Mode == BookmarkIndexingMode.WorkflowInstance
         ? context.Activity.GetPropertyValue(x => x.ExecuteAt)
         : await context.ReadActivityPropertyAsync(x => x.Instant, cancellationToken);
Example #30
0
 private Instant?GetExecuteAt(BookmarkProviderContext <Timer> context, Duration interval) =>
 context.Mode == BookmarkIndexingMode.WorkflowInstance
         ? context.Activity.GetPropertyValue(x => x.ExecuteAt)
         : _clock.GetCurrentInstant().Plus(interval);