标签: dataweave

惰性运算符和具有流能力的运算符之间有什么区别?

DataWeave 中的某些函数和操作似乎以惰性方式执行,不会一次加载所有记录或仅在调用时执行。同时,有些似乎支持流媒体。两者有什么区别?

mule dataweave

10
推荐指数
1
解决办法
84
查看次数

如何在DataWeave Mule esb中忽略空对象

我正在努力改造我的有效载荷.我有这种情况.

输入有效负载如下所示: -

{
 "address": {
    "city": "bab",
    "company_name": "asdast",
    "country_code": "sam",
    "location": {
    "city": null,
    "state": null
  }
}}
Run Code Online (Sandbox Code Playgroud)

我使用%output application/json skipNullOn = "everywhere"它返回我下面的JSON

{
 "address": {
"city": "bab",
"company_name": "asdast",
"country_code": "sam",
"location": { }
}}
Run Code Online (Sandbox Code Playgroud)

但是如果位置对象中的所有字段都是空的,我不希望有空的位置对象.我期待这样的事情

{   
"address": {
"city": "bab",
"company_name": "asdast",
"country_code": "sam"
}}
Run Code Online (Sandbox Code Playgroud)

mule mule-studio mule-el mule-component dataweave

7
推荐指数
1
解决办法
1万
查看次数

Mule批量提交和记录失败

我目前的情况:

我有10000条记录作为批量输入.根据我的理解,批处理仅用于逐个记录处理.因此,我在批处理步骤中使用dataweave组件转换每个记录(注意:我没有使用任何批处理提交)并将每个记录写入文件.进行逐条记录处理的原因在于,在任何特定记录中都存在无效数据,只有该特定记录失败,其余部分将被正确处理.

但在我看到的许多博客中,他们使用带有dataweave组件的batchcommit(带流).因此,根据我的理解,所有记录将一次性提供给数据编织,如果一条记录包含无效数据,则所有10000条记录都将失败(在数据编织时).然后,逐个记录处理的点丢失.以上假设是正确的还是我想错了?

这就是我不使用批量提交的原因.

现在,正如我所说,我将每条记录发送到一个文件.实际上,我确实需要将每条记录发送到5个不同的CSV文件.所以,目前我在BatchStep中使用Scatter-Gather组件将它发送到五个不同的路由.在此输入图像描述

因为,你可以看到图像.输入阶段提供10000条记录的集合.每条记录将使用Scatter-Gather发送到5条路线.

是,我使用的方法是好的,或任何更好的设计可以遵循?

此外,我已经创建了第二个批处理步骤,捕获FAILEDRECORDS.但是,使用当前的设计,我无法捕获失败的记录.

mule batch-processing dataweave

5
推荐指数
1
解决办法
4949
查看次数

DataWeave中的动态键值对

DataWeave不喜欢我正在尝试用它做什么,而且我不确定我做错了什么,或者它是否是DataWeave的限制是不可能的.

这是一个场景:我正在查询Salesforce并获得两个值:让我们称之为X和Y.

这是我想要的返回,[{X:Y}, {X2:Y2}, {X3:Y3}, ...]但是使用DataWeave似乎不可能获得像这样的键值对,相反,它似乎只能为脚本中的每个值专门设置Key,如下所示:[{Value_X: X, Value_Y: Y}, {Value_X: X2, Value_Y: Y2}, ...]

这是我当前的DataWeave脚本,但它给了我第二个结果:

%dw 1.0
%output application/java
---

payload map {
    Value_X: $.X,
    Value_Y: $.Y
}
Run Code Online (Sandbox Code Playgroud)

这是我希望工作的DataWeave脚本,但不是

%dw 1.0
%output application/java
---

payload map {
    $.X: $.Y
}
Run Code Online (Sandbox Code Playgroud)

mule dataweave

5
推荐指数
2
解决办法
1万
查看次数

如何在 mule 4 中将 hashmap 转换为正确的 json 格式?

我正在尝试记录我的哈希图,它看起来像这样: 在此处输入图片说明

如何将其转换为正确的 json 格式?

java mule anypoint-studio dataweave

5
推荐指数
1
解决办法
853
查看次数

如何在Mule Dataweave转换中使用正则表达式替换特殊字符?

假设我有一个员工详细信息的XML文件,例如id,name和address,现在我想将它转换为JSON文件,在谈话之前我想用地址字段中的空格替换指定的特殊字符( - ,/). json文件

下面是我的Dataweave转换代码

%dw 1.0
%output application/json
---
payload map ((payload01 , indexOfPayload01) -> {
    Id: payload01 .d as :string,
    Name: payload01.Name as :string, 
    Address: payload01.Address replace /(?)/ with " "
})
Run Code Online (Sandbox Code Playgroud)

那么我应该在replace /()/函数中写什么来替换特殊字符, -/空格

java mule mule-studio anypoint-studio dataweave

4
推荐指数
1
解决办法
9515
查看次数

如何在Mule DataWeave中过滤JSON数组

我有这样的JSON:

{
  "dcsId": "1184001100000000517",
  "marketCode": "US",
  "languageCode": "en-US",
  "profile": {
  "base": {
     "username": "arunima27",
     "activeInd": "R",
     "phone": [
       {
          "activeInd": "Y",
          "type": "mobile",
          "primaryInd": "Y",
          "number": "2234566788"
       },
       {
         "activeInd": "N",
         "type": "mobile",
         "primaryInd": "N",
         "number": ""
       }
      ]
    }
  }
 }
Run Code Online (Sandbox Code Playgroud)

从这个输入JSON我们需要提取payload.profile.base.phone.number,其中payload.profile.base.phone.type =="mobile"和payload.profile.base.phone.activeInd =="Y".实际上,我们需要循环遍历JSON数组(payload.profile.base.*phone)并仅获取活动且类别/类型为mobile的电话号码.

我们需要如下输出:

{
  "dcsId": "1184001100000000517",
  "marketCode": "US",
  "languageCode": "en-US",
  "username" :  "arunima27", 
  "phoneNumber" : "2234566788"
}  
Run Code Online (Sandbox Code Playgroud)

我们在为"phoneNumber"输出变量进行此转换时遇到问题.

mule dataweave

4
推荐指数
1
解决办法
1万
查看次数

多个DataWeave函数中的优先级

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

模块内容指出:

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

所以

filghts orderBy $.price filter ($.availableSeats > 30) 
Run Code Online (Sandbox Code Playgroud)

会“先过滤然后再排序”。

但是,我看到以下语句:

payload.flights orderBy $.price filter $.price < 500 groupBy $.destination
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

mule dataweave mulesoft

4
推荐指数
1
解决办法
314
查看次数

DataWeave 2.0日期中的夏时制

有没有一种方法可以自动处理夏令时?我正在使用以下转换

%dw 2.0
output application/json
---
{'date': now() >> "EST"}
Run Code Online (Sandbox Code Playgroud)

但输出是

{
  "date": "2019-08-08T06:45:16.663-05:00"
}
Run Code Online (Sandbox Code Playgroud)

时区为-05:00,但考虑到夏令时,我希望将其设为-04:00

mule dataweave

4
推荐指数
1
解决办法
85
查看次数

如何获取XML编码类型?

我当前的有效载荷是(从POST接收)

<?xml version='1.0' encoding='ISO-8859-1'?>
<test>
</test>
Run Code Online (Sandbox Code Playgroud)

我想获取编码值(即ISO-8859-1

正确使用什么DataWeave表达式?

我已经测试过

var infos = payload.^mediaType splitBy "; "
var encoding = infos[1] splitBy  "="
---
media:
{ 
    mime: infos[0],
    encoding: encoding[1]
}
Run Code Online (Sandbox Code Playgroud)

但它返回我:

{
"mime": "application/xml",
"encoding": "UTF-8"
}
Run Code Online (Sandbox Code Playgroud)

似乎payload.^mediaType来自我的POST标头。

这是解决问题的方法:

%dw 2.0
output application/java
---
((payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)[0][1]
Run Code Online (Sandbox Code Playgroud)

在提出的解决方案中,缺少^符号。

dataweave

4
推荐指数
1
解决办法
74
查看次数