DataWeave 是一种专门用于转换数据的函数式语言。它没有“for循环”结构。它确实有一个map() 函数,可用于转换数组。我了解您希望针对不同语言执行相同的 API 请求。为此,您应该使用 Foreach scope 来处理 Mule 中的流程。您可以将两者结合起来,使用 map() 为每种语言创建一个请求数组,并使用 Foreach 范围迭代请求输入列表并执行实际请求。
随机选择语言的示例:
<set-payload value="A quitter never wins and a winner never quits"/>
<set-variable variableName="languages" value="#[ ['en', 'et', 'ru', 'nl', 'pl', 'it'] ]"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
vars.languages map
{ "text": [payload], "source": "en", "target": $ }
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<foreach doc:name="For Each">
<logger message="sending request to translate: #[payload]"/>
<!-- call the translation API -->
</foreach>
记录器输出将是:
sending request to translate: {text=[A quitter never wins and a winner never quits], source=en, target=en}
sending request to translate: {text=[A quitter never wins and a winner never quits], source=en, target=et}
sending request to translate: {text=[A quitter never wins and a winner never quits], source=en, target=ru}
sending request to translate: {text=[A quitter never wins and a winner never quits], source=en, target=nl}
sending request to translate: {text=[A quitter never wins and a winner never quits], source=en, target=pl}
sending request to translate: {text=[A quitter never wins and a winner never quits], source=en, target=it}