有弹簧作业定义:
<job id="footballJob">
<!-- Step bean details ommitted for clarity -->
<step id="playerload" next="gameLoad"/>
<step id="gameLoad" next="playerSummarization"/>
<step id="playerSummarization"/>
</job>
我可以通过编程方式确定要执行的步骤的顺序吗?
答案 0 :(得分:1)
步骤将按照您在示例中列出的顺序执行。
如果您想指定订单,您可以执行以下操作:
<job id="job">
<step id="stepA" parent="s1" next="stepB" />
<step id="stepB" parent="s2" next="stepC"/>
<step id="stepC" parent="s3" />
</job>
如果您想要非连续步骤执行/ 条件流,您可以执行以下操作:
<job id="job">
<step id="stepA" parent="s1">
<next on="*" to="stepB" />
<next on="FAILED" to="stepC" />
</step>
<step id="stepB" parent="s2" next="stepC" />
<step id="stepC" parent="s3" />
</job>
为了以编程方式控制流程,取决于ExitStatus
,您可以注入自己的decider
:
public class MyDecider implements JobExecutionDecider {
public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {
if (someCondition) {
return "FAILED";
}
else {
return "COMPLETED";
}
}
}
在作业配置中,“决定”标签将指定要使用的决策者以及所有过渡:
<job id="job">
<step id="step1" parent="s1" next="decision" />
<decision id="decision" decider="decider">
<next on="FAILED" to="step2" />
<next on="COMPLETED" to="step3" />
</decision>
<step id="step2" parent="s2" next="step3"/>
<step id="step3" parent="s3" />
</job>
<beans:bean id="decider" class="com.MyDecider"/>
编辑:
如果您希望获得dependency graph
,可以使用Spring Tool Suite来显示流量,这里是simple example。
答案 1 :(得分:1)
我可以逐步找出要执行的步骤的顺序吗?
从字面上理解你的问题有一些选择:
我会选择一个简单的xml解析器