首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在单个mule流中处理多个If else条件

在单个mule流中处理多个If else条件
EN

Stack Overflow用户
提问于 2020-12-13 19:43:35
回答 3查看 452关注 0票数 0

我必须调用另一个团队的一个系统API,根据不同的条件使用不同的查询参数。。我在Choice Router中添加了不同的条件(现在是15,未来可能会增加),基于这些条件,我使用不同的查询参数调用相同的SAPI。

但是Choice Router变得非常笨重,我的流程看起来很丑陋。

请建议其他处理这种情况的好方法。

EN

回答 3

Stack Overflow用户

发布于 2020-12-13 20:07:51

我能想到的一种方法是将系统API抽象到它自己的流中,它需要一个包含所有预期参数的flowVar JSON变量(sapiParameters)。像这样:

代码语言:javascript
运行
复制
{
    param1: "hello", 
    param2: "world", 
    ...
} 

然后,您可以将条件逻辑移动到创建此flowVar变量sapiParameters的转换器中。

这些转换器可以是数据编织转换器,但如果逻辑变得太复杂,也可以成为Java类或groovy脚本。

票数 0
EN

Stack Overflow用户

发布于 2020-12-15 13:49:06

尝试使用match..case运算符删除多个if..else逻辑。根据您的条件,您可以将不同的查询参数传递给您的调用API。

https://docs.mulesoft.com/mule-runtime/4.3/dataweave-pattern-matching

票数 0
EN

Stack Overflow用户

发布于 2020-12-14 02:54:34

另一种方法是,我可以考虑使用DataWeave

if、else If、else或使用匹配运算符进行模式匹配

代码语言:javascript
运行
复制
<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 )组件调用流

代码语言:javascript
运行
复制
Please Note: You can add more else if in above code.
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65275191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档