块模型的spring批处理条件步进流

qyyhg6bp  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(299)

我有两个步骤,如果步骤1处理器在过滤后没有返回任何项目,那么应该跳过步骤2。我懂了 ItemListenerSupport 可以扩展和后处理可以利用。

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

我的处理是基于区块的,我想在处理完所有区块后设置退出状态,如果有任何项目未被过滤。我正在添加未筛选的项目 ExecutionContext 并在下一步加以利用。
如果所有块的所有项都被过滤掉了,我如何阻止下一步呢

tjrkku2a

tjrkku2a1#

对于编程决策,可以使用jobexecutiondecider。此api允许您访问 StepExecution 因此,您可以根据上一步执行及其执行上下文中的任何信息来决定运行下一步。在您的例子中,它可以是过滤器计数或任何对您的决策有意义的东西,您可以预先存储在执行上下文中。
您可以在参考文档的编程流决策部分找到关于这个api的更多细节和一些代码示例。

相关问题