IBM Integration Bus,用于调用多个服务的最佳实践

时间:2016-04-19 12:27:15

标签: ibm-integration-bus

所以我有这个要求,它需要一个文档,并且需要在输出中创建一个或多个文档。

在此过程中,需要确定文档是否已存在,因为有不同的操作要应用于创建和更新方案。

在直接代码中,这很简单(概念上)

InputData in = <something>

if (getItemFromExternalSystem(in.key1) == null) {
     createItemSpecificToKey1InExternalSystem(in.key1);
}
if (getItemFromExternalSystem(in.key2) == null) {
     createItemSpecificToKey2InExternalSystem(in.key1, in.key2);
}
createItemFromInput(in.key1,in.key2, in.moreData);

实际上是一种“确保此数据存在”。

然而,在IIB中我将如何实现这一目标?如果我使用子流进行Get / create循环,则子流的输出将是最后一个操作的结果,从子流返回作为流的新“消息”,但实际上,我不是关心“确保数据存在”子流的价值。我需要继续处理我的原始消息,但仍然等待不同的子流程完成才能运行我的最终“createItem”

2 个答案:

答案 0 :(得分:4)

您可以使用聚合节点:例如,使用3个流:

  1. 首先将您的原始信息传播到第三个
  2. 第二个将调用操作createItemSpecificToKey1InExternalSystem和createItemSpecificToKey2InExternalSystem
  3. 第三个是第一个和第二个的聚合结果,并调用createItemFromInput。

答案 1 :(得分:0)

您是否考虑过使用收集器节点?它会将您的记录收集到N&#39;集合中,然后您可以遍历集合并为每个集合输出一个文档。