gpt4 book ai didi

Spring-Batch:如何从 StepListener 返回自定义作业退出状态来决定下一步

转载 作者:行者123 更新时间:2023-12-02 09:24:18 25 4
gpt4 key购买 nike

问题是这样的:我有一个包含多个步骤的 Spring Batch 作业。根据第一步,我必须决定下一步。我可以根据作业参数在 STEP1- passTasklet 中设置状态,以便我可以将退出状态设置为自定义状态并在作业定义文件中定义它以转到下一步。

Example
<job id="conditionalStepLogicJob">
<step id="step1">
<tasklet ref="passTasklet"/>
<next on="BABY" to="step2a"/>
<stop on="KID" to="step2b"/>
<next on="*" to="step3"/>
</step>
<step id="step2b">
<tasklet ref="kidTasklet"/>
</step>
<step id="step2a">
<tasklet ref="babyTasklet"/>
</step>
<step id="step3">
<tasklet ref="babykidTasklet"/>
</step>
</job>

我理想地希望在步骤之间使用我自己的退出状态。我可以这样做吗?它不会破坏任何 OOTB 流程吗?这样做是否有效

最佳答案

有几种方法可以做到这一点。

您可以使用 StepExecutionListener 并重写 afterStep 方法:

@AfterStep
public ExitStatus afterStep(){
//Test condition
return new ExistStatus("CUSTOM EXIT STATUS");
}

或者使用 JobExecutionDecider 根据结果选择下一步。

public class CustomDecider implements JobExecutionDecider  {

public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {
if (/* your conditon */) {
return new FlowExecutionStatus("OK");
}
return new FlowExecutionStatus("OTHER CODE HERE");
}

}

XML 配置:

    <decision id="decider" decider="decider">
<next on="OK" to="step1" />
<next on="OHTER CODE HERE" to="step2" />
</decision>

<bean id="decider" class="com.xxx.CustomDecider"/>

关于Spring-Batch:如何从 StepListener 返回自定义作业退出状态来决定下一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15411731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com