144 lines
6.8 KiB
Markdown
144 lines
6.8 KiB
Markdown
# ELSA 3.0
|
|
|
|

|
|
|
|
[](https://github.com/elsa-workflows/elsa-core/actions/workflows/packages.yml)
|
|
[](https://www.nuget.org/packages/Elsa/)
|
|
[](https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json)
|
|
[](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)
|
|
[](https://hub.docker.com/repository/docker/elsaworkflows/elsa-v3)
|
|
[](https://discord.gg/hhChk5H472)
|
|
[]( http://stackoverflow.com/questions/tagged/elsa-workflows )
|
|
[](https://www.reddit.com/r/elsaworkflows/)
|
|
|
|
### [For Elsa 2 Click Here](https://github.com/elsa-workflows/elsa-core/tree/2.x)
|
|
|
|
## Introduction
|
|
Elsa is a powerful workflow library that enables workflow execution within any .NET application. Elsa allows you to define workflows in various ways, including:
|
|
|
|
- Writing C# code
|
|
- Using a visual designer
|
|
- Specifying workflows in JSON
|
|
|
|

|
|
|
|
### 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
|
|
```
|
|
|
|
> 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.
|
|
|
|
By default, you can access http://localhost:13000 and log in with:
|
|
|
|
```
|
|
Username: admin
|
|
Password: password
|
|
```
|
|
|
|
## Table of Contents
|
|
|
|
- [Documentation](#documentation)
|
|
- [Known Issues and Limitations](#known-issues-and-limitations)
|
|
- [Features](#features)
|
|
- [Roadmap](#roadmap)
|
|
- [Use Cases](#use-cases)
|
|
|
|
## Documentation
|
|
|
|
For comprehensive documentation and to get started with Elsa, please visit the [Elsa Documentation Website](https://v3.elsaworkflows.io/).
|
|
|
|
## Known Issues and Limitations
|
|
|
|
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.
|
|
|
|
## Features
|
|
|
|
Elsa offers a wide range of features for building and executing workflows, including:
|
|
|
|
- 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`.
|
|
- Parallel execution of activities.
|
|
- 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.
|
|
- Actor model for increased workflow throughput.
|
|
- 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.
|
|
|
|
## Roadmap
|
|
|
|
The following features are planned for future releases of Elsa:
|
|
|
|
- [ ] 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
|
|
- [ ] Capsules ("hot" deployable workflow packages containing activities and configuration)
|
|
|
|
## Use Cases
|
|
|
|
Elsa can be used in a variety of scenarios, including:
|
|
|
|
- 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.
|
|
|
|
## Programmatic Workflows
|
|
|
|
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:
|
|
|
|
```csharp
|
|
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!")
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
```
|
|
|
|
## Designed Workflows
|
|
|
|
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:
|
|
|
|
 |