c# elsa 自定义活动
nuget
Elsa 3.5.3
依赖注入
builder.Services.AddElsa();
基础流程创建
//需要注入对象
IWorkflowRunner workflowRunner;
//顺序工作流
var workflow = new Sequence();
workflow.Activities = new List<IActivity>();
for (int i = 0; i < 3; i++)
{
workflow.Activities.Add(new WriteLine("test"));
}
var result = await workflowRunner.RunAsync(workflow);
//流程
var nameVariable = new Variable<string>();
// Define the activities to put in the flowchart:
var writeLine1 = new WriteLine("Please tell me your name:");
//var writeLine2 = new ReadLine(nameVariable);
var writeLine2 = new WriteLine(nameVariable);
var writeLine3 = new WriteLine(context => $"Nice to meet you, {nameVariable.Get(context)}!");
var cus = new TestActivity();
// Define a flowchart workflow:
var workflow = new Flowchart
{
// Register the name variable.
Variables = { nameVariable },
// Add the activities.
Activities =
{
writeLine1,
writeLine2,
writeLine3,
cus
},
// Setup the connections between activities.
Connections =
{
new Connection(writeLine1, writeLine2),
new Connection(writeLine2, writeLine3),
new Connection(writeLine3, cus)
}
};
var result = await workflowRunner.RunAsync(workflow);
自定义活动
注册自定义活动
builder.Services.AddElsa(options => options.AddActivity<TestActivity>());
自定义活动
通过context.CompleteActivityAsync标记当前活动已经完成,可以直接执行后续的活动
public class TestActivity : Activity //, IActivityWithResult
{
//public Output Result { get; set; } = new();
//[Input] public Input<decimal> Amount { get; set; } = default!;
//[Output] public Output<string> TransactionId { get; set; } = default!;
/// <summary>
/// 判断活动是否可以执行
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
protected override ValueTask<bool> CanExecuteAsync(ActivityExecutionContext context)
{
//Console.WriteLine("CanExecuteAsync!");
return ValueTask.FromResult(true);
//return base.CanExecuteAsync(context);
}
/// <summary>
/// 活动中执行的具体逻辑
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
protected override ValueTask ExecuteAsync(ActivityExecutionContext context)
{
Console.WriteLine("活动已执行!");
return context.CompleteActivityAsync();
}
}
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com

浙公网安备 33010602011771号