< Summary

Information
Class: Elsa.Workflows.CommitStates.CommitStrategiesFeature
Assembly: Elsa.Workflows.Core
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Core/CommitStates/CommitStrategiesFeature.cs
Line coverage
47%
Covered lines: 27
Uncovered lines: 30
Coverable lines: 57
Total lines: 122
Line coverage: 47.3%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
AddStandardStrategies()100%11100%
Add(...)100%11100%
Add(...)100%11100%
Add(...)100%210%
Add(...)100%210%
Add(...)100%11100%
Add(...)100%11100%
Add(...)100%210%
Add(...)100%210%
Add(...)100%210%
Add(...)100%11100%
SetDefaultWorkflowCommitStrategy(...)100%210%
SetDefaultActivityCommitStrategy(...)100%210%
Apply()100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Core/CommitStates/CommitStrategiesFeature.cs

#LineLine coverage
 1using Elsa.Extensions;
 2using Elsa.Features.Abstractions;
 3using Elsa.Features.Services;
 4using Elsa.Workflows.CommitStates.Strategies;
 5using Elsa.Workflows.CommitStates.Tasks;
 6using Microsoft.Extensions.DependencyInjection;
 7
 8namespace Elsa.Workflows.CommitStates;
 9
 12610public class CommitStrategiesFeature(IModule module) : FeatureBase(module)
 11{
 12    public void AddStandardStrategies()
 13    {
 14        // Workflow commit strategies.
 315        Add(new WorkflowExecutingWorkflowStrategy());
 316        Add(new WorkflowExecutedWorkflowStrategy());
 317        Add(new ActivityExecutingWorkflowStrategy());
 318        Add(new ActivityExecutedWorkflowStrategy());
 19
 20        // Activity commit strategies.
 321        Add(new CommitAlwaysActivityStrategy());
 322        Add(new CommitNeverActivityStrategy());
 323        Add(new ExecutingActivityStrategy());
 324        Add(new ExecutedActivityStrategy());
 325    }
 26
 27    public void Add(IWorkflowCommitStrategy strategy)
 28    {
 1229        var registration = ObjectRegistrationFactory.Describe(strategy);
 1230        Add(registration);
 1231    }
 32
 33    public void Add(string displayName, IWorkflowCommitStrategy strategy)
 34    {
 335        var registration = ObjectRegistrationFactory.Describe(strategy);
 336        registration.Metadata.DisplayName = displayName;
 337        Add(registration);
 338    }
 39
 40    public void Add(string displayName, string description, IWorkflowCommitStrategy strategy)
 41    {
 042        var registration = ObjectRegistrationFactory.Describe(strategy);
 043        registration.Metadata.DisplayName = displayName;
 044        registration.Metadata.Description = description;
 045        Add(registration);
 046    }
 47
 48    public void Add(string name, string displayName, string description, IWorkflowCommitStrategy strategy)
 49    {
 050        var registration = ObjectRegistrationFactory.Describe(strategy);
 051        registration.Metadata.Name = name;
 052        registration.Metadata.DisplayName = displayName;
 053        registration.Metadata.Description = description;
 054        Add(registration);
 055    }
 56
 57    public void Add(WorkflowCommitStrategyRegistration registration)
 58    {
 3059        Services.Configure<CommitStateOptions>(options => options.WorkflowCommitStrategies[registration.Metadata.Name] =
 1560    }
 61
 62    public void Add(IActivityCommitStrategy strategy)
 63    {
 1264        var registration = ObjectRegistrationFactory.Describe(strategy);
 1265        Add(registration);
 1266    }
 67
 68    public void Add(string displayName, IActivityCommitStrategy strategy)
 69    {
 070        var registration = ObjectRegistrationFactory.Describe(strategy);
 071        registration.Metadata.DisplayName = displayName;
 072        Add(registration);
 073    }
 74
 75    public void Add(string displayName, string description, IActivityCommitStrategy strategy)
 76    {
 077        var registration = ObjectRegistrationFactory.Describe(strategy);
 078        registration.Metadata.DisplayName = displayName;
 079        registration.Metadata.Description = description;
 080        Add(registration);
 081    }
 82
 83    public void Add(string name, string displayName, string description, IActivityCommitStrategy strategy)
 84    {
 085        var registration = ObjectRegistrationFactory.Describe(strategy);
 086        registration.Metadata.Name = name;
 087        registration.Metadata.DisplayName = displayName;
 088        registration.Metadata.Description = description;
 089        Add(registration);
 090    }
 91
 92    public void Add(ActivityCommitStrategyRegistration registration)
 93    {
 2494        Services.Configure<CommitStateOptions>(options => options.ActivityCommitStrategies[registration.Metadata.Name] =
 1295    }
 96
 97    /// <summary>
 98    /// Sets the specified workflow commit strategy as the global default.
 99    /// The strategy will not be added to the registry and will only serve as a fallback when workflows do not specify t
 100    /// </summary>
 101    /// <param name="strategy">The workflow commit strategy instance to use as the default.</param>
 102    public void SetDefaultWorkflowCommitStrategy(IWorkflowCommitStrategy strategy)
 103    {
 0104        Services.Configure<CommitStateOptions>(options => options.DefaultWorkflowCommitStrategy = strategy);
 0105    }
 106
 107    /// <summary>
 108    /// Sets the specified activity commit strategy as the global default.
 109    /// The strategy will not be added to the registry and will only serve as a fallback when activities do not specify 
 110    /// </summary>
 111    /// <param name="strategy">The activity commit strategy instance to use as the default.</param>
 112    public void SetDefaultActivityCommitStrategy(IActivityCommitStrategy strategy)
 113    {
 0114        Services.Configure<CommitStateOptions>(options => options.DefaultActivityCommitStrategy = strategy);
 0115    }
 116
 117    public override void Apply()
 118    {
 126119        Services.AddSingleton<ICommitStrategyRegistry, DefaultCommitStrategyRegistry>();
 126120        Services.AddStartupTask<PopulateCommitStrategyRegistry>();
 126121    }
 122}