เวิร์กโฟลว์คอร์เป็นเครื่องยนต์เวิร์กโฟลว์ที่ฝังได้น้ำหนักเบากำหนดเป้าหมายมาตรฐาน. NET คิดว่า: กระบวนการทำงานที่ยาวนานพร้อมงานหลายอย่างที่ต้องติดตามสถานะ รองรับผู้ให้บริการการคงอยู่และผู้ให้บริการพร้อมกันเพื่ออนุญาตให้มีกลุ่มหลายโหนด
ตัวนำเป็นเซิร์ฟเวอร์เวิร์กโฟลว์แบบสแตนด์อโลนซึ่งตรงข้ามกับไลบรารีที่ใช้เวิร์กโฟลว์คอร์ภายใน มันเผยให้เห็น API ที่ช่วยให้คุณสามารถจัดเก็บคำจำกัดความเวิร์กโฟลว์ติดตามเวิร์กโฟลว์การทำงานจัดการกิจกรรมและกำหนดขั้นตอนและสคริปต์ที่กำหนดเองสำหรับการใช้งานในเวิร์กโฟลว์ของคุณ
https://github.com/danielgerlag/conductor
ดูการสอนที่นี่
กำหนดเวิร์กโฟลว์ของคุณด้วย 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 แยกต่างหาก
สวัสดีโลก
ผลลัพธ์หลายอย่าง
ผ่านข้อมูล
ขนานกัน
ซิงค์ foreach
ในขณะที่ลูป
ถ้าแถลงการณ์
เหตุการณ์
พนักงานทำกิจกรรม
งานขนาน
ธุรกรรม SAGA (พร้อมค่าตอบแทน)
งานพื้นหลังที่กำหนด
งานพื้นหลังที่เกิดขึ้นซ้ำ
การฉีดพึ่งพา
ขั้นตอนการดำเนินการรอการตัดบัญชีและขั้นตอนใหม่
การวนรอบ
การเปิดเผย API ที่เหลือ
เวิร์กโฟลว์มนุษย์ (ผู้ใช้)
การทดสอบ
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT - ดูไฟล์ License.md สำหรับรายละเอียด