다음은 acceptOrder() 시스템 작업의 명세입니다.
작업 |
acceptOrder(restaurantId, orderId, readyByTime) |
반환값 |
- |
선행 조건 |
• order.status는 PENDING_ACCEPTANCE다. • 배달원은 주문을 배달할 수 있다. |
후행 조건 |
• order.status는 ACCEPTED로 변경되었다. • order.readyByTime은 readyByTime으로 변경되었다. • 주문을 배달할 배달원이 배정되었다. |
선행/후행 조건을 보니 사용자 시나리오가 잘 반영되어 있습니다.
데이터를 가져오는 쿼리도 중요하지만 아키텍처와 연관된 시스템 작업은 대부분 커맨드입니다.
FTGO 애플리케이션은 커맨드 외에도 사용자가 의사 결정을 하는 데 필요한 정보를 UI에 제공하는 쿼리를 제공해야 합니다. 지금은 특정한 UI 설계를 고려할 단계는 아니지만, 가령 소비자가 주문을 하는 과정을 떠올려 보면 이렇습니다.
1. 사용자는 배달 주소 및 시간을 입력합니다.
2. 시스템은 배달 가능한 음식점을 표시합니다.
3. 사용자는 음식점을 고릅니다.
4. 시스템은 메뉴를 표시합니다.
5. 사용자는 원하는 메뉴를 선택한 후 체크아웃합니다.
6. 시스템은 주문을 생성합니다.