2012-01-06 13 views
8

में अन्य डोमेन परिवर्तनों को ट्रिगर करती हैं, मैंने देखा है कि सीक्यूआरएस के सभी उदाहरणों में, डोमेन ईवेंट पढ़ने वाले मॉडल के अपडेट को ट्रिगर करते हैं लेकिन कुछ भी नहीं। लेकिन जब आप किसी डोमेन ईवेंट को डोमेन में अन्य परिवर्तनों के कारण चाहते हैं तो क्या होगा?डोमेन घटनाएं जो सीक्यूआरएस

उदाहरण के लिए, मान लें कि आपके नीचे दी गई आवश्यकताएं:

  • जब "बंद खाता" बटन क्लिक किया जाता है, खाता
  • जब खाता बंद भुगतान किया जाता है, खाता बंद बंद
  • जब खाता बंद है, खाता स्वामी को "विशेष"

इसे संभालने का सबसे अच्छा तरीका क्या है?

  1. Account.Close करें() एक AccountClosed घटना बनाने और भी रूप में "विशेष" मालिक निशान
  2. एक AccountClosed हैंडलर कि के रूप में "विशेष"
  3. एक AccountClosed हैंडलर बनाने के मालिक के निशान करें कि एक MarkOwnerAsSpecial आदेश
  4. प्रस्तुत आदेश संचालकों कि भी खाते को बंद के रूप में "विशेष" खाते के मालिक को चिह्नित

उत्तर

9

एक विशिष्ट ग नहीं है बनाओ इस सटीक उद्देश्य के लिए सागा कहा जाता है। इस लेख के साथ रिनत अब्दुलिन द्वारा शुरू करें, फिर वहां से जाएं।

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

आपका विकल्प 3 इस अवधारणा के करीब आता है। एक गाथा मूल रूप से एक ईवेंट हैंडलर है जो नए आदेश जारी करती है। आप एक घटना को बाहर निकालने के बाहर समेकित नहीं करना चाहते हैं बल्कि ईवेंट को संभालने और अपने व्यवसाय नियमों के अनुसार नए आदेश सबमिट करना नहीं चाहते हैं। यह गाथा क्या करेगा।

+0

मैंने इसे पहले पढ़ा है लेकिन यह इतना सार था कि मुझे नहीं पता था कि कैसे सागा मूल रूप से घटनाओं को कमांड में बदल देते हैं। मुझे एक और 2 भाग लेख मिला जो बताता है कि इसमें कोड नमूने हैं। 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