如何从Mule 3.5数据库连接器中的属性文件中读取SQL查询

时间:2014-08-02 17:21:36

标签: sql mule mule-studio

我有一个Mule流程,它使用Mule 3.5数据库连接器从数据库中获取数据...我的Mule Flow如下: -

<flow name="BestelItems" doc:name="BestelItems">
 <poll doc:name="Poll">
 <fixed-frequency-scheduler frequency="30" timeUnit="SECONDS"/>
  <db:select config-ref="Generic_Database_Configuration" doc:name="Database">
     <db:parameterized-query><![CDATA[select * from getData]]></db:parameterized-query>
 </db:select>
  </poll>
<mulexml:object-to-xml-transformer doc:name="Object to XML"/>
<logger message="Payload :- #[message.payload]" level="INFO" doc:name="Logger" />
</flow>

现在这可以正常工作并从数据库中获取所有数据并使用logger在控制台中显示..

现在的问题是,如果我尝试从属性文件中读取查询,那么它会抛出异常...例如,如果我将SQL查询select * from getData放在如下所示的Property文件中: - { {1}}然后尝试读取流中的值,如: -

QueryFromPropertyfile= select * from getData

然后它会产生以下异常: -

 <db:select config-ref="Generic_Database_Configuration" doc:name="Database">
   <db:parameterized-query><![CDATA[${QueryFromPropertyfile}]]></db:parameterized-query>
 </db:select>

请帮助..我需要做什么才能从新的Mule 3.5数据库连接器中的属性文件中读取SQL查询..我已经搜索了所有网络...但无法找到解决方案... < / p>

2 个答案:

答案 0 :(得分:2)

似乎无论出于何种原因,属性都可以在数据库查询中使用(感觉就像IMO一样,我建议你把它报告给MuleSoft)。

所以另一种选择是创建一个带有查询的流变量并使用它:

<flow name="the_flow">
  <poll>
     <fixed-frequency-scheduler frequency="30" timeUnit="SECONDS"/>
     <processor-chain>
       <set-variable variableName="selectQuery" value="${QueryFromPropertyfile}" />
       <db:select config-ref="Generic_Database_Configuration">
         <db:dynamic-query>#[flowVars.selectQuery]</db:dynamic-query>
       </db:select>
     </processor-chain>
  </poll>
  ..
</flow>

答案 1 :(得分:0)

我有同样的问题。正如@David建议我添加了一个流变量并插入了查询(来自属性)。唯一的区别是我必须在下面添加CDATA部分。之后我能够从属性文件中提取查询。这是我的流程:

<sub-flow name="OpenSubFlow" doc:name="OpenSubFlow">
    <set-variable variableName="openQuery" value="${opens}" doc:name="Open Var"/>    
    <db:select config-ref="MySQL_Configuration" doc:name="Opens">
        <db:dynamic-query><![CDATA[#[flowVars.openQuery]]]></db:dynamic-query>
    </db:select>
</sub-flow>