我必须根据条件编写一些转换和计算,例如汇总数组中的现金/dd/支票收据和现金/dd/支票的总和。我已经定义了我的输入数组,并基于此我期待我定义的输出。帮我完成 dataweave。\
代码:
%dw 2.0
output application/json
---
{
receipt: payload map ( payload01 , indexOfPayload01 ) -> {
receiptId: payload01.receiptId,
amountCollected: payload01.amountCollected,
paymentMode: payload01.paymentMode,
},
summary: {
TotalamountCollected: payload.*amountCollected reduce ((val, acc=0) -> acc + val)
}
}
Run Code Online (Sandbox Code Playgroud)
输入:
[{
"receiptId": 11000134453,
"amountCollected": 11,
"paymentMode": "Cash"
}, {
"receiptId": 1105444723,
"amountCollected": 12,
"paymentMode": "Cheque"
}, {
"receiptId": 1143434763,
"amountCollected": 13,
"paymentMode": "DD"
},{
"receiptId": 11000134457,
"amountCollected": 14,
"paymentMode": "Cash"
}, {
"receiptId": 1105444728,
"amountCollected": 15,
"paymentMode": "Cheque"
}, { …Run Code Online (Sandbox Code Playgroud) 我正在尝试检查该文件是否存在于 json 负载中
字段我需要检查“名称”
输入:
{
"data": {
"schema": "rWdXQ7M38dwTJ8Ro29S8PQ",
"payload": {
"ChangeEventHeader": {
"changeType": "CREATE",
"changedFields": [
],
"Name": "Case",
"recordIds": [
"a77V00000000vI4IAA"
]
},
"Last_Month_Work_Billed_RS__c": 0.0
},
"event": {
"replayId": 10198245
}
},
"channel": "/data/Job__ChangeEvent"
}
Run Code Online (Sandbox Code Playgroud)
我使用的 dataweave 表达式如下
payload.data.payload.ChangeEventHeader= "Name"
Run Code Online (Sandbox Code Playgroud)
但是我无法使用逻辑进行检查。如何更改此表达式以检查 Name 字段是否存在
注意:我在骡子 4 中使用了选择连接器
我正在尝试匹配有效负载中的特定值,并使用 dataweave 表达式仅返回匹配的数组值。
输入:
name: QA
Run Code Online (Sandbox Code Playgroud)
有效载荷:
{
"kind": "drive#driveList",
"nextPageToken": "~!!~AI9FV7TFuXfzyGg-txFqJWTa2oDXcgJ3ULdaNmst8",
"drives": [
{
"kind": "drive#drive",
"id": "0AKrgo4Gdm2hzUk9PVA",
"name": "Dev"
},
{
"kind": "drive#drive",
"id": "0AGymmOhxiCGwUk9PVA",
"name": "EHS Safety - Public"
},
{
"kind": "drive#drive",
"id": "0AAD3jo6D8PX-Uk9PVA",
"name": "Job Master folder"
},
{
"kind": "drive#drive",
"id": "0AI1WUfEk8cWkUk9PVA",
"name": "MSTemplates"
},
{
"kind": "drive#drive",
"id": "0AC_FdkeL63mHUk9PVA",
"name": "QA"
}
]
}
Run Code Online (Sandbox Code Playgroud)
预期的输出应该像输出:
{
"kind": "drive#drive",
"id": "0AC_FdkeL63mHUk9PVA",
"name": "QA"
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
今天我正在开发 Mule 4 应用程序,突然我的 Anypoint Studio 变得疯狂了。当我尝试运行我的应用程序时,我收到一条错误,表明应用程序使用的端口已在使用中。没有什么异常,但是当我重新启动电脑并想再次运行该应用程序时,控制台中出现了可疑信息:
信息 2021-05-25 12:40:21,056 [WrapperListener_start_runner] [处理器:;事件:] org.mule.runtime.core.internal.construct.AbstractFlowConstruct:流 ImportPendingCorrectionsFlow 尚未启动 INFO 2021-05-25 12:40:21,056 [WrapperListener_start_runner] [处理器:; 事件:] org.mule.runtime.core.internal.construct.FlowConstructLifecycleManager:启动流程:ImportInvoicesFlow INFO 2021-05-25 12:40:21,056 [WrapperListener_start_runner] [处理器:; 事件:] org.mule.runtime.core.internal.construct.FlowConstructLifecycleManager:停止流程:ImportInvoicesFlow
我的应用程序中的所有流程都有相同的消息。
然后我尝试运行现有的 MUnit 测试,该测试自一个月或更长时间以来一直正常运行,但收到此错误:
++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++
- 运行测试:ImportInvoicesFlowTestWithIn CorrectVehicleCount - 测试 + +++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++ +++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++ java.lang.AssertionError: 抛出的错误 ID 与预期的不匹配。预期:<[APP:VALIDATION]> 但为:<[HTTP:CONNECTIVITY]> 在 org.mule.munit.runner.flow.TestFlow.run(TestFlow.java:313) 引起:java.io.IOException:远程已关闭 原因:java.io.IOException:远程关闭
HTTP这确实很奇怪——因为与这个流程完全无关。
最后我WARN在控制台发现了一个很奇怪的地方:
警告 2021-05-25 13:04:35,613 [Mule.app.deployer.monitor.1.thread.1] [处理器:; 事件:] com.mulesoft.agent.configuration.descriptor.YamlMuleAgentDescriptor:描述符文件 /home/xxxxxxx/apps/AnypointStudio-7.7.0-linux64/AnypointStudio/plugins/org.mule.tooling.server.4.3.0.ee_7。 3.5.202105101830/mule/conf/invoices-esb-mule4-app.yml 未找到。
我不知道这里发生了什么,我从来没有创建过这样的文件invoices-esb-mule4-app.yml。我假设这是 Mule 本身根据应用程序名称创建的某种配置文件。这里的路径很奇怪,因为我正在处理的工作区位于/home/xxxxxxx/AnypointStudio7/workspace-2/
其他可能有帮助(或没有帮助)的信息
dw2.0可以从yaml属性文件中读取路径吗?
例如说输入是
{
"head": {
"country": "US",
"body": {
"USStates": {
"stateName": "California",
"stateCode": "CL"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我必须从上面的请求中获取 stateCode 值。根据国家名称,路径每次都会改变(如中国国家、印度国家等)
那么有没有办法将输入路径作为参数传递给 Data weave?我们正在使用 yaml 属性。我尝试了下面的代码,它导致空值
%dw 2.0
output application/json
---
if(p("countryName." ++ (payload.head.country as String)) != null)
payload.p("countryName." ++ (payload.head.country))
else "not in scope"
Run Code Online (Sandbox Code Playgroud)
在 yaml 中声明如下
countryName:
US : head.body.USStates.stateCode
INDIA : head.body.IndiaStates.stateCode
Run Code Online (Sandbox Code Playgroud)
我什至尝试从有效负载传递路径,然后将其作为字符串。请建议
我有多种功能:
fun testadd(payload) =
({
addition: payload.value1 as Number + payload.value2 as Number
})
fun testsub(payload) =
({
substraction: payload.value1 as Number - payload.value2 as Number
})
fun testmultiply(payload) =
({
multiplication: payload.value1 as Number * payload.value2 as Number
})
Run Code Online (Sandbox Code Playgroud)
我想根据“操作”属性/元素的值动态调用该函数。假设如果“Operation”=“testadd”则调用testadd函数, 如果“Operation”=“testsub”则调用testsub函数
输入 :
{
"value1" : 10,
"value2" : 20,
"Operation" : "testadd"
}
Run Code Online (Sandbox Code Playgroud) 我有 2 个数组存储在变量中
变量.array1
[
{
"id": 123,
"name": "Sam",
"class": "first"
},
{
"id": 124,
"name": "John",
"class": "first"
},
{
"id": 125,
"name": "Max",
"class": "second"
}
]
Run Code Online (Sandbox Code Playgroud)
变量.array2
[
{
"studentId": 123,
"course": "science",
"otherActivities": "sports"
},
{
"studentId": 125,
"course": "arts",
"otherActivities": "studentCouncil"
},
{
"studentId": 126,
"course": "literature",
"otherActivities": "drama"
}
]
Run Code Online (Sandbox Code Playgroud)
预期输出:
[
{
"id": 123,
"name": "Sam",
"class": "first",
"course": "science",
"otherActivities": "sports"
},
{
"id": 125,
"name": "Max",
"class": "second",
"course": "arts", …Run Code Online (Sandbox Code Playgroud) 我有一个 json 结构如下:
[
{
"apiId": 18211158,
"policyName0": "cors"
},
{
"apiId": 18211158,
"policyName1": "client-id-enforcement"
},
{
"apiId": 18211150,
"policyName0": "client-id-enforcement"
},
{
"apiId": 18211162,
"policyName0": "client-id-enforcement"
},
{
"apiId": 18211162,
"policyName1": "cors"
},
{
"apiId": 18211162,
"policyName2": "oauth"
}
]
Run Code Online (Sandbox Code Playgroud)
我需要使用 dataweave 2.0 将其转换为以下内容
[
{
"apiId": 18211158
"policyName0": "cors",
"policyName1": "client-id-enforcement",
},
{
"apiId": 18211150
"policyName0": "client-id-enforcement",
},
{
"apiId": 18211162
"policyName0": "client-id-enforcement",
"policyName1": "cors",
"policyName2": "oAuth",
}
]
Run Code Online (Sandbox Code Playgroud)
请注意,每个 apiID 可以有多个策略,并且会生成 policyName json 属性,并且 cal 的值范围为 1 …
我有一个与 dwl 脚本变量中给出的类似方式的数据。
%dw 2.0
output application/json
var test = { "2022-10-19T10:59:00.000Z":[{"kio":"spotage"}] ,
"2022-10-17T10:59:00.000Z": [{"kio":"spotage"}] ,
"2022-10-18T10:59:00.000Z": [{"kio":"spotage"}]
}
---
test orderBy $$
Run Code Online (Sandbox Code Playgroud)
需要按 ASC 顺序按日期格式排序。得到以下响应,这是默认排序DSC。想要扭转它 ASC。尝试-$$过并[-1 to 0]尝试格式化为 LocalDateTime 检查它是否正常工作。
{
"2022-10-17T10:59:00.000Z": [
{
"kio": "spotage"
}
],
"2022-10-18T10:59:00.000Z": [
{
"kio": "spotage"
}
],
"2022-10-19T10:59:00.000Z": [
{
"kio": "spotage"
}
]
}
Run Code Online (Sandbox Code Playgroud)
期待回复如下
{
"2022-10-19T10:59:00.000Z": [
{
"kio": "spotage"
}
],
"2022-10-18T10:59:00.000Z": [
{
"kio": "spotage"
}
],
"2022-10-17T10:59:00.000Z": [
{ …Run Code Online (Sandbox Code Playgroud) 假设我有三个字段
{
"Name": "Ben",
"City": "London",
"Country": "United Kingdom"
}
Run Code Online (Sandbox Code Playgroud)
现在,当这些字段中的任何一个为空时,我不希望将其连接到最终响应中。
示例:如果所有三个字段均已填充,则最终结果:"Ben AND London AND United Kingdom",如果只有两个(假设城市和国家/地区):"London AND United Kingdom",如果只有一个:"Ben"