mule foreach内部变压器

mule foreach内部变压器,mule,Mule,我用的是骡子3.5。 我在foreach标记中使用bean builder转换器时遇到问题。 这是我的第一次测试: <flow name="mule.activity"> <poll doc:name="Poll"> <fixed-frequency-scheduler frequency="10000"/> <db:select config-ref="JSDB" doc:name="Database"> <db:parameterized

我用的是骡子3.5。 我在foreach标记中使用bean builder转换器时遇到问题。 这是我的第一次测试:

<flow name="mule.activity">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="10000"/>
<db:select config-ref="JSDB" doc:name="Database">
<db:parameterized-query><![CDATA[SELECT * FROM ACTIVITY WHERE rownum <= 6]]></db:parameterized-query>
</db:select>
</poll>
<foreach doc:name="For Each">
<logger message="start id #[payload.'ID']" level="DEBUG" category="mule.activity" doc:name="log" />
</foreach>
所以一切都很好

现在,我在foreach标记中添加了一个bean生成器转换器:

<foreach doc:name="For Each">

<logger message="start payload: #[payload]" level="DEBUG" category="mule.activity" doc:name="log" />
<logger message="start id #[payload.'ID']" level="DEBUG" category="mule.activity" doc:name="log" />

<bean-builder-transformer beanClass="com.jsolutions.mule.IO">
<bean-property property-name="bean_prop_1" evaluator="map-payload" expression="TABLE_FIELD_1" optional="true" />
<bean-property property-name="bean_prop_2" evaluator="map-payload" expression="TABLE_FIELD_2" optional="true" />
... (map all query fields except ID)
</bean-builder-transformer>

<logger message="end payload: #[payload]" level="DEBUG" category="mule.activity" doc:name="log" />
<logger
message="end id #[payload.'ID']" level="DEBUG" category="mule.activity" doc:name="log" />

<!-- use the message in order to call a ws service -->
</foreach>
我不明白为什么在第一次迭代之后,id总是“null”。。。
提前感谢您的回复

假设起始有效负载是一个映射(根据问题下的注释,这仍然是待定的),使用以下表达式检索ID:

#[message.payload.ID]

事实上,尽管直接使用
有效载荷
访问消息有效载荷在大多数情况下都能正常工作,但当它不能正常工作时,还是有一些模糊的情况。使用
消息。有效负载
始终有效。

有理由认为“结束id”为空(因为您使用转换器更改有效负载),但为什么在下一次迭代时不恢复“开始id”?真奇怪。您还可以在
开始
结束
处记录有效负载类别吗?但是,哇,
bean生成器转换器
!我认为这个东西没有进入Mule 3:)使用MEL表达式转换器或组件来实例化bean要比使用这个过时的小狗容易得多。也许是这种奇怪行为的罪魁祸首?也许它太旧了,不能很好地与每个
配合使用。嗨,大卫,我已经通过添加有效负载日志编辑了我的问题。是的。。。我很确定这种奇怪的行为是由变压器引起的,但我不明白为什么!无论如何,我的流程非常简单:获取db行,对于esch行,调用ws服务。如何实现这一点?这些是
开始时的有效负载还是
结束时的有效负载:您能按我的要求记录两者吗?也可以像我所问的那样记录有效负载类型而不是其内容吗?我已经在有效负载日志中添加了开始和结束。如何获取有效负载的类型?这仍然不会记录有效负载的类型。当我看到
start payload:{FIELD_1=004369951,ID=1363230}
时,我不知道它是字符串还是映射。
[2015-03-19 10:08:28,668] DEBUG: start payload: {FIELD_1=004369951, ID=1363230}
[2015-03-19 10:08:28,676] DEBUG: start id 1363230
[2015-03-19 10:08:28,684] DEBUG: end payload: com.jsolutions.mule.IO@67231ee8
[2015-03-19 10:08:28,687] DEBUG: end id null
[2015-03-19 10:08:28,688] DEBUG: start payload: {FIELD_1=004369951, ID=1363231}
[2015-03-19 10:08:28,688] DEBUG: start id null
[2015-03-19 10:08:28,690] DEBUG: end payload: com.jsolutions.mule.IO@2bc6e9f1
[2015-03-19 10:08:28,690] DEBUG: end id null
[2015-03-19 10:08:28,691] DEBUG: start payload: {FIELD_1=004369951, ID=1363232}
[2015-03-19 10:08:28,691] DEBUG: start id null
[2015-03-19 10:08:28,692] DEBUG: end payload: com.jsolutions.mule.IO@1028e3ab
[2015-03-19 10:08:28,692] DEBUG: end id null
[2015-03-19 10:08:28,693] DEBUG: start payload: {FIELD_1=TO3925878, ID=1363233}
[2015-03-19 10:08:28,693] DEBUG: start id null
[2015-03-19 10:08:28,694] DEBUG: end payload: com.jsolutions.mule.IO@6c7af7d6
[2015-03-19 10:08:28,695] DEBUG: end id null
[2015-03-19 10:08:28,695] DEBUG: start payload: {FIELD_1=TS7066322, ID=1363236}
[2015-03-19 10:08:28,695] DEBUG: start id null
[2015-03-19 10:08:28,697] DEBUG: end payload: com.jsolutions.mule.IO@7d253a3d
[2015-03-19 10:08:28,697] DEBUG: end id null
[2015-03-19 10:08:28,698] DEBUG: start payload: {FIELD_1=022245675, ID=1363237}
[2015-03-19 10:08:28,698] DEBUG: start id null
[2015-03-19 10:08:28,699] DEBUG: end payload: com.jsolutions.mule.IO@1712bafb
[2015-03-19 10:08:28,700] DEBUG: end id null
#[message.payload.ID]