वास्तव में "व्यावसायिक तर्क" क्या है?


115

मैं 2009 से वेब विकास के साथ काम कर रहा हूं, जब मैंने PHP के साथ शुरुआत की। जब मैं ASP.NET में स्थानांतरित हुआ तो मैंने DDD और OOAD के बारे में बहुत सुना है जहाँ इस "व्यावसायिक तर्क" और "व्यावसायिक नियमों" पर बहुत ध्यान दिया जाता है। मुद्दा यह है कि मैंने अब तक जितने भी ऐप विकसित किए हैं, वे सभी CRUD ऑपरेशंस के बारे में थे और मैंने कभी इन चीजों को प्रैक्टिस में नहीं देखा।

मैं बस कल्पना नहीं कर सकता कि वास्तव में वे चीजें क्या हो सकती हैं। तो, वास्तव में यह व्यावसायिक तर्क क्या है और यह एक ऐप में कैसे फिट बैठता है? मुझे पता है कि ये डोमेन मॉडल में विधियों के रूप में कार्यान्वित किए जाते हैं, लेकिन वे तरीके संभवतः क्या हो सकते हैं, और आवेदन में वे संभवतः कहां उपयोग किए जा सकते हैं?

जवाबों:


107

CRUD एक ऐसा संक्षिप्त नाम है जो Create, Read, Update और Delete के लिए है। वे चार बुनियादी ऑपरेशन हैं जो आप डेटाबेस टपल पर कर सकते हैं लेकिन डेटाबेस रिकॉर्ड बनाने, पढ़ने, अपडेट करने और हटाने की तुलना में व्यावसायिक अनुप्रयोगों में हमेशा अधिक होता है।

आइए कुछ बुनियादी परिभाषाओं के साथ शुरू करें, और फिर कुछ उदाहरण देखें और देखें कि वे परिभाषाएँ उदाहरणों के लिए कैसे मैप करती हैं, और वे वास्तविक सॉफ़्टवेयर में कैसे मैप करती हैं।

व्यावसायिक तर्क या डोमेन लॉजिक प्रोग्राम का वह हिस्सा है जो वास्तविक-विश्व व्यापार नियमों को एन्कोड करता है जो यह निर्धारित करते हैं कि डेटा कैसे बनाया, संग्रहीत और परिवर्तित किया जा सकता है। यह निर्धारित करता है कि व्यावसायिक वस्तुएं एक-दूसरे से कैसे संपर्क करती हैं, और उन मार्गों और तरीकों को लागू करती हैं जिनके द्वारा व्यावसायिक वस्तुओं तक पहुंच और अद्यतन किया जाता है।

व्यावसायिक नियम एक संगठन पर लागू होने वाले कार्यों, परिभाषाओं और बाधाओं का वर्णन करते हैं। संचालन सामूहिक रूप से एक प्रक्रिया बनाते हैं; हर व्यवसाय इन प्रक्रियाओं का उपयोग उन प्रणालियों को बनाने के लिए करता है जो चीजों को पूरा करती हैं।

अब, कुछ उदाहरणों के साथ काम करते हैं।

एक चेकिंग अकाउंट से दूसरे में पैसे ट्रांसफर करना

सबसे पहले, ऐसी कौन सी चीजें हैं, जिन्हें आपको जानना चाहिए (इनपुट)?

  • स्थानांतरण करने वाले व्यक्ति की पहचान
  • तबादले की रकम
  • स्रोत जाँच खाता संख्या
  • लक्ष्य जाँच खाता संख्या

कुछ "व्यावसायिक नियम" क्या हैं जिन्हें लागू किया जाना चाहिए?

  • अनुरोध करने वाले व्यक्ति के पास ऐसा करने का अधिकार होना चाहिए।
  • लेन-देन परमाणु होना चाहिए ।
  • लेन-देन की सरकार के लिए रिपोर्टिंग आवश्यकताएं हो सकती हैं, अगर यह एक निश्चित राशि से अधिक है

"परमाणु" से मेरा मतलब है कि लेनदेन पूरी तरह से सफल होना चाहिए या यह पूरी तरह से विफल होना चाहिए। आपके खाते में लेन-देन नहीं हो सकता है, जहां एक खाते से दूसरे खाते में पहुंचने के बिना पैसे निकाले जाते हैं (पैसा गायब हो जाता है), या पैसा एक खाते में जमा किया जाता है, लेकिन दूसरे खाते से डेबिट नहीं किया जाता है (पैसा जादुई कहीं से प्रकट नहीं होता है)।

अमेज़ॅन से कुछ ऑर्डर करना।

आपको क्या जानने की जरूरत है?

  • आदेश देने वाले व्यक्ति की पहचान
  • शिपिंग सूचना
  • बिलिंग जानकारी
  • भुगतान की विधि
  • जहाज करने के लिए प्रत्येक आइटम की मात्रा और मात्रा
  • जहाज कैसे (रात भर, धीमी नाव या सुपर सेवर)
  • राज्य कर दर

ऑर्डर लगाने के बाद क्या होता है?

  • स्टॉक से आइटम खींचे जाते हैं
  • हाथ की मात्रा पर डेबिट किया जाता है
  • शिपमेंट के लिए आइटम पैक किए गए हैं
  • आउट ऑफ स्टॉक आइटम बैकऑर्डर किए गए हैं
  • न्यूनतम मात्रा से नीचे आने वाली वस्तुओं का आदेश दिया जाता है
  • एक शिपमेंट या दो?
  • एक चालान / शिपिंग सूची मुद्रित की जाती है, और ऑर्डर के साथ रखी जाती है

    ..आदि।


5
मुझे परिभाषाएँ पसंद हैं लेकिन उदाहरणों में, मुझे व्यापार तर्क बनाम व्यावसायिक नियमों के बीच के अंतर को याद करते हैं।
jdv-Jan de Vaan

1
ठीक। लेकिन आप व्यापार नियम के रूप में "लेन-देन परमाणु क्यों होना चाहिए" लेबल करते हैं? मैं एक व्यावसायिक नियम के लिए थोड़ा निम्न-स्तर का लगता हूं।
jdv-Jan de Vaan

9
@jdv: आप इसे पछाड़ रहे हैं। क्या कोई टेलर केवल उस लेनदेन का आधा प्रदर्शन करेगा ?
रॉबर्ट हार्वे

1
@jdv: यह कहना कि लेन-देन परमाणु होना चाहिए, दो चीजें हैं: (1) यदि कुछ लेन-देन के प्रसंस्करण में हस्तक्षेप करता है, तो लेन-देन के किसी भी प्रभाव को पूर्ववत करना संभव होगा, हालांकि यह कभी नहीं हुआ (इसके अलावा, शायद, के लिए) त्रुटि-लॉग रिपोर्ट का निर्माण), या फिर वह सब कुछ पूरा करें जो करने की आवश्यकता है; (2) लेन-देन का कोई भी हिस्सा उन खातों को शामिल करने वाले किसी अन्य "परमाणु" लेनदेन को ओवरलैप नहीं करेगा। उदाहरण के लिए, यदि कोई व्यक्ति जिसके दो खातों में $ 1,000,000 है, उस समय बैंक से एक से दूसरे से $ 500,000 स्थानांतरित किए जाते हैं ...
सुपरकैट

4
@jdv लेन-देन परमाणु होना एक मूलभूत आवश्यकता है जिसे सुनिश्चित किया जाना चाहिए और एक अंतिम-राज्य से संबंधित होना चाहिए।
icarus74

27

CRUD बस एक Create, Read, Update, Delete है जो एक एप्लीकेशन करता है।

एक हद तक, बग ट्रैकर एक CRUD ऐप भी है। बग बनाएँ, बग्स पढ़ें (प्रदर्शित करें), बग्स को अपडेट करें, और हो सकता है, उन्हें हटा दें।

हालांकि, सिर्फ CRUD की तुलना में बग ट्रैकर के लिए अधिक है।

  • किसी डेवलपर को बग को सत्यापित या बंद करने की अनुमति नहीं है - क्यूए की नौकरी का हिस्सा। और इसलिए कुछ कोड में यह सुनिश्चित करने के लिए है कि जिस व्यक्ति के पास QA की भूमिका नहीं है, वह बग को बंद या सत्यापित के रूप में चिह्नित नहीं कर सकता है।
  • कोई भी नहीं, लेकिन प्रोजेक्ट मैनेजर वास्तव में बग को हटा सकता है ।
  • बग को "टेस्ट मी" के रूप में चिह्नित करने के लिए, बग के खिलाफ कम से कम एक कोड होना चाहिए।
  • केवल एक बग जो 'बंद' राज्य में है, उसे 'फिर से खोलने' की स्थिति में ले जाया जा सकता है
  • बग को सौंपा गया डेवलपर इसे 'कोड समीक्षा' से 'कोड समीक्षा पूर्ण' तक नहीं ले जा सकता
  • क्यूए और डेवलपर्स केवल उन परियोजनाओं पर बग देख सकते हैं जिन्हें उन्हें सौंपा गया है।

कोड जो ऊपर लागू होता है वह अनुप्रयोग का व्यावसायिक तर्क है।

वर्कफ़्लो का प्रतिबंध, या जो CRUD में विभिन्न ऑपरेशन कर सकते हैं। ये वही हैं जो एक CRUD ऐप को दूसरे से अलग करते हैं। वे ऐसे हिस्से हैं जहां आपको वास्तव में यह कहने के लिए व्यवसाय प्राप्त करने की आवश्यकता होती है कि आवेदन कैसे काम करता है। यह कितना तार्किक है ... ठीक है, सबसे अच्छा है कि परियोजना प्रबंधक के कान की बाली से बाहर एक बीयर पर चर्चा की। लेकिन व्यापार तर्क क्या है thats।

ज़रूर, एक 'शुद्ध' CRUD ऐप लिखना संभव है जहां कोई भूमिका नहीं है, सब कुछ संशोधित और देखा जा सकता है - लेकिन ये नियम के बजाय अपवाद हैं।

व्यावसायिक तर्क वह तर्क है जो आप अपने कार्यक्रम में लिख रहे हैं कि आपको दिए गए व्यावसायिक नियमों को संभालना है।


जब आप व्यावसायिक नियमों में शामिल होने लगते हैं, तो यह क्रूड या व्यावसायिक तर्क की तुलना में उच्च स्तर पर होता है। यह एक व्यवसाय विश्लेषक से प्राप्त होने वाली चीजें हैं जो व्यवसाय के साथ काम कर रहा है।

इस उदाहरण पर विचार करें, एक प्रोग्राम जो निर्धारित करता है कि किसी स्टोर में रिटर्न डेस्क पर किसी आइटम की वापसी को कैसे संभालना है।

  • यदि रसीद 90 दिनों से अधिक पुरानी है, तो केवल स्टोर क्रेडिट में दी जा सकती है
  • यदि रसीद 90 दिनों से कम पुरानी है, तो उस निविदा को क्रेडिट करें जिसका उपयोग रसीद के साथ किया गया था (क्रेडिट कार्ड पर वापस चला जाता है, नकद वापस नकद में चला जाता है, स्टोर क्रेडिट में स्टोर क्रेडिट में जाता है) ... जब तक कि यह न हो एक चेक था, जिसमें नकद का उपयोग किया गया था।

वे कुछ व्यावसायिक नियम हैं। वे आवेदन के CRUD भाग से बात नहीं करते हैं।

व्यावसायिक नियमों के साथ काम करते समय, आप अक्सर अपने सिस्टम में कच्चे कोड को लिखने के बजाय एक नियम इंजन (उदाहरण के लिए, विंडोज वर्कफ़्लो फ़ाउंडेशन रूल्स इंजन ) में लिख सकते हैं।


एहसास है कि तर्क / नियम भेद शब्दावली में से एक है और इसे पूरी रात तर्क दिया जा सकता है (एक बीयर पर फिर से सबसे अच्छा)। यद्यपि यह एक असामान्य अंतर नहीं है, हालांकि दोनों एक दूसरे में मिश्रण कर सकते हैं।


23

अन्य उत्तर सही हैं। एक अतिरिक्त विचार ...

व्यापार तर्क पोर्टेबल है

यदि आप एक अलग प्रोग्रामिंग भाषा में एक सॉफ्टवेयर प्रोजेक्ट को फिर से लागू करने के लिए थे , तो टर्बो पास्कल से जावा में जा रहे हैं , व्यापार तर्क और व्यावसायिक नियम वही है जो पुराने और नए प्रोजेक्ट्स में समान हैं

प्रोग्रामिंग भाषा अलग होगा। स्रोत कोड पूरी तरह से अलग हो जाएगा। उपकरण ( IDE s, compilers , और ऐसे) पूरी तरह से अलग हो सकते हैं। यूजर इंटरफेस पूरी तरह से पुनर्गठन किया जा सकता है या एक अलग है देखो और अनुभवप्रलेखन शायद अलग होगा। लेकिन दो परियोजनाओं का उद्देश्य, किए गए कार्य / लक्ष्यों के अंतिम परिणाम समान होंगे।


10

व्यापार तर्क मूल रूप से 2 व्यापक श्रेणियों के होते हैं: सत्यापन और प्रवाह। व्यापार तर्क कहता है कि मात्रा 1, मात्रा 2 से अधिक या उसके बराबर होनी चाहिए - उदाहरण के लिए, खरीदे जाने वाली वस्तुओं की संख्या स्टॉक में वस्तुओं की संख्या से कम या बराबर होनी चाहिए।

एक आवेदन में, व्यवसाय के लोग कहेंगे कि यह एक व्यापार नियम है, और इसलिए आप इस व्यवसाय तर्क (सत्यापन) को लागू करने के लिए कोड लिखते हैं। एक अन्य आवेदन यह कहेगा कि यदि ऑर्डर की गई वस्तुओं की संख्या स्टॉक में वस्तुओं की संख्या से अधिक है, तो ऑर्डर को स्वीकार करने के लिए और फिर अंतर 20% के लिए अपना ऑर्डर देने के लिए, और इसलिए आप इस व्यवसाय तर्क (प्रवाह) को लिखेंगे। ।

CRUD बस भंडारण में और बाहर डेटा प्राप्त कर रहा है और इसे बदल रहा है। व्यावसायिक तर्क यह निर्धारित करता है कि आप उस डेटा के साथ क्या करते हैं और इसे बनाने के लिए आपको किन परिवर्तनों की अनुमति है। क्या आपका ग्राहक भविष्य में पैदा हुआ है, 5 से कम, एक निश्चित भौगोलिक क्षेत्र (स्थानीय लोगों / आगंतुकों के लिए छूट) से। CRUD सरल है, यह जानकर कि आप बाल कर क्रेडिट तभी प्राप्त कर सकते हैं जब बच्चा आपके साथ उस समय के आधे से अधिक समय तक जीवित रहे जब वह कैलेंडर वर्ष में जीवित था, केवल 6 महीने से अधिक नहीं, अधिक जटिल है।


9

व्यावसायिक तर्क या नियम कुछ भी हैं जो उपयोगकर्ता इंटरफ़ेस ("प्रोग्रामिंग सामान") के यांत्रिकी से संबंधित नहीं हैं। वे चीजें हैं जिन्हें आपको अभी भी लागू करना होगा यदि आप यह लेन-देन कर रहे थे या 100 साल पहले (मैन्युअल रूप से)। उदाहरण के लिए, किसी खरीद के लिए बिक्री कर कब लागू करना है।


1

किसी प्रोग्राम या एप्लिकेशन का "व्यावसायिक तर्क" उस कोड का हिस्सा है जो वास्तव में इनपुट (उपयोगकर्ता, ऑपरेटिंग सिस्टम और आदि से) के साथ चीजें करता है। एक आवेदन के "व्यापार नियम" आमतौर पर कार्यक्रम के परिभाषित पैरामीटर ही होते हैं (जैसे कि इनपुट को कैसे संभालना है)। कम से कम, यह है कि मैंने इसे कई लोगों से संदर्भित कैसे सुना है। वे कोड के कुछ हिस्सों का वर्णन करने के लिए बहुत समान शब्द हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.