【问题标题】:How to Run Tibco BW Activity using JAVA Code Activity in TIBCO BW如何在 TIBCO BW 中使用 JAVA 代码活动运行 Tibco BW 活动
【发布时间】:2014-02-21 05:06:04
【问题描述】:

是否可以在流程定义流中插入 java 代码来运行之前的活动?

例如:流程定义包含以下各项。

Start--> ReadFile-> SoapRequestReply -->end

在上面的示例中,如果 SoapRequestReply 活动的执行包含任何错误,我想在 Java 代码的帮助下重试该活动。

我想以通用方式实现逻辑...我知道可以在“REPEAT ON ERROR UNTILL TRUE”组的帮助下实现上述概念,但我想借助 java 代码来实现。所以新的流程定义看起来像这样。

Start--> ReadFile-> SoapRequestReply --exception-->RetryOnce(Java Code) --> end..

Java 代码将再次执行上一个活动。

请建议...

【问题讨论】:

  • 为什么必须在 java 活动中?您要解决的实际问题是什么(而不是您想要的解决方案的问题)?

标签: tibco


【解决方案1】:

这确实非常适合错误组。但是,如果您真的买不起,您可以创建一个 SubProcess,在出错时回调您的 MainProcess 并将重试计数保存在作业共享变量中。请注意,这是一种快速而肮脏的解决方法。

【讨论】:

  • 逻辑不错,但我只想重复出现错误的活动。我不想重复整个过程。让我解释一下为什么我只想重复一个活动。假设流程定义中有两个活动,我希望在这些活动上实现“再试一次”逻辑。在那种情况下,您所描述的逻辑将不起作用。所以我想使用 Java 代码或其他一些可以达到目的的逻辑
  • 在您在 OP 中描述的场景中,此解决方案将起作用。付出的代价是每次都读取文件,这就是为什么我将其称为 Q&D 解决方法。但是,如果您只想重播失败的活动,那么事情会变得有点棘手,我不确定您是否可以在 Java 中实现这一点。典型的重放机制利用检查点或 JMS 队列,但是所有位于“之后”保存点的活动都将被重放,而不仅仅是失败的活动......
  • 是的,我只想重试那些失败的活动/活动。任何建议我该如何实施?
  • @user3332463 BusinessWorks 中没有公共 API 允许您将“再试一次”逻辑应用于活动。
  • @user3332463 您是否考虑过对您想要重复的每个活动使用 Nicolas 的答案。将活动取出到子流程中,然后实施类似于 Nicolas 提到的内容。
【解决方案2】:

您可以通过简单地将 SoapRequestReply 与 Group 包围来实现。 这可能是重复的“错误时重复直到为真”组 如果发生错误或“while true”循环,则按条件 x 次 处理(错误转换)例如用于记录目的。

无需 Java 编码/活动。

致以最诚挚的问候 赛博

【讨论】:

  • 我想实现它,除了使用“组”功能。通过 Java 代码活动或其他方式。除了使用“组”,我们能做到吗?
  • 参见上面的 Nicolas 解决方案 ;) 但是,您想避免组的原因是什么?