2017-09-26 2 views
1

DDD에서 Aggregate Root를 삭제하면 Aggregate 경계 내의 모든 것을 모두 제거해야한다는 것을 알고 있습니다. DDD에서 여러 개의 집계를 삭제하는 방법은 무엇입니까?

하지만이 제품 집계 루트를 삭제하려면 애자일의 예에서 본이 버논 https://vaughnvernon.co/?p=838 여기를 주신 BackLogItem 및 제품 집계는 별도의 집계와 BackLogItem 집계 루트 Id.So에 의해 제품 집계 루트를 참조하고 존재하는

BackLogItem을 삭제해야한다는 의미는 아니겠습니까?

내 질문에 DDD에서 여러 집계를 삭제하는 방법, 그렇다면 도메인 서비스, 도메인 이벤트 등을 사용하여 가능합니까?

P.S

우리가 동일한 트랜잭션에서 하나 이상의 집계를 수정해서는 안 본이 버논에 따라서는 (어떤 경우에는 우리는 최종 일관성을 사용하도록 강요).

답변

1

여러 집계에 분산 된 동작의 일반적인 메커니즘은 프로세스 관리자을 사용하는 것입니다.

나는이 문제의 핵심에 실제로 도달하기 때문에 Rinat's writeup부터 시작하는 것이 좋습니다. 프로세스 관리자는 다른 집계에 명령을 보내 이벤트에 반응하는 인간의 입장에 서 있습니다.

  • 는 아, 제품
  • 내가 그 제품을
  • 를 참조하는 BackLogItems의 목록을로드하면 다시

를 그들 각각을 제거해야합니다 제거 봐 당신의 제품에서 구별 된 집계에 속한 등 로그 항목의 모델링이 올 바르면 다시 로그 항목에 대한 변경 사항을 제품 변경과 시간적으로 구분할 수 있습니다.

또한 Udi Dahan : Don't Delete -- Just Don't을 참조하십시오.

+1

DDD를 사용하는 프로세스 관리자에게 C#을 사용하여 구현을 제공해 주시겠습니까? 프로세스 관리자는 CQRS/ES의 동일한 개념을 적용합니다. –

관련 문제