2016-08-05 1 views
0

В моем BPEL я поймал ошибку в блоке catch. В блоке catch у меня есть операция назначения, которая будет отображать полезную нагрузку (данные) ввода в переменную ошибки и заполнять очередь jms. Из этой очереди jms еще одна служба собирает данные и отправляет сообщение об ошибке. Теперь в почте ошибки я получаю полезную нагрузку:Получение нежелательного URL-адреса в xml-тегах в out put. 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> 

Но если я проверить поток трассировки полезной нагрузки искал что-то подобное, и я считаю, должны получать следующие данные без URLS в моей почте:

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

Пожалуйста, сообщите мне, почему я получаю URL-адрес в тегах xml по почте.

PFB правопреемником часть моего улова черный:

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

Спасибо заранее.

+0

В flowtrace пространство имен URL (XMLNS: сала = "http://www.mycompany.com/schemas/SalesUserMessage") являются отображается сверху. Вот почему вы их не видите. Если вы не хотите их видеть, вам нужно изменить свою переменную, чтобы удалить пространства имен, как описано здесь. Http://orasoa.blogspot.fr/2008/12/remove-namespaces-in-osb-and-bpelesb.html – MrAdibou

ответ

0

Если вы хотите получить нужный результат, вы должны рассмотреть возможность использования xquery, чтобы избавиться от всех пространств имен.

Попробуйте ниже XQuery:

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

Надеется, что это помогает

Смежные вопросы