https://github.com/bigbuildbench/danielgerlag_workflow-core

https://github.com/bigbuildbench/danielgerlag_workflow-core

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.3%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: BigBuildBench
  • License: mit
  • Language: C#
  • Default Branch: master
  • Size: 1.92 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme Funding License

README.md

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.

c# 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

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

yaml 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 ```c# 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 builder) {
builder .StartWith() .Input(step => step.Email, data => data.Email) .Input(step => step.Password, data => data.Password) .Output(data => data.UserId, step => step.UserId) .Then() .WaitFor("confirmation", data => data.UserId) .Then() .Input(step => step.UserId, data => data.UserId); } } ```

  • Saga Transactions

c# 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)); } }

c# 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. * Elasticsearch

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

Owner

  • Name: BigBuildBench
  • Login: BigBuildBench
  • Kind: organization

abbr. B3, benchmarking the repo-level understanding capability of your LLMs by reconstructing project build-file.

GitHub Events

Total
  • Create event: 2
Last Year
  • Create event: 2

Dependencies

.github/workflows/dotnet.yml actions
  • actions/checkout v2 composite
  • actions/setup-dotnet v1 composite
src/samples/WebApiSample/WebApiSample/Dockerfile docker
  • base latest build
  • build latest build
  • microsoft/dotnet 2.1-sdk build
  • microsoft/dotnet 2.1-aspnetcore-runtime build
src/samples/WebApiSample/docker-compose.override.yml docker
src/samples/WebApiSample/docker-compose.yml docker
  • ${DOCKER_REGISTRY-}webapisample latest
  • elasticsearch 6.5.4
  • mongo 3.6
src/WorkflowCore/WorkflowCore.csproj nuget
src/WorkflowCore.DSL/WorkflowCore.DSL.csproj nuget
src/WorkflowCore.Testing/WorkflowCore.Testing.csproj nuget
src/extensions/WorkflowCore.Users/WorkflowCore.Users.csproj nuget
src/extensions/WorkflowCore.WebAPI/WorkflowCore.WebAPI.csproj nuget
src/providers/WorkflowCore.LockProviders.SqlServer/WorkflowCore.LockProviders.SqlServer.csproj nuget
src/providers/WorkflowCore.Persistence.EntityFramework/WorkflowCore.Persistence.EntityFramework.csproj nuget
src/providers/WorkflowCore.Persistence.MongoDB/WorkflowCore.Persistence.MongoDB.csproj nuget
src/providers/WorkflowCore.Persistence.MySQL/WorkflowCore.Persistence.MySQL.csproj nuget
src/providers/WorkflowCore.Persistence.Oracle/WorkflowCore.Persistence.Oracle.csproj nuget
src/providers/WorkflowCore.Persistence.PostgreSQL/WorkflowCore.Persistence.PostgreSQL.csproj nuget
src/providers/WorkflowCore.Persistence.RavenDB/WorkflowCore.Persistence.RavenDB.csproj nuget
src/providers/WorkflowCore.Persistence.SqlServer/WorkflowCore.Persistence.SqlServer.csproj nuget
src/providers/WorkflowCore.Persistence.Sqlite/WorkflowCore.Persistence.Sqlite.csproj nuget
src/providers/WorkflowCore.Providers.AWS/WorkflowCore.Providers.AWS.csproj nuget
src/providers/WorkflowCore.Providers.Azure/WorkflowCore.Providers.Azure.csproj nuget
src/providers/WorkflowCore.Providers.Elasticsearch/WorkflowCore.Providers.Elasticsearch.csproj nuget
src/providers/WorkflowCore.Providers.Redis/WorkflowCore.Providers.Redis.csproj nuget
src/providers/WorkflowCore.QueueProviders.RabbitMQ/WorkflowCore.QueueProviders.RabbitMQ.csproj nuget
src/providers/WorkflowCore.QueueProviders.SqlServer/WorkflowCore.QueueProviders.SqlServer.csproj nuget
src/samples/WebApiSample/WebApiSample/WebApiSample.csproj nuget
src/samples/WorkflowCore.Sample01/WorkflowCore.Sample01.csproj nuget
src/samples/WorkflowCore.Sample02/WorkflowCore.Sample02.csproj nuget
src/samples/WorkflowCore.Sample03/WorkflowCore.Sample03.csproj nuget
src/samples/WorkflowCore.Sample04/WorkflowCore.Sample04.csproj nuget
src/samples/WorkflowCore.Sample05/WorkflowCore.Sample05.csproj nuget
src/samples/WorkflowCore.Sample06/WorkflowCore.Sample06.csproj nuget
src/samples/WorkflowCore.Sample07/WorkflowCore.Sample07.csproj nuget
src/samples/WorkflowCore.Sample08/WorkflowCore.Sample08.csproj nuget
src/samples/WorkflowCore.Sample09/WorkflowCore.Sample09.csproj nuget
src/samples/WorkflowCore.Sample09s/WorkflowCore.Sample09s.csproj nuget
src/samples/WorkflowCore.Sample10/WorkflowCore.Sample10.csproj nuget
src/samples/WorkflowCore.Sample11/WorkflowCore.Sample11.csproj nuget
src/samples/WorkflowCore.Sample12/WorkflowCore.Sample12.csproj nuget
src/samples/WorkflowCore.Sample13/WorkflowCore.Sample13.csproj nuget
src/samples/WorkflowCore.Sample14/WorkflowCore.Sample14.csproj nuget
src/samples/WorkflowCore.Sample15/WorkflowCore.Sample15.csproj nuget
src/samples/WorkflowCore.Sample16/WorkflowCore.Sample16.csproj nuget
src/samples/WorkflowCore.Sample17/WorkflowCore.Sample17.csproj nuget
src/samples/WorkflowCore.Sample18/WorkflowCore.Sample18.csproj nuget
src/samples/WorkflowCore.Sample19/WorkflowCore.Sample19.csproj nuget
src/samples/WorkflowCore.TestSample01/WorkflowCore.TestSample01.csproj nuget
test/Docker.Testify/Docker.Testify.csproj nuget
test/ScratchPad/ScratchPad.csproj nuget
test/WorkflowCore.IntegrationTests/WorkflowCore.IntegrationTests.csproj nuget
test/WorkflowCore.TestAssets/WorkflowCore.TestAssets.csproj nuget
test/WorkflowCore.Tests.DynamoDB/WorkflowCore.Tests.DynamoDB.csproj nuget
test/WorkflowCore.Tests.Elasticsearch/WorkflowCore.Tests.Elasticsearch.csproj nuget
test/WorkflowCore.Tests.MongoDB/WorkflowCore.Tests.MongoDB.csproj nuget
test/WorkflowCore.Tests.MySQL/WorkflowCore.Tests.MySQL.csproj nuget
test/WorkflowCore.Tests.Oracle/WorkflowCore.Tests.Oracle.csproj nuget
test/WorkflowCore.Tests.PostgreSQL/WorkflowCore.Tests.PostgreSQL.csproj nuget
test/WorkflowCore.Tests.QueueProviders.RabbitMQ/WorkflowCore.Tests.QueueProviders.RabbitMQ.csproj nuget
test/WorkflowCore.Tests.Redis/WorkflowCore.Tests.Redis.csproj nuget
test/WorkflowCore.Tests.SqlServer/WorkflowCore.Tests.SqlServer.csproj nuget
test/WorkflowCore.Tests.Sqlite/WorkflowCore.Tests.Sqlite.csproj nuget
test/WorkflowCore.UnitTests/WorkflowCore.UnitTests.csproj nuget