2011-12-28 3 views
0

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に設定するという単純なルール。 どこかで間違っています。誰か助けてくれますか?

答えて

0

guvnorに行くと、どのような種類のリソースがこのURLを指していますか? http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/org.pci/EPOCH? そのURLはどこから取得しましたか? EPOCHというリソースを持つorg.pciというパッケージを手に入れますか? 乾杯してください

+0

私は上記のコードを編集しました。 URLはBRMS内のリソースを指します。私はスナップショットを作成し、そこからURLを取得しました。 401は認証エラーですので、プロパティファイルを含める必要がありますか?はいの場合、Droolsプロジェクトのどこに配置する必要がありますか? – aps

+0

ちょうど今私はこの投稿ごとにプロパティファイルを追加しました:http://stackoverflow.com/questions/5791025/401-exception-in-java-code?answertab=oldest#tab-top今私は401の例外を取得していませんが代わりに、行のエラー--- Object bmw = carType.newInstance(); – aps

0

ナレッジパッケージの中に車で宣言したタイプを含めてもよろしいですか?

+0

ドキュメントごとに私は正確なコードを使用していました。私は、Carのインスタンスを作成することができないので、まだ認証の問題があると思います。知識ベースはリソースを指すことができません。 BRMSのリソースにアクセスできるようなコードを私に渡すことができますか? – aps

関連する問題