我正在使用带有 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?
请帮忙。您能指出我创建用户友好业务规则的正确方向吗?
谢谢。
Ĵ