我有一个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>
答案 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>