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.

  1. 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.
  2. 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