2017-08-15 14 views
1

私は自分のジョブフローを適切に定義したように感じますが、実行すると、 '次の状態がフローに見つかりません'というフローのd 。春のバッチフロー - 次の状態が見つかりません

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

はここに私の仕事の設定です:

私が意図したとおりに機能するように表示されるが、以下のJobExecutionListenerを実装タスクレットを使用しています。私はまたそれを簡素化したいと思う(すべてのステップは '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(); 
    } 

フローの一部が欠落している必要がありますが、それを特定することはできません。

答えて

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(); 
    } 
関連する問題