elsa 工作流
工作流是一系列活动,可以以多种方式执行。在 Elsa 中,工作流由 Workflow
类的一个实例表示,并且它本身也是一个活动。确切地说,它是一个复合活动,并公开了一个 Root
属性,可用于定义工作流的根活动。Root
属性是类型 IActivity
,这是所有活动的基础接口。
工作流创建
以下示例展示了如何实例化一个 Workflow
对象并将其 Root
属性设置为一个 Sequence
活动:
var workflow = new Workflow
{
Root = new Sequence
{
Activities =
{
new WriteLine("你好,世界!"),
new WriteLine("再见了,残酷的世界!")
}
}
};
工作流执行
当你有一个 Workflow
对象的实例时,你可以使用 WorkflowRunner
类来执行它。WorkflowRunner
类负责执行工作流,是所有工作流执行的入口点。
以下是一个执行工作流的示例:
var workflowRunner = services.GetRequiredService<IWorkflowRunner>(); // 或者在构造函数中注入。
await workflowRunner.RunAsync(workflow);
工作流定义
工作流可以从代码或使用设计器创建。当使用设计器创建时,工作流定义以 JSON 形式存储,并用于在运行时重建实际的 Workflow
对象。
工作流实例
工作流实例是当前正在执行的工作流的实例,由 WorkflowState
类的一个实例表示。当工作流被执行时,会创建一个工作流实例。换句话说,工作流实例是工作流的运行时表示。
工作流执行上下文
工作流执行上下文是在工作流执行过程中传递的数据结构。它包含工作流实例、当前活动、当前输入和输出等信息。