All Projects → danielgerlag → Workflow Core

danielgerlag / Workflow Core

Licence: mit
Lightweight workflow engine for .NET Standard

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to Workflow Core

Kogito Examples
Kogito examples - Kogito is a cloud-native business automation technology for building cloud-ready business applications.
Stars: ✭ 96 (-97.34%)
Mutual labels:  hacktoberfest, workflow-engine, workflow
Galaxy
Data intensive science for everyone.
Stars: ✭ 812 (-77.48%)
Mutual labels:  hacktoberfest, workflow-engine, workflow
Zeebe
Distributed Workflow Engine for Microservices Orchestration
Stars: ✭ 2,165 (-39.94%)
Mutual labels:  hacktoberfest, workflow-engine, workflow
Kogito Runtimes
Kogito Runtimes - Kogito is a cloud-native business automation technology for building cloud-ready business applications.
Stars: ✭ 188 (-94.79%)
Mutual labels:  hacktoberfest, workflow-engine, workflow
Actionsflow
The free Zapier/IFTTT alternative for developers to automate your workflows based on Github actions
Stars: ✭ 2,243 (-37.78%)
Mutual labels:  hacktoberfest, workflow
Gitreflow
Reflow automatically creates pull requests, ensures the code review is approved, and squash merges finished branches to master with a great commit message template.
Stars: ✭ 1,488 (-58.72%)
Mutual labels:  hacktoberfest, workflow
Cylc Flow
Cylc: a workflow engine for cycling systems. Repository master branch: core meta-scheduler component of cylc-8 (in development); Repository 7.8.x branch: full cylc-7 system.
Stars: ✭ 154 (-95.73%)
Mutual labels:  hacktoberfest, workflow-engine
Zeebe Modeler
Desktop Application for modeling Zeebe Workflows with BPMN
Stars: ✭ 198 (-94.51%)
Mutual labels:  hacktoberfest, workflow
Camunda Bpm Platform
Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Spring, Spring Boot, CDI.
Stars: ✭ 2,390 (-33.7%)
Mutual labels:  hacktoberfest, workflow
dtm
A distributed transaction framework that supports multiple languages, supports saga, tcc, xa, 2-phase message, outbox patterns.
Stars: ✭ 6,110 (+69.49%)
Mutual labels:  workflow-engine, saga
nactivity
workflow engine activity activiti
Stars: ✭ 55 (-98.47%)
Mutual labels:  workflow, workflow-engine
tumbleweed
Lightweight workflow engine microservice implement BPMN 2.0
Stars: ✭ 23 (-99.36%)
Mutual labels:  workflow, workflow-engine
CaseManagement
CMMN engine implementation in dotnet core
Stars: ✭ 16 (-99.56%)
Mutual labels:  workflow, workflow-engine
Wordpress Docker Compose
Easy Wordpress development with Docker and Docker Compose
Stars: ✭ 1,107 (-69.29%)
Mutual labels:  hacktoberfest, workflow
Blog Post Workflow
Show your latest blog posts from any sources or StackOverflow activity or Youtube Videos on your GitHub profile/project readme automatically using the RSS feed
Stars: ✭ 910 (-74.76%)
Mutual labels:  hacktoberfest, workflow
Arvados
An open source platform for managing and analyzing biomedical big data
Stars: ✭ 274 (-92.4%)
Mutual labels:  workflow-engine, workflow
Beehive
A flexible event/agent & automation system with lots of bees 🐝
Stars: ✭ 5,348 (+48.35%)
Mutual labels:  hacktoberfest, workflow
Camunda Modeler
An integrated modeling solution for BPMN and DMN based on bpmn.io.
Stars: ✭ 718 (-80.08%)
Mutual labels:  hacktoberfest, workflow
zenaton-ruby
💎 Ruby gem to run and orchestrate background jobs with Zenaton Workflow Engine
Stars: ✭ 32 (-99.11%)
Mutual labels:  workflow, workflow-engine
tukio
Tukio is an event based workflow generator library
Stars: ✭ 27 (-99.25%)
Mutual labels:  workflow, workflow-engine

Workflow Core

Build status

Workflow Core is a light weight embeddable 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.

Announcements

New related project: Conductor

Conductor is a stand-alone workflow server as opposed to a library that uses Workflow Core internally. It exposes an API that allows you to store workflow definitions, track running workflows, manage events and define custom steps and scripts for usage in your workflows.

https://github.com/danielgerlag/conductor

Documentation

See Tutorial here.

Fluent API

Define your workflows with the fluent API.

public class MyWorkflow : IWorkflow
{
    public void Build(IWorkflowBuilder<MyData> builder)
    {    
        builder
           .StartWith<Task1>()
           .Then<Task2>()
           .Then<Task3>();
    }
}

JSON / YAML Workflow Definitions

Define your workflows in JSON or YAML, need to install WorkFlowCore.DSL

{
  "Id": "HelloWorld",
  "Version": 1,
  "Steps": [
    {
      "Id": "Hello",
      "StepType": "MyApp.HelloWorld, MyApp",
      "NextStepId": "Bye"
    },        
    {
      "Id": "Bye",
      "StepType": "MyApp.GoodbyeWorld, MyApp"
    }
  ]
}
Id: HelloWorld
Version: 1
Steps:
- Id: Hello
  StepType: MyApp.HelloWorld, MyApp
  NextStepId: Bye
- Id: Bye
  StepType: MyApp.GoodbyeWorld, MyApp

Sample use cases

  • New user workflow
public class MyData
{
	public string Email { get; set; }
	public string Password { get; set; }
	public string UserId { get; set; }
}

public class MyWorkflow : IWorkflow
{
    public void Build(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);
    }
}
  • Saga Transactions
public class MyWorkflow : IWorkflow
{
    public void Build(IWorkflowBuilder<MyData> builder)
    {    
        builder
            .StartWith<CreateCustomer>()
            .Then<PushToSalesforce>()
                .OnError(WorkflowErrorHandling.Retry, TimeSpan.FromMinutes(10))
            .Then<PushToERP>()
                .OnError(WorkflowErrorHandling.Retry, TimeSpan.FromMinutes(10));
    }
}
builder
    .StartWith<LogStart>()
    .Saga(saga => saga
        .StartWith<Task1>()
            .CompensateWith<UndoTask1>()
        .Then<Task2>()
            .CompensateWith<UndoTask2>()
        .Then<Task3>()
            .CompensateWith<UndoTask3>()
    )
    .OnError(Models.WorkflowErrorHandling.Retry, TimeSpan.FromMinutes(10))
    .Then<LogEnd>();

Persistence

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.

Search

A search index provider can be plugged in to Workflow Core, enabling you to index your workflows and search against the data and state of them. These are also available as separate Nuget packages.

Extensions

Samples

Contributors

  • Daniel Gerlag - Initial work
  • Jackie Ja
  • Aaron Scribner
  • Roberto Paterlini

Related Projects

  • Conductor (Stand-alone workflow server built on Workflow Core)

Ports

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].