选择路由器表达M子

时间:2018-10-22 03:50:05

标签: mule mule-component

我正在构建向其发送json请求的api,如下所示:

{
  "type":"string",
  "code": 101
}

我正在使用选择路由器,并且正在根据代码路由消息。 即如果代码不是101和100,那么将在什么时候执行条件 当Expression为-#[json:code != 101 && json:code != 100]时 但是即使代码为103,上述运算也返回true。

2 个答案:

答案 0 :(得分:2)

我假设您的注释“代码用双引号引起来”意味着有效载荷是这样的:

{
  "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' &amp;&amp; payload.code != '100']">
        <logger level="INFO" doc:name="Logger - Do this"/>
    </when>
    <otherwise>
        <logger level="INFO" doc:name="Logger - Do that"/>
    </otherwise>
</choice>

答案 1 :(得分:0)

在使用JSON有效负载之前,先使用Json到Object转换器

对m子中的逻辑运算符使用(and或or)代替(&&,||):DataWeaveLogicalOperators

xml配置代码,

studentID subjectID subjectMark subjectWeight  Rank   overallScore classID

 1         111         100         0.4           3      40         1
 1         222         0           0.6           3      40         1
 2         111         90          0.4           1      90         1
 2         222         90          0.6           1      90         1
 3         111         0           0.4           2      60         1
 3         222         100         0.6           2      60         1
 4         444         95          0.4           3      38         2
 4         555         0           0.6           3      38         2
 5         444         90          0.4           1      90         2
 5         555         90          0.6           1      90         2
 6         444         0           0.4           2      57         2
 6         555         95          0.6           2      57         2