来自pojo的美妙的富豪

时间:2012-05-24 06:43:24

标签: esb mule

我想添加一些有关插入Pojo的额外信息,我已经使用了消息丰富的骡子并且这样做,这是我的全部流程。我正在使用子流来获取有效负载并在DB中选择一些值并在同一个pojo中设置该值并返回,而在目标中我设置为有效负载但是我得到这样的错误“表达式Enricher for”payload“未注册与骡子。“

这是mu flow

<enricher doc:name="Message Enricher">
        <core:flow-ref name="flows1Flow1" doc:name="Flow Reference"/>
        <enrich source="#[groovy:payload]" target="#[payload]"/>            

<logger message="AFTER Enrich: #[payload]" level="INFO" doc:name="Logger"/>
    <component class="com.enrich.AfterEnricher" doc:name="Java"/>


 <sub-flow name="flows1Flow1" doc:name="flows1Flow1">
    <component class="com.enrich.MessageEnrichPattern" doc:name="Java"/>
    <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="selectData" connector-ref="jdbcConnector" doc:name="Database (JDBC)">
        <jdbc:query key="selectData" value="SELECT Username, Password, ModuleId from Credentials where ModuleId=#[map-payload:moduleId]"/>
    </jdbc:outbound-endpoint>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    <component class="com.enrich.ReceiveMessageEnrichPattern" doc:name="Java"/>
</sub-flow>

这里是ReceiveMessageEnrichPattern returing

Credential credential = new Credential();
    credential.setUname(hashMap.get("USERNAME").toString());
    credential.setPwd(hashMap.get("PPPP").toString());
    credential.setMid(hashMap.get("MODULEID").toString());
    return credential;

但在富集组件之后我得到例外。请帮助我如何丰富我的传入pojo与额外的信息可以添加。

1 个答案:

答案 0 :(得分:2)

根据docs,骡子目前只支持两个目标进行浓缩:

  • 流量变量,
  • 邮件标题。

要实现您的目标,您需要:

  • 将更丰富的结果(Credential对象)存储在流变量
  • 使用自定义转换器将流变量中的Credential对象中的值复制到主流中的POJO有效内容。