एक नियम इंजन का उपयोग किसी एप्लिकेशन के डिजाइन, कार्यान्वयन और प्रदर्शन को कैसे प्रभावित करता है?


11

मुझे नियम इंजनों की क्षमता में दिलचस्पी है:

  • लॉन्च और व्यापार संचालित तर्क पर पुनरावृति
  • "व्यावसायिक उपयोगकर्ता" डेवलपर्स के बजाय उन नियमों का वास्तविक संशोधन करते हैं
  • सामान्य रूप से व्यावसायिक नियमों को समझें

इसके अलावा, क्या एक नियम इंजन का उपयोग किसी अनुप्रयोग की गुणवत्ता को प्रभावित करता है?

यदि आप हजारों मशीनों का उपयोग करके एक मल्टी-टियर क्लाउड-आधारित वितरित आर्किटेक्चर बनाम एक आर्किटेक्चर बनाम आपकी मशीन के लिए तैनात थे, तो क्या एक नियम इंजन का उपयोग बदल जाता है? यह अलग कैसे होगा?

जवाबों:


5

व्यापार नियमों को संशोधित करने के लिए गैर-तकनीकी कर्मियों के लिए एक इंटरफ़ेस को उजागर करना है या नहीं, यह निर्णय मोटे तौर पर कई कारकों पर निर्भर करता है, जिसमें परियोजना के लक्ष्य, परियोजना की लागत, परियोजना का जीवनकाल, और ज्ञात से अज्ञात का अनुपात शामिल है परियोजना।

उदाहरण के लिए, अगर मुझे लगता है कि कोई भी नियम इंटरफ़ेस का उपयोग नहीं करेगा, तो मैं शायद इसे लागू करने से बाहर निकलूंगा। हालांकि, अगर मेरे पास यह विश्वास करने का कारण था कि परिवर्तन अक्सर होंगे और विभिन्न अंत-उपयोगकर्ता अलग-अलग नियमों के होने की उम्मीद करेंगे, तो मैं इस तरह की कार्यक्षमता के निर्माण पर काम करने पर विचार करूंगा।

मैंने इसे एक परियोजना पर करने के लिए चुना, और इस सुविधा के व्यापक रूप से उपयोग किए जाने से पहले कई साल लग गए। मुझे संदेह था कि हमारे पास अंत में उपयोगकर्ता होंगे जो चीजों को स्वयं अनुकूलित करना चाहते हैं, इसलिए हमने इस कार्यक्षमता को टुकड़ों में लागू किया।

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

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


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

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

4

यदि मैं ऐसा करता तो मैं नियमों को व्यक्त करने के लिए एक डोमेन विशिष्ट भाषा बनाता, और शायद अनुरोध के रूप में संशोधित करने के लिए biz प्रकार UI देता। फिर नियमों का मूल्यांकन करने के लिए एक कार्यात्मक भाषा (जैसे हास्केल, लिस्प या एरलंग) का उपयोग करें।

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

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


3

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

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

अंततः, मैंने यह साबित करने के लिए एक प्रोटोटाइप लिखा कि यह जिस तरह से लागू किया गया था, उसमें डब्ल्यूएफ विफल रहता है। मैंने इसे आम मल्टी-थ्रेडिंग से बदल दिया। प्रदर्शन और कोड की पठनीयता बढ़ती गई। नमक के एक दाने के साथ इसे ले लो क्योंकि यह मेरा पहला पेशेवर डब्लूएफ एप्लीकेशन था।

नॉनटेक को विश्वास हो सकता है कि कोई भी प्रोग्रामर आवश्यक नहीं है, बीएल के पूरे "डमी डाउन" के लिए संभावित रूप से बड़ा नकारात्मक है; इससे जुड़ी समाजशास्त्रीय समस्याओं ने इस परियोजना को मार दिया।

अगर मैं वापस जा सकता था और इसे अपने तरीके से कर सकता था : पारंपरिक थ्रेडिंग का उपयोग करें और डेकोरेटर पैटर्न के माध्यम से प्राप्त बीएल मोल्डिंग मैंने अवधारणा का एक प्रमाण लिखा है जो इन तकनीकों का उपयोग करता है और यह अच्छी तरह से काम करता है। और बीएल मैपिंग को एक सिम यूआई में लपेटा जाना चाहिए।
अपडेट
मुझे एक पुरानी पोस्ट मिली जिसे मैंने समसामयिक समस्याओं के माध्यम से काम करते समय लिखा था। कोड दिखाता है कि समानांतर वर्कफ़्लोज़ में "हेल्लो वर्ल्ड" को कैसे प्रिंट किया जाता है, यह इस बात की समझ के बिना काम नहीं करता है कि कवर के नीचे क्या होता है (जो कि डीएफएस एब्स्ट्रैक्शन के पूरे उद्देश्य को हरा देता है)। MSDN मॉडरेटर एक उच्च स्तरीय अवलोकन बताता है कि कैसे समानांतर गतिविधियाँ वास्तव में अनुक्रमिक हैं। वह मूल रूप से "इस मैनुअल को पढ़ने के लिए आपको पूरे मैनुअल को पढ़ने की ज़रूरत है"। http://social.msdn.microsoft.com/Forums/en/windowsworkflowfoundation/thread/8a1fa165-ad5c-4cd2-b489-7ea5fc31fed8

सौभाग्य।


मुझे डब्ल्यूएफ के साथ कोई अनुभव नहीं है, लेकिन हमेशा इससे दूर रहा, क्योंकि मेरी आंत की वृत्ति को ऐसा करना था। लेकिन मैं मदद नहीं कर सकता, लेकिन आश्चर्य होता है, अगर WinWF एक राइनो-ईटीएल-सिस्टम, जैसे कि राइनो ईटीएल, का एक मंद संस्करण नहीं है, तो क्या इसके साथ समान सहजता के साथ किया जा सकता है?
हेनरिक

3

मेरे पास जावा कोड से ओरेकल रूल्स इंजन से जुड़ने का एक सही अनुभव है। इसमें से कुछ नियमों के लेखकों की ओर से अनुभवहीनता के कारण हो सकता है, लेकिन यह वही है जो मैंने सामना किया है।

  • हमने अपने नियम इंजन को एक स्टेटलेस डिवाइस के रूप में लागू किया। कॉल करने वाले को सभी मापदंडों को इकट्ठा करना और उन्हें मूल्यांकन के लिए इंजन में पास करना था। इसका मतलब यह था कि यदि नियम को किसी अन्य डेटा फ़ील्ड की आवश्यकता होती है, तो सभी क्लाइंट को अपडेट करने की आवश्यकता होती है, इसने नियमों को अपने उपभोक्ताओं से स्वतंत्र रूप से अपडेट करने में सक्षम होने के लिए टाल दिया।
  • इंजन ने SOAP WSDL प्रकाशित किया, लेकिन यह नियम सेट से ऑटो-जेनरेट किया गया था। नियमों में मामूली बदलाव से उपभोक्ताओं के साथ अनुबंध टूट जाएगा।
  • इंजन नियमों का मूल्यांकन करने में अच्छा था, लेकिन हमें यह बताने में भयानक था कि मूल्यांकन विफल क्यों हुआ। उपयोगकर्ता को सूचनात्मक त्रुटि संदेश वापस भेजना मुश्किल था।
  • डब्ल्यूएसडीएल सामान्य उपभोग के लिए फिट नहीं था। सबसे सरल नियम सेट में 14 पृष्ठ WSDL था, जिसने नियमों के आधार के आंतरिक भाग को उजागर किया। हमें एक व्यापार-अनुकूल पहलू पेश करने के लिए SOA अनुवाद परत को सामने रखना पड़ा। इसलिए 100% विश्वसनीय स्थानीय पुस्तकालय को कॉल करने के बजाय, लूप में दो अतिरिक्त सर्वर थे। यह कम से कम विश्वसनीयता में नहीं जोड़ता है। साथ ही नियम हस्ताक्षर में कोई भी बदलाव कोड को अद्यतन करने वाली तीन असमान टीमों में शामिल है। फुर्तीली की मेरी परिभाषा नहीं!
  • किसी भी समय नियम के लिए अतिरिक्त परिवर्धन की आवश्यकता होती है, डब्ल्यूएसडीएल को अद्यतन करना होगा, जिसका अर्थ है कि ग्राहक अब इसे नहीं समझेंगे। यह v2, v3 के लिए नए SOAP एंडपॉइंट्स को जोड़ने की ओर ले जाता है .. जिसमें अद्यतन करने के लिए फ़ायरवॉल नियमों की आवश्यकता के नॉक-ऑन प्रभाव थे।
  • नियमों को "संरचित अंग्रेजी" में व्यक्त किया गया था जो सरल नियमों के लिए आसानी से समझा जा सकता था, लेकिन जटिल नियमों के लिए अपारदर्शी के पास था।
  • हम उन ठेकेदारों को कभी नहीं पा सकते हैं जो भाषा को लिखने वाले नियमों को जानते थे।
  • नियम भाषा ने सरणियों, पुनरावृत्ति या ऑब्जेक्ट ओरिएंटेशन को लागू नहीं किया। एक मामले में, एक नियम को लागू करने का एकमात्र तरीका एक एक्सेल स्प्रेडशीट के कॉलआउट के माध्यम से था, जहां वीबी में नियम लागू किया गया था। क्यों परेशान?

मुझे नहीं लगता कि नियम इंजन (या नहीं) का उपयोग करने का विकल्प स्पष्ट है। मैं आपको सुझाव देता हूं कि आप जिस भी इंजन का उपयोग करने का इरादा रखते हैं, उसे सूचित करें। वे निश्चित रूप से चांदी की गोली नहीं हैं ...

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