在Drools中创建DSL和业务规则的问题

时间:2010-06-17 03:46:42

标签: drools

我正在使用Eclipse和Drools插件来创建规则。 我想创建业务规则,主要目的是尝试为用户提供一组可用于创建规则的选项。 例如:如果Apple只能有3种颜色:我想提供一个选项,如下拉菜单,以便用户可以事先知道他可以在他的规则中使用哪些选项。 可能吗? 我正在创建一个dsl,但仍无法为业务规则提供上述功能。 我也在实现基本dsl时出错。 在我的RuleRunner类()

中添加dsl的代码如下所示

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

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

//使用DSL加载规则

addRulesToThisPackage.addPackageFromDrl( new InputStreamReader(ruleSource),new InputStreamReader(dslSource));

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

将dsl添加到包(最后一行)时遇到错误

错误堆栈:

线程“main”中的异常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规则是:

expandder sample-dsl.dsl

规则“状态更改B状态”

  when

        There is an A

           -        has an address

         There is a B

             - has name

  then

        - print updated A and Aaddress

结束

我在eclipse中创建了DSL。

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

好像我的程序无法找到dsl?

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

感谢。

Ĵ

1 个答案:

答案 0 :(得分: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)我还没有将它合并到我的项目中,但是已经研究过了一点点。我认为它可能会提供您希望用户创建和编辑规则文件的功能。祝你好运!