PayloadFactory - 丰富响应

PayloadFactory - Enrich with Response

我做了一个标注,响应是这样的:

<ns:return>
    <ax2446:contract>
        <ax2446:array>variable1</ax2446:array>
        <ax2446:array>value1</ax2446:array>
    </ax2446:contract>
    <ax2446:contract>
        <ax2446:array>variable2</ax2446:array>
        <ax2446:array>value2</ax2446:array>
    </ax2446:contract>
    <ax2446:contract>
        <ax2446:array>variable3</ax2446:array>
        <ax2446:array>value3</ax2446:array>
    </ax2446:contract>
    <ax2446:documents>
        <ax2446:array>attachement1</ax2446:array>
        <ax2446:array>D:\AUTO\filename-1.txt</ax2446:array>
    </ax2446:documents>
    <ax2446:documents>
        <ax2446:array>attachment2</ax2446:array>
        <ax2446:array>D:\AUTO\filename-2.txt</ax2446:array>
    </ax2446:documents>
    <ax2446:process>TEST_PROCESS</ax2446:modulo>
</ns:return>

我想用合同值创建一个新的负载(数字可以改变)

   <p:instantiateProcess xmlns:p="http://carbon.sample">
      <xs:process xmlns:xs="http://carbon.sample">TEST_PROCESS</xs:process>
      <ns:contract xmlns:ns="http://carbon.sample">
         <xs:array xmlns:xs="http://carbon.sample">variable1</xs:array>
         <xs:array xmlns:xs="http://carbon.sample">value1</xs:array>
      </ns:contract>
      <ns:contract xmlns:ns="http://carbon.sample">
         <xs:array xmlns:xs="http://carbon.sample">variable2</xs:array>
         <xs:array xmlns:xs="http://carbon.sample">value2</xs:array>
      </ns:contract>
      <ns:contract xmlns:ns="http://carbon.sample">
         <xs:array xmlns:xs="http://carbon.sample">variable3</xs:array>
         <xs:array xmlns:xs="http://carbon.sample">value3</xs:array>
      </ns:contract>
   </p:instantiateProcess>´

我通过以下方式获得所有合同:

<property
        expression="//ns:return/ax2431:contract"
        name="contract" scope="default" type="STRING"
        xmlns:ax2431="http://vo.carbon.sample/xsd" xmlns:ns="http://carbon.sample"/>

我尝试使用 payloadfactory,因为我不知道如何强化(如果使用此调解器是正确的)消息以调用新的 Web 服务。或者如果我必须用迭代器制作有效负载...

有人可以帮助我吗?谢谢

获得contract列表后,您可以使用iterate mediator来迭代列表,在迭代器中,您可以添加payloadFactory mediator到创建有效载荷,然后,同时您可以将修改后的有效载荷发送到新的 Web 服务。

请找到以下链接,其中详细说明了如何使用迭代调解器。

http://sparkletechthoughts.blogspot.com/2012/08/how-to-use-iterator-mediator-to-iterate.html

您似乎有几个选择:

  1. 使用负载工厂
  2. 使用 XSLT
  3. 使用脚本冥想器

我怀疑所有 3 个都能得到您想要的结果。这是一个你觉得最舒服的问题。就个人而言,我会沿着 Script mediator 路线走下去,在两个 XML 有效负载之间进行映射,这是一个示例:http://nimbleapi.com/2016/05/javascript-mapping-between-xml-payloads/

除了XSLT或Script meditator,ForEach mediator也是一个选项。

https://docs.wso2.com/display/ESB490/ForEach+Mediator