2023-12-10 22:43:52 +00:00
# ELSA 3.0
2022-12-19 11:18:53 +00:00
2023-12-25 11:27:07 +00:00

2023-12-10 21:59:13 +00:00
2023-12-10 23:10:45 +00:00
[](https://github.com/elsa-workflows/elsa-core/actions/workflows/packages.yml)
2023-12-13 09:04:12 +00:00
[](https://www.nuget.org/packages/Elsa/)
2023-12-10 23:10:45 +00:00
[](https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json)
2023-12-13 09:04:12 +00:00
[](https://www.npmjs.com/package/@elsa-workflows/elsa-workflows-studio)
[](https://f.feedz.io/elsa-workflows/elsa-3/packages/%40elsa-workflows%2Felsa-studio-wasm/latest/download)
2023-12-10 23:10:45 +00:00
[](https://hub.docker.com/repository/docker/elsaworkflows/elsa-v3)
2023-12-13 09:04:12 +00:00
[](https://discord.gg/hhChk5H472)
2023-12-10 23:10:45 +00:00
[]( http://stackoverflow.com/questions/tagged/elsa-workflows )
[](https://www.reddit.com/r/elsaworkflows/)
2023-12-14 11:21:39 +00:00
### [For Elsa 2 Click Here](https://github.com/elsa-workflows/elsa-core/tree/2.x)
2023-12-13 09:04:12 +00:00
## Introduction
2023-12-10 21:33:31 +00:00
Elsa is a powerful workflow library that enables workflow execution within any .NET application. Elsa allows you to define workflows in various ways, including:
2022-12-19 11:18:53 +00:00
2023-12-10 11:27:39 +00:00
- Writing C# code
- Using a visual designer
- Specifying workflows in JSON
2022-12-19 11:18:53 +00:00
2023-12-10 21:59:13 +00:00

2023-12-10 11:30:06 +00:00
2023-12-13 09:04:12 +00:00
### Try with Docker
To give the Elsa Studio + Elsa Server a quick spin, you can run the following command to start the Elsa Docker container:
```shell
docker pull elsaworkflows/elsa-v3:latest
docker run -t -i -e ASPNETCORE_ENVIRONMENT='Development' -e HTTP_PORTS=8080 -p 13000:8080 elsaworkflows/elsa-v3:latest
```
2023-12-14 10:35:48 +00:00
2023-12-13 20:43:03 +00:00
> This Docker image is based on a reference ASP.NET application that hosts both the workflow server and designer and is not intended for production use.
2023-12-13 09:04:12 +00:00
2023-12-14 10:35:48 +00:00
By default, you can access http://localhost:13000 and log in with:
```
Username: admin
Password: password
```
2023-12-10 11:27:39 +00:00
## Table of Contents
- [Documentation ](#documentation )
- [Known Issues and Limitations ](#known-issues-and-limitations )
- [Features ](#features )
- [Roadmap ](#roadmap )
- [Use Cases ](#use-cases )
2022-12-19 11:18:53 +00:00
## Documentation
2023-12-10 11:27:39 +00:00
For comprehensive documentation and to get started with Elsa, please visit the [Elsa Documentation Website ](https://v3.elsaworkflows.io/ ).
2022-12-19 11:18:53 +00:00
2023-12-10 11:15:11 +00:00
## Known Issues and Limitations
2023-12-10 11:27:39 +00:00
Elsa is continually evolving, and while it offers powerful capabilities, there are some known limitations and ongoing work:
- Documentation is still a work in progress.
- The designer is not yet fully embeddable in other applications; this feature is planned for a future release.
- C# and Python expressions are not yet fully tested.
- Bulk Dispatch Workflows is a new activity and not yet fully tested.
- Input/Output is not yet implemented in the Workflow Instance Viewer.
- Starting workflows from the designer is currently supported only for workflows that do not require input and do not start with a trigger; this is planned for a future release.
- The designer currently only supports Flowchart activities. Support for Sequence and StateMachine activities is planned for a future release.
- UI input validation is not yet implemented.
2023-12-10 11:15:11 +00:00
2022-12-19 11:18:53 +00:00
## Features
2023-12-10 11:27:39 +00:00
Elsa offers a wide range of features for building and executing workflows, including:
2022-12-19 11:18:53 +00:00
2023-12-10 11:27:39 +00:00
- Execution of workflows in any .NET application with support for .NET 6 and beyond.
- Support for both short-running and long-running workflows.
- A programming model loosely inspired by Windows Workflow Foundation.
- A web-based drag & drop designer with support for custom activities.
- Native support for activity composition, including activities like `Sequence` , `Flowchart` , and `ForEach` .
2023-12-10 11:15:11 +00:00
- Parallel execution of activities.
2023-12-10 11:27:39 +00:00
- Built-in activities for common scenarios, such as sending emails, making HTTP calls, scheduling tasks, sending and receiving messages, and more.
- Workflow versioning and migration via API.
- Easy integration with external applications via HTTP, message queues, and more.
2023-12-10 11:15:11 +00:00
- Actor model for increased workflow throughput.
2023-12-10 11:27:39 +00:00
- Dynamic expressions with support for C#, JavaScript, Python, and Liquid.
- Persistence agnostic, with support for Entity Framework Core, MongoDB, and Dapper out of the box.
- [Elsa Studio ](https://github.com/elsa-workflows/elsa-studio ): a modular Blazor dashboard app for managing and designing workflows.
2023-12-10 11:15:11 +00:00
## Roadmap
2023-12-10 11:27:39 +00:00
The following features are planned for future releases of Elsa:
2023-12-10 11:15:11 +00:00
- [ ] Multi-tenancy
- [ ] State Machine activity
- [ ] Designer support for Sequence activity & StateMachine activity
- [ ] BPMN 2.0 support
- [ ] DMN support
- [ ] Workflow migration to new versions via UI
2023-12-10 20:24:39 +00:00
- [ ] Capsules ("hot" deployable workflow packages containing activities and configuration)
2023-12-10 11:15:11 +00:00
2023-12-10 11:27:39 +00:00
## Use Cases
2023-12-10 11:15:11 +00:00
2023-12-10 11:27:39 +00:00
Elsa can be used in a variety of scenarios, including:
2022-12-19 11:18:53 +00:00
2023-12-10 11:27:39 +00:00
- Long-running workflows such as order fulfillment and product approval.
- Short-running workflows such as sending emails and generating PDFs.
- Scheduled workflows such as sending daily reports.
- Event-driven workflows such as sending welcome emails when a user signs up.
2023-12-10 11:15:11 +00:00
2023-12-16 10:44:41 +00:00
## Programmatic Workflows
2023-12-10 11:15:11 +00:00
2023-12-16 10:44:41 +00:00
Elsa allows you to define workflows in code using C#. The following example shows how to receive HTTP requests and send an email in response:
2023-12-10 21:13:00 +00:00
```csharp
2023-12-16 10:44:41 +00:00
public class SendEmailWorkflow : WorkflowBase
2023-12-10 11:15:11 +00:00
{
protected override void Build(IWorkflowBuilder builder)
{
builder.Root = new Sequence
{
Activities =
{
new HttpEndpoint
{
2023-12-16 10:44:41 +00:00
Path = new("/send-email"),
SupportedMethods = new(new[] { HttpMethods.Post }),
2023-12-10 11:15:11 +00:00
CanStartWorkflow = true
},
2023-12-16 10:44:41 +00:00
new SendEmail
2023-12-10 11:15:11 +00:00
{
2023-12-16 10:44:41 +00:00
From = new("alic@acme.com"),
To = new(new[]{ "bob@acme.com" }),
Subject = new("Your workflow has been triggered!"),
Body = new("Hello!")
2023-12-10 11:15:11 +00:00
}
}
};
}
}
```
2023-12-16 10:44:41 +00:00
## Designed Workflows
2023-12-10 11:15:11 +00:00
2023-12-16 10:44:41 +00:00
Elsa allows you to define workflows using a visual designer. The following example shows how to receive HTTP requests and send an email in response:
2023-12-11 10:01:55 +00:00
2023-12-16 10:44:41 +00:00
