36 lines
1.5 KiB
C#
36 lines
1.5 KiB
C#
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Elsa.Activities.Primitives.Activities;
|
|
using Elsa.Handlers;
|
|
using Elsa.Models;
|
|
using Elsa.Results;
|
|
using Microsoft.Extensions.Localization;
|
|
|
|
namespace Elsa.Activities.Primitives.Handlers
|
|
{
|
|
public class IfElseHandler : ActivityHandler<IfElse>
|
|
{
|
|
private readonly IWorkflowExpressionEvaluator expressionEvaluator;
|
|
|
|
public IfElseHandler(IStringLocalizer<IfElseHandler> localizer, IWorkflowExpressionEvaluator expressionEvaluator)
|
|
{
|
|
T = localizer;
|
|
this.expressionEvaluator = expressionEvaluator;
|
|
}
|
|
|
|
public override LocalizedString Category => T["Control Flow"];
|
|
public override LocalizedString DisplayText => T["If/Else Branch"];
|
|
public override LocalizedString Description => T["Evaluate a boolean condition and continues execution based on the outcome."];
|
|
public IStringLocalizer<IfElseHandler> T { get; }
|
|
|
|
public override IEnumerable<LocalizedString> GetEndpoints() => Endpoints(T["True"], T["False"]);
|
|
|
|
protected override async Task<ActivityExecutionResult> OnExecuteAsync(IfElse activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken)
|
|
{
|
|
var result = await expressionEvaluator.EvaluateAsync(activity.ConditionExpression, workflowContext, cancellationToken);
|
|
return TriggerEndpoint(result ? "True" : "False");
|
|
}
|
|
|
|
}
|
|
} |