< Summary

Information
Class: Elsa.Workflows.Runtime.StoreActivityExecutionLogSink
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Services/StoreActivityExecutionLogSink.cs
Line coverage
90%
Covered lines: 9
Uncovered lines: 1
Coverable lines: 10
Total lines: 30
Line coverage: 90%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
PersistExecutionLogsAsync()50%2280%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Services/StoreActivityExecutionLogSink.cs

#LineLine coverage
 1using Elsa.Extensions;
 2using Elsa.Mediator.Contracts;
 3using Elsa.Workflows.Runtime.Entities;
 4using Elsa.Workflows.Runtime.Notifications;
 5
 6namespace Elsa.Workflows.Runtime;
 7
 8/// <summary>
 9/// This implementation saves <see cref="ActivityExecutionRecord"/> directly through the store.
 10/// </summary>
 53611public class StoreActivityExecutionLogSink(
 53612    IActivityExecutionStore activityExecutionStore,
 53613    INotificationSender notificationSender)
 14    : ILogRecordSink<ActivityExecutionRecord>
 15{
 16    /// <inheritdoc />
 17    public async Task PersistExecutionLogsAsync(WorkflowExecutionContext context, CancellationToken cancellationToken = 
 18    {
 19        // Select tainted activity execution contexts to avoid saving untainted ones multiple times.
 486120        var activityExecutionContexts = context.ActivityExecutionContexts.Where(x => x.IsDirty).ToList();
 21
 56722        if (activityExecutionContexts.Count == 0)
 023            return;
 24
 486125        var records = await Task.WhenAll(activityExecutionContexts.Select(x => x.GetOrMapCapturedActivityExecutionRecord
 56726        await activityExecutionStore.SaveManyAsync(records, cancellationToken);
 27        // DefaultCommitStateHandler clears taint after the commit transaction succeeds.
 56728        await notificationSender.SendAsync(new ActivityExecutionLogUpdated(context, records), cancellationToken);
 56729    }
 30}