2011-04-06 12 views
10

मैं डेटा-केंद्रित डिजाइन और विकास से डीडीडी में कूदने की कोशिश कर रहा हूं और इवांस और निल्सन पढ़ चुका हूं लेकिन मुझे अभी भी अपने डोमेन लेयर को कैसे व्यवस्थित करना चाहिए, इस बारे में अपने सिर को लपेटने में परेशानी हो रही है । मुझे यकीन है कि मेरी वर्तमान परियोजना की प्रकृति मदद नहीं कर रही है!रियल-वर्ल्ड डीडीडी: डोमेन लेयर का निर्माण

एक छोटी सी पृष्ठभूमि

आवेदन कर्मियों के मूल्यांकन का प्रबंधन करने के लिए एक आंतरिक समाधान है। मानव संसाधन कर्मियों का मूल्यांकन "टेम्पलेट्स" तैयार करेगा जिसमें प्रश्नों का एक समूह शामिल होगा जो टीम की ओर जाता है और प्रबंधकों को उनकी प्रत्येक सीधी रिपोर्ट के लिए पूरा करना होता है। लेखापरीक्षा और समीक्षा के लिए उत्तर जारी रहे हैं। ये आकलन इस तरह के आदि कंपनी की पहल, प्रदर्शन की समीक्षा के लिए प्रतिक्रिया, के रूप में चीजों की एक विस्तृत विविधता के लिए किया जा सकता है

मेरे डेटा केंद्रित पक्ष

नहीं समाधान लेकिन मेरे डेटा केंद्रित पर प्रकाश डाला प्रभावित करने के लिए मानसिकता, मैं पहले से ही डेटाबेस स्कीमा के लिए एक सपना है और इसे यहाँ केवल संदर्भ के लिए शामिल हैं (के बाद से एक तस्वीर का कहना है एक हजार शब्दों के):

enter image description here

स्कीमा सामान्यीकृत हैं के रूप में उम्मीद होगी, और नहीं है मैच कैसे करें डेटा मेरे आवेदन में संभाला जाता है। और, मैंने लुकअप टेबल छोड़ दिया है और कोशिश करने की कोशिश की है और इसे समस्या के लिए कम से कम रखो।

उपयोग के मामलों

पहले उपयोग के मामले को पुनः प्राप्त करने और मूल्यांकन है कि एक उपयोगकर्ता पूरा करने की जरूरत है की एक सूची प्रदर्शित करने के लिए है। यह तब प्रदर्शित होगा जब उपयोगकर्ता पहले एप्लिकेशन में साइन इन करेगा और पहले ऐसा लगता है कि यह अपेक्षाकृत आसान होगा, लेकिन दो झुर्री हैं: 1 - आकलन समय-आधारित होते हैं, इसलिए उन्हें मासिक, वार्षिक या प्रत्येक 'x' की आवश्यकता हो सकती है। कर्मचारी की सालगिरह तिथि के आधार पर वर्षों की संख्या; और, 2 - उपयोगकर्ता एक आकलन में प्रगति को बचा सकते हैं और बाद में उन्हें पूरा कर सकते हैं। नतीजतन, सूची में मूल्यांकन होना चाहिए जो कि देय है और साथ ही साथ प्रगतिशील भी हो।

अगला, जब उपयोगकर्ता प्रदर्शन करने के लिए मूल्यांकन का चयन करता है, तो मुझे उस मूल्यांकन (वर्तमान संस्करण) के सभी प्रश्नों को पुनर्प्राप्त करने की आवश्यकता होती है ताकि मैं उन्हें उपयोगकर्ता को प्रदर्शित कर सकूं। मूल्यांकन के दौरान किसी भी समय, उपयोगकर्ता वर्तमान परिणामों को बचा सकता है। पूरे मूल्यांकन पूरा होने के बाद ही यह वास्तव में 'सबमिट' किया जा सकता है - या प्रतिबद्ध।

तीसरा, एचआर पर्यवेक्षक द्वारा प्रदान किए गए प्रतिक्रियाओं के साथ मूल्यांकन को फिर से उत्पन्न करने का एक तरीका चाहिए।

अंत में, एचआर आकलन बनाने और संशोधित करने में सक्षम है - और वे संस्करणित हैं। इसलिए जब भी कोई मूल्यांकन को संशोधित करता है, तो एक नया संस्करण बनाया जाता है और वह किसी भी नए आकलन के लिए टेम्पलेट बन जाता है (कोई भी प्रगति आकलन उनके मूल टेम्पलेट का उपयोग जारी रखता है)।

डोमेन मॉडल

आदेश से बाहर काम करते हुए, यह मेरे लिए समझ में आता है कि मैं एक आकलन इकाई चौथे उपयोग के मामले को पूरा करने के एक सकल रूट है कि होगा। इसमें धारा इकाइयों का एक बाल संग्रह होगा जो बदले में प्रश्न संस्थाओं का एक बाल संग्रह होगा। वे सभी संस्थाएं हैं क्योंकि उनके पास पहचान है (हाँ?)। आकलन वह वस्तु है जो दृढ़ता, सत्यापन, आदि के लिए कोड उपयोग का उपभोग करती है (हालांकि अनुभाग और प्रश्न संस्थाएं स्वयं को मान्य करती हैं और रूट आकलन के लिए स्थिति को रोल-अप करती हैं)।मेरा लक्ष्य उपभोक्ता से वर्जनिंग सार बनाना है और इसे डेटा पर्सिस्टेंस लेयर (अच्छा या बुरा विचार?) में लागू करना है

इसका मतलब है कि मेरे पास एक आकलन रिपोजिटरी भी होगी जो मेरे लिए और संभवतः एक आकलन फैक्ट्री के लिए दृढ़ता से निपटती है जो आवश्यक होने पर एक नया आकलन बनाता है।

बड़ा मुद्दा अन्य उपयोग मामलों के साथ आता है। क्या मेरे पास एक कर्मचारी एसेसमेंट रूट रूट भी है? या यह बस एक इकाई है?

उपयोग के मामलों को देखते हुए, मुझे इस जानकारी का दो तरीकों से उपयोग करने की आवश्यकता है। सबसे पहले, जब मैं उपयोगकर्ता को प्रदर्शित करने के लिए आकलन की सूची उत्पन्न कर रहा हूं, तो मुझे मूल्यांकन आवृत्ति के खिलाफ प्रत्यक्ष रिपोर्ट की सूची का मूल्यांकन न करना होगा, लेकिन मुझे यह भी जानना होगा कि क्या मैंने पहले ही शुरू कर लिया है और/या मूल्यांकन पूरा कर लिया है या नहीं उस कर्मचारी के लिए। और यह कर्मचारी स्वीकृति तालिका से आता है। दूसरा मामला तब होता है जब कोई उपयोगकर्ता वास्तव में मूल्यांकन करता है, इस मामले में, मैं कर्मचारी आकलन और प्रतिक्रिया तालिकाओं के साथ बातचीत कर रहा हूं।

यूआई परिप्रेक्ष्य से, जब कोई उपयोगकर्ता मूल्यांकन कर रहा है, तो वे आंतरिक डेटा संरचना आदि के बारे में कुछ भी नहीं जानते हैं। मुझे उस मूल्यांकन के लिए प्रश्नों की सूची के साथ UI की आपूर्ति करने की आवश्यकता है ताकि प्रतिक्रियाओं की सूची प्रदर्शित हो और स्वीकार किया जा सके। कायम रहना। क्या यह भंडार, इत्यादि के साथ दूसरी रूट की ओर जाता है?

तीसरा उपयोग केस इसी तरह है कि एचआर बाद की तारीख में प्रतिक्रियाओं के साथ मूल्यांकन को फिर से उत्पन्न करने में सक्षम होना चाहता है। हालांकि, मैं मूल्यांकन कर रहा हूं कि मूल्यांकन करने के दौरान उपयोग की जाने वाली एक ही प्रक्रिया का उपयोग यहां किया जा सकता है क्योंकि मौजूदा मूल्यांकन को फिर से शुरू करने के लिए एक ही डेटा की आवश्यकता होती है जिसमें एचआर के लिए केवल पढ़ने के लिए पढ़ने/लिखने की क्षमता को पढ़ा जा सकता है।

इसे पहले से लपेटें!

ठीक है, मैंने पर्याप्त रूप से रैंप किया है और लगता है कि मैंने कोब जाल के अपने सिर को साफ़ कर दिया है। मैं किसी भी दिशा, सुझाव, आलोचना इत्यादि की सराहना करता हूं। जैसा कि मैंने कहा, मैं कूदने की सोच रहा हूं और सोचता हूं कि मैं अवधारणाओं को समझता हूं, अब यह उन्हें लागू करने का मामला है। धन्यवाद!!!

उत्तर

5

मैंने कुछ साल पहले खुद को एक ही कूद बना दिया था। अब मैं वर्तमान में सादे वेनिला डीडीडी से सीक्यूआरएस तक कूद रहा हूं (cqrsinfo.com/ देखें)।

मैं इस सीक्यूआरएस तरीके से संपर्क करता हूं यानी इवेंट स्टोर का उपयोग करता हूं और आर्किटेक्चरल स्तर पर लिखने से पूरी तरह अलग पढ़ता हूं। हालांकि मुझे लगता है कि आपके द्वारा संदर्भित प्रश्न सादे वेनिला डीडीडी तरीके से अधिक इनलाइन है - इसलिए मैं इस संदर्भ में इसका उत्तर दूंगा।

आपको "डेटा संचालित" सोचने से खुद को पूरी तरह से मुक्त करने की आवश्यकता है। प्राथमिक वर्कफ़्लो के साथ शुरू करें। पहला और तीसरा उपयोग अनिवार्य रूप से केवल संचालन प्राप्त कर रहे हैं। मैं सबसे पहले उन मामलों के मामलों पर ध्यान केंद्रित करूंगा जहां कुल जड़ों की स्थिति बदल दी गई है। तो केस 2 का उपयोग करें यानी "आकलन करें" शुरू करने के लिए एक अच्छी जगह होगी।

  • जैसा कि आपने सही ढंग से बताया है, कुल रूट आकलन होगा। एक "PerformAssessmentService" वर्ग बनाया जा सकता है (एक डोमेन सेवा के बराबर) और आपका प्रदर्शन मूल्यांकन वर्कफ़्लो यहां मौजूद होगा। यह वर्कफ़्लो पूरी तरह से परीक्षण के तहत होगा जहां रिपोजिटरी जैसी सभी निर्भरताओं को आसानी से बाहर कर दिया जाता है।

  • आप किसी भी ठोस डेटाबेस/यूआई कार्यान्वयन आदि के बिना पूरे प्रदर्शन मूल्यांकन वर्कफ़्लो को लिखना समाप्त कर सकते हैं।इस डोमेन सेवा में सभी व्यावसायिक तर्कों को व्यवस्थित किया गया है और सभी तर्क आपकी आकलन इकाई और अन्य संबंधित संस्थाओं में मौजूद हैं। अगले उपयोग के मामले पर

  • ले जाएँ - हो सकता है का उपयोग मामले 4 - आकलन को संशोधित (फिर से ऊपर के रूप में भी ऐसा ही)

  • इस तरह के खजाने/डेटाबेस, यूआई आदि के रूप में परिधीय बातें छोड़ दो के रूप में में देर से संभव के रूप में जब तक अपने कार्यान्वयन। पहले अपने डोमेन में सभी व्यापार तर्क बंद करने के लिए यह महत्वपूर्ण है - और फिर डोमेन से आपकी परिधीय चिंताओं ड्राइव - इसके बहुत सस्ता/अधिक कुशल (मेरे अनुभव में)

नोट वहाँ करने के लिए कोई सही तरीका है कि ऐसा करें, यह सिर्फ एक सारांश है कि सामान्य रूप से मैं उपर्युक्त परियोजना से कैसे संपर्क करूंगा। यहां कुंजी यह है कि डोमेन वास्तव में लागू होने वाली हर चीज के पीछे ड्राइवर है ...

+0

ठीक है, मैं तुम्हारे साथ हूँ। आइए पहले उपयोग के मामले पर ध्यान दें जहां मुझे मौजूदा उपयोगकर्ता के लिए आकलन या प्रगति की आकलन की आवश्यकता है। मैं इस बात को हल करने के लिए संघर्ष कर रहा हूं कि यह मूल्यांकन करने के लिए कितना तर्क है कि मूल्यांकन शामिल है, डोमेन लेयर बनाम एसक्यूएल में आसानी से किया जा सकता है। क्या मैं वास्तव में आकलन डोमेन ऑब्जेक्ट को आकलन वर्जन ऑब्जेक्ट्स की एक सूची रखना चाहता हूं और क्या मेरा विशिष्टता वर्ग एक अभिव्यक्ति बनाता है जो "मूल्यांकन। संस्करण" का उपयोग करता है ताकि सभी तर्क कोड में हों? – SonOfPirate

+0

प्लस, यह मेरा विचार है कि मेरे पास एक आकलन सेवा होगी जो ListMyDueAssessments() विधि का खुलासा करती है जो MyDueAssessmentSpecification क्लास का एक उदाहरण बनाता है और इसे मूल्यांकन रेजोजिटरी में भेजता है। ढूँढें (spec) विधि। खोजें() आकलन वस्तुओं की एक सूची देता है जो स्पेक क्लास द्वारा प्रदान किए गए अभिव्यक्ति को पूरा करता है। क्या मैं सही रास्ते पर हूं? एक आकलन इंफॉर्म क्लास लौटने के बारे में क्या है जो अधिक हल्का, चमकीला संस्करण है, क्या यह डीडीडी के साथ संगत है? – SonOfPirate

0

मैं एक त्वरित और गंदे प्रोटोटाइप के साथ शुरू करूंगा जो मेमोरी रिपॉजिटरीज़ का उपयोग करता है। फिर यदि आप सही रास्ते पर जा रहे हैं तो आपको एक बेहतर विचार मिलेगा।

+0

दुर्भाग्यवश, मैं जो कर रहा हूं, वह वास्तव में इन प्रश्नों का कारण बन गया है। क्या आप समझा सकते हैं कि आपने रिपॉजिटरीज़ पर क्यों चाबी लगाई? – SonOfPirate

संबंधित मुद्दे