elsa core

C#源码 2025-08-14

Elsa 3

对于ELSA 2,请单击此处

介绍

ELSA是一个强大的工作流库,可以在任何.NET应用程序中启用工作流执行。 ELSA允许您以各种方式定义工作流程,包括:

  • 编写C#代码
  • 使用视觉设计师
  • 在JSON中指定工作流程

尝试使用Docker

要为Elsa Studio + Elsa服务器提供快速旋转,您可以运行以下命令来启动ELSA Docker容器:

docker pull elsaworkflows/elsa-server-and-studio-v3:latest
docker run -t -i -e ASPNETCORE_ENVIRONMENT= ' Development ' -e HTTP_PORTS=8080 -e HTTP__BASEURL=http://*local*host*:13000 -p 13000:8080 elsaworkflows/elsa-server-and-studio-v3:latest

此Docker映像基于一个参考ASP.NET应用程序,该应用程序托管工作流服务器和设计器,并且不打算用于生产使用。

默认情况下,您可以访问http:// localhost:13000并登录:

  Username: admin
  Password: password

目录

  • 文档
  • 已知问题和限制
  • 特征
  • 路线图
  • 用例
  • 编码工作流程
  • 设计的工作流程
  • 贡献
  • 支持
    • 社区支持
    • 企业支持

文档

ELSA文档网站。

已知问题和限制

Elsa正在不断发展,尽管它提供了强大的功能,但仍有一些已知的局限性和正在进行的工作:

  • 文档仍在进行中。
  • 在工作流实例查看器中尚未实现输入/输出。
  • 目前仅针对不需要输入并且不从扳机开始的工作流程,目前仅支持设计师的启动工作流。这是计划以后发布的。
  • 设计师目前仅支持流程图活动。计划将来发布对序列和Statemachine活动的支持。
  • UI输入验证尚未实施。

特征

Elsa为建造和执行工作流提供了广泛的功能,包括:

  • 在任何.NET应用程序中执行工作流程,并支持.NET 6及以后。
  • 支持短期和长期运行的工作流程。
  • 由Windows Workflow Foundation启发的编程模型。
  • 基于Web的拖放设计师,并支持自定义活动。
  • 本地对活动组成的支持,包括SequenceFlowchartForEach等活动。
  • 并行执行活动。
  • 用于常见方案的内置活动,例如发送电子邮件,进行HTTP呼叫,调度任务,发送和接收消息等。
  • Workflow版本控制和通过API迁移。
  • 通过HTTP,消息队列等方便地与外部应用程序集成。
  • 增加工作流吞吐量的演员模型。
  • 动态表达,并支持C#,JavaScript,Python和Liquid。
  • 持久性不可知论者,支持实体框架核心,蒙古德(Mongodb)和Dapper的支持。
  • Elsa Studio:用于管理和设计工作流程的模块化外界仪表板应用。

路线图

参见#3232

用例

ELSA可用于多种情况,包括:

  • 长期运行的工作流程,例如订单实现和产品批准。
  • 短运行的工作流,例如发送电子邮件和生成PDF。
  • 预定的工作流程,例如发送每日报告。
  • 事件驱动的工作流程,例如用户注册时发送欢迎电子邮件。

编码工作流程

ELSA允许您使用C#定义代码中的工作流。以下示例显示了如何接收HTTP请求并发送电子邮件以进行回复:

 public class SendEmailWorkflow : WorkflowBase
{
    protected override void Build ( IWorkflowBuilder builder )
    {
        builder . Root = new Sequence
        {
            Activities =
            {
                new HttpEndpoint
                {
                    Path = new ( "/send-email" ) ,
                    SupportedMethods = new ( new [ ] { HttpMethods . Post } ) ,
                    CanStartWorkflow = true
                } ,
                new SendEmail
                {
                    From = new ( "alic@acme.com" ) ,
                    To = new ( new [ ] { "bob@acme.com" } ) ,
                    Subject = new ( "Your workflow has been triggered!" ) ,
                    Body = new ( "Hello!" )
                }
            }
        } ;
    }
} 

设计工作流程

ELSA允许您使用视觉设计人员定义工作流程。以下示例显示了如何接收HTTP请求并发送电子邮件以进行回复:

贡献

我们欢迎社区的贡献,并很高兴您有兴趣帮助改善ELSA工作流程!这是为我们的项目做出贡献的步骤:

1。叉和克隆回购

首先,您需要将存储库分配给您自己的GitHub帐户。您可以通过导航到ELSA Workflow GitHub存储库并单击页面右上角的“叉子”按钮来做到这一点。一旦分配了存储库,就可以使用以下命令将其克隆到本地计算机上:

git clone https://gi*th*ub.*com/YOUR_USERNAME/elsa-core.git

用github用户名替换YOUR_USERNAME 。有关拨仓库的更多信息,请在此处查看GitHub文档。

将有关“应用程序”文件夹及其项目的详细信息纳入有关使用您喜欢的IDE打开Elsa.sln的第二点,我们可以扩展说明,以指导开发人员从哪里开始以及他们可能想先探索哪些项目。这是该部分的更新版本,其中包含其他信息:

2。使用您喜欢的IDE打开Elsa.sln

克隆存储库后,将导航到克隆的目录,并使用支持.NET开发的首选IDE打开Elsa.sln解决方案文件,例如Visual Studio,Jetbrains Rider或Visual Studio代码,并具有适当的扩展名。

在解决方案中,您将找到一个“应用程序”文件夹,其中包含三个项目,旨在帮助您开始并探索Elsa Workflow的功能:

  • elsa.server.web :此项目是用作工作流服务器的参考ASP.NET核心应用程序。如果您想了解ELSA如何用作服务器端工作流引擎,这是一个很好的起点。

  • elsa.serverandstudio.web :该项目具有双重目的。像Elsa.Server.Web一样,它充当工作流服务器。此外,它托管Elsa Studio Blazor WebAssembly应用程序。如果您想查看ELSA的完整功能,包括服务器方面和客户端工作室体验,这是一个完美的项目。

  • elsa.studio.web :此项目是一个参考julazor WebAssembly应用程序,仅托管Elsa Studio Blazor WebAssembly应用程序。它需要一个运行的ELSA服务器应用程序才能连接到。如果您有兴趣关注Elsa Studio UI及其与Elsa Workflow服务器的交互,请使用此项目。

3。提交公关以及您的更改

一旦您进行了更改,便将它们推回了叉子。然后,导航到原始的ELSA Workflow存储库,并创建一个新的拉请请求。确保您的公关描述清楚地描述了更改和任何相关信息,以帮助审阅者了解您的贡献。有关创建拉动请求的详细指南,请访问叉子创建拉动请求。

4。首先打开问题

在开始进行更改或提交拉动请求之前,请打开问题以讨论您想做什么。此步骤至关重要,因为它可以确保您不会花费时间来处理可能与项目目标不符或可能已经在其他人开发的事情上。您可以在这里打开一个问题。

这种方法有助于我们简化贡献,并确保您的努力与项目的需求和优先事项保持一致。我们期待您的贡献,并在这里为您提供支持。感谢您为ELSA工作流项目做出贡献!

支持

从社区驱动的渠道到企业级服务,有多种方法获得ELSA工作流的支持。

社区支持

艾尔莎(Elsa)拥有一个积极且有用的社区,您可以通过多个渠道找到支持:

  • GITHUB发出错误报告和功能请求。
  • GitHub讨论了开放式对话,问题和社区驱动的支持。
  • 与Elsa社区进行实时支持和互动的不和谐。
  • 搜索或提出技术问题的stackoverflow。

企业支持

对于需要专业支持和长期承诺的组织,ELSA-X提供企业级服务,并确保ELSA框架的连续性和未来开发,提供自定义解决方案,并开发针对企业需求量身定制的商业扩展。

下载源码

通过命令行克隆项目:

git clone https://github.com/elsa-workflows/elsa-core.git