我是 Drools 的新手,并试图尝试将其与 Gunvor 集成,因为我们希望我们的应用程序能够动态使用用户创建的最新规则。
我正在使用 Drools 和 Guvnor 5.5。
我首先在 Gunvor 中创建一个包,然后使用如下代码创建了一个测试客户端:
ResourceFactory.getResourceChangeScannerService().start();
ResourceFactory.getResourceChangeNotifierService().start();
KnowledgeAgent agent =
KnowledgeAgentFactory.newKnowledgeAgent("validation agent");
agent.applyChangeSet(changeSetUrlResource);
StatefulKnowledgeSession session =
agent.getKnowledgeBase().newStatefulKnowledgeSession();
// play with session
我面临的问题是提供changeset.xml的方式
首先,我创建了 changeset.xml 并将其放在我的类路径中,并通过类似changeSetUrlResource = ResourceFactory.newClassPathResource("drools/ChangeSet.xml")
内容的内容准备 changeSetUrlResource
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' >
<add>
<resource source='http://localhost:8080/guvnor/org.drools.guvnor.Guvnor/package/test/LATEST' type='PKG'
basicAuthentication="enabled" username="guest" password="guest"/>
</add>
</change-set>
这种方法有效。
然后我看到 changeset.xml 是直接从 Gunvor 提供的,我想使用它。我试图做这样的事情:
UrlResource changeSetUrlResource = (UrlResource)ResourceFactory.newUrlResource(
"http://localhost:8080/guvnor/org.drools.guvnor.Guvnor/package/test/LATEST/ChangeSet.xml");
changeSetUrlResource.setBasicAuthentication("enabled");
changeSetUrlResource.setUsername("guest");
changeSetUrlResource.setPassword("guest");
这种方法行不通。访问时它会抱怨 401 http://localhost:8080/guvnor/org.drools.guvnor.Guvnor/package/test/LATEST
。Gunvor 提供的 ChangeSet.xml 不包含身份验证信息。
鉴于 Gunvor 提供了 ChangeSet.xml,我相信有一种适当的方法可以将其与知识代理一起使用。但是在网上做了很多搜索,除了在 Gunvor 中完全关闭身份验证之外,我找不到相关信息。
配置 Drools KnowledgeAgent 以使用 Gunvor 上的 changeset.xml 的正确方法应该是什么?
谢谢