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
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
Metadata Files
README.md
Workflow Core
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
.StartWith
- 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.
- MemoryPersistenceProvider (Default provider, for demo and testing purposes)
- MongoDB
- Cosmos DB
- Amazon DynamoDB
- SQL Server
- PostgreSQL
- Sqlite
- MySQL
- Redis
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
- Repositories: 1
- Profile: https://github.com/BigBuildBench
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
- actions/checkout v2 composite
- actions/setup-dotnet v1 composite
- base latest build
- build latest build
- microsoft/dotnet 2.1-sdk build
- microsoft/dotnet 2.1-aspnetcore-runtime build
- ${DOCKER_REGISTRY-}webapisample latest
- elasticsearch 6.5.4
- mongo 3.6