createOrder()는 정적 팩토리 메서드 Order.createOrder()를 호출하여 Order를 생성한 후, JPA 기반 리포지터리 OrderRepository로 Order를 저장합니다. 그리고 새로 저장된 Order 및 OrderDetails의 ID가 포함된 CreateOrderSagaState를 SagaManager.create()에 넘겨 CreateOrderSaga를 생성합니다. SagaManager가 사가 오케스트레이터 인스턴스를 생성하면, 곧바로 첫 번째 사가 참여자에게 커맨드 메시지가 전달되고 사가 오케스트레이터를 DB에 저장합니다.
그림 4-11은 CreateOrderSaga 및 관련 클래스들입니다.
▲ 그림 4-11 이벤추에이트 트램 사가 프레임워크로 구현한 Orderservice 사가