PayloadFactory - 充满响应

时间:2016-05-03 18:54:40

标签: wso2 wso2esb

我发出一个标注响应是这样的:

<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服务(如果使用此调解器是正确的)。或者如果我必须用迭代器制作有效载荷......

任何人都可以帮助我吗?感谢

3 个答案:

答案 0 :(得分:0)

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

请查找以下链接,详细说明如何使用iterate mediator。

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

答案 1 :(得分:0)

您似乎有几个选择:

  1. 使用有效负载工厂
  2. 使用XSLT
  3. 使用脚本冥想器
  4. 我怀疑所有3人都能得到你所追求的结果。这是一个你觉得最舒服的问题。就个人而言,我会沿着Script mediator路径,在两个XML有效负载之间进行映射,这是一个例子:http://nimbleapi.com/2016/05/javascript-mapping-between-xml-payloads/

答案 2 :(得分:0)

除了XSLT或Script冥想器之外,ForEach中介也是一种选择。

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