Add Roadmap to README

This commit is contained in:
Sipke Schoorstra 2019-10-27 15:54:41 +01:00
parent aef8741d84
commit cd82577511

134
README.md
View file

@ -10,6 +10,39 @@ Workflows can be defined not only using code but also as JSON, YAML or XML.
Follow the [Getting Started](https://elsa-workflows.github.io/elsa-core/docs/installing-elsa-core) instructions on the [Elsa Workflows documentation site](https://elsa-workflows.github.io/elsa-core).
## Roadmap
Version 1.0
- [x] Workflow Invoker
- [x] Long-running Workflows
- [x] Workflows as code
- [x] Workflows as data
- [x] HTML5 Workflow Designer Web Component
- [x] ASP.NET Core Workflow Dashboard
- [x] JavaScript Expressions
- [x] Liquid Expressions
- [x] Primitive Activities
- [X] Control Flow Activities
- [x] Workflow Activities
- [x] Timer Activities
- [x] HTTP Activities
- [x] Email Activities
Version 2.0
- [ ] Service Bus Messaging
- [ ] Generic Command & Event Activities
- [ ] Workflow Host REST API
- [ ] Workflow Host gRPC API
- [ ] Distributed Hosting Support (support for multi-node environments)
- [ ] Localization Support
Version 3.0
- [ ] State Machines
- [ ] Container Activities
## Workflow Designer
Workflows can be visually designed using [Elsa Designer](https://github.com/elsa-workflows/elsa-designer-html), a reusable & extensible HTML5 web component built with [StencilJS](https://stenciljs.com/).
@ -69,107 +102,6 @@ The following providers will be supported:
Currently, workflows can be stored in YAML or JSON format.
The following demonstrates a simple workflow expressed in YAML and JSON, respectively:
**YAML**
```yaml
activities:
- name: WriteLine
id: activity-1
textExpression:
syntax: PlainText
expression: Hi! What's your name?
- name: ReadLine
id: activity-2
argumentName: name
- name: WriteLine
id: activity-3
textExpression:
syntax: JavaScript
expression: '`Nice to meet you, ${name}!`'
connections:
- source:
activityId: activity-1
name: Done
target:
activityId: activity-2
- source:
activityId: activity-2
name: Done
target:
activityId: activity-3
```
**JSON**
```json
{
"activities": [
{
"name": "WriteLine",
"id": "activity-1",
"textExpression": {
"syntax": "PlainText",
"expression": "Hi! What's your name?"
}
},
{
"id": "activity-2",
"name": "ReadLine",
"argumentName": "name"
},
{
"name": "WriteLine",
"id": "activity-3",
"textExpression": {
"syntax": "JavaScript",
"expression": "`Nice to meet you, ${name}!`"
}
}
],
"connections": [
{
"source": {
"activityId": "activity-1",
"name": "Done"
},
"target": {
"activityId": "activity-2"
}
},
{
"source": {
"activityId": "activity-2",
"name": "Done"
},
"target": {
"activityId": "activity-3"
}
}
]
}
```
The following demonstrates loading a workflow from a YAML string:
```c#
// Setup a service collection and use the FileSystemProvider for both workflow definitions and workflow instances.
var services = new ServiceCollection()
.AddWorkflowsInvoker()
.AddConsoleActivities()
.AddSingleton(Console.In)
.BuildServiceProvider();
// Load the data and specify data format.
var data = Resources.SampleWorkflowDefinition;
var format = YamlTokenFormatter.FormatName; // "YAML"
// Deserialize the workflow from data.
var serializer = services.GetService<IWorkflowSerializer>();
var workflowDefinition = await serializer.DeserializeAsync(data, format, CancellationToken.None);
// Invoke the workflow.
var invoker = services.GetService<IWorkflowInvoker>();
await invoker.InvokeAsync(workflowDefinition);
```
## Long Running Workflows
Elsa has native support for long-running workflows. As soon as a workflow is halted because of some blocking activity, the workflow is persisted.