Пример #1
0
        public async Task Handle(TriggerIndexingFinished notification, CancellationToken cancellationToken)
        {
            var startAtTriggers = notification.Triggers.FilterByBookmarkType <StartAtBookmark>();
            var timerTriggers   = notification.Triggers.FilterByBookmarkType <TimerBookmark>();
            var cronTriggers    = notification.Triggers.FilterByBookmarkType <CronBookmark>();

            await _workflowDefinitionScheduler.UnscheduleAsync(notification.WorkflowDefinitionId, cancellationToken);

            foreach (var trigger in startAtTriggers)
            {
                var bookmark = _bookmarkSerializer.Deserialize <StartAtBookmark>(trigger.Model);
                await Try(() => _workflowDefinitionScheduler.ScheduleAsync(trigger.WorkflowDefinitionId, trigger.ActivityId, bookmark.ExecuteAt, null, cancellationToken));
            }

            foreach (var trigger in timerTriggers)
            {
                var bookmark = _bookmarkSerializer.Deserialize <TimerBookmark>(trigger.Model);
                await Try(() => _workflowDefinitionScheduler.ScheduleAsync(trigger.WorkflowDefinitionId, trigger.ActivityId, bookmark.ExecuteAt, bookmark.Interval, cancellationToken));
            }

            foreach (var trigger in cronTriggers)
            {
                var bookmark = _bookmarkSerializer.Deserialize <CronBookmark>(trigger.Model);
                await Try(() => _workflowDefinitionScheduler.ScheduleAsync(trigger.WorkflowDefinitionId, trigger.ActivityId, bookmark.CronExpression, cancellationToken));
            }
        }
Пример #2
0
    public async Task Handle(ScheduleTemporalTrigger message)
    {
        var trigger          = message.Trigger;
        var bookmarkTypeName = trigger.ModelType;
        var bookmarkType     = Type.GetType(bookmarkTypeName) !;
        var model            = _bookmarkSerializer.Deserialize(trigger.Model, bookmarkType);

        _logger.LogDebug("Scheduling trigger {@Trigger}", model);

        switch (model)
        {
        case TimerBookmark timerBookmark:
            await _workflowDefinitionScheduler.ScheduleAsync(trigger.WorkflowDefinitionId, trigger.ActivityId, timerBookmark.ExecuteAt, timerBookmark.Interval);

            break;

        case StartAtBookmark startAtBookmark:
            await _workflowDefinitionScheduler.ScheduleAsync(trigger.WorkflowDefinitionId, trigger.ActivityId, startAtBookmark.ExecuteAt, null);

            break;

        case CronBookmark cronBookmark:
            await _workflowDefinitionScheduler.ScheduleAsync(trigger.WorkflowDefinitionId !, trigger.ActivityId, cronBookmark.CronExpression);

            break;
        }
    }
Пример #3
0
        public async Task Handle(TriggerIndexingFinished notification, CancellationToken cancellationToken)
        {
            var startAtTriggers = await _triggerFinder.FindTriggersAsync <StartAt>(TenantId, cancellationToken);

            var timerTriggers = await _triggerFinder.FindTriggersAsync <Timer>(TenantId, cancellationToken);

            var cronTriggers = await _triggerFinder.FindTriggersAsync <Cron>(TenantId, cancellationToken);

            await _workflowScheduler.UnscheduleAllAsync(cancellationToken);

            foreach (var trigger in startAtTriggers)
            {
                var bookmark = (StartAtBookmark)trigger.Bookmark;
                await Try(() => _workflowScheduler.ScheduleAsync(trigger.WorkflowBlueprint.Id, trigger.ActivityId, bookmark.ExecuteAt, null, cancellationToken));
            }

            foreach (var trigger in timerTriggers)
            {
                var bookmark = (TimerBookmark)trigger.Bookmark;
                await Try(() => _workflowScheduler.ScheduleAsync(trigger.WorkflowBlueprint.Id, trigger.ActivityId, bookmark.ExecuteAt, bookmark.Interval, cancellationToken));
            }

            foreach (var trigger in cronTriggers)
            {
                var bookmark = (CronBookmark)trigger.Bookmark;
                await Try(() => _workflowScheduler.ScheduleAsync(trigger.WorkflowBlueprint.Id, trigger.ActivityId, bookmark.CronExpression, cancellationToken));
            }
        }