多个DataWeave函数中的优先级

时间:2019-01-29 02:24:51

标签: mule dataweave mulesoft

我正在学习Mule Dev 1课程,并且陷入模块内容和我在实践中看到的东西之间。

模块内容指出:

“使用一系列功能时,链中的最后一个功能将首先执行。”

所以

filghts orderBy $.price filter ($.availableSeats > 30) 

“先过滤,然后按orderBy”。

但是,我看到以下语句:

payload.flights orderBy $.price filter $.price < 500 groupBy $.destination

实际上并不首先执行groupBy。实际上,将groupBy放置在其他任何地方都会引发错误(因为更改了groupBy之后的输出架构)。

这里有任何关于为什么模块模块声明最后一个函数首先执行的想法,这显然不是这种情况?

谢谢!

1 个答案:

答案 0 :(得分:5)

(orderBy,groupBy等)的优先级都相同。 因此,它将首先按价格执行orderBy,然后按价格进行过滤,最后将其按目的地分组。

这与dw 1(m子3.x)和dw 2(m子4.x)相同。现在,这与DW版本之间的区别在于,在DW1中,所有这些以前都是lang运算符,而在DW 2中,它们只是使用中缀表示法调用的函数。因此,这意味着您可以使用前缀表示法

编写相同的内容
filter(
       orderBy(filghts, (value, index) -> value.price), 
                           (value, index) -> value.availableSeats > 30) 

仅向您展示这是此表达式的AST。

enter image description here