在 mule 3 中定义全局数据编织函数
Define global dataweave function in mule 3
我正在为有效载荷定义全局函数,但在 dataweave 1.0 中我无法完成该任务。
我必须定义一个单独的全局数据编织文件,我必须在其中添加有效负载的条件,例如 if gender== "male" then title= "mr."
我怎样才能完成任务。我已经添加了我的输入和预期的有效负载。
输入负载:
{
"persons": [
{
"name": "Devendra",
"gender": "male",
"age": 25
},
{
"name": "aman",
"gender": "male",
"age": 16
}
]
}
预期负载:
{
"persons": [
{
"title": "MR.",
"name": "Devendra",
"gender": "male",
"age": 25,
"adult": true
},
{
"title": "MS.",
"name": "Seema",
"gender": "female",
"age": 16,
"adult": false
}
]
}
在 Dataweave 1 中,您可以通过在 src/main/resources 中创建一个 dwl 文件来定义全局库,如下所示:
src/main/resources/dw/myFunctions.dwl:
%dw 1.0
%function titleForGender(gender)("mr" when gender=="male" otherwise "whoKnows?")
---
{
"titleForGender": titleForGender
}
此脚本创建一个全局函数,然后在 body 中公开它,以便其他脚本可以使用它。
然后在你的主要 dw 转换中是这样的:
%dw 1.0
%output application/json
%var sampleData={persons:[{name:"Devendra", gender:"male",age:25}, {name:"aman", gender:"male",age:16}]}
%var lib = readUrl("classpath://dw/myfunctions.dwl")
---
persons: sampleData.persons map {
"person": $ ++ {title: lib.titleForGender($.gender)}
}
它使用readUrl
从全局文件中读取函数作为var lib
,然后在映射人员数据时使用它,将gender
传递给函数并获取函数返回的标题。
这输出:
{
"persons": [
{
"person": {
"name": "Devendra",
"gender": "male",
"age": 25,
"title": "mr"
}
},
{
"person": {
"name": "aman",
"gender": "male",
"age": 16,
"title": "mr"
}
}
]
}
我正在为有效载荷定义全局函数,但在 dataweave 1.0 中我无法完成该任务。 我必须定义一个单独的全局数据编织文件,我必须在其中添加有效负载的条件,例如 if gender== "male" then title= "mr." 我怎样才能完成任务。我已经添加了我的输入和预期的有效负载。
输入负载:
{
"persons": [
{
"name": "Devendra",
"gender": "male",
"age": 25
},
{
"name": "aman",
"gender": "male",
"age": 16
}
]
}
预期负载:
{
"persons": [
{
"title": "MR.",
"name": "Devendra",
"gender": "male",
"age": 25,
"adult": true
},
{
"title": "MS.",
"name": "Seema",
"gender": "female",
"age": 16,
"adult": false
}
]
}
在 Dataweave 1 中,您可以通过在 src/main/resources 中创建一个 dwl 文件来定义全局库,如下所示:
src/main/resources/dw/myFunctions.dwl:
%dw 1.0
%function titleForGender(gender)("mr" when gender=="male" otherwise "whoKnows?")
---
{
"titleForGender": titleForGender
}
此脚本创建一个全局函数,然后在 body 中公开它,以便其他脚本可以使用它。
然后在你的主要 dw 转换中是这样的:
%dw 1.0
%output application/json
%var sampleData={persons:[{name:"Devendra", gender:"male",age:25}, {name:"aman", gender:"male",age:16}]}
%var lib = readUrl("classpath://dw/myfunctions.dwl")
---
persons: sampleData.persons map {
"person": $ ++ {title: lib.titleForGender($.gender)}
}
它使用readUrl
从全局文件中读取函数作为var lib
,然后在映射人员数据时使用它,将gender
传递给函数并获取函数返回的标题。
这输出:
{
"persons": [
{
"person": {
"name": "Devendra",
"gender": "male",
"age": 25,
"title": "mr"
}
},
{
"person": {
"name": "aman",
"gender": "male",
"age": 16,
"title": "mr"
}
}
]
}