using Elsa.Extensions; using Elsa.Http.Contracts; using Elsa.Workflows.Core.Helpers; using Elsa.Workflows.Runtime.Contracts; using Microsoft.Extensions.Hosting; namespace Elsa.Http.HostedServices; /// /// Update the route table based on workflow triggers and bookmarks. /// public class UpdateRouteTableHostedService : BackgroundService { private readonly IRouteTable _routeTable; private readonly ITriggerStore _triggerStore; private readonly IBookmarkStore _bookmarkStore; /// /// Initializes a new instance of the class. /// public UpdateRouteTableHostedService(IRouteTable routeTable, ITriggerStore triggerStore, IBookmarkStore bookmarkStore) { _routeTable = routeTable; _triggerStore = triggerStore; _bookmarkStore = bookmarkStore; } /// protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var bookmarkName = ActivityTypeNameHelper.GenerateTypeName(); var triggerFilter = new TriggerFilter { Name = bookmarkName }; var bookmarkFilter = new BookmarkFilter { ActivityTypeName = bookmarkName}; var triggers = (await _triggerStore.FindManyAsync(triggerFilter, stoppingToken)).ToList(); var bookmarks = (await _bookmarkStore.FindManyAsync(bookmarkFilter, stoppingToken)).ToList(); _routeTable.AddRoutes(triggers); _routeTable.AddRoutes(bookmarks); } }