Workflow Core is a light weight workflow engine targeting .NET Standard. Think: long running processes with multiple tasks that need to track state. It supports pluggable persistence and concurrency providers to allow for multi-node clusters.
See Tutorial here.
Define your workflows with the fluent API.
publicclassMyWorkflow:IWorkflow{publicvoidBuild(IWorkflowBuilder<MyData>builder){builder.StartWith<Task1>().Then<Task2>().Then<Task3>;}}- New user workflow
publicclassMyData{publicstringEmail{get;set;}publicstringPassword{get;set;}publicstringUserId{get;set;}}publicclassMyWorkflow:IWorkflow{publicvoidBuild(IWorkflowBuilder<MyData>builder){builder.StartWith<CreateUser>().Input(step =>step.Email, data =>data.Email).Input(step =>step.Password, data =>data.Password).Output(data =>data.UserId, step =>step.UserId);.Then<SendConfirmationEmail>().WaitFor("confirmation", data =>data.UserId).Then<UpdateUser>().Input(step =>step.UserId, data =>data.UserId);}}- Resilient service orchestration
publicclassMyWorkflow:IWorkflow{publicvoidBuild(IWorkflowBuilder<MyData>builder){builder.StartWith<CreateCustomer>().Then<PushToSalesforce>().OnError(WorkflowErrorHandling.Retry,TimeSpan.FromMinutes(10)).Then<PushToERP>().OnError(WorkflowErrorHandling.Retry,TimeSpan.FromMinutes(10));}}Since workflows are typically long running processes, they will need to be persisted to storage between steps. There are several persistence providers available as separate Nuget packages.
- MemoryPersistenceProvider (Default provider, for demo and testing purposes)
- MongoDB
- SQL Server
- PostgreSQL
- Sqlite
- Redis (coming soon...)
- Daniel Gerlag - Initial work
This project is licensed under the MIT License - see the LICENSE.md file for details