首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Guvnor -app加载特定的规则(.drl)?

如何从Guvnor -app加载特定的规则(.drl)?
EN

Stack Overflow用户
提问于 2011-05-04 16:56:45
回答 3查看 2K关注 0票数 1

例如,我在Guvnor中添加了两个规则(rule1.drl和rule2.drl)。

通常,我可以通过创建一个changeset.xml来检索这些规则,如下所示:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Test Agent", kaconf);
kagent.applyChangeSet(ResourceFactory.newClassPathResource("changeset.xml"));
knowledgeBase = kagent.getKnowledgeBase();

但是我如何才能只检索特定的规则呢?例如rule2.drl

当然,我可以将changeset.xml中的url更改为

代码语言:javascript
复制
<resource source='http://localhost/guvnor/org.drools.guvnor.Guvnor/package/name/LATEST/rule2.drl' type='DRL' basicAuthentication="enabled" username="username" password="password"  />

但我发现响应文件缺少包名和所有导入语句,例如:

代码语言:javascript
复制
package com.packname;
import namespace.EntityA;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-17 00:45:04

我解决这个问题的方法是创建两个不同的包,一个用于rule1.drl,另一个用于rule2.drl。因此我程序通过两个不同的变更集读取这两个规则。

票数 0
EN

Stack Overflow用户

发布于 2012-01-13 06:29:06

当我们需要执行特定的drl包时,我们对每个包/快照使用不同的变更集。

如果规则是相关的,使用不同的.drl来分隔规则,因为您知道guvnor在一个大pojo中编译来自一个包的所有规则,如果您有数百个规则然后结束,并使用不同的pojo实例迭代它,这可能会很慢。

票数 2
EN

Stack Overflow用户

发布于 2012-03-15 05:44:20

包和单个资产的URL模式是不同的。对于资产(例如DRL),模式为:

代码语言:javascript
复制
<resource source='http://localhost:9090/drools-guvnor/rest/packages/test/assets/MyRule/source' type='DRL' />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5880949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档