Spring Batch Flow - 找不到下一个状态

时间:2017-08-15 18:18:48

标签: java spring spring-batch

所以我觉得我已经正确定义了我的工作流程,但是当我运行它时,我得到一个FlowExecutionException,说我的'流程中没有找到'流程'的下一个状态'。

我正在使用一个实现JobExecutionListener的tasklet,如下所示,它似乎按预期工作:

  @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();
  }

这是我的工作配置。我也想简化它(所有步骤都是'b'所以我希望这是一个'后'的东西),但只是希望它首先工作。

{{1}}

我知道我必须错过流程的某些部分,但我无法确定它。

1 个答案:

答案 0 :(得分:1)

我相信我明白了。我需要使用'from'函数让我的配置知道我在哪里使用'on'(它目前认为我正在寻找'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();
  }