0

我有一个接收数组并输出另一个数组的 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_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 元素。

我的代码看起来像这样:

<forEach parallel="yes" counterName="c" name="forEachComment">
  <startCounterValue>1</startCounterValue>
  <finalCounterValue>count($comments.VwCommentCollection/ns3:VwComment)</finalCounterValue>
  <scope name="Scope1">
    <assign name="assignResult">
      <extensionAssignOperation>
        <bpelx:copyList>
          <bpelx:from>$comments.VwCommentCollection[$c]</bpelx:from>
          <bpelx:to>$outputVariable.payload</bpelx:to>
        </bpelx:copyList>
      </extensionAssignOperation>
      <copy>
        <from>$comments.VwCommentCollection[$c]/ns3:VwComment/ns3:id</from>
        <to>$outputVariable.payload/ns2:comment/ns2:id</to>
      </copy>
    </assign>
  </scope>
</forEach>

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

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

4

1 回答 1

0

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

我在 BPEL 中使用了附加操作

于 2013-08-28T19:38:05.463 回答