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( &quot;Goodbye cruel world&quot; );
            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 中的规则创作感兴趣。如果您添加一些问题的背景信息,可能会提供更多帮助。