2016-04-29 4 views
0

Ich habe eine Sequenz, die eine Callout (Blockierung) ausführt, weil ich einige Daten aus der Antwort extrahieren muss, um eine Payload für eine neue Callouts zu einem anderen Dienst zu erstellen .So verwenden Sie Antwortdaten von Callouts zu einem anderen Callout in einer Nachricht

  1. Die Legende

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

  2. So kann ich die Antwort log:

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

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

  3. Der bzw. onse log ist:

    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. Also ich brauche die Werte von filename1, filename2 kennen und Modulo Ich versuche, mit XPath Wert loggt filename1 aber ich kann nicht tun.

    <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>

und das Protokoll:

`INFO - LogMediator filename = filename - ` 

i auch mit dem gleichen Ergebnis (gleiche log) versuchen

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

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

Was ist der richtige Weg, das zu tun?

Dank

Antwort

0

Endlich kann ich. Die Anfrage:

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

Der Schlüssel im Ziel ist:

`<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>` 

danach kann ich Wert von Dateinamen zugreifen

`<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

nur ein Test:

<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> 

Die Protokolle:

[2016.04.29 14: 19: 48.005] 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 Dateiname = Test - 28189133_AltaLigerao_Oficina_cmarguello_2016040810230 0_N.txt

Wenn Sie die $ ctx verwenden möchten: rta Art und Weise, es bitte wie in dieser Eigenschaft:

<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

nicht funktioniert ... i log den Körper $ und haben diese ' \t \t \t \t \t \t \t \t \t \t ' ' LogMediator Respuesta = ' – cmarguello

+0

meine Lösung funktioniert, wie Sie in den gedruckten Protokollen sehen können ... wenn Sie also eine Lösung benötigen, können Sie die Eigenschaft "Respuesta2" verwenden, um den Wert, den Sie in der concat-Funktion verwenden möchten, zu erfassen Problemumgehung. –

+0

Bitte überprüfen Sie den letzten Teil meiner Antwort, jetzt funktioniert es, wie Sie möchten –

Verwandte Themen