실제 사례의 승인 워크플로우 구현: Meridian 사용 (제2부)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
.NET 8 및 Meridian Workflow 사용자, 승인 시스템 개발자, 워크플로우 엔진 구현자
난이도: 중급~고급 (Fluent API 및 상태 전이 구현 필요)
핵심 요약
- Meridian Workflow를 사용해 .NET 8 기반의 휴가 요청 승인 워크플로우를 Fluent API만으로 구현 (템플릿/확장 없음)
- 상태 전이 조건(
Days > 15
기준)과 Hook 기반 로깅/알림(SendNotification
)을 사용한 다중 역할 워크플로우 설계 - REST API(
CreateRequest
,DoAction
,GetRequest
)를 통해 프론트엔드 통합 가능
섹션별 세부 요약
1. 워크플로우 엔진 개요
- Meridian Workflow는 type-safe한 .NET 8 워크플로우 엔진으로, 템플릿 없이 Fluent API로만 정의 가능
- IWorkflowData 인터페이스를 구현한
LeaveRequestData
클래스는 휴가 요청 데이터를 저장 IWorkflowHook
을 구현한NewLeaveRequestCreated
,SendNotification
은 이벤트 기반 로깅 및 알림 수행
2. 워크플로우 정의
- 상태 전이 조건 적용:
- Days > 15
조건으로 Supervisor → Section Head 전이
- Reason
필드 유효성 검사(IWorkflowHook
사용)
- 상태별 역할 할당:
- UnderDirectManagerReview
→ supervisor
- UnderSectionHeadReview
→ sectionHead
- UnderHRReview
→ hr
3. REST API 구현
- /create 엔드포인트:
IWorkflowService
로 요청 생성.CreateRequestAsync() - /action/{action}/{id} 엔드포인트:
DoActionAsync()
로 상태 전이 처리 - /request/{id} 엔드포인트:
GetRequestAsync()
로 요청 조회 - /tasks 엔드포인트:
GetUserTasksAsync()
로 사용자 작업 목록 제공
결론
- Meridian Workflow의 Fluent API를 통해 확장 가능한 워크플로우 구현 가능
- Part 3에서는
TemplateExtensions
활용한 DRY 설계, 파일 첨부 기능, 중심화된 검증/호크 관리 추가 예정 - 템플릿 기반 설계 vs. Fluent API 직접 구현에 대한 피드백 요청