我必须调用另一个团队的一个系统API,根据不同的条件使用不同的查询参数。。我在Choice Router中添加了不同的条件(现在是15,未来可能会增加),基于这些条件,我使用不同的查询参数调用相同的SAPI。
但是Choice Router变得非常笨重,我的流程看起来很丑陋。
请建议其他处理这种情况的好方法。
发布于 2020-12-13 20:07:51
我能想到的一种方法是将系统API抽象到它自己的流中,它需要一个包含所有预期参数的flowVar JSON变量(sapiParameters)。像这样:
{
param1: "hello",
param2: "world",
...
} 然后,您可以将条件逻辑移动到创建此flowVar变量sapiParameters的转换器中。
这些转换器可以是数据编织转换器,但如果逻辑变得太复杂,也可以成为Java类或groovy脚本。
发布于 2020-12-15 13:49:06
尝试使用match..case运算符删除多个if..else逻辑。根据您的条件,您可以将不同的查询参数传递给您的调用API。
https://docs.mulesoft.com/mule-runtime/4.3/dataweave-pattern-matching
发布于 2020-12-14 02:54:34
另一种方法是,我可以考虑使用DataWeave
if、else If、else或使用匹配运算符进行模式匹配
<ee:transform doc:name="Choice alternative" doc:id="230-3-kke9" >
<ee:message >
</ee:message>
<ee:variables >
<ee:set-variable variableName="choiceFlow" ><![CDATA[%dw 2.0
output application/java
---
if(<condition1>)
Mule::lookup('flow1', {test:'hello '})
else if (<conditional2>)
Mule::lookup('flow2', {test:'hello '})
else
Mule::lookup('flow3', {test:'hello '})]]></ee:set-variable>
</ee:variables>
</ee:transform>DataWeave引擎的内部工作可能导致查找函数与其他查找函数并行调用,或者根本不调用。
MuleSoft建议您使用流引用( Flow - Ref )组件调用流
Please Note: You can add more else if in above code.https://stackoverflow.com/questions/65275191
复制相似问题