BRMS-资源和变更集

发布于 2024-12-23 07:28:23 字数 3795 浏览 6 评论 0原文

我正在尝试运行一个 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。 我在某个地方出错了。有人可以帮我吗?

I am trying to run a Drools project with all the rules created inside the JBRMS. I am having a 401 exception and leading to null point.

    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();
        }

    }

}

This is the ERROR I am getting.

[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)

I am getting a 401 exception. Do I need to include property file for authentication with this for that uri?
My resource has a declarative model and a rule. A simple rule saying that if "year" of car is less than 1989, set the value of "destroy" to true.
I am going wrong somewhere. Can somebody please help me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮华 2024-12-30 07:28:23

如果你去guvnor,什么样的资源指向这个URL? http://localhost:8080/jboss-brms /org.drools.guvnor.Guvnor/package/org.pci/EPOCH
您从哪里获得该网址?您是否获得了一个名为 org.pci 的包,其中包含一个名为 EPOCH 的资源?
干杯

If you go to guvnor, what kind of resources points to this URL? http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/org.pci/EPOCH?
Where did you get that URL? do you get a package called org.pci with a resource called EPOCH?
Cheers

菊凝晚露 2024-12-30 07:28:23

您确定将 Car 声明类型包含在知识包中吗?

Are you sure that you are including the Car declared type inside the knowledge package?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文