YZWater3 项目需要集成工作流引擎来实现工艺流程编排。经过评估,选择了 Elsa Workflows 作为候选方案。
安装 Elsa.Workflows.Core 3.7.1 后,发现以下命名空间不存在:
Elsa.Workflows.ContractsElsa.Workflows.RuntimeElsa.Workflows.Runtime.MessagesElsa 3.x 需要完整的依赖注入容器配置,不适合直接在桌面应用中使用。
完整功能需要安装:
Elsa.Workflows.CoreElsa.Workflows.RuntimeElsa.Activities.ConsoleElsa.Activities.Http创建了自定义的 WorkflowService,提供基本的工作流功能:
// 初始化
await WorkflowService.Instance.InitializeAsync();
// 执行工作流
var result = await WorkflowService.Instance.ExecuteWorkflowAsync("WastewaterTreatment", context);
// 注册自定义工作流
WorkflowService.Instance.RegisterWorkflow("MyWorkflow", definition);
var workflow = new WorkflowDefinition
{
Name = "污水处理流程",
Description = "自动检测液位、流量,控制泵启停",
Steps = new List<WorkflowStep>
{
new() { Name = "CheckTankLevel", Action = CheckTankLevel },
new() { Name = "CheckFlowRate", Action = CheckFlowRate },
new() { Name = "ControlPump", Action = ControlPump }
}
};
<PackageReference Include="Elsa.Workflows.Core" Version="3.7.1" />
<PackageReference Include="Elsa.Workflows.Runtime" Version="3.7.1" />
<PackageReference Include="Elsa.Activities.Console" Version="3.7.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
using Elsa.Extensions;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.AddElsa(elsa =>
{
elsa.AddActivitiesFrom<Program>();
elsa.UsePersistence(new MemoryWorkflowStateProvider());
});
var serviceProvider = services.BuildServiceProvider();
using var scope = serviceProvider.CreateScope();
var workflowRunner = scope.ServiceProvider.GetRequiredService<IWorkflowRunner>();
var workflow = new Workflow(new Sequence { ... });
var result = await workflowRunner.RunAsync(workflow);
如果未来需要更强大的工作流引擎,可以考虑:
当前使用简化版工作流服务满足基本需求。如果未来需要:
建议重新评估 Elsa Workflows 的完整集成方案,或考虑替代方案。
创建时间: 2026-09-01
状态: 待后续完善