1

私は Apache ODE を使用して、2 つの Web サービスを接続するための単純な BPEL を作成しています。私の 2 つのサービスの WSDL ファイルの 1 つに、次の複合型が含まれています。

<types>
<t:schema targetNamespace="http://ws.panos.com/" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <t:complexType name="myObject">
   <t:sequence>
     <t:element minOccurs="0" name="str" type="t:string" />
   </t:sequence>
 </t:complexType>
</t:schema>

サービスの戻りメッセージ (単なる xsd:string) からメッセージの入力 (タイ​​プ「myObject」の「str」内) へのコピーを作成するにはどうすればよいですか?

私はこれをやろうとしましたが、うまくいかないようです:

<assign name="assign_2">
<copy> 
    <from variable="wsA_output" part="return"/>
    <to variable="wsC_input" part="arg0" query="/arg0/str"/> 
</copy> 

私は常にヌル文字列を転送します。大変助かりました。

4

2 に答える 2

1

to-spec<to variable="..." part="..." query="..."/>は BPEL 1.1 でも BPEL 2.0 でも有効ではありません。正しい同等の表現は:<to>$wsC_input.arg0/arg0/str</to>または<to variable="wsC_input" part="arg0"><query>/arg0/str</query></to>です。また、ネストされた構造に値を割り当てる前に、変数を初期化してください。

于 2012-01-18T14:24:39.903 に答える
0

ちょうど間違いを見つけました。そうです、次のようなフィールドを見つけるためにクエリを実行する必要があります。

 <assign name="assign_2">
<copy> 
    <from variable="wsA_output" part="return"/>
            <to>$wsC_input.message/arg0/str</to>
</copy> 
</assign>

また、次のように変数を初期化する必要があります。

 <assign name="assign_init">
<copy> 
    <from>
        <literal><arg0><str xmlns="">nothing</str></arg0></literal>
    </from>
    <to variable="wsC_input" part="arg0"></to>
</copy> 
 </assign>

xmlns="" は、bpel のデフォルトの名前空間が受信 Web サービスの名前空間と異なる場合に必要です。

私は将来の参考のためにこれらを書き留めています:)

繰り返しますが、あなたの答えに感謝します。

他の人にも役立ついくつかのリンク:

http://ode.apache.org/faq.html

http://jee-bpel-soa.blogspot.com/2009/08/manipulating-ws-bpel-variables-and.html

于 2012-01-18T14:46:46.697 に答える