我试图将规则从jboss-brms上传到eclipse,以便针对工作内存运行它。
以下是我的代码和change-set.xml文件,并且出现以下错误堆栈。
我已经启动了jboss服务器,它已正确连接。
但是我无法弄清我遇到的错误,我的变更集和代码是否正确?
该错误表明它无法解析change-set.xml并且无法连接到服务器。我刚刚在更改集文件中指定了url路径,并指定了它应查找的文件类型。
我还需要结合什么才能使其连接到服务器???我在文档中找不到太多帮助。
请帮我。我对Drools比较陌生。
我的Runner类中的代码:
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
ResourceFactory.getResourceChangeScannerService().start();
ResourceFactory.getResourceChangeNotifierService().start();
// creating a knowledge agent
KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent", kbase,aconf );
kagent.applyChangeSet( ResourceFactory.newUrlResource("http://localhost:8280/jboss-brms/org.drools.guvnor.Guvnor/Guvnor.html"));
StatefulKnowledgeSession ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
// StatelessSession workingMemory = ruleBase.newStatelessSession();
ArrayList<Ip> ipList = new ArrayList<Ip>();
ksession.setGlobal("ipList", ipList);
ksession.insert(al);
ksession.fireAllRules();
ksession.dispose();
我的change-set.xml文件:
<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.xsd' >
<add>
<!-- Add for specifying URLs-->
<resource source='http://localhost:8280/jboss-brms' type='DRL' />
<resource source='http://localhost:8280/jboss-brms' type='DSLR' />
<resource source='http://localhost:8280/jboss-brmss/sample-dsl.dsl' type='DSL' />";
<resource source='http://localhost:8280/jboss-brms' type='BRL' />
</add>
</change-set>
错误堆栈:
java.lang.RuntimeException: Unable to parse ChangeSet
at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:223)
at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:109)
at com.org.RuleRunner.runStatelessRules(RuleRunner.java:156)
at com.org.RulesTest.main(RulesTest.java:38) Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.Socket.connect(Socket.java:524)
at java.net.Socket.connect(Socket.java:474)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:388)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:523)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:231)
at sun.net.www.http.HttpClient.New(HttpClient.java:304)
at sun.net.www.http.HttpClient.New(HttpClient.java:321)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:839)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:791)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:716)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:960)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:973)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:905)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:872)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:282)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(XMLDocumentScannerImpl.java:1021)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.drools.xml.ExtensibleXmlParser.read(ExtensibleXmlParser.java:255)
at org.drools.xml.ExtensibleXmlParser.read(ExtensibleXmlParser.java:170)
at org.drools.xml.XmlChangeSetReader.read(XmlChangeSetReader.java:48)
at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:221)
... 3 more
请帮我。
谢谢
最佳答案
您不应该参考通用的Guvnor URL,而是要参考构建的软件包。
类似于“ defaultPackage”包的内容:
http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST
请注意,Guvnor可以管理多个知识库。因此,请确保将您的资源添加到所需的程序包中,并确保它已构建。
关于java - 从BRMS动态加载规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3129056/