BRMS-ресурс и набор изменений

Я пытаюсь запустить проект Drools со всеми правилами, созданными внутри JBRMS. У меня есть исключение 401 и ведущее к нулевой точке.

    package pop.blah.test;

import org.drools.KnowledgeBase;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.KnowledgeAgentFactory;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.definition.type.FactType;

@SuppressWarnings("restriction")
public class CarApp {

    public static void main(String[] args) {

        KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent5" );
        kagent.applyChangeSet( ResourceFactory.newUrlResource("http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/pop.blah.test/CAR"));
        KnowledgeBase kbase = kagent.getKnowledgeBase();
        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
        ResourceFactory.getResourceChangeScannerService().start();
        try {
        FactType carType = kbase.getFactType( "pop.blah.test", "Car" );
        Object bmw = carType.newInstance();
        carType.set( bmw,"name","My Car" );
        carType.set( bmw,"make","BMW" );
        carType.set( bmw,"year", 1977);
        ksession.insert( bmw );
        ksession.fireAllRules();
        boolean dest = (Boolean) carType.get( bmw, "destroy" );
        if (dest==true) {
            System.out.println("I am gona destroy that car!");
        }
        else {
            System.out.println("I am happy with my car!");
        }
        } 
        catch (Exception E) {
         E.printStackTrace();   
        }
        finally {
         ksession.dispose();
        }

    }

}

Это ОШИБКА, которую я получаю.

[2011:12:363 14:12:718:debug] KnowledgeAgent building resource map
[2011:12:363 14:12:718:info] KnowledegAgent has started listening for ChangeSet notifications
[2011:12:363 14:12:718:info] KnowledgeAgent created, with configuration:
monitorChangeSetEvents=true scanResources=true scanDirectories=true newInstance=true
[2011:12:363 14:12:765:exception]
java.lang.RuntimeException: Unable to parse ChangeSet
    at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:393)
    at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:168)
    at pop.blah.test.CarApp.main(CarApp.java:16)
Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/pop.blah.test/LATEST
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at org.drools.io.impl.UrlResource.grabStream(UrlResource.java:210)
    at org.drools.io.impl.UrlResource.getInputStream(UrlResource.java:146)
    at org.drools.io.impl.UrlResource.getReader(UrlResource.java:214)
    at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:391)
    ... 2 more
[2011:12:363 14:12:765:exception]
java.lang.RuntimeException: Unable to parse ChangeSet
    at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:397)
    at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:168)
    at pop.blah.test.CarApp.main(CarApp.java:16)
[2011:12:363 14:12:765:info] KnowledgeAgent applying ChangeSet
Exception in thread "main" java.lang.NullPointerException
    at org.drools.agent.impl.KnowledgeAgentImpl.processChangeSet(KnowledgeAgentImpl.java:215)
    at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:183)
    at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:168)
    at pop.blah.test.CarApp.main(CarApp.java:16)

Я получаю исключение 401. Нужно ли мне включать файл свойств для аутентификации с этим для этого uri? Мой ресурс имеет декларативную модель и правило. Простое правило гласит, что если «год» автомобиля меньше 1989, установите значение «уничтожить» в true. Я где-то ошибаюсь. Может кто-нибудь, пожалуйста, помогите мне?


person aps    schedule 28.12.2011    source источник


Ответы (2)


Если вы перейдете к главе, какие ресурсы указывают на этот URL-адрес? http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/org.pci/EPOCH? Откуда вы взяли этот URL? вы получаете пакет под названием org.pci с ресурсом под названием EPOCH? Ваше здоровье

person salaboy    schedule 29.12.2011
comment
Я отредактировал код выше. URL-адрес указывает на ресурсы в BRMS. Я создал снимок и получил оттуда URL. 401 — это ошибка аутентификации, значит ли это, что мне нужно включить файл свойств? Если да, то где в проекте Drools мне его разместить? - person aps; 30.12.2011
comment
Только что я добавил файл свойств в соответствии с этой публикацией: stackoverflow.com/questions/5791025/ Теперь я получаю не исключение 401, а ошибку в строке --- Object bmw = carType.newInstance(); - person aps; 30.12.2011

Вы уверены, что включаете объявленный тип Car в пакет знаний?

person salaboy    schedule 31.12.2011
comment
Согласно документации, я использовал точный код. Я думаю, что это все еще проблема аутентификации, потому что экземпляр Car не может быть создан. База знаний не может указать на ресурс. Не могли бы вы дать мне какой-нибудь код, который может получить доступ к ресурсу в BRMS? - person aps; 01.01.2012