我在设置中使用Drools Spring KnowledgeAgent从外部路径加载规则。该路径目前包含DRL文件,因此规则是即时编译的。出于某种原因,无论在何处宣布,我都无法通过规则来检测我的事实。我使用了以下方法,并继续获得ClassNotFoundException
/ NoClassDefFoundException
我需要让所有上述案例都有效。
我对KnowledgeAgent的Spring配置就像
<!-- For scanning the changes -->
<drools:resource-change-scanner id="scanner" interval="10" />
<drools:kagent id="ruleAgent" kbase="ruleKBase" new-instance="true" >
<drools:resources>
<drools:resource source="file://external/path/rules/>
</drools:resources>
</drools:kagent>
<!-- For starting the resource scanner -->
<bean id="starter" class="study.ResourceChangeScannerStarter" depends-on="ruleAgent" />
包含规则和事实的我的DRL位于//external/path/rules
路径中。如果我删除了所有对事实的引用并且有一条没有LHS条件的规则,我在控制台上得到了简单的打印输出,所以我可以验证规则是否加载得很好。
我正在使用Drools 5.5.0
答案 0 :(得分:0)
行。通过使用KnowledgeBuilder从规则创建一个包(ResourceType.PKG)并将其用作KnowledgeAgent的URL资源,我使它工作得更好。然而,整个设置存在很多问题,所以我结束了自己的实现。
基本上我所拥有的是一个
的班级我在spring配置中唯一拥有的是kBase,我可以很好地使用Spring获取自定义类
<drools:kbase id="ruleKnowledgeBase">
</drools:kbase>
标记我自己的问题回答我的情况已经结束。