Я использую CQRS в приложении для бронирования авиабилетов. один из вариантов использования - помочь покупателю отменить билеты. Но перед фактической отменой заказчик хочет знать штраф.
Штраф рассчитывается на основании авиационных правил. Некоторые из наших провайдеров могут рассчитать штраф, выставив веб-сервис, а другие этого не делают. (Вместо этого они публикуют какую-то статью, объясняющую алгоритм). Итак, я определяю доменную службу
public interface AirTicketService {
//ticket demand method
MonetaryAmount penalty(String ticketNumber);
void cancel(String ticketNumber, MonetaryAmount penalty);
}
У меня вопрос, какая сторона (команда / запрос) отвечает за вызов этой службы домена и возврат результата в приложении в стиле CQRS?
Я хочу использовать команду: CalculatePenlatyCommand. Таким образом, легко повторно использовать модель предметной области, но это немного странно, потому что эта команда не изменяет состояние.
Или мне следует получить читаемую модель билета, если это запрос? Но один и тот же DomainService необходим как на стороне команды, так и на стороне запроса, это тоже странно.
Является ли создание домена запросом?