我是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");
这种方法不起作用。访问http://localhost:8080/guvnor/org.drools.guvnor.Guvnor/package/test/LATEST
时,它会抱怨401。 Gunvor提供的ChangeSet.xml不包含身份验证信息。
鉴于Gunvor正在提供ChangeSet.xml,我相信有一种正确的方法可以将它与知识代理一起使用。但是在网上做了相当多的搜索,除了完全关闭Gunvor中的身份验证之外,我找不到相关信息。
配置Drools KnowledgeAgent以便在Gunvor上使用changeset.xml的正确方法是什么?
由于
答案 0 :(得分:0)
是的,使用changest over guvnor URL是正确的方法。使用URL身份验证:
UrlResource url = (UrlResource) ResourceFactory.newUrlResource(changeSetUrl);
url.setBasicAuthentication("enabled");
url.setUsername(userName);
url.setPassword(pass);
答案 1 :(得分:0)
我认为您提供的身份验证是通过Web从guvnor获取changeSet,但在ChangeSet文件中,您提供特定资源(如package或sth)的身份验证信息。我想尝试在没有身份验证的情况下使用ChangeSet或使用&#34; guest&#34; &#34;旅客&#34;作为用户名和密码。还有一件事你可以去你的guvnor,在行政左侧面板上,你可以为特定包的特定用户提供身份验证或许可(用户权限)。