航空予約アプリケーションで CQRS を使用しています。ユースケースの 1 つは、顧客がチケットをキャンセルするのを支援することです。しかし、実際のキャンセルの前に、顧客は違約金を知りたがっています。
ペナルティは、航空規則に基づいて計算されます。私たちのプロバイダーの中には、Web サービスを公開することでペナルティを計算できるものもあれば、そうでないものもあります。(代わりに、アルゴリズムを説明する論文を公開しています)。だから私はドメインサービスを定義します
public interface AirTicketService {
//ticket demand method
MonetaryAmount penalty(String ticketNumber);
void cancel(String ticketNumber, MonetaryAmount penalty);
}
私の質問は、このドメイン サービスを呼び出し、CQRS スタイルのアプリケーションで結果を返すのはどちらの側 (コマンド/クエリ) ですか?
コマンド: CalculatePenlatyCommand を使用したいのですが、このようにドメイン モデルを再利用するのは簡単ですが、このコマンドは状態を変更しないため、少し奇妙です。
または、これがクエリの場合、チケットの readmodel を取得する必要がありますか? しかし、コマンド側とクエリ側の両方で同じ DomainService が必要です。これも奇妙です。
ドメイン派生はクエリですか?