BPEL 1.1のbpelx:insertAfter

次に、BPELバージョン1.1をサポートするBPELプロジェクトのbpelx:insertAfterの例を示します。

<bpel:assign> 
    <bpelx:insertAfter>
       <bpelx:from ... /> 
       <bpelx:to ... /> 
    </bpelx:insertAfter> 
</bpel:assign>

この操作は「bpelx:insertBeforeの使用方法」で説明した機能に類似していますが、次の違いがあります。

  • to-spec問合せで複数のL-Valueノードが返される場合は、最後のノードが参照ノードとして使用されます。

  • 参照ノードの前にノードが挿入されるかわりに、参照ノードの後にソース・ノードが挿入されます。

この操作は、conditional-switch+(appendまたはinsertBefore)のマクロとみなすこともできます。

次の例に、<insertAfter>の実行前の構文を示します。addrVarの値は次のとおりです。

<a:usAddress>
       <a:addressLine>500 Oracle Parkway</a:addressLine> 
       <a:state>CA</a:state>
       <a:zipcode>94065</a:zipcode> 
</a:usAddress>

次の例に、実行後の構文を示します。

<bpel:assign>
    <bpelx:insertAfter>
        <bpelx:from>
             <a:addressLine>Mailstop 1op6</a:addressLine>
        </bpelx:from> 
        <bpelx:to "addrVar" query="/a:usAddress/a:addressLine[1]" /> 
    </bpelx:insertAfter> 
</bpel:assign> 

次の例に、addrVarの値を示します。

<a:usAddress>
       <a:addressLine>500 Oracle Parkway</a:addressLine> 
       <a:addressLine>Mailstop 1op6</a:addressLine>
       <a:state>CA</a:state>
       <a:zipcode>94065</a:zipcode> 
</a:usAddress>

bpelx:insertAfter内のfrom-spec問合せでは、0(ゼロ)個以上のノードが取得されます。ノード・リストは、to-spec問合せで指定したターゲット・ノードに子ノードとして追加されます。