[Activity(
    Category = "Demo",
    DisplayName = "Write Line",
    Description = "Write text to standard out.",
    Outcomes = new[] { OutcomeNames.Done , "Success", "Failed" }
)]
public class WriteLine : Activity
{   
    [ActivityInput(Hint = "The message to write.")]
    public string Message { get; set; }
    protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
    {
        var success = DoSomething();
        var outcomeName = success ? "Success" : "Failed";
        
        return Outcome(outcomeName);
    }
}
异步执行
public class SayHelloWorld : Activity
{   
    private readonly TextWriter _writer;
    public SayHelloWorld(TextWriter writer)
    {
        _writer = writer;
    }
    protected override async ValueTask<IActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext context)
    {
        await _writer.WriteLineAsync("Hello World!");
        return Done();
    }
}
注入
public class WriteLine : Activity
{   
    private readonly TextWriter _writer;
    public WriteLine(TextWriter writer)
    {
        _writer = writer;
    }
    [ActivityInput(Hint = "The message to write.")]
    public string Message { get; set; }
    protected override async ValueTask<IActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext context)
    {
        await _writer.WriteLineAsync(Message);
        return Done();
    }
}
中断和继续
public class ReadLine : Activity
{
    protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
    {
        // Instruct the workflow runner to suspend the workflow.
        return Suspend();
    }
    protected override IActivityExecutionResult OnResume(ActivityExecutionContext context)
    {
        // Read received input.
        var receivedInput = context.GetInput<string>();
    
        // Store received input into activity output.
        context.Output = receivedInput;
        // Instruct workflow runner that we're done.
        return Done();
    }
}
初始化
services.AddElsa(elsaOptions => elsaOptions.AddActivity<SayHelloWorld>());
也可以这样
services.AddElsa(elsaOptions => elsaOptions.AddActivitiesFrom<TMarkerType>());
参考:
 站点公众号
                站点公众号