Mule ESB:评估Mule表达式中的整数

时间:2013-11-23 21:04:07

标签: mule esb

我有一个数据库表,我使用数据库适配器从这里提取我的有效负载是定义:

CREATE TABLE PriceTickets(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0)  NOT NULL PRIMARY KEY, PRICE INTEGER,DESTINATION VARCHAR(255))"); 

现在,在我的配置中,我正在启动我的数据库入站端点&尝试在有效载荷上应用逻辑,如果Price值大于750,则转发到队列这里是逻辑:

<flow name="ExpreFlow2" doc:name="ExpreFlow2"> 
    <jdbc-ee:inbound-endpoint   queryTimeout="-1" doc:name="Database" connector-ref="jdbcConnector" queryKey="selectAll" pollingFrequency="10000">
            <jdbc-ee:transaction action="NONE"/>
    </jdbc-ee:inbound-endpoint>
   doc:name="Expression"></expression-transformer>-->  
    <!-- <logger level="INFO" message="Payload is #[message:payload]" doc:name="Logger1"></logger> -->
    <foreach doc:name="Foreach">
    <choice doc:name="Choice">
    <when expression="#[message.payload[0]['price'] > 750]" > 
       <processor-chain doc:name="Processor Chain"> 
            <request-reply timeout="5000"> 
               <jms:outbound-endpoint connector-ref="jmsConnector" queue="Queue1"></jms:outbound-endpoint> 
               <jms:inbound-endpoint connector-ref="jmsConnector" queue="Queue2"></jms:inbound-endpoint>  
             </request-reply>  
       </processor-chain>
    </when> 

但是我发现在尝试运行此流程时出现以下错误:

java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.Class
    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getCollectionPropertyAO(

尝试了指定整数比较的其他组合,没有工作,任何建议都非常受欢迎。

1 个答案:

答案 0 :(得分:0)

您有foreach来遍历行,因此表达式中的[0]可能是多余的。

您应该可以直接使用以下命令获取列值:

#[message.payload.price > 750]