2016-04-29 28 views
0

我有一個執行標註(阻塞)的序列,因爲我需要從響應中提取一些數據以創建有效內容以執行到另一個服務的新標註。如何使用標註中的響應數據到另一個標註中的標註

  1. 的標註

    <callout action="nextSource" initAxis2ClientOptions="false" serviceURL="http://192.168.0.33:9764/services/AltaLigeraService?wsdl"> <source type="envelope" /> <target key="myresponse" /> </callout>

  2. 這樣我就可以記錄響應:

    <property expression="get-property('myresponse')" name="rta" scope="default" type="STRING" />

    <log level="custom"> <property expression="$ctx:rta" name="Respuesta" /> </log>

  3. RESP賬戶ONSE日誌:

    INFO - LogMediator Respuesta = <ns:nextSourceResponse xmlns:ns="http://carbon.bbva.gtko.co"> <ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd" xsi:type="ax2431:Automatizacion"> <ax2431:filename1>28189133_AltaLigerao_Oficina_cmarguello_20160408102300_N.txt</ax2431:filename1><ax2431:filename2>28189133_AltaLigerao_Oficina_cmarguello_20160408102300_S.txt</ax2431:filename2> <ax2431:modulo>ALTA_LIGERA</ax2431:modulo> </ns:return> </ns:nextSourceResponse>

  4. ,所以我需要知道文件名1,文件名2的值和模 我試試,使用XPath,登錄文件名1的值,但我不能這樣做。

    <property expression="fn:concat('filename - ', $ctx:rta/ns:nextSourceResponse/ns:return/ax2431:filename1)" name="filename1" scope="default" type="STRING" xmlns:ns="http://carbon.bbva.gtko.co" xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd"/> <log level="custom"> <property expression="get-property('filename1')" name="filename" xmlns:ns="http://carbon.bbva.gtko.co" /> </log>

和日誌:

`INFO - LogMediator filename = filename - ` 

我也有同樣的結果(相同的日誌)

´expression="fn:concat('filename - ', $ctx:rta/ax2431:filename1)"´ 

`expression="fn:concat('filename - ', $ctx:rta/filename1)"` 

嘗試請告訴我正確的方式來做到這一點?

由於

回答

0

最後,我可以。 請求:

`<body> 
    <ns:nextSourceResponse xmlns:ns="http://carbon.bbva.gtko.co"> 
    </ns:nextSourceResponse> 
</body>` 

的關鍵是目標:

`<callout action="nextSource" initAxis2ClientOptions="false" 
       serviceURL="http://192.168.0.33:9764/services/AltaLigeraService?wsdl"> 
    <source type="envelope" /> 
    <target xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:s12="http://www.w3.org/2003/05/soap-envelope" 
     xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]" /> 
</callout>` 

後,我可以訪問文件名

`<property expression="//ns:nextSourceResponse/ns:return/ax2431:filename1" 
    name="filename1" scope="default" type="STRING" 
    xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd" xmlns:ns="http://carbon.bbva.gtko.co" />` 
1

只是測試:

<property expression="$body/*" 
    name="rta" scope="default" type="STRING" /> 

<log level="custom"> 
    <property expression="$ctx:rta" name="Respuesta" /> 
</log> 


<property expression="//ns:nextSourceResponse/ns:return/ax2431:filename1" name="Respuesta2" xmlns:ns="http://carbon.bbva.gtko.co" xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd"/> 

    <property 
     expression="fn:concat('test - ', get-property('Respuesta2'))" 
     name="filename1" scope="default" type="STRING" xmlns:ns="http://carbon.bbva.gtko.co" xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd"/> 
    <log level="custom"> 
     <property expression="get-property('filename1')" name="filename" 
      xmlns:ns="http://carbon.bbva.gtko.co" /> 
    </log> 

日誌:

[2016年4月29日14:19:48005] INFO - LogMediator Respuesta =

<ns:nextSourceResponse xmlns:ns="http://carbon.bbva.gtko.co"><ns:return xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd" xmlns 
:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax2431:Automatizacion"><ax2431:filename1>28189133_AltaLigerao_Oficina_cmarguello_20160408102300_N.txt</ax2431:filename1><ax24 
31:filename2>28189133_AltaLigerao_Oficina_cmarguello_20160408102300_S.txt</ax2431:filename2><ax2431:modulo>ALTA_LIGERA</ax2431:modulo></ns:return></ns:nextSourceResponse> 

[2016-04-29 14:19:48,007] INFO - LogMediator filename = test - 28189133_AltaLigerao_Oficina_cmarguello_2016040810230 0_N.txt

如果你想使用$ CTX:RTA方式,請在此屬性中使用它像:

<property expression="$ctx:rta//ns:return/ax2431:filename1/text()" 
      name="Respuesta2" xmlns:ns="http://carbon.bbva.gtko.co" xmlns:ax2431="http://vo.carbon.bbva.gtko.co/xsd"/> 
+0

不工作的價值... 我登錄的$體和具有該 '<屬性表達式= 「$體」 名稱= 「RTA」 範圍= 「默認」 \t \t \t \t類型= 「STRING」/> \t \t \t <日誌級別= 「自定義」> \t \t \t \t <屬性表達式= 「$ CTX:RTA」 名稱= 「Respuesta」/> \t \t \t' 'LogMediator Respuesta = ' – cmarguello

+0

我的解決方案可以在打印日誌中看到...所以如果您需要解決方案,您可以使用屬性」Respuesta2「tu捕獲您想要在concat函數中使用的值作爲解決方法。 –

+0

請檢查我的迴應的最後一部分,現在它工作,因爲你喜歡 –