Comment mettre fin à l'Étape à l'intérieur d'un Spring Batch Diviser le Flux avec un Décideur
J'ai passé la suite de défauts de conception de Spring Batch.
- Une Étape doit avoir un attribut Suivant à moins que c'est la dernière Étape ou à la dernière Étape d'une rupture de Flux.
- Un Décideur bloc doit traiter toutes les affaires renvoyées par le Décideur.
De ce fait, en une fraction de Flux, où l'Étape finale n'aurait pas un attribut Suivant, si il y a un Décideur de gardiennage, alors il doit avoir un attribut Suivant. Donc, il ne devrait pas avoir d'attribut, mais elle a aussi besoin d'elle. Catch 22.
Exemple:
<!-- Process parallel steps -->
<split id="split01">
<flow>
<step id="step1" next="step02">
<!-- Do something -->
</step>
<step id="step02">
<!-- Do something else -->
</step>
</flow>
<flow>
<step id="step03">
<!-- Do something -->
</step>
<!-- Only run under specific conditions -->
<decision id="decideToRunStep04" decider="isStepNeededDecider" >
<next on="RUN" to="step04"/>
<!-- Other state is "SKIP" -->
</decision>
<step id="step04">
<!-- Conditionally do something-->
</step>
</flow>
</split>
<step id="step05" >
<!-- Some more stuff -->
</step>
Cela semble être quelque chose au Printemps gars aurait pensé, donc curieux de savoir ce que le droit, non-hack façon d'y parvenir est. Merci.
OriginalL'auteur Joseph Lust | 2014-02-14
Vous devez vous connecter pour publier un commentaire.
Pas donné de réponses de n'importe qui sur ce, je vais proférer le hack que j'utilise. C'est pas joli, mais ni est le Printemps.
Créer un Op Tasklet à utiliser dans un Aucun Op étape.
L'ajouter NOOP tasklet à la décision de bloc à partir de l'exemple d'origine
Je n'ai plus accès à cette base de code, mais vous pouvez voir des exemples de décideurs ici: docs.printemps.io/printemps-lot/de référence/html/...
OriginalL'auteur Joseph Lust
Printemps est la plus belle de code dans la ville.
Qui a dit:
qu'il est documenté à http://docs.spring.io/spring-batch/reference/html/configureStep.html.
Vous avez raison, j'ai essayé d'ignorer le '<décision". Si vous ne voulez pas retourner un ExitStatus de votre Étape précédente (step03) que votre solution est une "bonne" solution de contournement.
C'est propre et ça a fonctionné pour mon application. Je l'ai utilisé en conjonction avec ma propre mise en œuvre de décideur vu ici: stackoverflow.com/questions/15411731/...
OriginalL'auteur Philipp Krasser