我的KnowledgeAgent设置为
<drools:kagent kbase="kbase" id="knowledgeAgent" new-instance="false" >
<drools:resources>
<drools:resource source="classpath:change-set.xml" type="CHANGE_SET" />
</drools:resources>
</drools:kagent>
因此它从类路径中扫描change-set.xml以获取资源。我还有另一个组件,它将根据磁盘上的规则文件动态生成change-set.xml。弹簧配置为
<bean id="changesetHandler" class="ChangesetHandler" autowire="byName" lazy-init="true" />
这里的问题是我的自定义组件生成了change-set.xml,但是我无法将Drools KnowledgeAgent组件设置为依赖于它,因为它遵循它自己的schema似乎没有depends-on
属性。
答案 0 :(得分:1)
鉴于知识代理侦听更改,一旦bean生成更改集,它就应该重新加载知识库。为什么不在最初加载默认的空更改集,然后在生成时加载动态更改集?
我个人避免使用Drools-Spring组件。我发现在我的应用程序中创建服务更容易,这保留了我的知识库。然后,我可以在该服务中定义我喜欢的任何依赖项,并确保已完成任何初始化。