2008-09-18 25 views
17

मुझे सी # में एक साधारण नियम इंजन बनाना है। कोई आगे बढ़ता है कि मैं कैसे आगे बढ़ सकता हूं? यह एक सरल नियम इंजन है, और एसक्यूएल सर्वर का बैक एंड के रूप में उपयोग करेगा। क्या हमारे पास कोई सामान्य ब्लूप्रिंट या डिज़ाइन पैटर्न है जो आमतौर पर नियम इंजन पर लागू होता है? एक डिजाइन करने के लिए मैं किस प्रकार की .NET तकनीकों का उपयोग कर सकता हूं? कोई भी दिशा उपयोगी होगी। धन्यवाद।नियम इंजन कैसे डिज़ाइन करें?

उत्तर

14

आप .NET 3.0 उपयोग कर रहे हैं या बाद में, आप can use the Rules Engine of Windows Workflow Foundation acutally कार्यप्रवाह का उपयोग किए बिना।

मैंने इसे एक प्रोजेक्ट पर किया है, और आप बैकएंड के रूप में SQL या XML का उपयोग कर सकते हैं, और यह बहुत अच्छा काम करता है। आप वर्कफ़्लो उदाहरणों के साथ आने वाले आईडीई का उपयोग कर सकते हैं और इसे अपने ऐप्स में डाल सकते हैं। उत्कृष्ट है।

0

आप किस प्रकार के नियम इंजन की तलाश में हैं? स्टाइल प्रथाओं के लिए? यदि ऐसा है, तो StyleCop देखें। जवाब नहीं है, लेकिन आपके लिए वहां कुछ भी हो सकता है।

+0

@ स्कॉट, मैं सी # के साथ एक व्यापार नियम इंजन विकसित करने के लिए देख रहा हूँ। नियम या कुछ की तरह, लेकिन एक बहुत ही सरल है। और मैं पैटर्न या किसी भी ब्लूप्रिंट की तलाश में हूं, जिसके आधार पर मैं अपना नियम इंजन बना सकता हूं। –

3
  1. मैं विश्वास नहीं कर सकता आप अपने खुद के विचार लागू करेगा वहाँ इतने सारे व्यावसायिक और खुला स्रोत उपलब्ध हैं।

  2. मैं इनर्यूल को एक उचित वाणिज्यिक विकल्प के रूप में देखने की सलाह देता हूं जो उचित मूल्य है, या ओपन सोर्स स्पेस में एनएक्सबीआरई है।

0

क्या आपको विधि पर कोई संकेत दिया गया है? (यानी अगर यह पाठ्यक्रम सामग्री क्या आप वर्तमान में सीख रहे हैं से पूरक है?) यह एक काफी बुनियादी प्रणाली आप सफलता मिल सकती है जांच कर रहे करने के लिए है, तो Deterministic Finite State Machine करने और Nondeterministic Finite State Machine

+0

@jwarzech, यह किसी भी पाठ्यक्रम के लिए नहीं है। यह एक व्यावसायिक नियम इंजन है, जो वाणिज्यिक काम होना चाहिए - लेकिन यह काफी सरल है। नियमों के कुछ सामान्य वर्ग (10 या तो?) हैं। बीटीडब्ल्यू, मैंने एक बार स्कूल में 'गणना की सिद्धांत' की थी। उत्तर nyways के लिए धन्यवाद। –

0

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

0

आप इस तरह अपने कार्यान्वयन कुछ लिखने के लिए चाहते हैं ...

[TestMethod] 
public void GreaterThanRule_WhenGreater_ResultsTrue() 
{ 
    // ARRANGE 
    int threshold = 5; 
    int actual = 10; 

    // ACT 
    var integerRule = new IntegerGreaterThanRule(); 
    integerRule.Initialize(threshold, actual); 

    var integerRuleEngine = new RuleEngine<int>(); 
    integerRuleEngine.Add(integerRule); 
    var result = integerRuleEngine.MatchAll(); 

    // ASSERT 
    Assert.IsTrue(result); 
} 

... या इस ...

[TestMethod] 
public void GreaterThanRule_WhenGreater_ResultsTrue() 
{ 
    // ARRANGE 
    int threshold = 5; 
    int actual = 10; 

    // ACT 
    var integerRule = new IntegerGreaterThanRule(threshold); 

    var integerRuleEngine = new RuleEngine<int>(); 
    integerRuleEngine.ActualValue = actual; 
    integerRuleEngine.Add(integerRule); 

    // Get the result 
    var result = integerRuleEngine.MatchAll(); 

    // ASSERT 
    Assert.IsTrue(result); 
} 

। .. तो शायद यहां मेरा सरल नियम इंजन देखें: http://www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx

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