2016-08-05 13 views
0

私のBPELでは、catchブロックで障害が発生しました。 catchブロック内には、入力ペイロード(データ)をfault変数にマップし、jmsキューを生成するassignアクティビティがあります。そのjmsキューからもう1つのサービスがデータをピックアップし、エラーメールを送信します。 今私は、ペイロードを取得していますエラーメールのように: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:SAL = "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 
     } 
}; 

は、名前空間URL flowtraceで