CQRS - como modelar um sistema de execução de cenário

Recentemente, comecei a investigar o CQRS e o DDD para um projeto de campo verde que estou prestes a iniciar. Estudei bastante material de Udi Dahan, Greg Young, Mark Nijhof e outros. Estes foram realmente muito úteis e acho que tenho uma boa compreensão dos conceitos. Mas, ainda existem certas perguntas em minha mente sobre como posso aplicá-las ao meu próprio domínio.

Meu sistema será basicamente um mecanismo de regras complexo - no qual as regras ditarão o preço final de determinados produtos. As definições e regras do produto serão inseridas no sistema pelos administradores. As regras serão projetadas pelos administradores usando um conjunto predefinido de propriedades que podem ter valores de um conjunto predefinido, como'Finalidade da compra' (revender, alugar) ou valores de forma livre, comoEra.

Cada produto terá um preço base e as regras basicamente adicionarão / removerão do preço base, se elas se aplicarem.

Uma regra de amostra muito simples pode ser:

Para o produto X, IF (Finalidade da compra = Revender e Idade> 25) Adicione 25 $ ao preço base.

Portanto, existem 2 tipos de usuários que usam o sistema, administradores, que definem os produtos, regras e preços base; e outros usuários que consultam preços com base em um cenário que eles inserem por meio de uma interface hipotética.

Minha confusão aqui é a seguinte: a execução de um cenário não altera o estado do domínio, nenhum outro sistema / pessoa externo está interessado no resultado da execução do cenário, mas o próprio usuário em execução - ele retorna o resultado de um preço cálculo após executar as regras aplicáveis para o cenário especificado. Por exemplo, o usuário pode selecionarProduto X e consultar os preços para um determinado cenário, como(Finalidade da compra = Revender e Idade = 40). Novamente, como essa operação não altera o estado do domínio, acho que é uma consulta. Mas, existe um mecanismo de regras operando no cenário para calcular o preço final, que eu acho que pode ser classificado como lógica de domínio em execução. Então - onde essa lógica pertence? Essa é uma consulta que simplesmente funciona fora do modelo de leitura ou está executando um cenário como um comando que precisa ser executado no modelo de domínio? Novamente, parece que a camada de domínio é o local ideal para essas regras, mas como passar o resultado da execução do cenário para o usuário (parece uma consulta pensando dessa maneira). Ou talvez, o CQRS não seja a solução certa para esse problema em particular?

questionAnswers(2)

yourAnswerToTheQuestion