1

我有一个由之前的人构建的流程,它调用了一个非常简单的存储过程。过程完成后,流程有 2 次转换,一次表示存储过程成功,另一次表示不成功。但是,存储过程本身不会返回任何可以由流程流直接评估的内容,例如返回结果。现在,如果此过程失败(存在普遍存在的 max extants 问题),它将调用分支,该分支将调用存储过程以发送失败电子邮件消息。如果成功,则会发生相反的情况。

我不得不调整程序,所以我创建了一个新程序。现在,如果它失败或成功,无论如何都会调用成功分支。我已经检查了 oracle 的所有文档,以了解如何使其工作,并且我一生无法确定如何使其正常工作。我首先在oracle论坛上发布了这个,但没有得到任何回复。有谁知道如何使这项工作?

4

2 回答 2

0

根据 Oracle Warehouse Builder 指南:

当您向画布添加过渡时,默认情况下,过渡没有应用条件。

确保您已按照文档的定义转换条件部分中的说明正确定义了条件转换。

如果出现以下情况,用户定义的活动将返回ERROR结果:

  1. 它引发异常,或
  2. 它返回值3并且Use Return as Status选项设置为true
于 2013-10-29T07:39:24.590 回答
0

“但是,存储过程本身不会返回任何可以由流程直接评估的东西,比如返回结果。”

这就是症结所在:如果运行程序程序没有产生信号,你如何判断它是否成功?的确,在这种情况下,成功的定义是什么?

我不明白为什么,当您不得不“调整程序”时,您编写了一个新程序,而不是,呃,调整原始程序。解决此问题的唯一方法是从原始程序中获得一些反馈。

在这一点上,我们用完了细节。直接的选择是编辑原始过程,使其传回结果信息,可能通过 OUT 参数或通过引入一些日志记录功能。或者,重新编写它以在失败时引发异常。间接选项是编写一些查询来确定程序在给定运行中实现了什么,然后确定这是否构成成功。

就个人而言,重写原始程序似乎是更好的选择。


如果此答案对您没有帮助,那么您需要详细说明您的情况。你的程序做什么,你需要如何评估它,为什么你不能重写它。

于 2013-10-29T04:21:27.463 回答