0

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

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

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

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

4

1 回答 1

1

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

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

于 2021-03-30T10:12:26.263 回答