【问题标题】:Flow variable not working correct for DB select query数据库选择查询的流变量不正确
【发布时间】:2015-07-21 14:27:12
【问题描述】:

我面临一个奇怪的问题......我的骡子流程如下:-

<jdbc-ee:connector name="Database_Global" dataSource-ref="DB_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
 <jdbc-ee:query key="InsertQuery" value="INSERT INTO getData(ID,NAME,AGE,DESIGNATION)VALUES(#[flowVars['id']],#[flowVars['name']],#[flowVars['age']],#[flowVars['designation']])"/> 

<jdbc-ee:query key="RetriveQuery" value="Select * from getData where ID=#[flowVars['id']] "/>
</jdbc-ee:connector>

<flow name="MuleDbInsertFlow1" doc:name="MuleDbInsertFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="mainData" doc:name="HTTP"/>
<cxf:jaxws-service service="MainData" serviceClass="com.vertu.services.schema.maindata.v1.MainData"  doc:name="SOAPWithHeader" />
<component class="com.vertu.services.schema.maindata.v1.Impl.MainDataImpl" doc:name="JavaMain_ServiceImpl"/>
 <mulexml:object-to-xml-transformer doc:name="Object to XML"/>

  <choice doc:name="Choice">
    <when expression="#[message.inboundProperties['SOAPAction'] contains 'retrieveDataOperation']">
        <processor-chain doc:name="Processor Chain">
        <set-variable variableName="id" value="#[xpath('//id').text]" doc:name="Variable"/>
        <logger message="ID from req #[flowVars['id']]" level="INFO" doc:name="Logger"/>
        <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="RetriveQuery" queryTimeout="-1" connector-ref="Database_Global" doc:name="Database (JDBC)"/>  

       <choice doc:name="Choice">
              <when expression="#[message.payload.isEmpty()]">
                 <processor-chain>
                  <!-- Data not exists .. We cannot display -->             
                   <logger message="No records found in Database !!!" level="INFO" doc:name="Logger"/>
                  </processor-chain>
                </when>
                  <otherwise>
                   <processor-chain>
                      <!-- Data  exists .. We cannotdisplay -->   
                    <logger message="The Data retrieved from the Database" level="INFO" doc:name="Logger"/>
                   </processor-chain>
                   </otherwise>
               </choice>

现在问题是每当我使用查询 RetriveQuery:- Select * from getData where ID=#[flowVars['id']]

它转到记录器显示的选择块 No records found in Database !!! .. 但是你可以看到我在通过 DB 出站调用 SQL 查询之前放置了一个记录器

<logger message="ID from req #[flowVars['id']]" level="INFO" doc:name="Logger"/> <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="RetriveQuery" queryTimeout="-1" connector-ref="Database_Global" doc:name="Database (JDBC)"/>

打印#[flowVars['id']],我成功获得了价值.. 但是我不知道为什么会去&lt;when expression="#[message.payload.isEmpty()]"&gt;block ...

如果我在 RetriveQuery 中使用以下内容:Select * from getData where ID=22 然后它在查询中成功获取 ID 的值.. 如果我使用 flowVars ,请告诉我为什么它没有在 SQL 查询中获得值 .. 它正在成功执行插入和更新查询,但不是 Select ..

请注意:- 这里是 Select * from getData 中 ID 的值,其中 ID 是整数..

【问题讨论】:

    标签: sql mule


    【解决方案1】:

    这很奇怪。

    尝试清理并重新构建项目:正在运行的版本可能未使用最新配置。

    【讨论】:

      【解决方案2】:

      是的,这很奇怪,我发现按照 David 的建议在工作室中清理并重新构建项目.. 可能是在获取最新配置并反映在项目中时存在问题

      【讨论】:

        猜你喜欢
        • 2021-07-29
        • 2022-01-22
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 2021-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多