Inti alur kerja adalah mesin alur kerja yang dapat disematkan dengan bobot ringan. NET Standard. Pikirkan: proses berjalan lama dengan banyak tugas yang perlu melacak status. Ini mendukung penyedia kegigihan dan konkurensi pluggable untuk memungkinkan kelompok multi-node.
Konduktor adalah server alur kerja yang berdiri sendiri yang bertentangan dengan perpustakaan yang menggunakan inti alur kerja secara internal. Ini memperlihatkan API yang memungkinkan Anda untuk menyimpan definisi alur kerja, melacak alur kerja yang berjalan, mengelola acara dan menentukan langkah dan skrip khusus untuk penggunaan dalam alur kerja Anda.
https://github.com/danielgerlag/conductor
Lihat tutorial di sini.
Tentukan alur kerja Anda dengan API yang fasih.
public class MyWorkflow : IWorkflow
{
public void Build ( IWorkflowBuilder < MyData > builder )
{
builder
. StartWith < Task1 > ( )
. Then < Task2 > ( )
. Then < Task3 > ( ) ;
}
} Tentukan alur kerja Anda di JSON atau YAML, perlu menginstal 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 > ( ) ; Karena alur kerja biasanya merupakan proses berjalan yang lama, mereka perlu bertahan untuk penyimpanan di antara langkah -langkah. Ada beberapa penyedia kegigihan yang tersedia sebagai paket nuget terpisah.
Penyedia indeks pencarian dapat dicolokkan ke inti alur kerja, memungkinkan Anda untuk mengindeks alur kerja dan mencari data dan keadaannya. Ini juga tersedia sebagai paket nuget terpisah.
Halo dunia
Banyak hasil
Lulus data
Foreach paralel
Sinkronisasi Foreach
Saat loop
Jika pernyataan
Acara
Pekerja aktivitas
Tugas paralel
Transaksi saga (dengan kompensasi)
Tugas latar belakang yang dijadwalkan
Tugas latar belakang berulang
Injeksi ketergantungan
Eksekusi yang Ditangguhkan & Langkah-langkah masuk kembali
Looping
Mengekspos API REST
Alur kerja manusia (pengguna)
Pengujian
Proyek ini dilisensikan di bawah lisensi MIT - lihat file lisensi.md untuk detailnya