我面临一个奇怪的问题......我的骡子流程如下: -
<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']]
它转到记录器显示的选项块在数据库中找不到记录!!! ..但是你可以看到我在通过DB outbound调用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']]
,我成功获取了值..
但我不知道它为什么要进入<when expression="#[message.payload.isEmpty()]">
区块......
如果我在 RetriveQuery 中使用以下内容:Select * from getData where ID=22
然后它成功地在查询中获取ID的值。
如果我使用 flowVars ,请告诉我为什么它没有获得SQL查询的价值。
它正在成功执行插入和更新查询,但不能用于Select ..
请注意: - 这里是Select * from getData中ID的值,其中ID是整数..
答案 0 :(得分:0)
这很奇怪。
尝试清理并重新构建项目:正在运行的版本可能没有使用最新的配置。
答案 1 :(得分:0)
是的,这是一个奇怪的事情,我发现清洁并在工作室重新构建项目,因为大卫建议工作..可能是在获取最新配置并反映在预测中存在问题