using Elsa.Mediator.Contracts; using Elsa.Workflows.Runtime.Entities; using Elsa.Workflows.Runtime.Filters; using Elsa.Workflows.Runtime.Notifications; namespace Elsa.Workflows.Runtime; /// public class DefaultActivityExecutionManager : IActivityExecutionManager { private readonly IActivityExecutionStore _store; private readonly INotificationSender _notificationSender; /// /// Initializes a new instance of the class. /// public DefaultActivityExecutionManager(IActivityExecutionStore store, INotificationSender notificationSender) { _store = store; _notificationSender = notificationSender; } /// public async Task DeleteManyAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default) { var records = (await _store.FindManyAsync(filter, cancellationToken)).ToList(); foreach (var record in records) { await _store.DeleteManyAsync(filter, cancellationToken); await _notificationSender.SendAsync(new ActivityExecutionRecordDeleted(record), cancellationToken); } return records.Count; } /// public async Task SaveAsync(ActivityExecutionRecord record, CancellationToken cancellationToken = default) { await _store.SaveAsync(record, cancellationToken); await _notificationSender.SendAsync(new ActivityExecutionRecordUpdated(record), cancellationToken); } }