views:

47

answers:

2

hi guys,

I am trying to upload my rules from jboss-brms to my eclipse in order to run it against the working memory. The following is my code and change-set.xml file and I am getting the following error stack. I have started the jboss-server and it is connected correctly. But I am not able to figure out the error I am getting and is my change-set and code proper? The error says that it is unable to parse change-set.xml and unable to connect to the server. I have just specified the url path in my change-set file and the types of files it should be looking out for. What else do I need to incorporate for it to connect to the server??? I could not find much help in the documentation.

Please help me. I am relatively new to Drools.

Code in my Runner class:

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 ipList = new ArrayList();

    ksession.setGlobal("ipList", ipList);
    ksession.insert(al);
    ksession.fireAllRules();
    ksession.dispose();

my change-set.xml file:

";

error stack:

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.(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

Please help me.

Thank you

+2  A: 

You shouldn't be referring to the general Guvnor URL but to a built package. Something like for package "defaultPackage": http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST

Note that Guvnor can manage multiple knowledge bases. So make sure to add your resources to the package you want and make sure it is built.

Kris Verlaenen
A: 

Like Kris said. You can get the correct URL for the latest package if you go to the package view in BRMS and check the section on the bottom "Information and important URLs".

If you want the agent to download snapshot go to "Package snapshots" and you can get the URL from the line that says "Deployment URL: click here to download binary (or copy URL for deployment agent)".

Toni Rikkola