मैंने हाल ही में एक ग्रीन फील्ड प्रोजेक्ट के लिए सीक्यूआरएस और डीडीडी की जांच शुरू की है जिसे मैं शुरू करने वाला हूं। मैंने उडी दहन, ग्रेग यंग, मार्क निजोफ और अन्य लोगों से बहुत सारी सामग्री का अध्ययन किया। ये वास्तव में बहुत उपयोगी थे और मुझे लगता है कि मुझे अवधारणाओं की अच्छी समझ है। लेकिन, मेरे दिमाग पर अभी भी कुछ प्रश्न हैं कि मैं इन्हें अपने डोमेन पर कैसे लागू कर सकता हूं।सीक्यूआरएस - एक परिदृश्य निष्पादन प्रणाली का मॉडल कैसे करें
मेरा सिस्टम मूल रूप से एक जटिल नियम इंजन होगा - जिसमें नियम कुछ उत्पादों के अंतिम मूल्य को निर्देशित करेंगे। उत्पाद परिभाषाओं और नियमों को प्रशासकों द्वारा सिस्टम में प्रवेश किया जाएगा। नियमों को पूर्वनिर्धारित सेट गुणों का उपयोग करके प्रशासकों द्वारा डिज़ाइन किया जाएगा, जिनमें 'खरीद का उद्देश्य' (पुनर्विक्रय, किराया) या आयु जैसे मान पूर्व निर्धारित मानों से मूल्य हो सकते हैं।
प्रत्येक उत्पाद का मूल मूल्य होगा, और नियम लागू होने पर मूल मूल्य मूल रूप से जोड़/हटा देंगे।
एक बहुत ही सरल नमूना नियम हो सकता है:
उत्पाद एक्स के लिए, यदि (क्रय उद्देश्य = पुनर्विक्रय और आयु> 25) आधार मूल्य 25 $ जोड़ें।
तो ऐसे 2 प्रकार के उपयोगकर्ता हैं जो सिस्टम, प्रशासकों का उपयोग करते हैं, जो उत्पादों, नियमों और आधारभूत कीमतों को परिभाषित करते हैं; और अन्य उपयोगकर्ता जो परिदृश्य पर आधारित परिदृश्य के आधार पर क्वेरी करते हैं, जो वे यूआई के माध्यम से दर्ज करते हैं।
मेरा भ्रम यहां है: परिदृश्य चलाने से डोमेन की स्थिति में कोई बदलाव नहीं आता है, परिदृश्य निष्पादन के परिणामस्वरूप कोई बाहरी बाहरी प्रणाली/व्यक्ति दिलचस्पी नहीं लेता है, लेकिन चल रहे उपयोगकर्ता स्वयं - यह लौटाता है दिए गए परिदृश्य के लिए लागू नियमों को चलाने के बाद मूल्य गणना का नतीजा। उदाहरण के लिए, उपयोगकर्ता उत्पाद X का चयन कर सकते हैं और किसी दिए गए परिदृश्य के लिए मूल्य निर्धारण कर सकते हैं, जैसे (खरीद उद्देश्य = पुनर्विक्रय और आयु = 40)। दोबारा, चूंकि यह ऑपरेशन डोमेन स्थिति को बिल्कुल नहीं बदलता है, मुझे लगता है कि यह एक प्रश्न है। लेकिन, अंतिम मूल्य की गणना करने के लिए परिदृश्य पर एक नियम इंजन चल रहा है, जो मुझे लगता है कि डोमेन तर्क चलाने के रूप में वर्गीकृत किया जा सकता है। तो - यह तर्क कहां से संबंधित है? क्या यह एक प्रश्न है जो सिर्फ पढ़ने वाले मॉडल से काम करता है, या एक परिदृश्य चला रहा है जिसे डोमेन मॉडल में चलाने की आवश्यकता है? दोबारा, ऐसा लगता है कि डोमेन लेयर इन नियमों के लिए जगह है, लेकिन फिर मैं उपयोगकर्ता को परिदृश्य निष्पादन के परिणाम को कैसे पास करूं (ऐसा लगता है कि इस तरह से सोचने वाली क्वेरी की तरह)। या शायद, सीक्यूआरएस इस विशेष समस्या का सही समाधान नहीं है?
+1 मुझे यह बताने के लिए कि एक [cqrs] (http://blog.fossmo.net/post/Command-and-Query- उत्तरदायित्व- पृथक्करण-%28CQRS%29.aspx) पैटर्न मैंने कभी नहीं देखा पहले। – k3b