Loc*_*cke 1 java spring spring-batch
所以我觉得我已经正确定义了我的作业流程,但是当我运行它时,我收到一个 FlowExecutionException ,说我的流程“d”的“在流程中找不到下一个状态”。
我正在使用一个实现 JobExecutionListener 的 tasklet,如下所示,它似乎按预期工作:
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
if(a && b) {
return new ExitStatus("a");
} else if(c) {
return new ExitStatus("b");
} else if(d) {
return new ExitStatus("c");
} else {
return new ExitStatus("d");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的工作配置。我还想简化它(所有步骤都将进行“b”,所以我希望这是“之后”的事情),但只是希望它首先工作。
@Bean
public Job job() {
LOGGER.info("STARTING BATCH JOB");
return jobs.get("job")
.incrementer(new RunIdIncrementer())
.start(taskletStep())
.on("a")
.to(step1a)
.next(step2)
.on("b")
.to(step2)
.on("c")
.to(step2)
.on("d")
.to(step1b)
.next(step2)
.on("*").end()
.end()
.build();
}
Run Code Online (Sandbox Code Playgroud)
我知道我一定错过了流程的某些部分,但我无法确定它。
我相信我已经弄清楚了。我需要使用“from”函数让我的配置知道我在哪里使用“on”from(它目前认为我正在为每个函数寻找“step2”的退出状态。所以它看起来像这样:
@Bean
public Job job() {
LOGGER.info("STARTING BATCH JOB");
return jobs.get("job")
.incrementer(new RunIdIncrementer())
.start(taskletStep())
.on("a")
.to(step1a)
.next(step2)
.from(taskletStep())
.on("b")
.to(step2)
.from(taskletStep())
.on("c")
.to(step2)
.from(taskletStep())
.on("d")
.to(step1b)
.next(step2)
.end()
.build();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4962 次 |
最近记录: |