< Summary

Information
Class: Elsa.Workflows.Runtime.EventPublisher
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Services/EventPublisher.cs
Line coverage
100%
Covered lines: 25
Uncovered lines: 0
Coverable lines: 25
Total lines: 49
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
PublishAsync()100%44100%

File(s)

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

#LineLine coverage
 1using Elsa.Workflows.Helpers;
 2using Elsa.Workflows.Runtime.Activities;
 3using Elsa.Workflows.Runtime.Requests;
 4using Elsa.Workflows.Runtime.Stimuli;
 5
 6namespace Elsa.Workflows.Runtime;
 7
 8/// <inheritdoc />
 159public class EventPublisher(IStimulusSender stimulusSender, IWorkflowDispatcher workflowDispatcher) : IEventPublisher
 10{
 11    /// <inheritdoc />
 12    public async Task PublishAsync(
 13        string eventName,
 14        string? correlationId = null,
 15        string? workflowInstanceId = null,
 16        string? activityInstanceId = null,
 17        object? payload = null,
 18        bool asynchronous = false,
 19        CancellationToken cancellationToken = default)
 20    {
 1221        var stimulus = new EventStimulus(eventName);
 1222        var workflowInput = new Dictionary<string, object>
 1223        {
 1224            [Event.EventInputWorkflowInputKey] = payload ?? new Dictionary<string, object>()
 1225        };
 1226        var triggerName = ActivityTypeNameHelper.GenerateTypeName<Event>();
 27
 1228        if (asynchronous)
 29        {
 930            await workflowDispatcher.DispatchAsync(new DispatchTriggerWorkflowsRequest(triggerName, stimulus)
 931            {
 932                CorrelationId = correlationId,
 933                WorkflowInstanceId = workflowInstanceId,
 934                ActivityInstanceId = activityInstanceId,
 935                Input = workflowInput
 936            }, options: null, cancellationToken);
 937            return;
 38        }
 39
 340        var metadata = new StimulusMetadata
 341        {
 342            CorrelationId = correlationId,
 343            ActivityInstanceId = activityInstanceId,
 344            WorkflowInstanceId = workflowInstanceId,
 345            Input = workflowInput
 346        };
 347        await stimulusSender.SendAsync(triggerName, stimulus, metadata, cancellationToken);
 1248    }
 49}