2017-05-30 4 views
0

私はかなり新しいですWSO2 ESBと私は、プロパティの値を取得し、私が生成しているXMLドキュメントに入れようとすると、次の問題があります。WSO2 ESBでプロパティの設定値を取得して使用する方法は?

だから、私は次のような状況を持って、私のESBの流れで私が名付けTRANSACTIONと値としてレジスタを持つこのプロパティ定義されています:

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

はその後、私の流れの中で、私は、XML文書を生成していますが

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

は、XMLドキュメントをgenetes:この方法では、payloadFactory伝達物質を使用して、(それが正常に動作します)このように:

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

レジスタ名前を持っている:

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

私はこの中で、私のXML文書の最初のタグの名前を作成するために、私のTRANSACTIONプロパティの値を使いたいですTRANSACTIONプロパティ値を使用する$ 15変数になります。私は何らかの方法でそれを定義することができると思います...リストしかし私は方法を知らない。現時点ではこのリストではDSSサービスの出力から取得した値しかありません。この場合、私はTRANSACTIONというプロパティの値を入れなければならないと思いますが、どうですか?

だから、それはこのようなものが可能です:dinamicallyタグ名を挿入するために

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

答えて

1

私の知る限りでは、あなたはpayloadFactoryでそれを行うことはできませんが、あなたのルートノードのデフォルト名を使用して、ちょうどpayloadFactoryメディエーターの後に、このJavaScriptを追加することができます。

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

他のソリューションを希望XSLTを使用するには

関連する問題