0

我正在使用带有 Drools 插件的 Eclipse 来创建规则。我想创建业务规则,主要目的是尝试为用户提供一组他可以用来创建规则的选项。例如:如果 Apple 只能有 3 种颜色:我想提供一个像下拉菜单这样的选项,以便用户可以事先知道他可以在他的规则中使用哪些选项。是否可以?我正在创建一个 dsl,但仍无法为业务规则提供上述功能。我在实现基本 dsl 时也出错。在我的 RuleRunner class() 中添加 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 添加到包时遇到错误(最后一行)

错误堆栈:

线程“主”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状态改变B状态”

  when

        There is an A

           -        has an address

         There is a B

             - has name

  then

        - print updated A and Aaddress

结尾

我在 Eclipse 中创建了 DSL。

我添加的要加载到我的包中的代码是否正确?还是我错过了什么????

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

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

谢谢。

Ĵ

4

1 回答 1

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)我还没有将它合并到我的项目中,但已经研究了一下。我认为它可能会提供您寻求的允许您的用户创建和编辑规则文件的功能。祝你好运!

于 2010-07-02T10:47:28.670 回答