选择路由器表达式Mule
我正在构建一个api,向其发送json请求,如下所示:选择路由器表达式Mule,mule,mule-component,Mule,Mule Component,我正在构建一个api,向其发送json请求,如下所示: { "type":"string", "code": 101 } 我正在使用choice路由器,并根据代码路由消息。 i、 e如果代码不是101和100,那么何时执行条件 当表达式为-#[json:code!=101&&json:code!=100] 但即使代码是103,上面的表达式也返回true 我假设您的注释“代码在双引号中”表示有效负载如下所示: { "type": "string", "code": "100" }
{
"type":"string",
"code": 101
}
我正在使用choice路由器,并根据代码路由消息。
i、 e如果代码不是101和100,那么何时执行条件
当表达式为-#[json:code!=101&&json:code!=100]
但即使代码是103,上面的表达式也返回true 我假设您的注释“代码在双引号中”表示有效负载如下所示:
{
"type": "string",
"code": "100"
}
如果是这样的话,我建议您将其转换为Java并从那里开始工作。如果代码是字符串,则需要将其作为100!='100'
:
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<choice doc:name="Choice - Code?">
<when expression="#[payload.code != '101' && payload.code != '100']">
<logger level="INFO" doc:name="Logger - Do this"/>
</when>
<otherwise>
<logger level="INFO" doc:name="Logger - Do that"/>
</otherwise>
</choice>
在使用Json负载之前使用Json到对象转换器 对于mule中的逻辑运算符,使用(and,or)代替(&&,| |): xml配置代码
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="json to obj"/>
<choice doc:name="Choice">
<when expression="#[payload.code != 101 and payload.code != 100]">
<logger level="INFO" doc:name="logger"/>
</when>
<otherwise>
<logger level="INFO" doc:name="default"/>
</otherwise>
</choice>
代码在双引号中,您不希望它返回true吗?103不是101,也不是100。OP没有使用DataWeave&&
和|
是OP用例中使用MEL的合适逻辑运算符类型。