elsa 扩展性

Elsa Workflows 支持自定义变更类型,使开发人员能够定义自己的类型并将其作为变更使用。

要定义一个自定义变更类型,请实现 IAlteration 接口。

public interface IAlteration
{
}

接下来,实现一个变更处理器来处理变更类型。

public interface IAlterationHandler<T> where T : IAlteration
{
    bool CanHandle(IAlteration alteration);
    ValueTask HandleAsync(AlterationHandlerContext context);
}

或者,从 AlterationHandlerBase<T> 基类派生以简化实现。

最后,使用服务集合注册变更处理器。

services.AddElsa(elsa =>
{
    elsa.UseAlterations(alterations =>
    {
        alterations.AddAlteration<MyAlteration, MyAlterationHandler>();
    });
});

示例

下面的例子展示了如何定义一个自定义变更类型和处理器。

public class MyAlteration : IAlteration
{
    public string Message { get; set; }
}

public class MyAlterationHandler : AlterationHandlerBase<MyAlteration>
{
    public override async ValueTask HandleAsync(AlterationHandlerContext<MyAlteration> context, CancellationToken cancellationToken = default)
    {
        context.WorkflowExecutionContext.Output.Add("Message", context.Alteration.Message);
    }
}
在本文档中