Function Dataweave 2.0:如何将else块数据分配给变量
我使用的是外部dwl文件,它在函数中有if-else块。函数的输出将成为有效负载,但是如何让“IF”将有效数据阻塞到一个变量中,“ELSE”将无效数据阻塞到另一个变量中,这样我就可以使用这两个变量写入两个单独的文件,一个有成功记录,另一个有失败记录 运行时:4.2.1Function Dataweave 2.0:如何将else块数据分配给变量,function,variables,dataweave,mule4,Function,Variables,Dataweave,Mule4,我使用的是外部dwl文件,它在函数中有if-else块。函数的输出将成为有效负载,但是如何让“IF”将有效数据阻塞到一个变量中,“ELSE”将无效数据阻塞到另一个变量中,这样我就可以使用这两个变量写入两个单独的文件,一个有成功记录,另一个有失败记录 运行时:4.2.1 fun providerObjMapping(payload) = (if(! isEmpty(payload.ProviderUniqueID)) { providerUniqueID: payload.Provide
fun providerObjMapping(payload) = (if(! isEmpty(payload.ProviderUniqueID)) {
providerUniqueID: payload.ProviderUniqueID,
salutation:payload.Salutation,
firstName:payload.FirstName,
middleName:payload.MiddleName,
lastName:payload.LastName
} else {
errorProviderUniqueID: payload.ProviderUniqueID,
errorSalutation:payload.Salutation,
errorFirstName:payload.FirstName,
errorMiddleName:payload.MiddleName,
errorLastName:payload.LastName
})
从DataWeave内部是不可能的。通过设计,Mule 4流中的每个组件都可以返回一个值,该值可以分配给或一个变量
使用选择路由器执行不同的任务。@aled是正确的;如果您只对成功或失败感兴趣,可以使用
选项
处理器来完成
另一方面,如果您同时需要两者,则可以使用转换消息
处理器,并添加另一个将转换存储在变量中的目标。这是我的建议
下面是转换消息
的样子:
<ee:transform doc:name="Transform Message" doc:id="4a9eae14-79e8-4ef3-acec-00901f548e00" >
<ee:message >
</ee:message>
<ee:variables >
<ee:set-variable variableName="valid" ><![CDATA[%dw 2.0
output application/json
fun providerObjMapping(payload) = if (! isEmpty(payload.ProviderUniqueID) ) {
providerUniqueID: payload.ProviderUniqueID,
salutation:payload.Salutation,
firstName:payload.FirstName,
middleName:payload.MiddleName,
lastName:payload.LastName
} else {
errorProviderUniqueID: payload.ProviderUniqueID,
errorSalutation:payload.Salutation,
errorFirstName:payload.FirstName,
errorMiddleName:payload.MiddleName,
errorLastName:payload.LastName
}
---
providerObjMapping(payload)]]></ee:set-variable>
<ee:set-variable variableName="invalid" ><![CDATA[%dw 2.0
output application/json
fun providerObjMapping(payload) = if ( isEmpty(payload.ProviderUniqueID) ) {
providerUniqueID: payload.ProviderUniqueID,
salutation:payload.Salutation,
firstName:payload.FirstName,
middleName:payload.MiddleName,
lastName:payload.LastName
} else {
errorProviderUniqueID: payload.ProviderUniqueID,
errorSalutation:payload.Salutation,
errorFirstName:payload.FirstName,
errorMiddleName:payload.MiddleName,
errorLastName:payload.LastName
}
---
providerObjMapping(payload)]]></ee:set-variable>
</ee:variables>
</ee:transform>
我可能在一个批处理文件中获得100万条记录,使用上述方法,我必须处理同一个文件两次。有什么优化的方法吗