2011-12-25 12 views
4

私はbpelの新入生です。私はIf-elseをテストしています。 私は日食を使用して作成されてきたBPELファイルは次のとおりです。IfElseSample.bpelBPELとselectionFailureエラー

それが正常にエラーなしで展開が、私は次のように単純なコードを使用してそれをテストしようとすると:

try { 
     tps.bpel.ifelse.IfElseSample_Service service = new tps.bpel.ifelse.IfElseSample_Service(); 
     tps.bpel.ifelse.IfElseSample port = service.getIfElseSamplePort(); 
     tps.bpel.ifelse.IfElseSampleRequest payload = new tps.bpel.ifelse.IfElseSampleRequest(); 
     payload.setInput("John"); 
     tps.bpel.ifelse.IfElseSampleResponse result = port.process(payload); //Exception occur here 
     System.out.println("Result = "+result); 
    } catch (Exception ex) { 
     System.out.println("Exception=> "+ex); 
    } 

私は、例外エラーを得ました:また、ここで

javax.xml.ws.soap.SOAPFaultException: axis2ns6575:selectionFailure

my eclipse projectのすべてです。 と私が使用します。Web開発者のための

  1. のapache-tomcatの-7.0.23
  2. のapache-ODE-戦争-1.3.5
  3. のEclipseのJava EE IDE。バージョン:Indigoサービスリリース1

ありがとうございました。

答えて

3

BPEL標準は、XPathクエリがそれに実行することができる前に初期化される変数が必要です。あなたの例では、初期化されていない出力変数に値を割り当てています。初期化されていない変数は空であるため、XPath式tns:resultはノードを選択せず​​、したがってselectionFailureをスローします。最初に変数を初期化する必要があります(例:<assign>アクティビティの冒頭)。 Eclipse BPELデザイナーがこれを行うことができます(通常、変数を初期化するかどうか尋ねられます)。コードはおおよそ次のようになります。

<bpel:assign> 
    <bpel:copy> 
    <bpel:from> 
     <bpel:literal> 
     <payload><tns:result/></payload> 
     </bpel:literal> 
    </bpel:from> 
    <bpel:to>$output.payload</bpel:to> 
    </bpel:copy> 
</bpel:assign> 
+0

お返事ありがとうございます。 ;) – Rahman

+0

奇妙なことは、とてもきれい、バックバージョン1.6にすべてを元に戻す/頌歌サーバーを公開する、しかし、私は1.7でインクリメントするが、それを好きではなかったテストにいくつかのものをしようとしていた、私のBPELの作業の1つのバージョン1.6を持っていた私に起こりました自動的に生成された初期化をあなたの方法で置き換えます(私のbpelのものを変更したので、結果/出力名を変更する必要があります)。主な感謝 – RMiranda