워크 플로 코어는 .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 동기화
루프 중
IF 문
이벤트
활동 노동자
병렬 작업
사가 거래 (보상 포함)
예정된 배경 작업
반복되는 배경 작업
의존성 주입
지연된 실행 및 재진입 단계
루핑
REST API를 노출시킵니다
휴먼 (사용자) 워크 플로
테스트
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 License.md 파일을 참조하십시오.