Динамическая загрузка правил из BRMS - PullRequest
1 голос
/ 28 июня 2010

Я пытаюсь загрузить свои правила из jboss-brms в мое затмение, чтобы запустить его в отношении рабочей памяти.Ниже приведен мой код и файл 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

Пожалуйста, помогите мне.

Спасибо

Ответы [ 2 ]

4 голосов
/ 28 июня 2010

Вы должны ссылаться не на общий URL Guvnor, а на встроенный пакет.Что-то вроде пакета «defaultPackage»: http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST

Обратите внимание, что Guvnor может управлять несколькими базами знаний.Поэтому убедитесь, что вы добавили свои ресурсы в нужный вам пакет и убедитесь, что он собран.

1 голос
/ 13 июля 2010

Как сказал Крис.Вы можете получить правильный URL-адрес для последнего пакета, если перейдете в окно просмотра пакетов в BRMS и отметите раздел внизу «Информация и важные URL-адреса».

Если вы хотите, чтобы агент загрузил снимок, перейдите в раздел «Пакетные снимки», и вы можете получить URL-адрес из строки «URL-адрес развертывания: нажмите здесь, чтобы загрузить двоичный файл (или скопировать URL-адрес для агента развертывания)».

...