我正在尝试创建一个可能有多个数据库入站端点的流。流程如下:
我意识到可能有一个数据库入站端点。我有什么方法可以用骡子来完成这个任务吗?
环境:骡子3.4
答案 0 :(得分:2)
您可以通过利用<composite-source />
范围来声明流中的多个消息来源。
基本上你的流程看起来像这样:
<flow ... >
<composite-source>
<jdbc:inbound-endpoint ... />
<jdbc:inbound-endpoint ... />
</composite-source>
...
</flow>
This documentation page应该在topc上提供更多信息
答案 1 :(得分:1)
您的第一个数据库呼叫将是入站,第二个数据库将是出站。由于第一个数据库调用正在从数据库读取,因此它将是入站数据,而第二个数据库调用正在接收数据,这意味着它将是一个出站呼叫。
步骤1)入站数据库调用 - 从数据库A读取(表-X,列状态)。
步骤2)结果(有效载荷)很可能是列表或地图列表。您可以使用groovy脚本查询各个字段并设置流变量。例如
因为您有多行,所以使用集合拆分器来分割每一行记录非常重要。
查询状态变量:#[flowVars ['Var'] ['status']]。同样,您可以查询剩余的字段。
现在您已从数据库A准备好数据集,为数据库B编写查询并使用流变量(如上所述)查询Y.some_id。例如“其中Y.some_id =#[flowVars ['Var'] ['another_id']]”
步骤3)在相同的出站连接中,您可以在数据库B中执行插入(表-Z)。使这一切成为可能的原因是因为您使用的是特定的数据库连接器。
一些建议: 1)使数据库连接器和查询全局(在流程之前) 2)使用HTTP出站端点,以便您可以控制从浏览器运行的流程。
希望这有帮助。