ワークフローコアは、.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パッケージとして利用可能ないくつかの永続プロバイダーがあります。
検索インデックスプロバイダーをワークフローコアにプラグインすることができ、ワークフローのインデックスを作成し、データとそれらの状態に対して検索できます。これらは、個別のナゲットパッケージとしても利用できます。
こんにちは世界
複数の結果
データの渡し
並行して、
foreachを同期します
ループ中
IFステートメント
イベント
活動労働者
並列タスク
サガトランザクション(補償付き)
スケジュールされたバックグラウンドタスク
繰り返しの背景タスク
依存関係インジェクション
延期された実行および再入国ステップ
ループ
REST APIの公開
人間(ユーザー)ワークフロー
テスト
このプロジェクトはMITライセンスに基づいてライセンスされています - 詳細については、license.mdファイルを参照してください