2016-08-05 41 views
0

In meinem BPEL habe ich einen Fehler in einem Catch-Block gefangen. Innerhalb des Catch-Blocks habe ich eine Assign-Aktivität, die die Eingangsnutzdaten (Daten) der Fehlervariablen zuordnet und eine JMS-Warteschlange auffüllt. Von dieser JMS-Warteschlange empfängt ein weiterer Dienst die Daten und sendet eine Fehlermail. Jetzt in dem Fehler Mail Ich erhalte die Nutzlast als:Unerwünschte URL in den xml Tags im output bekommen. BPEL Oracle SOA 11g

<sal:salesUser xmlns:sal="http://www.mycompany.com/schemas/SalesUserMessage"> <!--Optional: --> 
<sal1:userID xmlns:sal1="http://www.mycompany.com/schemas/SalesUserObject">123ABC</sal1:userID> 
</sal:salesUser> 

Aber wenn ich den Fluss Spuren überprüfe die Nutzlast etwas so aussieht wurde und ich glaube, sollte die folgenden Daten ohne URLs in der Post bekommen:

<sal:syncSalesUser> 
<!-- Optional: 
       --> 
<sal1:userID>123ABC</sal1:userID> 
<!-- Optional: 
       --> 
</sal:syncSalesUser> 

Bitte sagen Sie mir, warum ich die URL innerhalb der XML-Tags in der Post bekomme.

PFB der assign Abschnitt meines Fang schwarz:

<catch faultName="bpelx:remoteFault" faultVariable="RuntimeFaultVar"> 
    <sequence name="seq_RemoteFault"> 
    <assign name="assign_RemotefaultMessage"> 
     <copy> 
     <from expression="oraext:get-content-as-string(bpws:getVariableData('receiveInput_InVar','userNotify','/ns22:userNotify/ns22:payload/ns22:user'))"/> 
     <to variable="FaultMessage" part="payload" 
      query="/ns7:FaultSchema/ns7:FaultMessage/ns7:Payload"/> 
     </copy> 
    </assign> 
    <invoke name="publish_RemoteFaultToQueue" 
      partnerLink="publish_ErrorToQueue" 
      portType="ns3:Produce_Message_ptt" operation="Produce_Message" 
      inputVariable="invoke_jms_publish_ErrorToQueue"/> 
    <terminate name="Terminate"/> 
    </sequence> 

Vielen Dank im Voraus.

+0

Im flowtrace url den Namespace hilft (xmlns: sal = "http://www.mycompany.com/schemas/SalesUserMessage") sind oben angezeigt. Deshalb siehst du sie nicht. Wenn Sie diese nicht sehen möchten, müssen Sie Ihre Variable ändern, um die Namespaces wie hier beschrieben zu entfernen http://orosaa.blogspot.fr/2008/12/remove-namespaces-in-osb-and-bpelesb.html – MrAdibou

Antwort

0

Wenn Sie Ihre gewünschte Ausgabe möchten, sollten Sie eine xquery verwenden, um alle Namespaces loszuwerden.

unter den XQuery-Versuchen:

xquery version "1.0" encoding "Cp1252"; 
(:: pragma parameter="$anyType1" type="xs:anyType" ::) 
(:: pragma type="xs:anyType" ::) 

module namespace xf="http://tempuri.org/Cancel_Order/RemoveNamespace"; 

declare function xf:strip-namespace($e as element())as element() 
{element { fn:QName("",fn:local-name($e)) } 
{ for $child in $e/(@*,node()) 
return 
if ($child instance of element()) 
    then xf:strip-namespace($child) 
     else $child 
     } 
}; 

Hoffe, dass es