Coreflow Core هو محرك عمل خفيفة الوزن قابلة للتضمين يستهدف. NET Standard. فكر: عمليات طويلة المدى مع مهام متعددة تحتاج إلى تتبع الحالة. وهو يدعم مثابرة وتوافق مع مقدمي التزامن للسماح بمجموعات متعددة العقدة.
الموصل هو خادم سير عمل مستقل بدلاً من المكتبة التي تستخدم سير العمل الأساسية داخليًا. إنه يعرض واجهة برمجة تطبيقات تتيح لك تخزين تعريفات سير العمل وتتبع تشغيل سير العمل وإدارة الأحداث وتحديد الخطوات المخصصة والبرامج النصية للاستخدام في سير العمل الخاص بك.
https://github.com/danielgerlag/conductor
انظر البرنامج التعليمي هنا.
حدد سير العمل الخاص بك باستخدام واجهة برمجة تطبيقات بطلاقة.
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 منفصلة.
يمكن توصيل مزود فهرس البحث إلى Coreflow Core ، مما يتيح لك فهرسة سير العمل والبحث ضد البيانات وحالتها. هذه متوفرة أيضا كحزم nuget منفصلة.
مرحبا بالعالم
نتائج متعددة
تمرير البيانات
موازي foreach
مزامنة foreach
بينما حلقة
إذا كان البيان
الأحداث
عمال النشاط
مهام موازية
معاملات SAGA (مع التعويض)
مهام الخلفية المجدولة
مهام الخلفية المتكررة
حقن التبعية
خطوات التنفيذ المؤجلة وإعادة إدخالها
حلقات
كشف واجهة برمجة تطبيقات REST
سير العمل البشري (المستخدم)
الاختبار
تم ترخيص هذا المشروع بموجب ترخيص معهد ماساتشوستس للتكنولوجيا - راجع ملف الترخيص.