From ca0dcd2f831f69fbe8f43c0966b947423b3b7e8a Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 30 Jan 2025 21:24:07 +0100 Subject: [PATCH] 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. --- .../Extensions/ActivityExtensions.cs | 4 +-- .../DependencyInjectionExtensions.cs | 2 ++ .../Models/ActivityCommitStateBehavior.cs | 29 ------------------- .../Models/WorkflowOptions.cs | 2 +- 4 files changed, 5 insertions(+), 32 deletions(-) delete mode 100644 src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ActivityCommitStateBehavior.cs diff --git a/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs b/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs index f39fc90bc..4990ea81a 100644 --- a/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs +++ b/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs @@ -187,10 +187,10 @@ public static class ActivityExtensions /// /// Gets the commit state behavior for the specified activity. /// - public static ActivityCommitStateBehavior GetCommitStateBehavior(this JsonObject activity) => activity.TryGetProperty("customProperties", "commitStateBehavior") ?? ActivityCommitStateBehavior.Default; + public static string? GetCommitStrategy(this JsonObject activity) => activity.TryGetProperty("customProperties", "commitStrategyName"); /// /// Sets the commit state behavior for the specified activity. /// - 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"); } \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs index e8bb1afe3..3e23b2e45 100644 --- a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs +++ b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs @@ -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(builderOptions); services.AddApi(builderOptions); services.AddApi(builderOptions); + services.AddApi(builderOptions); services.AddApi(builderOptions); services.AddApi(builderOptions); services.AddApi(builderOptions); diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ActivityCommitStateBehavior.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ActivityCommitStateBehavior.cs deleted file mode 100644 index 66d6dbdf6..000000000 --- a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ActivityCommitStateBehavior.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; - -public enum ActivityCommitStateBehavior -{ - /// - /// Never commit state, regardless of the workflow commit state options. - /// - Never, - - /// - /// Look at the workflow commit state options to determine if state should be committed. - /// - Default, - - /// - /// Commit state before the activity starts. - /// - Executing, - - /// - /// Commit state after the activity executes. - /// - Executed, - - /// - /// Commit state before the activity starts and after the activity executes. - /// - BeforeAndAfterExecution -} \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowOptions.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowOptions.cs index c3f38f381..07b5c882d 100644 --- a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowOptions.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowOptions.cs @@ -33,5 +33,5 @@ public class WorkflowOptions /// /// The options for committing workflow state. /// - public WorkflowCommitStateOptions CommitStateOptions { get; set; } = new(); + public string? CommitStrategyName { get; set; } } \ No newline at end of file