例如,我在Guvnor中添加了两个规则(rule1.drl和rule2.drl)。
通常,我可以通过创建一个changeset.xml来检索这些规则,如下所示:
<change-set ...>
<add>
<resource source='http://localhost/guvnor/org.drools.guvnor.Guvnor/package/name/LATEST.drl' type='DRL' basicAuthentication="enabled" username="username" password="password" />
</add>
</change-set>并通过代码加载changeset.xml:
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Test Agent", kaconf);
kagent.applyChangeSet(ResourceFactory.newClassPathResource("changeset.xml"));
knowledgeBase = kagent.getKnowledgeBase();但是我如何才能只检索特定的规则呢?例如rule2.drl
当然,我可以将changeset.xml中的url更改为
<resource source='http://localhost/guvnor/org.drools.guvnor.Guvnor/package/name/LATEST/rule2.drl' type='DRL' basicAuthentication="enabled" username="username" password="password" />但我发现响应文件缺少包名和所有导入语句,例如:
package com.packname;
import namespace.EntityA;发布于 2011-05-17 00:45:04
我解决这个问题的方法是创建两个不同的包,一个用于rule1.drl,另一个用于rule2.drl。因此我程序通过两个不同的变更集读取这两个规则。
发布于 2012-01-13 06:29:06
当我们需要执行特定的drl包时,我们对每个包/快照使用不同的变更集。
如果规则是相关的,使用不同的.drl来分隔规则,因为您知道guvnor在一个大pojo中编译来自一个包的所有规则,如果您有数百个规则然后结束,并使用不同的pojo实例迭代它,这可能会很慢。
发布于 2012-03-15 05:44:20
包和单个资产的URL模式是不同的。对于资产(例如DRL),模式为:
<resource source='http://localhost:9090/drools-guvnor/rest/packages/test/assets/MyRule/source' type='DRL' />https://stackoverflow.com/questions/5880949
复制相似问题