Bpel数组转换foreach

时间:2013-08-26 12:19:07

标签: soa bpel

我有一个bpel进程,它接收一个数组并输出另一个数组。

问题是,我需要获得第一个元素,填充第二个元素并在第二个元素中添加元素。

我的第一个数组来自这种对象:

<xsd:complexType name="comment_A">
  <xsd:sequence>
    <xsd:element name="id" type="xsd:int"/>
    <xsd:element name="username" type="xsd:string"/>
    <xsd:element name="name" type="xsd:string"/>
    <xsd:element name="picture" type="xsd:base64Binary"/>
    <xsd:element name="date" type="xsd:string"/>
    <xsd:element name="hour" type="xsd:string"/>
    <xsd:element name="bus-line" type="xsd:string"/>
    <xsd:element name="bus-number" type="xsd:integer"/>
    <xsd:element name="description" type="xsd:string"/>
    <xsd:element name="rate" type="xsd:int"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="comment_A"> <xsd:sequence> <xsd:element name="id" type="xsd:int"/> <xsd:element name="username" type="xsd:string"/> <xsd:element name="name" type="xsd:string"/> <xsd:element name="picture" type="xsd:base64Binary"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="hour" type="xsd:string"/> <xsd:element name="bus-line" type="xsd:string"/> <xsd:element name="bus-number" type="xsd:integer"/> <xsd:element name="description" type="xsd:string"/> <xsd:element name="rate" type="xsd:int"/> </xsd:sequence> </xsd:complexType>

我的第二个:

<xsd:complexType name="comment_B">
  <xsd:sequence>
    <xsd:element name="id" type="xsd:int"/>
    <xsd:element name="username" type="xsd:string"/>
    <xsd:element name="name" type="xsd:string"/>
    <xsd:element name="picture" type="xsd:base64Binary"/>
    <xsd:element name="date" type="xsd:string"/>
    <xsd:element name="hour" type="xsd:string"/>
    <xsd:element name="bus-line" type="xsd:string"/>
    <xsd:element name="bus-number" type="xsd:integer"/>
    <xsd:element name="description" type="xsd:string"/>
    <xsd:element name="rate" type="xsd:int"/>
    <xsd:element name="type-comment" type="xsd:string"/>
    <xsd:element name="liked-number" type="xsd:int"/>
  </xsd:sequence>
</xsd:complexType>

首先,我尝试迭代第一个数组,用第二个数组填充两个共同的属性。我尝试使用forEach元素。

我的代码看起来像这样: <xsd:complexType name="comment_B"> <xsd:sequence> <xsd:element name="id" type="xsd:int"/> <xsd:element name="username" type="xsd:string"/> <xsd:element name="name" type="xsd:string"/> <xsd:element name="picture" type="xsd:base64Binary"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="hour" type="xsd:string"/> <xsd:element name="bus-line" type="xsd:string"/> <xsd:element name="bus-number" type="xsd:integer"/> <xsd:element name="description" type="xsd:string"/> <xsd:element name="rate" type="xsd:int"/> <xsd:element name="type-comment" type="xsd:string"/> <xsd:element name="liked-number" type="xsd:int"/> </xsd:sequence> </xsd:complexType>

我首先尝试使用id元素进行测试,但是当comment_A数组的大小大于1时,我会收到异常

$ comment是我的变量,其中comment_A数组

1 个答案:

答案 0 :(得分:0)

我在此巴西博客后发现了一个解决方案:http://blog.iprocess.com.br/2012/09/oracle-soa-suite-11g-uso-da-atividade-assign-no-bpel/

我在BPEL中使用了append opperation