【问题标题】:Spring batch - conditional step flow for Chunk modelSpring Batch - Chunk 模型的条件步骤流
【发布时间】:2021-06-26 05:59:29
【问题描述】:

我有两个步骤,如果第 1 步处理器在过滤后未返回任何项目,则应跳过第 2 步。 我看到ItemListenerSupport可以扩展,并且可以使用后处理。

@Override
public void afterProcess(NumberInfo item, Integer result) {
    super.afterProcess(item, result);
    if (item.isPositive()) {
        stepExecution.setExitStatus(new ExitStatus(NOTIFY));
    }
}

我的处理是基于块的,我想在处理完所有块之后设置退出状态,如果有任何项目未过滤。我目前正在将未过滤的项目添加到 ExecutionContext 并在下一步中使用。

如果所有块的所有项目都被过滤掉,我将如何阻止下一步

【问题讨论】:

    标签: spring spring-boot spring-batch spring-batch-tasklet


    【解决方案1】:

    对于程序化决策,您可以使用JobExecutionDecider。此 API 使您可以访问上一步的StepExecution,因此您可以根据上一步执行的任何信息及其执行上下文来决定运行下一步。在您的情况下,它可以是过滤器计数或任何对您的决定有意义的东西,您预先存储在执行上下文中。

    您可以在参考文档的Programmatic Flow Decisions 部分找到有关此 API 的更多详细信息和一些代码示例。

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2014-05-06
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 2015-04-30
      相关资源
      最近更新 更多