【问题标题】:Design of JSR352 batch job: Is several steps a better design than one large batchlet?JSR352 批处理作业的设计:几个步骤比一个大批处理更好吗?
【发布时间】:2018-07-28 14:09:52
【问题描述】:

我的 JSR352 批处理作业需要从数据库中读取,然后根据结果流向两个路径之一,每个路径都涉及更多 if/else 场景。我想知道用大批处理编写单个步骤和由较小批处理组成的几个步骤之间的利弊是什么。该作业不涉及块大小大于 1 的块步骤,因为它需要立即持久化读取结果以防万一,然后再继续执行其他逻辑。该作业将使用 Control-M 运行,我想知道使用多个较小的步骤是否会提供更多控制点。

【问题讨论】:

    标签: control-m jsr352 java-batch


    【解决方案1】:

    根据该描述,我建议这些

    更多细粒度步骤的好处

    1。重启

    作业失败后,重新启动时的默认行为是从上一个作业执行失败的步骤开始执行。因此,将作业分解为更多步骤可以避免编写逻辑以从中断处恢复并避免重新处理,并且可以节省流程中的执行时间。

    2。重用

    通过将离散函数封装为它自己的 batchlet,您可以潜在地将其他步骤组合到使用同一个 batchlet 实现的其他作业中(甚至在此作业的后面)。

    3。将逻辑提取到 XML 中

    通过将过渡逻辑移动到过渡元素中,并提取条件流(例如<next on="RC1" to="step3"/>等) 在作业定义 XML (JSL) 中,您可以在标准控制点引入更改,而无需进入 Java 源代码并找到正确的位置。

    最后的想法

    您必须决定这些好处对于您的情况是否值得。

    再想一想

    如果您仍然可以从检查点甚至可能跳过/重试中找到好处,我不会仅仅因为您使用 1 项块而自动排除块步骤。 (但这可能是一个单独的问题。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      相关资源
      最近更新 更多