В Spring Batch выполнить Flow несколько раз - PullRequest
0 голосов
/ 07 июня 2019

Моя работа состоит из нескольких потоков.У меня есть ситуация, когда мне нужно повторить выполнение потока несколько раз.

Я искал в Интернете, но не смог найти ни одного примера для этого сценария.Я пытался использовать конструкции on () to (), но он не работает должным образом.

Рассмотрим приведенный ниже пример:

@Bean
public Job job() {
    Flow deleteDataFrom UIflow = new FlowBuilder<SimpleFlow>("processOrderflow")
            .start(step1())
            .next(step2())
            .build();
    Flow flow2 = new FlowBuilder<SimpleFlow>("flow2")
            .start(step3())
            .build();

    return this.jobBuilderFactory.get("job")
                .start(processOrderflow)
                .next(flow2)
                .end()
                .build();
}

    @Bean
    public Step step1(){
        Tasklet taskLeiD = new Tasklet() {
            @Override
            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                System.out.println("Delete data from datasource A");
                return RepeatStatus.FINISHED;
            }
        };

        return this.stepBuilderFactory.get("deleteDataFromA").tasklet(taskLeiD).build();
    }

    @Bean
    public Step step2(){
        Tasklet a = new Tasklet() {
            @Override
            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                System.out.println("Delete data from datasource B");
                return RepeatStatus.FINISHED;
            }
        };

        return this.stepBuilderFactory.get("deleteDataFromB").tasklet(a).build();
    }

    @Bean
    public Step step3(){
        Tasklet a = new Tasklet() {
            @Override
            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                System.out.println("Delete data from datasource C");
                return RepeatStatus.FINISHED;
            }
        };

        return this.stepBuilderFactory.get("deleteDataFromC").tasklet(a).build();
    }

У меня есть список заказов.Для каждого заказа в списке я хочу выполнить processOrderflow один раз.Как я могу это сделать?Я буду очень признателен, если кто-то может указать мне правильное направление.

Приведенный выше пример является простым примером, но в действительности поток, который я хочу выполнить несколько раз, имеет несколько подпотоков, и каждый из этих подпотоков состоит из нескольких этапов.Итак, главный вопрос - как такой поток может быть выполнен несколько раз?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...