2016-03-01 48 views
0

我使用没有xml配置的spring批处理。我想创建一个由几个步骤组成的作业,并且我想对同一个作业进行多次迭代。所以基本上我想创建一个由几个步骤组成的流程,最后一步使用监听器检查一个条件,如果条件满足Job结束时返回一个状态,如果条件不满足,则它返回到第一步。Spring批处理作业执行iteraton使用注释

我试图用编程方式创建它,没有运气,我简化它到最简单的解决方案有两个步骤。

public class MyListener { 

    int iterations = 0; 

    @AfterStep 
    public ExitStatus afterStep(StepExecution stepExecution) { 
     if(3 > iterations) { 
      iterations ++; 
      return new ExitStatus("CONTINUE"); 
     } 
     else { 
      iterations=0; 
      return new ExitStatus("FINISHED"); 
     } 
    } 
} 
@Bean 
public MyListener listener() { 
    return new MyListener(); 
} 
@Bean 
public Step step() { 
    return stepBuilderFactory.get("step").<Object, Object> chunk(1).reader(dummyReader()) 
      .processor(logItemProcessor()).writer(logItemWriter()).build(); 
} 

@Bean 
public Step step2() { 
    return stepBuilderFactory.get("step").<Object, Object> chunk(1).reader(secondReader()) 
      .processor(logItemProcessor()).writer(logItemWriter()).listener(listener()).build(); 
} 
@Bean 
public Job jobtest2() { 
    return jobBuilderFactory.get("testJob2") 
      .start(step()) 
      .next(step2()).on("CONTINUE").to(step()).on("FINISHED").end().build() 
      .build(); 
} 

这是我最后atemp但ID不会似乎工作

+0

你什么意思是“没有运气”?什么有效,什么不起作用?豆子是否被捡起并注入某个地方?哪里?你如何开始该计划? jobtest2()甚至被调用? – Heri

+0

不要使用监听器,而要使用JobExecutionDecider来重定向作业流程 –

+0

道歉这是一个错字“没有运气”。豆没有被注入任何其他地方。我从休息服务使用joblauncher开始工作 – silvestrelosada

回答

0

我知道什么是错我的代码,这两个步骤具有相同的“台阶”

@Bean 
public Step step() { 
    return stepBuilderFactory.get("step").<Object, Object> chunk(1).reader(dummyReader()) 
      .processor(logItemProcessor()).writer(logItemWriter()).build(); 
} 

@Bean 
public Step step2() { 
    return stepBuilderFactory.get("step2").<Object, Object> chunk(1).reader(secondReader()) 
      .processor(logItemProcessor()).writer(logItemWriter()).listener(listener()).build(); 
} 

如果我改变第二个豆“step2”它开始工作

相关问题