Шаги будут выполнены в порядке, указанном в вашем примере.
Если вы хотите , укажите порядок , который вы можете сделать:
<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"/>
EDIT :
Если вы хотите получить dependency graph
, вы можете просто использовать Spring Tool Suite для визуализации потока, вот простой пример .