2015-09-08 4 views
6

ich folgende Spring Batch Job Config haben:Spring Batch Zugriff auf Job-Parameter innerhalb Schritt

@Configuration 
@EnableBatchProcessing 
public class JobConfig { 

    @Autowired 
    private JobBuilderFactory jobBuilderFactory; 

    @Autowired 
    private StepBuilderFactory stepBuilderFactory; 

    @Bean 
    public Job job() { 
     return jobBuilderFactory.get("job") 
       .flow(stepA()).on("FAILED").to(stepC()) 
       .from(stepA()).on("*").to(stepB()).next(stepC()) 
       .end().build(); 
    } 

    @Bean 
    public Step stepA() { 
     return stepBuilderFactory.get("stepA").tasklet(new RandomFailTasket("stepA")).build(); 
    } 

    @Bean 
    public Step stepB() { 
     return stepBuilderFactory.get("stepB").tasklet(new PrintTextTasklet("stepB")).build(); 
    } 

    @Bean 
    public Step stepC() { 
     return stepBuilderFactory.get("stepC").tasklet(new PrintTextTasklet("stepC")).build(); 
    } 

} 

Ich beginne die Arbeit mit folgenden Code:

try { 
        Map<String,JobParameter> parameters = new HashMap<>(); 
        JobParameter ccReportIdParameter = new JobParameter("03061980"); 
        parameters.put("ccReportId", ccReportIdParameter); 

        jobLauncher.run(job, new JobParameters(parameters)); 
       } catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException 
         | JobParametersInvalidException e) { 
        e.printStackTrace(); 
       } 

Wie ccReportId Parameter zuzugreifen Arbeitsschritte?

Antwort

13

Tasklet.execute() Methode dauert Parameter ChunkContext, wo Spring Batch alle Metadaten einfügt. Sie müssen also nur über diese Metadatenstrukturen in Job-Parameter graben:

chunkContext.getStepContext().getStepExecution() 
     .getJobParameters().getString("ccReportId"); 

oder andere Option ist, Job-Parameter für den Zugriff auf diese Art und Weise Karte:

chunkContext.getStepContext().getJobParameters().get("ccReportId"); 

aber das gibt Ihnen Object und Sie müssen werfen es zu stringeln.

Verwandte Themen