1

在 WSO2 ESB 注册表中,我有一个 DRL 文件

/opt/config/rules.drl

rule ""
when
    ...
then
    ...
end

我想使用这个文件来使用带有 Kie 的自定义中介来触发 Drools 规则

DroolsMediator.java

class DroolsMediator extends AbstractMediator {
    public boolean mediate(MessageContext context) {
        KnowledgeBuilder builder...
        URL url = new URL("path/to/registry/rules.drl");
        builder.add(ResourceFactory.newUrlResource(url), ResourceType.DRL);
        ...
    }
}

我试图获得财产,但没有成功:

<property name="REGISTRY-VALUE"
          expression="get-property('registry', '/opt/config/rules.drl')"/>

我应该采取什么方法将注册表项传递给自定义调解器?

4

2 回答 2

1

问题不在于代码,而在于我在 WSO2 Registry 中放置资源的位置。

在 WSO2 内部,共有三种注册表:

本地注册表

条目存储在本地文件系统上,并按如下方式访问:

<localEntry key="Drools" src="/path/to/rules.drl" />

这些只能由与资源在同一台机器上的 ESB 访问。

配置注册表

条目被上传到 WSO2 ESB 并实际存储在数据库中,而不是文件系统中。可以在注册表位置下访问它们/_system/config/,如下所示:

<property name="Drools" expression="get-property('conf:/path/to/rules.drl')" />

治理登记处

条目的上传和存储就像在配置注册表中一样。可以在注册表位置下访问它们/_system/config/,如下所示:

<property name="Drools" expression="get-property('gov:/path/to/rules.drl')" />

配置和治理注册表之间的主要区别似乎是配置条目应该是“特定于产品的”,而治理条目是“全局的”。这不是强制执行的。

于 2014-04-10T15:15:35.017 回答