Mule ESB(Groovy脚本):如何检查值并将新的键值映射添加到java.util.LinkedList

时间:2018-08-16 15:46:42

标签: java groovy mule anypoint-studio mule-esb

我正在调用一个服务,该服务以LinkedList的形式从数据库返回数据。我需要使用一个新的字段“ status”来更新LinkedList,该字段由endDate决定。

  • endDate>当前日期=> status =已停用
  • endDate <=当前日期=> status =有效

M有效载荷类:java.util.LinkedList

M有效载荷::[{serialNumber =,maintenanceId = 12345,customerID = 09890,startDate = 2017-10-10 23:34:17,endDate = 2018-10-10 23:34: 17},{serialNumber =,maintenanceId = 09091,customerID = 74743,startDate = 2014-8-16 23:34:17,endDate = 2019-8-16 23:34:17}]

我遇到的问题是,我无法导航到链接列表中以检索值,也无法向列表中添加新值。希望有人能给我一些最好的前进方法的建议。我正在尝试使用常规转换器来更新有效负载,但是效果不是很好,因此没有任何代码可显示。

感谢您抽出宝贵的时间!

1 个答案:

答案 0 :(得分:1)

我有一个类似的要求(有效负载是JSON,但它也应该工作),这就是我使用Dataweave所做的(我添加了数据,以便于理解)。

%dw 1.0
%output application/java
---
flowVars.input2 map {
    serialNumber : $.serialNumber,
    maintenanceId: $.maintenanceId,
    customerID: $.customerID,
    startDate: $.startDate,
    endDate: $.endDate,
    status: "deactivated" when $.endDate as :date {format:"yyyy-M-dd HH:mm:ss"} > (now  as :date {format:"yyyy-M-dd HH:mm:ss"}) otherwise "activated"
}

通过此转换,您可以迭代列表并根据需要添加状态值。

输入示例:

 [{"serialNumber":"test1", "maintenanceId":"12345", "customerID":"09890", "startDate":"2017-10-10 23:34:17", "endDate":"2018-10-10 23:34:17"},{"serialNumber":"test2", "maintenanceId":"09091", "customerID":"74743", "startDate":"2014-8-15 23:34:17", "endDate":"2018-8-15 23:34:17"}]

输出示例

[{"serialNumber":"test1","maintenanceId":"12345","customerID":"09890","startDate":"2017-10-10 23:34:17","endDate":"2018-10-10 23:34:17","status":"deactivated"},{"serialNumber":"test2","maintenanceId":"09091","customerID":"74743","startDate":"2014-8-15 23:34:17","endDate":"2018-8-15 23:34:17","status":"activated"}]

希望这对您有帮助