使用Mule在我的有效负载中使用其他类方法

时间:2014-04-12 12:24:14

标签: java xml mule mule-studio

我创建了一个Mule应用程序,它从一些json提要中获取数据,并使用我创建的自定义转换器对它们进行转换。

我有一个父类Event和两个继承它的子类:Event1Event2。我的自定义转换器(auto-transformer)的返回类是Event

我正在使用选择流控制组件,因此当达到Event1的某个数据值时,会发送邮件,当达到Event2的某个数据值时,会发送不同的邮件

Event1中,我定义了方法getThisData(),并在Event2中定义了getThatData()

当我使用#[payload.getThisData()]时,一切正常,检查值,如果条件为真,则发送邮件。

但是,对于Event2分支,它不起作用。它给了我一个错误。它试图在getThatData()类中查找Event1,显然它不存在。

我该如何解决这个问题?如何从getThatData()获得价值?

我使用的是Mule Studio。

<processor-chain>
    <auto-transformer returnClass="events.Event" name="JSONToEvent"></auto-transformer>
    <logger level="INFO" doc:name="Logger"/>
    <choice doc:name="Choice">
        <when expression="#[payload.getThisData()&gt;1200]">
            <twitter:update-status config-ref="Twitter" status="Value reached"/>
        </when>
        <when expression="#[payload.getThatData()&gt;11]">
            <twitter:update-status config-ref="Twitter" status="The other value reached"/>
        </when>
        <otherwise>
            <twitter:update-status config-ref="Twitter" status="#[payload]" doc:name="Normal"/>
        </otherwise>
    </choice>
</processor-chain>

1 个答案:

答案 0 :(得分:0)

您可以尝试检查表达式中的有效内容类:

#[payload instanceof events.Event2 &amp;&amp; payload.getThatData()&gt;11]