2016-08-05 12 views
0

내 BPEL에서 catch 블록에서 오류를 발견했습니다. catch 블록 내에서 입력 된 페이로드 (데이터)를 오류 변수에 매핑하고 jms 큐에 채울 assign 활동이 있습니다. 해당 jms 큐에서 하나 더 많은 서비스가 데이터를 선택하고 오류 메일을 보냅니다. 지금 오류 메일에 난으로 페이로드를 얻고있다 :xml에 원치 않는 URL 가져 오기 출력에있는 태그. 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> 

하지만 페이로드 이런 식으로 뭔가를 찾고 있었다 추적 흐름을 확인하면 난 내 메일의 URL없이 아래의 데이터를 가져 오는되어야한다고 생각 :

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

메일의 xml 태그 내에 URL이 표시되는 이유를 알려주십시오.

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

희망이 도움 (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 
     } 
}; 

이는 flowtrace에서 네임 스페이스 URL을