1个流中的多个入站数据库端点

时间:2013-09-03 09:22:27

标签: mule

我正在尝试创建一个可能有多个数据库入站端点的流。流程如下:

  1. 从表X数据库A获取具有X.status(表X列状态)='new'的行的行。
  2. 从表Y数据库B获取行,其中Y.some_id = X.another_id。 X是从步骤(1)检索的行数据。
    1. 将新行插入表Z数据库B。
  3. 我意识到可能有一个数据库入站端点。我有什么方法可以用骡子来完成这个任务吗?

    环境:骡子3.4

2 个答案:

答案 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出站端点,以便您可以控制从浏览器运行的流程。

希望这有帮助。