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許可證獲得許可 - 有關詳細信息,請參見許可證文件。