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