首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的KnowledgeAgent没有考虑到规则的变化?

为什么我的KnowledgeAgent没有考虑到规则的变化?
EN

Stack Overflow用户
提问于 2013-01-17 04:57:13
回答 1查看 386关注 0票数 0

我有一个简单的Drools专家KnowledgeAgent的用例。我使用的是Drools 5.3.0Final,我的规则已经在Guvnor 5.3.0Final中编译过了。

我的变更集xml文件如下所示:

代码语言:javascript
复制
   <add>
       <resource type="PKG" source="http://ssmdeoasd01.susalud.com:7777/drools-guvnor/org.drools.guvnor.Guvnor/package/co.com.sura.seguros.adultomayor.consultas/LATEST"/>
   </add>

Tha PKG包含来自单个简单DTABLE的规则。

当我更改DTABLE并将其上传到Guvnar时(当应用程序仍在运行时),Drools Expert确实识别出了更改,但没有应用它。控制台如下所示:

代码语言:javascript
复制
Compilando reglas ...
Reglas compiladas ...
Tiempo de compilacion de reglas: 0 ms
Obteniendo manager ...
Manager obtenido ...
Obteniendo sesión de conocimiento ...
listKnowledgePackages.size(): 1
Sesión de conocimiento obtenida ... 
3 Padre
2 Hermanos
1 Conyuge
[2013-01-16 15:54:17,670:debug] ResourceChangeScanner attempt to scan 1 resources
[2013-01-16 15:54:17,684:debug] ResourceChangeScanner modified resource=[UrlResource path='http://ssmdeoasd01.susalud.com:7777/drools-guvnor/org.drools.guvnor.Guvnor/package/co.com.sura.seguros.adultomayor.consultas/LATEST'] : 1358369287000 : 1358369637000
[2013-01-16 15:54:17,684:debug] ResourceChangeNotification received ChangeSet notification
[2013-01-16 15:54:17,684:debug] ResourceChangeScanner thread is waiting for 60 seconds.
[2013-01-16 15:54:17,684:debug] ResourceChangeNotification processing ChangeSet
[2013-01-16 15:54:17,684:debug] ResourceChangeNotification ChangeSet modified resource=[UrlResource path='http://ssmdeoasd01.susalud.com:7777/drools-guvnor/org.drools.guvnor.Guvnor/package/co.com.sura.seguros.adultomayor.consultas/LATEST'] for listener=org.drools.agent.impl.KnowledgeAgentImpl@10655dd
[2013-01-16 15:54:17,686:debug] ResourceChangeNotification thread is waiting for queue update
Compilando reglas ...
Reglas compiladas ...
Tiempo de compilacion de reglas: 0 ms
Obteniendo manager ...
Manager obtenido ...
Obteniendo sesión de conocimiento ...
listKnowledgePackages.size(): 1
Sesión de conocimiento obtenida ... 
3 Padre
2 Hermanos
1 Conyuge

即使KnowledgeAgent标识了更改,规则仍然保持编译相同,并且不会在结果中反映任何更改。

我没有针对KnowledgeAgent的特定配置,也没有特定的扩展。我已经使用了默认的监听程序,因此也是如此。

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 08:48:44

我犯了个错误。

我正在使用现有的KnowledgeBase构建代理。然后,当代理被实例化时,我将从该代理获取基础,并保留对该基础的引用,以便始终从该基础获取会话。我认为如果代理中的基础发生了变化,那么我的基础-which也是从代理中获得的--也发生了变化。

然后,当Guvnor中的规则发生变化时,代理确实完成了它的工作,并重新创建了它的KnowledgeBase,但因为我总是引用在代理实例化之后立即获得的基础,并从旧的KnowledgeBase获取会话,所以执行的规则是旧的基础中的那些。

引用现在是ok的,规则中的更改反映在执行中:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14367695

复制
相关文章

相似问题

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