我尝试使用drools 6.3从XML读取规则。我试图找到一些例子,但我没有发现任何有价值的东西,只是将xml转换为drl的一个例子,因为我使用了较新版本的drools而无法工作......
我将eclipse生成的drl示例转换为xml并将其替换为此xml。它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<package name="com.sample" xmlns="http://drools.org/drools-5.2" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/drools-5.2 drools.org/drools-5.2.xsd">
<import name="com.sample.DroolsTest.Message"/>
<rule name="Hello World">
<lhs>
<pattern identifier="m" object-type="Message">
<expr>
status == Message.HELLO
</expr>
<expr>
myMessage : message
</expr>
</pattern>
</lhs>
<rhs>
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
</rhs>
</rule>
<rule name="GoodBye">
<lhs>
<pattern object-type="Message">
<expr>
status == Message.GOODBYE
</expr>
<expr>
myMessage : message
</expr>
</pattern>
</lhs>
<rhs>
System.out.println( myMessage );
</rhs>
</rule>
</package>
现在drl像这样加载:
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
但是这并没有加载xml文件。
有没有任何示例如何加载xml?我是否必须将其转换为drl?
答案 0 :(得分:0)
DRL的XML版本的开发已在几个版本之前正式终止,大约在5.2,IIRC。 DRL已经发展成为一种非常复杂的语言,并且保持其XML对应的最新版本已经证明是一项相当大但没有经过深思熟虑的工作。
此外,由于显而易见的原因,转换为独立于供应商的Rule-ML(针对子集)DRL并不是供应商急切追求的。
从您的问题中可以看出为什么您对XML中的规则创作感兴趣。如果你添加一些问题背景,可能会有更多的帮助。