2017-08-23 2 views
1

Dans mon expérience, cette étape est toujours nulle lorsque le décideur est appelé. Il semble qu'un JobExecutionDecider soit lié à une exécution de travail qui est fournie à la méthode decision, mais comme un décideur de travail n'est pas lié à une seule étape, il n'y a pas d'exécution d'étape à fournir.Pourquoi JobExecutionDecider a-t-il un stepExecution fourni à la méthode decide?

Y a-t-il quelque chose qui me manque? Existe-t-il un autre moyen d'utiliser un JobExecutionDecider où stepExecution ne sera pas nul?

Répondre

1

Je ne sais pas pourquoi stepExecution est toujours null dans votre cas car vous n'avez pas posté votre configuration et votre question n'est pas un peu claire non plus.

Cela dit, reportez-vous au scénario illustré en official documentation, là, il est expliqué dans la configuration que si l'exécution va à step2 ou step3 dépend someCondition.

Ce someCondition pourrait encore dépendre de l'exécution step1 à savoir que vous pourriez utiliser cette étape 1 - stepExecution pour faire someConditiontrue ou false. Cela dépend entièrement de vous de cette condition et de ce qu'elle peut utiliser, mais selon cette illustration, stepExecution ne sera pas nul puisque cette évaluation se produit après que step1 a cessé d'être exécuté et que son exécution est disponible.

En outre, je cite,

Dans certaines situations, plus d'informations que le ExitStatus peut être nécessaire pour décider étape suivante à exécuter

Ce qui signifie que par le cadre par défaut utilise déjà ce genre d'un décideur basé sur la seule étape ExitStatus. Vous pouvez remplacer cette logique ici pour utiliser des colonnes supplémentaires pour prendre cette décision.

également, citant API docs,

Stratégie pour le branchement d'une exécution en fonction de l'état d'un en cours JobExecution. La valeur de retour servira de statut pour déterminer la prochaine étape du travail.

En cours JobExceution est un conteneur principal qui inclut également des exécutions d'étape.

De plus, comme par JavaDoc à la source, @param stepExecution the latest step execution (may be null)

Hope it helps !!

+0

Le JavaDoc était ce qui me manquait (ce détail sur "la dernière étape d'exécution (peut être nulle)" est absent dans les documents de lot de printemps qui discutent decider, voici un lien vers le javadoc que vous mentionnez http: // docs .spring.io/printemps-lot/apidocs/org/springframework/lot/noyau/travail/flux/JobExecutionDecider.html – churd

+0

heureux d'aider !! –