JBRMS内で作成されたすべてのルールを使用してDroolsプロジェクトを実行しようとしています。私は401の例外があり、ヌルポイントにつながっています。BRMS-リソースと変更セット
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に設定するという単純なルール。 どこかで間違っています。誰か助けてくれますか?
私は上記のコードを編集しました。 URLはBRMS内のリソースを指します。私はスナップショットを作成し、そこからURLを取得しました。 401は認証エラーですので、プロパティファイルを含める必要がありますか?はいの場合、Droolsプロジェクトのどこに配置する必要がありますか? – aps
ちょうど今私はこの投稿ごとにプロパティファイルを追加しました:http://stackoverflow.com/questions/5791025/401-exception-in-java-code?answertab=oldest#tab-top今私は401の例外を取得していませんが代わりに、行のエラー--- Object bmw = carType.newInstance(); – aps