2010-06-17 150 views
0

我使用Eclipse和Drools插件来创建规则。 我想创建业务规则,主要目的是尝试为用户提供一组他可以用来创建规则的选项。 例如:如果Apple只能有三种颜色:我想提供一个下拉选项,以便用户可以事先知道哪些是他可以在规则中使用的选项。 这可能吗? 我正在创建一个dsl,但仍无法为业务规则提供上述功能。 我在执行基本的dsl时也有错误。 在我的RuleRunner类中添加dsl的代码如下所示()在Drools中创建DSL和业务规则的问题

InputStream ruleSource = RuleRunner.class.getClassLoader()。getResourceAsStream(“/ Rule1.dslr”);

InputStream dslSource = RuleRunner.class.getClassLoader()。getResourceAsStream(“/ sample-dsl.dsl”);

//加载规则,使用DSL

addRulesToThisPackage.addPackageFromDrl( 新的InputStreamReader(ruleSource),新的InputStreamReader(dslSource));

我的工作目录中有sample-dsl .dsl和Rule1.dslr。

遇到错误时加入DSL的包(最后一行)

错误堆栈:螺纹

异常 “主” 显示java.lang.NullPointerException

at java.io.Reader.<init>(Unknown Source) 

    at java.io.InputStreamReader.<init>(Unknown Source) 

    at com.org.RuleRunner.loadRuleFile(RuleRunner.java:96) 

    at com.org.RuleRunner.loadRules(RuleRunner.java:48) 

    at com.org.RuleRunner.runStatelessRules(RuleRunner.java:109) 

    at com.org.RulesTest.main(RulesTest.java:41) 

我的DSL文件有基于在线文档的基本映射。

我创建的DSL规则是:

膨胀采样dsl.dsl

规则 “A状态改变乙状态”

when 

     There is an A 

      -  has an address 

     There is a B 

      - has name 

    then 

     - print updated A and Aaddress 

结束

我在创建DSL蚀。

我添加的代码是否会加载到我的包中?或者我错过了什么?

这似乎是我的程序无法找到dsl?

请帮忙。你能指出我朝着正确的方向创建一个用户友好的业务规则吗?

谢谢。

Ĵ

回答

1

我不太熟悉,你想用它来创建一个知识会话的方法,但我会表现出什么在我的应用程序使用的例子。

KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(<KnowledgeBaseConfiguration>); 
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
kbuilder.add(ResourceFactory.newClassPathResource("rules/myRuleFile.drl", getClass()), 
       ResourceType.DRL); 
kbuilder.add(ResourceFactory.newClassPathResource("rules/myDslFile.dsl", getClass()), 
       ResourceType.DSL); 
if (kbuilder.hasErrors()) { 
    System.err.println(builder.getErrors().toString()); 

} 
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); 

现在尽量让你的用户编写规则文件的能力,具有内置的限制,你看着的Drools的Guvnor?(http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-guvnor/html_single/index.html)我没有把它纳入我的项目还,但已经研究它一点点。我认为它可能提供您寻求允许用户创建和编辑规则文件的功能。祝你好运!

+0

谢谢:)非常有帮助! – JJunior 2010-07-27 14:14:03