2

基本的には、要素の数に制限がない複合型のBPELODEエンジンから応答を生成できるようにしたいと考えています。考え方は非常に基本的です。入力としてオブジェクトのリストを取得し、特定のカテゴリに基づいてフィルタリングを実行します。次に、フィルタリングに基づいて応答を生成する必要があります。これは、複数の要素である可能性があります。ただし、BPELコピーの割り当てでは、1対1の割り当てしか許可されません。私はすでに配列を使用しようとしていますが、複数の要素にも割り当てることができないようです。以下のスニペットは、入力と出力の両方を対象としています。

        <complexType name="hospitalType">
        <sequence minOccurs="1" maxOccurs="unbounded">
          <element name="patients">
          <complexType>
            <sequence>
              <element name="patient" minOccurs="1" maxOccurs="unbounded">
                <complexType>
                  <sequence>
                    <element type="string" name="name"/>
                    <element type="date" name="dob"/>
                    <element type="byte" name="age"/>
                    <element type="string" name="status"/>
                  </sequence>
                  <attribute name="pid" type="ID"/>
                </complexType>
              </element>
            </sequence>
          </complexType>
        </element>

これまでに試したことは次のとおりです

       <bpel:copy>
                <bpel:from part="payload" variable="input">

                            <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
                                <![CDATA[tns:patients/tns:patient[1]]]>
                            </bpel:query>
                        </bpel:from>
                <bpel:to part="inload" variable="output">

                            <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
                                <![CDATA[tns:patients/tns:patient]]>
                            </bpel:query>
                        </bpel:to>

        </bpel:copy>

入力に複数の要素がある場合、単純な割り当てを行うことさえできません。

4

1 に答える 1

1

これはWS-BPELの制限です。これを実現するための標準に準拠した方法は、XSL変換を実行することです。WS-BPEL仕様の65ページを参照してください。これを少し簡単にするために、ODEには、リストに要素を追加または挿入できるXPath拡張機能がいくつか用意されています。リストについては、こちらをご覧ください。このような割り当ての例は次のようになります。

<assign>
  <copy>
    <from>ode:insert-after($parent, $parent/child::node(), $siblings)</from>
    <to variable="parent"/>
  </copy>
</assign>
于 2013-01-03T10:27:19.133 に答える