流动在mulesoft恢复

时间:2015-09-08 11:10:10

标签: mule

我面临的问题是我正在使用每个组件逐个迭代记录然后插入到某个终端系统。
究竟发生了什么,当数据正确时,它将数据插入到终端系统中,但由于数据中存在一些异常,因此执行异常处理代码但流程不会重新恢复为for循环,以便执行所有其他记录。
我尝试添加sublow,然后从流程中调用它,但是在子流程中添加异常处理会给我带来错误,因为“自定义或捕获或选择异常处理中的无效内容”

如何在执行异常/错误处理块后恢复流程。

2 个答案:

答案 0 :(得分:0)

SubFlow无法获得终结点或例外策略,这就是您收到此错误的原因。

您可以使用正常流量而不是子流量。 如果它没有端点,则它会调用私有流,并且只能从应用程序内部引用。

HTH。

答案 1 :(得分:0)

首先,请记住,在错误处理程序运行后(无论处理程序的级别如何:app-default、flow-scope 或try-scope) 并且无论错误处理程序中的错误范围是 On Error Propogate 还是 On Error Continue,NO,repeat NO,都会执行该范围内的其他处理器。

让你得到你想要的他的模式:

  1. 将给定范围内的一个处理器(或一系列处理器)包装到 Try Scope 中。 (注意,最简单的方法是选择所需的处理器,右键单击,然后在弹出窗口中单击“Wrap in...”,然后在弹出的弹出窗口中单击“try”。
  2. 将 On Error Continue 错误范围放入 Try Scope 的错误处理部分。
  3. 在错误范围内根据需要处理错误。这可以包括 NO 处理器,它将错误视为无操作。

因此,当相关处理器抛出错误时,不会调用该 Try Scope 中的其他处理器,但是,在运行 Try Scope 的 On Error Continue 错误范围的处理器后,处理将在父作用域中继续(在这种情况下)流),然后您就可以继续处理集合中的元素。

注意:Subflow 不能有自己的错误处理程序是正确的。然而,重要的是要指出子流在其父/调用范围(例如流/私有流)的上下文中运行,其中可以有错误处理程序。因此,如果您有流 A 和 B 以及它们的错误处理程序 A' 和 B',以及子流 C,以及流 A 和 B 每个都通过流引用调用子流 C,并进一步假设您在 C 中有处理器 P1 流错误,然后:

  • 当从流程 A 调用 P1 运行时,控制权传递给 A'
  • 当从流程 B 调用 P1 运行时,控制权传递给 B'。

注意2:直到成功不会帮助迭代。它只会重复发送数据的尝试,直到处理器不再出错为止。这似乎不是 O.P. 的要求,尽管我的解释可能是错误的。