Probieren Spring Batch mit Java-basierten Deklaration statt für JobBuilderFactory und Flow zur direkten Zustand Schrittausführung. Ich habe am Ende von 'step2()' einen Schritt-Ausführungs-Listener, der einen benutzerdefinierten Beendigungscode zurückgibt, der dazu verwendet wird, den entsprechenden Schritt danach auszuwählen.Spring Batch jobBuilderFactory mit Flow 'on'
Das unerwartete Verhalten, das ich erhalte, ist, dass der Jobstatus als "FAILED" endet, es sei denn, ich definiere ausdrücklich die Bedingung für den 'COMPLETED' ExitStatus ExitCode. Der Code scheint ansonsten wie erwartet ausgeführt zu werden. Die Fälle sind unten aufgeführt.
Ich sehe, dass die hier beteiligten Klassen JobBuilder und FlowBuilder sind.
Fragen:
1) Warum in Job 2A und 2B Ergebnis Fälle tun 'nicht bestanden'?
2) Was ist das XML-Äquivalent der folgenden, wenn es hilft zu klären, was vor sich geht?
// 1. JOB STATUS ends up as COMPLETED
jobBuilderFactory.get("myProcess")
.flow(step1())
.next(step2())
.on(ExitStatus.COMPLETED.getExitCode())
.end()
.on("CUSTOM_EXIT_CODE")
.to(step3())
.end()
.build();
// 2A. JOB STATUS ends up as FAILED
jobBuilderFactory.get("myProcess")
.flow(step1())
.next(step2())
.on("CUSTOM_EXIT_CODE")
.to(step3())
.on(ExitStatus.COMPLETED.getExitCode())
.end()
.end()
.build();
// 2B. JOB STATUS ends up as FAILED
jobBuilderFactory.get("myProcess")
.flow(step1())
.next(step2())
.on("CUSTOM_EXIT_CODE")
.to(step3())
.end()
.build();
Ist es gelöst? –
Ich musste nicht wissen, wie man einen benutzerdefinierten Code für den FlowExecutionStatus zurückgibt. Ich denke, dass das XML hier hilfreich ist, um mit dem, was ich getan habe, zu vergleichen, aber ich verstehe immer noch nicht, warum der Jobstatus als "FAILED" endet. Danke dafür. –