< 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 />
 40611public class WorkflowInstanceFactory(IIdentityGenerator identityGenerator, ISystemClock systemClock) : IWorkflowInstance
 12{
 13    /// <inheritdoc />
 14    public WorkflowState CreateWorkflowState(Workflow workflow, WorkflowInstanceOptions? options = null)
 15    {
 8616        var now = systemClock.UtcNow;
 8617        return new()
 8618        {
 8619            Id = string.IsNullOrEmpty(options?.WorkflowInstanceId) ? identityGenerator.GenerateId() : options.WorkflowIn
 8620            DefinitionId = workflow.Identity.DefinitionId,
 8621            DefinitionVersionId = workflow.Identity.Id,
 8622            DefinitionVersion = workflow.Identity.Version,
 8623            CorrelationId = options?.CorrelationId,
 8624            Name = options?.Name,
 8625            Input = options?.Input ?? new Dictionary<string, object>(),
 8626            Properties = options?.Properties ?? new Dictionary<string, object>(),
 8627            Status = WorkflowStatus.Running,
 8628            SubStatus = WorkflowSubStatus.Pending,
 8629            CreatedAt = now,
 8630            UpdatedAt = now,
 8631            ParentWorkflowInstanceId = options?.ParentWorkflowInstanceId,
 8632            IsSystem = workflow.IsSystem
 8633        };
 34    }
 35
 36    /// <inheritdoc />
 37    public WorkflowInstance CreateWorkflowInstance(Workflow workflow, WorkflowInstanceOptions? options = null)
 38    {
 8639        var workflowState = CreateWorkflowState(workflow, options);
 8640        return new()
 8641        {
 8642            Id = workflowState.Id,
 8643            ParentWorkflowInstanceId = workflowState.ParentWorkflowInstanceId,
 8644            WorkflowState = workflowState,
 8645            DefinitionId = workflowState.DefinitionId,
 8646            DefinitionVersionId = workflowState.DefinitionVersionId,
 8647            Version = workflowState.DefinitionVersion,
 8648            CorrelationId = workflowState.CorrelationId,
 8649            Name = workflowState.Name,
 8650            Status = workflowState.Status,
 8651            SubStatus = workflowState.SubStatus,
 8652            IncidentCount = workflowState.Incidents.Count,
 8653            IsSystem = workflowState.IsSystem,
 8654            CreatedAt = workflowState.CreatedAt,
 8655            UpdatedAt = workflowState.UpdatedAt,
 8656            FinishedAt = workflowState.FinishedAt,
 8657        };
 58    }
 59}