< Summary

Information
Class: Elsa.Workflows.Runtime.Handlers.DispatchWorkflowCommandHandler
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Handlers/DispatchWorkflowRequestHandler.cs
Line coverage
33%
Covered lines: 19
Uncovered lines: 37
Coverable lines: 56
Total lines: 89
Line coverage: 33.9%
Branch coverage
100%
Covered branches: 6
Total branches: 6
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%
HandleAsync()100%210%
HandleAsync()100%66100%
HandleAsync()100%210%
HandleAsync()100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Handlers/DispatchWorkflowRequestHandler.cs

#LineLine coverage
 1using Elsa.Mediator.Contracts;
 2using Elsa.Mediator.Models;
 3using Elsa.Workflows.Models;
 4using Elsa.Workflows.Runtime.Commands;
 5using Elsa.Workflows.Runtime.Messages;
 6using JetBrains.Annotations;
 7
 8namespace Elsa.Workflows.Runtime.Handlers;
 9
 10// ReSharper disable once UnusedType.Global
 11[UsedImplicitly]
 6412internal class DispatchWorkflowCommandHandler(IStimulusSender stimulusSender, IWorkflowRuntime workflowRuntime) :
 13    ICommandHandler<DispatchTriggerWorkflowsCommand>,
 14    ICommandHandler<DispatchWorkflowDefinitionCommand>,
 15    ICommandHandler<DispatchWorkflowInstanceCommand>,
 16    ICommandHandler<DispatchResumeWorkflowsCommand>
 17{
 18    public virtual async Task<Unit> HandleAsync(DispatchTriggerWorkflowsCommand command, CancellationToken cancellationT
 19    {
 020        var activityTypeName = command.ActivityTypeName;
 021        var stimulus = command.Stimulus;
 022        var metadata = new StimulusMetadata
 023        {
 024            CorrelationId = command.CorrelationId,
 025            ActivityInstanceId = command.ActivityInstanceId,
 026            WorkflowInstanceId = command.WorkflowInstanceId,
 027            Input = command.Input,
 028            Properties = command.Properties,
 029        };
 030        await stimulusSender.SendAsync(activityTypeName, stimulus, metadata, cancellationToken);
 31
 032        return Unit.Instance;
 033    }
 34
 35    public virtual async Task<Unit> HandleAsync(DispatchWorkflowDefinitionCommand command, CancellationToken cancellatio
 36    {
 2937        var client = await workflowRuntime.CreateClientAsync(command.InstanceId, cancellationToken);
 38
 2939        if (command.SkipIfInstanceExists && !string.IsNullOrWhiteSpace(command.InstanceId) && await client.InstanceExist
 140            return Unit.Instance;
 41
 2842        var createRequest = new CreateAndRunWorkflowInstanceRequest
 2843        {
 2844            WorkflowDefinitionHandle = WorkflowDefinitionHandle.ByDefinitionVersionId(command.DefinitionVersionId),
 2845            CorrelationId = command.CorrelationId,
 2846            Input = command.Input,
 2847            Properties = command.Properties,
 2848            ParentId = command.ParentWorkflowInstanceId,
 2849            TriggerActivityId = command.TriggerActivityId,
 2850            SchedulingActivityExecutionId = command.SchedulingActivityExecutionId,
 2851            SchedulingWorkflowInstanceId = command.SchedulingWorkflowInstanceId,
 2852            SchedulingCallStackDepth = command.SchedulingCallStackDepth
 2853        };
 2854        await client.CreateAndRunInstanceAsync(createRequest, cancellationToken);
 2855        return Unit.Instance;
 2956    }
 57
 58    public virtual async Task<Unit> HandleAsync(DispatchWorkflowInstanceCommand command, CancellationToken cancellationT
 59    {
 060        var runRequest = new RunWorkflowInstanceRequest
 061        {
 062            BookmarkId = command.BookmarkId,
 063            ActivityHandle = command.ActivityHandle,
 064            Input = command.Input,
 065            Properties = command.Properties
 066        };
 067        var client = await workflowRuntime.CreateClientAsync(command.InstanceId, cancellationToken);
 068        await client.RunInstanceAsync(runRequest, cancellationToken);
 69
 070        return Unit.Instance;
 071    }
 72
 73    public virtual async Task<Unit> HandleAsync(DispatchResumeWorkflowsCommand command, CancellationToken cancellationTo
 74    {
 075        var activityTypeName = command.ActivityTypeName;
 076        var stimulus = command.Stimulus;
 077        var metadata = new StimulusMetadata
 078        {
 079            CorrelationId = command.CorrelationId,
 080            WorkflowInstanceId = command.WorkflowInstanceId,
 081            ActivityInstanceId = command.ActivityInstanceId,
 082            Properties = command.Properties,
 083            Input = command.Input
 084        };
 085        await stimulusSender.SendAsync(activityTypeName, stimulus, metadata, cancellationToken);
 86
 087        return Unit.Instance;
 088    }
 89}