Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BRMS-资源和变更集_Java_Rules_Drools_Changeset - Fatal编程技术网

Java BRMS-资源和变更集

Java BRMS-资源和变更集,java,rules,drools,changeset,Java,Rules,Drools,Changeset,我正在尝试运行一个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.dr

我正在尝试运行一个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年,则将destroy的值设置为true。
我哪里出了问题。有人能帮我吗?

如果你去guvnor,什么样的资源指向这个URL? 你从哪里得到那个网址的?您是否得到一个名为org.pci的包,其中包含一个名为EPOCH的资源?
干杯

您确定在知识包中包含了汽车声明类型吗?

我已经编辑了上面的代码。URL指向BRMS中的资源。我创建了一个快照并从中获取了URL。401是一个身份验证错误,那么这是否意味着我必须包含属性文件?如果是的话,我应该把它放在Drools项目的什么地方?刚才我根据这篇文章添加了属性文件:现在我没有得到401异常,而是在--Object bmw=carType.newInstance;根据文档,我使用的是精确的代码。我认为它仍然存在身份验证问题,因为无法创建Car的实例。知识库无法指向资源。你能给我一些可以访问BRMS中资源的代码吗?