diff --git a/src/core/Elsa.Core/Activities/ControlFlow/IfElse/IfElse.cs b/src/core/Elsa.Core/Activities/ControlFlow/IfElse/IfElse.cs index 1e453097d..08a899238 100644 --- a/src/core/Elsa.Core/Activities/ControlFlow/IfElse/IfElse.cs +++ b/src/core/Elsa.Core/Activities/ControlFlow/IfElse/IfElse.cs @@ -22,7 +22,7 @@ namespace Elsa.Activities.ControlFlow [ActivityProperty(Hint = "The condition to evaluate.")] public bool Condition { get; set; } - private bool EnteredScope + public bool EnteredScope { get => GetState(); set => SetState(value); diff --git a/src/core/Elsa.Core/Services/ActivityActivator.cs b/src/core/Elsa.Core/Services/ActivityActivator.cs index 1a199cffa..8a47f5805 100644 --- a/src/core/Elsa.Core/Services/ActivityActivator.cs +++ b/src/core/Elsa.Core/Services/ActivityActivator.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using Elsa.Activities.ControlFlow; using Elsa.Services.Models; namespace Elsa.Services @@ -19,12 +20,23 @@ namespace Elsa.Services activity.Data = context.GetData(); activity.Id = context.ActivityId; - if(!IsReturningComposite(activity)) + if(ShouldSetProperties(activity)) await context.WorkflowExecutionContext.WorkflowBlueprint.ActivityPropertyProviders.SetActivityPropertiesAsync(activity, context, context.CancellationToken); return activity; } + private bool ShouldSetProperties(IActivity activity) + { + if (IsReturningComposite(activity)) + return false; + + if (IsReturningIfElse(activity)) + return false; + + return true; + } private bool IsReturningComposite(IActivity activity) => activity is CompositeActivity && activity.Data.GetState(nameof(CompositeActivity.IsScheduled)); + private bool IsReturningIfElse(IActivity activity) => activity is IfElse && activity.Data.GetState(nameof(IfElse.EnteredScope)); } } \ No newline at end of file