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);
}
}