问题描述
我有两个步骤,如果步骤 1 处理器在过滤后没有返回任何项目,则应跳过步骤 2。
我看到 ItemListenerSupport
可以扩展并且可以使用 after process。
@Override
public void afterProcess(NumberInfo item,Integer result) {
super.afterProcess(item,result);
if (item.isPositive()) {
stepExecution.setExitStatus(new ExitStatus(NOTIFY));
}
}
我的处理是基于块的,我想在处理完所有块后设置退出状态,如果有任何项目未过滤。我目前正在将未过滤的项目添加到 ExecutionContext
并在下一步中使用。
如果过滤掉所有块的所有项目,我将如何防止下一步
解决方法
对于程序化决策,您可以使用 JobExecutionDecider。此 API 可让您访问上一步的 StepExecution
,因此您可以根据上一步执行及其执行上下文中的任何信息来决定运行下一步。在您的情况下,它可以是过滤器计数或任何对您的决定有意义的东西,您预先存储在执行上下文中。
您可以在参考文档的 Programmatic Flow Decisions 部分找到有关此 API 的更多详细信息和一些代码示例。