workflow core
v3.11.0
工作流核心是一种轻巧的可嵌入工作流程引擎靶向.NET标准。思考:长期运行过程,具有多个需要跟踪状态的任务。它支持可插入的持久性和并发提供者允许多节点群集。
导体是独立的工作流服务器,而不是内部使用工作流核心的库。它揭示了一个API,使您可以存储工作流的定义,跟踪运行工作流程,管理事件并定义自定义步骤和脚本以在工作流中使用。
https://github.com/danielgerlag/conductor
请参阅此处的教程。
使用Fluent API定义工作流。
public class MyWorkflow : IWorkflow
{
public void Build ( IWorkflowBuilder < MyData > builder )
{
builder
. StartWith < Task1 > ( )
. Then < Task2 > ( )
. Then < Task3 > ( ) ;
}
} 在JSON或YAML中定义您的工作流程,需要安装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 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 ) ;
}
} 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 > ( ) ; 由于工作流程通常是长期运行的过程,因此需要将它们持续到两步之间的存储。有几个持久性提供者可作为单独的Nuget软件包。
可以将搜索索引提供商插入工作流核心,使您能够索引工作流并搜索数据和状态。这些也可以作为单独的Nuget软件包使用。
你好世界
多个结果
通过数据
平行
同步
循环
如果语句
事件
活动工人
并行任务
传奇交易(赔偿)
计划的背景任务
经常出现的背景任务
依赖注入
延期执行和重点步骤
循环
暴露REST API
人(用户)工作流程
测试
该项目已根据MIT许可证获得许可 - 有关详细信息,请参见许可证文件。