0

我有两个工作(SampleJob,NewJob) NewJob 取决于 SampleJob 的输出,所以 NewJob 必须等到 SampleJob 完成。我已经编写了这样的代码来实现这一点。直到春季版本 4.3.22.RELEASE 它工作正常。现在,在作业启动器步骤之后,它没有触发 endStep,因此我的作业在作业侦听器的步骤之后的存在状态为 UNKNOWN

<batch:job id="SAMPLE_JOB" job-repository="jobRepository">
    
        <batch:step id="startStep" next="processStep">
            <batch:tasklet ref="timerBegin" />
        </batch:step>
        
        <batch:step id="processStep" next="sampleJobLauncher">
            <batch:tasklet ref="dataProcessTasklet" />
        </batch:step>
                
        <batch:step id="sampleJobLauncher" next="endBaselElRatioStep">
              <job ref="NEW_JOB" job-launcher="jobLauncher" job-parameters-extractor="jobParametersExtractor"/>          
        </batch:step>       
                
        <batch:step id="endStep" >  
            <batch:tasklet ref="timerEnd" />
        </batch:step>
        
        <batch:listeners>
            <batch:listener ref="SampleJobListener" />
        </batch:listeners>      
    </batch:job>

在导致此问题的 jobstep.java 代码下方的最新春季版本中,它将 Job1 退出代码覆盖为 UNKNOWN

private ExitStatus determineStepExitStatus(StepExecution stepExecution, JobExecution jobExecution) {
        ExitStatus exitStatus = stepExecution.getExitStatus() != null ? stepExecution.getExitStatus() : ExitStatus.COMPLETED;
        
        return exitStatus.and(jobExecution.getExitStatus());
    }
4

0 回答 0