SPRING BATCH执行2种模式

时间:2017-10-05 09:08:29

标签: spring spring-batch batch-processing

我需要使用参数来执行具有2种模式的作业以区分2种模式。例如,如果用户在这种情况下使用参数X,则作业必须从数据库中读取数据并将其导出(所有记录)到xml文件。否则,如果用户在这种情况下使用参数Y,则作业必须使用相同的标题将每个记录写入单独的xml文件中。

1 个答案:

答案 0 :(得分:2)

使用jobParameter区分模式:

@StepScope
@Bean
public Tasklet task(@Value("#{jobParameters['mode']}") String mode) {
}

如果模式如此不同,那么您无法在同一步骤中执行它们,请使用决策程序:

FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("modesFlow");

Flow flow = flowBuilder
        .start(modesDecider)
        .on("X")
        .to(step1)      
        .from(modesDecider)
        .on(step2)
        .end()
        .build();

jobBuilderFactory.get("modesJob")
        .incrementer(new RunIdIncrementer())        
        .start(flow)
        .end()
        .build();

其中:

ModesDecider implements JobExecutionDecider