< Summary

Information
Class: Elsa.Workflows.Management.Services.WorkflowInstanceFactory
Assembly: Elsa.Workflows.Management
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Management/Services/WorkflowInstanceFactory.cs
Line coverage
100%
Covered lines: 38
Uncovered lines: 0
Coverable lines: 38
Total lines: 59
Line coverage: 100%
Branch coverage
61%
Covered branches: 11
Total branches: 18
Branch coverage: 61.1%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
CreateWorkflowState(...)61.11%1818100%
CreateWorkflowInstance(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Management/Services/WorkflowInstanceFactory.cs

#LineLine coverage
 1using Elsa.Common;
 2using Elsa.Workflows.Activities;
 3using Elsa.Workflows.Management.Contracts;
 4using Elsa.Workflows.Management.Entities;
 5using Elsa.Workflows.Management.Options;
 6using Elsa.Workflows.State;
 7
 8namespace Elsa.Workflows.Management.Services;
 9
 10/// <inheritdoc />
 43111public class WorkflowInstanceFactory(IIdentityGenerator identityGenerator, ISystemClock systemClock) : IWorkflowInstance
 12{
 13    /// <inheritdoc />
 14    public WorkflowState CreateWorkflowState(Workflow workflow, WorkflowInstanceOptions? options = null)
 15    {
 8316        var now = systemClock.UtcNow;
 8317        return new()
 8318        {
 8319            Id = string.IsNullOrEmpty(options?.WorkflowInstanceId) ? identityGenerator.GenerateId() : options.WorkflowIn
 8320            DefinitionId = workflow.Identity.DefinitionId,
 8321            DefinitionVersionId = workflow.Identity.Id,
 8322            DefinitionVersion = workflow.Identity.Version,
 8323            CorrelationId = options?.CorrelationId,
 8324            Name = options?.Name,
 8325            Input = options?.Input ?? new Dictionary<string, object>(),
 8326            Properties = options?.Properties ?? new Dictionary<string, object>(),
 8327            Status = WorkflowStatus.Running,
 8328            SubStatus = WorkflowSubStatus.Pending,
 8329            CreatedAt = now,
 8330            UpdatedAt = now,
 8331            ParentWorkflowInstanceId = options?.ParentWorkflowInstanceId,
 8332            IsSystem = workflow.IsSystem
 8333        };
 34    }
 35
 36    /// <inheritdoc />
 37    public WorkflowInstance CreateWorkflowInstance(Workflow workflow, WorkflowInstanceOptions? options = null)
 38    {
 8339        var workflowState = CreateWorkflowState(workflow, options);
 8340        return new()
 8341        {
 8342            Id = workflowState.Id,
 8343            ParentWorkflowInstanceId = workflowState.ParentWorkflowInstanceId,
 8344            WorkflowState = workflowState,
 8345            DefinitionId = workflowState.DefinitionId,
 8346            DefinitionVersionId = workflowState.DefinitionVersionId,
 8347            Version = workflowState.DefinitionVersion,
 8348            CorrelationId = workflowState.CorrelationId,
 8349            Name = workflowState.Name,
 8350            Status = workflowState.Status,
 8351            SubStatus = workflowState.SubStatus,
 8352            IncidentCount = workflowState.Incidents.Count,
 8353            IsSystem = workflowState.IsSystem,
 8354            CreatedAt = workflowState.CreatedAt,
 8355            UpdatedAt = workflowState.UpdatedAt,
 8356            FinishedAt = workflowState.FinishedAt,
 8357        };
 58    }
 59}