2017-05-30 51 views
0

我在WSO2 ESB相當新的,我有以下問題嘗試檢索屬性值和投入,我生成一個XML文檔。如何檢索和使用WSO2 ESB的屬性的設定值不變?

所以,我有以下的情況,在我的ESB流程我已經定義了這個屬性命名交易並具有寄存器爲值:

<property name="TRANSACTION" scope="default" type="STRING" value="register"/> 

然後在我的流量我生成一個XML文檔(正常工作),採用payloadFactory調停,以這樣的方式

<payloadFactory media-type="xml"> 
    <format> 
     <register password="$14" username="$13" xmlns="http://ws.wso2.org/dataservice"> 
      <location> 
       <wiews>$1</wiews> 
       <pid>$2</pid> 
       <name>$3</name> 
       <address>$4</address> 
       <country>$5</country> 
       <lat>$6</lat> 
       <lon>$7</lon> 
      </location> 
      <sampledoi>$8</sampledoi> 
      <sampleid>$9</sampleid> 
      <date>$10</date> 
      <method>$11</method> 
      <genus>$12</genus> 
     </register> 
    </format> 
    <args> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_wiews/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_pid/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_name/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_address/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_country/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_lat/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:hold_lon/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:sample_doi/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:sample_id/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:date/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:method/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:genus/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:username/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
     <arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:password/text()" xmlns:ds="http://ws.wso2.org/dataservice"/> 
    </args> 
</payloadFactory> 

這genetes XML文檔像這樣:

<?xml version="1.0" encoding="UTF-8" ?> 
<register username="myUserName" password="myPswd"> 
    <sampleid>CGN00001</sampleid> 
    <genus>Hordeum2</genus> 
    ................................... 
    ................................... 
    ................................... 

我想用我的交易的價值屬性創建我的XML文檔的第一個標籤的名稱,在此:

<register password="$14" username="$13" xmlns="http://ws.wso2.org 

寄存器名有要使用該交易屬性值$ 15變量。我認爲我可以以某種方式把它定義爲...名單,但我不知道怎麼辦。這時在此列表中我只有值從DSS勞務輸出檢索到的,在這種情況下,我認爲我已經把我的交易財產的價值,但如何?

那麼,有沒有可能是這樣的:

<$15 password="$14" username="$13" xmlns="http://ws.wso2.org 

到dinamically插入標籤的名字嗎?

回答

1

據我所知,你不能做到這一點與payloadFactory但你可以爲你的根節點,只是payloadFactory調解後使用默認的名稱,添加此javascript:

<script language="js"><![CDATA[ 
    mc.getEnvelope().getBody().getFirstElement().setLocalName(mc.getProperty("TRANSACTION")); 
]]></script> 

的其他解決辦法是使用XSLT