Получение нежелательного URL в тегах xml на выходе. BPEL Oracle SOA 11g

В моем BPEL я обнаружил ошибку в блоке захвата. В блоке catch у меня есть действие assign, которое сопоставляет входную полезную нагрузку (данные) с переменной ошибки и заполняет очередь jms. Из этой очереди jms еще одна служба забирает данные и отправляет сообщение об ошибке. Теперь в сообщении об ошибке я получаю полезную нагрузку как:

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

Thanks in advance.


person user3839347    schedule 05.08.2016    source источник
comment
В потоке URL-адреса пространства имен (xmlns: sal = mycompany.com/schemas/SalesUserMessage) являются отображается вверху. Вот почему вы их не видите. Если вы не хотите их видеть, вам нужно изменить свою переменную, чтобы удалить пространства имен, как описано здесь orasoa.blogspot.fr/2008/12/   -  person Cedric    schedule 23.08.2016


Ответы (1)


Если вам нужен желаемый результат, вам следует подумать об использовании 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
       }
 };

Надеюсь, это поможет

person spattanaik75    schedule 17.10.2016