2012-01-06 2 views
8

내가 본 CQRS의 모든 예에서 도메인 이벤트는 읽기 모델에 대한 업데이트를 트리거하지만 다른 것은 트리거하지 않습니다. 그러나 도메인 이벤트로 인해 도메인에서 다른 변경 사항이 발생하도록하려면 어떻게해야합니까? 예를 들어CQRS의 다른 도메인 변경을 유발하는 도메인 이벤트

, 당신은 다음과 같은 요구 사항이 가정

"닫기 계정"버튼을 클릭
  • , 계정, 계정 계정이 떨어져 지불하고 살만한있다
  • 을 닫기
  • 때 계정이 폐쇄되어 계정 소유자를 '특별'으로 표시하십시오.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

  1. Account.Close을 확인()
  2. 는 AccountClosed 처리기를 확인 "특별한"로 소유자를 표시 AccountClosed 핸들러를 확인 "특별한"로 소유자를 마크 AccountClosed 이벤트를 만드는 것이

답변

9

특정 C가있다 또한 계정을 폐쇄 "특별한"로 계정 소유자를 표시하는 명령 핸들러를 저지르는 MarkOwnerAsSpecial 명령

  • 제출 이 정확히 목적으로 Sagas라고하는 oncept. Rinat Abdullin이이 기사부터 시작한 다음 거기에서부터 시작하십시오.

    http://abdullin.squarespace.com/journal/2010/9/26/theory-of-cqrs-command-handlers-sagas-ars-and-event-subscrip.html

    귀하의 옵션 3이 개념에 가까운 온다. 무용담은 기본적으로 새로운 명령을 발행하는 이벤트 처리기입니다. 이벤트에서 발생하는 집계를 처리하지 않고 이벤트를 처리하고 비즈니스 규칙에 따라 새 명령을 제출하는 것이 바람직합니다. 이것이 사가가하는 것입니다.

  • +0

    이전에 읽었지만 너무 추상적이어서 무용담이 기본적으로 사건을 명령으로 바꾸는 방법을 얻지 못했습니다. 나는 그것을 설명하고 코드 샘플을 가지고있는 또 다른 두 편의 기사를 발견했다. http://blog.jonathanoliver.com/2010/09/cqrs-sagas-with-event-sourcing-part-i-of-ii/ –

    +0

    @TrystanSpangler 해당 링크는 404를 제공하며 http : //로 이전 된 것처럼 보입니다. /blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-i-of-ii/ – Melle

    관련 문제