Refactor commit state behavior to use commit strategies

Replaced `ActivityCommitStateBehavior` with a more flexible commit strategy approach utilizing `CommitStrategyDescriptor`. Updated relevant APIs, services, and UI components to support the new model, enhancing configurability and maintainability.
This commit is contained in:
Sipke Schoorstra 2025-01-30 21:24:07 +01:00
parent 47a7c31714
commit ca0dcd2f83
No known key found for this signature in database
GPG key ID: 5C10502B28A4268F
4 changed files with 5 additions and 32 deletions

View file

@ -187,10 +187,10 @@ public static class ActivityExtensions
/// <summary>
/// Gets the commit state behavior for the specified activity.
/// </summary>
public static ActivityCommitStateBehavior GetCommitStateBehavior(this JsonObject activity) => activity.TryGetProperty<ActivityCommitStateBehavior?>("customProperties", "commitStateBehavior") ?? ActivityCommitStateBehavior.Default;
public static string? GetCommitStrategy(this JsonObject activity) => activity.TryGetProperty<string?>("customProperties", "commitStrategyName");
/// <summary>
/// Sets the commit state behavior for the specified activity.
/// </summary>
public static void SetCommitStateBehavior(this JsonObject activity, ActivityCommitStateBehavior value) => activity.SetProperty(JsonValue.Create(value.ToString()), "customProperties", "commitStateBehavior");
public static void SetCommitStrategy(this JsonObject activity, string? name) => activity.SetProperty(JsonValue.Create(name), "customProperties", "commitStrategyName");
}

View file

@ -2,6 +2,7 @@ using Elsa.Api.Client.Options;
using Elsa.Api.Client.Resources.ActivityDescriptorOptions.Contracts;
using Elsa.Api.Client.Resources.ActivityDescriptors.Contracts;
using Elsa.Api.Client.Resources.ActivityExecutions.Contracts;
using Elsa.Api.Client.Resources.CommitStrategies.Contracts;
using Elsa.Api.Client.Resources.Features.Contracts;
using Elsa.Api.Client.Resources.Identity.Contracts;
using Elsa.Api.Client.Resources.IncidentStrategies.Contracts;
@ -73,6 +74,7 @@ public static class DependencyInjectionExtensions
services.AddApi<IWorkflowActivationStrategiesApi>(builderOptions);
services.AddApi<IIncidentStrategiesApi>(builderOptions);
services.AddApi<ILogPersistenceStrategiesApi>(builderOptions);
services.AddApi<ICommitStrategiesApi>(builderOptions);
services.AddApi<ILoginApi>(builderOptions);
services.AddApi<IFeaturesApi>(builderOptions);
services.AddApi<IJavaScriptApi>(builderOptions);

View file

@ -1,29 +0,0 @@
namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models;
public enum ActivityCommitStateBehavior
{
/// <summary>
/// Never commit state, regardless of the workflow commit state options.
/// </summary>
Never,
/// <summary>
/// Look at the workflow commit state options to determine if state should be committed.
/// </summary>
Default,
/// <summary>
/// Commit state before the activity starts.
/// </summary>
Executing,
/// <summary>
/// Commit state after the activity executes.
/// </summary>
Executed,
/// <summary>
/// Commit state before the activity starts and after the activity executes.
/// </summary>
BeforeAndAfterExecution
}

View file

@ -33,5 +33,5 @@ public class WorkflowOptions
/// <summary>
/// The options for committing workflow state.
/// </summary>
public WorkflowCommitStateOptions CommitStateOptions { get; set; } = new();
public string? CommitStrategyName { get; set; }
}