可从多个数据编织脚本调用的通用mule数据编织函数

可从多个数据编织脚本调用的通用mule数据编织函数,mule,mule-component,dataweave,Mule,Mule Component,Dataweave,在流程1中,我有这样一个数据编织脚本 %output application/java %function fun1(str) xxxx //do some steps --- payload map ((payload01 , indexOfPayload01) -> { element1 : fun1(payload01.element1) } %output application/java %function fun1(str) xxxx

在流程1中,我有这样一个数据编织脚本

%output application/java
%function fun1(str)
    xxxx   //do some steps         
---
payload map ((payload01 , indexOfPayload01) -> {
element1 : fun1(payload01.element1)
}
%output application/java
%function fun1(str)
    xxxx  //do some steps            
---
payload map ((payload01 , indexOfPayload01) -> {
entity1 : fun1(payload01.entity1)
}
在流程2中,我有一个这样的数据编织脚本

%output application/java
%function fun1(str)
    xxxx   //do some steps         
---
payload map ((payload01 , indexOfPayload01) -> {
element1 : fun1(payload01.element1)
}
%output application/java
%function fun1(str)
    xxxx  //do some steps            
---
payload map ((payload01 , indexOfPayload01) -> {
entity1 : fun1(payload01.entity1)
}

fun1在流2中的数据编织中重复。。如何使fun1成为一个通用的数据编织函数,以便在流1和流2中从数据编织调用?

您可以做的是在src/main/resource文件夹下创建一个外部.dwl文件,并将您的数据编织脚本放在那里。这个.dwl可以与dataweave组件共享。例如:

在流程1中:-

<dw:transform-message doc:name="Transform Message in flow1">
     <dw:set-payload resource="classpath:test.dwl"/
</dw:transform-message>
请注意,如果您在dataweave中使用整个脚本,您可以共享该脚本。但是,如果您想使用dataweave组件的任何特定函数,最好使用可以在任何dataweave组件中使用的全局函数

参考:-

我不想在两个流中都使用dataweave中的整个脚本。我只对函数感兴趣。我也不想使用全局函数,因为data weave函数具有特定于数据weave的代码,如:localdatetime等;我猜在这种情况下,除了在两个流中重复数据编织功能之外,没有其他方法了?