标签: mule4

基于条件的mule 4中的dataweave2.0转换

我必须根据条件编写一些转换和计算,例如汇总数组中的现金/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)

mule dataweave mule-esb mulesoft mule4

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

检查 json 负载中是否存在字段

我正在尝试检查该文件是否存在于 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 mule4

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

在 Mule 4 中匹配 Dataweave 中的数组值

我正在尝试匹配有效负载中的特定值,并使用 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)

我怎样才能做到这一点?

dataweave mule4

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

Mule 4 - 流程突然停止初始化,出现有关某些神秘 yml 文件的警告,MUnit 测试开始抛出意外错误

今天我正在开发 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/

其他可能有帮助(或没有帮助)的信息

  • 我正在开发 ApiKit SOAP 服务,但它仍然运行良好。 …

mule mule-studio anypoint-studio apikit mule4

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

Mule 4:Dataweave2.0:如何将路径作为属性传递以获取数据

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)

我什至尝试从有效负载传递路径,然后将其作为字符串。请建议

dataweave mulesoft mule4

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

mule 4 中的动态函数调用

我有多种功能:

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)

mule dynamic-function dataweave mulesoft mule4

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

Dataweave:根据条件合并 2 个数组

我有 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)

dataweave mule4

0
推荐指数
1
解决办法
1627
查看次数

如何根据 dataweave 中的键压缩 json 对象

我有一个 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 …

mule anypoint-studio dataweave mule4 anypoint-platform

0
推荐指数
1
解决办法
71
查看次数

Mule4 中的反向排序

我有一个与 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)

mule dataweave mule4

0
推荐指数
1
解决办法
122
查看次数

如何在 Mule 4 中执行字符串的条件连接?

假设我有三个字段

{
    "Name": "Ben",
    "City": "London",
    "Country": "United Kingdom"
}
Run Code Online (Sandbox Code Playgroud)

现在,当这些字段中的任何一个为空时,我不希望将其连接到最终响应中。

示例:如果所有三个字段均已填充,则最终结果:"Ben AND London AND United Kingdom",如果只有两个(假设城市和国家/地区):"London AND United Kingdom",如果只有一个:"Ben"

mule dataweave mulesoft mule4

0
推荐指数
1
解决办法
283
查看次数