从规则中获取事实列表

Get list of facts from rule

假设我在 drool 中有 1000 条规则和 20 个客户。我想触发那些特定于客户的规则。一条规则可能适用于多个客户。我知道哪个客户正在使用该应用程序,因此基于此我想获取适用于该客户的规则列表以及我需要从数据库中获取的事实列表以触发这些规则。 在首先获得两个列表后,我将从数据库中获取值,然后触发该特定客户的所有规则。

这里最好的方法是使用一些智能包装。将客户独有的规则放在他们自己的包中。不同的共享规则集可以放在其他包中。

例如,您可以按如下方式定义 kbases:

<?xml version="1.0" encoding="UTF-8"?>
<kmodule
        xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="acme" 
           packages="com.dunder.rules.acme, com.dunder.rules.paper">
        <ksession name="acmeSession" type="stateless"/>
    </kbase>
    <kbase name="pipepiper" 
           packages="com.dunder.rules.pipepiper, com.dunder.rules.paper">
        <ksession name="piedpiperSession"type="stateless" />
    </kbase>
</kmodule>

上面有 "Acme" 和 "Pied Piper" 的规则,而两者都使用 "Paper" 规则。