Elsa 工作流 - 示例工作流演示
ElsaDemoApp 是一个示例应用程序,演示了如何在 ABP 应用程序中使用 Elsa 模块。该演示应用程序包含四个项目:
ElsaDemoApp.Server是一个集成了 Identity 和 Elsa 模块的 ABP 应用程序。它用作身份认证服务器和 Elsa 工作流服务器。ElsaDemoApp.Studio.WASM是一个带有 Elsa Studio 的 Blazor WebAssembly 应用程序。它用作 Elsa Studio 客户端应用程序。ElsaDemoApp.Ordering和ElsaDemoApp.Payment是两个微服务,可用于在分布式系统中测试 Elsa 工作流。
此示例工作流演示了如何将 ABP 与 Elsa 工作流集成。 关于 Elsa 本身的更多详细信息,请参阅官方 Elsa 文档 及相关指南。
下载
注意:
ElsaDemoApp示例应用程序仅供 ABP 客户 使用。因此,您需要拥有商业许可证才能下载源代码。
- 您可以从以下链接下载完整的源代码:https://abp.io/api/download/samples/elsaworkflow
运行演示应用程序
ElsaDemoApp.Server 中预定义了一个 Elsa 工作流,该工作流使用 Elsa 工作流创建订单并处理付款,并使用 ABP 分布式事件总线来协调工作流。
以下是完整的代码工作流:
public class OrderWorkflow : WorkflowBase
{
public const string Name = "OrderWorkflow";
protected override void Build(IWorkflowBuilder builder)
{
builder.WithDefinitionId(Name);
builder.Root = new Sequence
{
Activities =
{
// 将发布 NewOrderEto 事件到 Ordering 微服务,Ordering 微服务将创建订单并发布 OrderPlaced 事件
new CreateOrderActivity(),
// 等待 OrderPlaced 事件,该事件由 Ordering 微服务触发,Elsa 将使工作流继续到下一个活动
new OrderPlacedEvent(),
// 此活动将发布 RequestPaymentEto 事件到 Payment 微服务,Payment 微服务将处理付款并发布 PaymentCompleted 事件
new RequestPaymentActivity(),
// 等待 PaymentCompleted 事件,该事件由 Payment 微服务触发,Elsa 将使工作流继续到下一个活动
new PaymentCompletedEvent(),
// 此活动将向客户发送电子邮件,通知付款已完成
new PaymentCompletedActivity()
}
};
}
}
演示应用程序使用 SQL Server LocalDB 作为数据库提供程序,Redis 作为缓存服务器,RabbitMQ 作为消息代理。请确保您的计算机上已安装并运行这些服务,然后按照以下说明运行应用程序。
您可以按照以下步骤运行演示应用程序:
- 运行
ElsaDemoApp.Server项目以迁移数据库(dotnet run --migrate-database)并启动服务器。 - 运行
ElsaDemoApp.Studio.WASM项目以启动 Elsa Studio 客户端应用程序。 - 运行
ElsaDemoApp.Ordering项目以启动 Ordering 微服务。 - 运行
ElsaDemoApp.Payment项目以启动 Payment 微服务。
运行所有应用程序后,您可以登录 ElsaDemoApp.Server 应用程序(使用默认凭据)并导航到 https://localhost:5001/Ordering 页面来创建订单:
之后,您可以导航到 ElsaDemoApp.Studio.WASM 应用程序,查看已创建、正在运行和已完成的工作流实例:
抠丁客





