Printemps-Lot: comment puis-je retourner une Tâche personnalisée code de sortie à partir d'un StepListener
La question est ceci: j'ai un Ressort de Lots avec une seule étape. Cette étape est appelée plusieurs fois. Si à chaque fois qu'il est appelé tout fonctionne ok (pas d'exception) le Travail le statut est "TERMINÉ". Si quelque chose de mauvais se fait au moins à l'un des exécutions de l'Étape (une exception est levée, je l'ai configuré un StepListener qui modifie le code de sortie à l'ÉCHEC:
public class SkipCheckingListener extends StepExecutionListenerSupport {
public ExitStatus afterStep(StepExecution stepExecution) {
String exitCode = stepExecution.getExitStatus().getExitCode();
if (stepExecution.getProcessorSkipCount() > 0) {
return new ExitStatus(ExitStatus.FAILED);
}
else {
return null;
}
}
}
Cela fonctionne très bien, quand la condition est remplie le bloc "if" est exécutée et le travail se termine avec le statut d'ÉCHEC. Notez toutefois que le code de sortie de je reviens est toujours parmi la norme, celles qui viennent avec Spring Batch. J'aimerais revenir à mon personnalisée code de sortie tels que "ACHEVÉ AVEC SAUTE" à certains points. Maintenant, j'ai essayé de mettre à jour le code ci-dessus pour revenir simplement que:
public class SkipCheckingListener extends StepExecutionListenerSupport {
public ExitStatus afterStep(StepExecution stepExecution) {
String exitCode = stepExecution.getExitStatus().getExitCode();
if (stepExecution.getProcessorSkipCount() > 0) {
return new ExitStatus("COMPLETED WITH SKIPS");
}
else {
return null;
}
}
}
comme il est décrit dans la documentation: http://static.springsource.org/spring-batch/reference/html/configureStep.html (5.3.2.1. Lot d'État contre État de Sortie). J'ai même essayé de
stepExecution.getJobExecution().setExitStatus("COMPLETED WITH SKIPS");
Et bien sûr, l'exécution arrive dans le bloc "if", exécute le code, et encore mon travail se termine avec le code de sortie TERMINÉE, complètement ignorant le code de sortie, j'ai mis par l'auditeur.
Il n'y a pas plus de détails sur ce point dans leurs docs, et je n'ai pas trouvé quoi que ce soit à l'aide de Google. Quelqu'un peut-il svp me dire comment dois-je aller sur la modification de la Poste le code de sortie de cette façon? Merci
Vous devez vous connecter pour publier un commentaire.
semble que vous ne pouvez pas modifier le BatchStatus, mais vous pouvez essayer avec le exitstatus
ce code avec un JobListener fonctionne pour moi
stepExecution.getProcessorSkipCount()
dans leJobExecution
... je veux dire.. j'ai besoin de faire le check-in leStepExecution
.. pouvez-vous me donner un coup de main?