오늘은 실제 승인 요청이 어떻게 생성되고 상태가 변경되는지를 분석했다.
승인 요청은 ApprovalRequest Entity로 관리된다.
주요 상태는 다음과 같다.
PENDING
APPROVED
REJECTED
처음 승인 요청을 생성하면 PENDING 상태가 된다.
POST /approval/request
↓
ApprovalRequest 생성
↓
PENDING
승인자가 필요한 승인 수를 모두 충족하면
PENDING
↓
APPROVED
가 된다.
거부하면
PENDING
↓
REJECTED
가 된다.
승인 레벨에 따라 필요한 승인 수가 달라진다.
SINGLE_APPROVER → 1명
DUAL_APPROVER → 2명
이 값은 requiredApprovals로 승인 요청에 저장된다.
단순히
boolean approved;
만으로 관리하면 현재 요청이
아직 승인되지 않은 것인지
거부된 것인지
승인이 완료된 것인지
구분하기 어렵다.
현재 프로젝트에서는 상태를 명시적으로 관리함으로써 승인 프로세스의 현재 위치를 표현한다.
승인 시스템처럼 여러 단계가 존재하는 기능에서는 상태(State)를 데이터로 명확하게 모델링하는 것이 중요하다는 것을 배웠다.
또한 Entity의 상태 변화 메서드인
approve()
reject()
를 통해 상태 변경을 Entity의 행동으로 표현하고 있다는 점도 확인했다.