elsa-core/samples/Sample04/Activities/ArithmeticOperation.cs
Sipke Schoorstra 7ba8b1e8d6 Merge
2019-07-22 18:55:02 +02:00

45 lines
1.3 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using Elsa.Expressions;
using Elsa.Extensions;
using Elsa.Services;
using Elsa.Results;
using Elsa.Services.Models;
namespace Sample04.Activities
{
public abstract class ArithmeticOperation : Activity
{
private readonly IWorkflowExpressionEvaluator evaluator;
protected ArithmeticOperation(IWorkflowExpressionEvaluator evaluator)
{
this.evaluator = evaluator;
}
public WorkflowExpression<double[]> Values
{
get => GetState<WorkflowExpression<double[]>>();
set => SetState(value);
}
public string ResultVariableName
{
get => GetState<string>();
set => SetState(value);
}
protected override async Task<ActivityExecutionResult> OnExecuteAsync(WorkflowExecutionContext context, CancellationToken cancellationToken)
{
var values = await evaluator.EvaluateAsync(Values, context, cancellationToken);
var sum = Calculate(values);
context.SetLastResult(sum);
context.CurrentScope.SetVariable(ResultVariableName, sum);
return Done();
}
protected abstract double Calculate(params double[] values);
}
}