Drools 6.3 中 xml 的阅读规则
Reading rules from xml in Drools 6.3
我正在尝试使用 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 吗?
DRL 的 XML 版本的开发已在几个版本前正式终止,大约 5.2,IIRC。 DRL 已经发展成为一种相当复杂的语言,而保持它的 XML 对应 up-to-date 已被证明是一项相当大但没有回报的努力。
此外,出于显而易见的原因,供应商并不热切追求 vendor-independent Rule-ML(对于一部分)DRL。
从您的问题中无法明显看出您为什么对 XML 中的规则创作感兴趣。如果您添加一些问题的背景信息,可能会提供更多帮助。
我正在尝试使用 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 吗?
DRL 的 XML 版本的开发已在几个版本前正式终止,大约 5.2,IIRC。 DRL 已经发展成为一种相当复杂的语言,而保持它的 XML 对应 up-to-date 已被证明是一项相当大但没有回报的努力。
此外,出于显而易见的原因,供应商并不热切追求 vendor-independent Rule-ML(对于一部分)DRL。
从您的问题中无法明显看出您为什么对 XML 中的规则创作感兴趣。如果您添加一些问题的背景信息,可能会提供更多帮助。