Voglio ottenere l'id del lavoro utilizzando il linguaggio di espressione primaverile. Ho provato #{jobExecutionContext[jobId]}
ma non funziona.Come ottenere l'id del lavoro usando il linguaggio di espressione primaverile?
risposta
Utilizzando solo SpEL, non è possibile accedere all'ID lavoro. È possibile utilizzare un JobExecutionListener per aggiungerlo a executionContext e quindi sarebbe disponibile tramite ciò che si sta tentando.
Un esempio funzionante sarebbe simile a questo. La classe JobExecutionListener ha accesso a JobExecution e copia il jobId su executionContext.
public class JobIdToContextExecutionListener implements JobExecutionListener {
public void beforeJob(JobExecution jobExecution) {
long jobId = jobExecution.getJobId();
jobExecution.getExecutionContext().put("jobId",jobId);
}
..
}
nel vostro contesto primavera, si può quindi fare riferimento alla jobId via SPEL come
#{stepExecution.jobExecution.jobId}
o
#{jobExecutionContext.jobId}
Vedi Luca's answer on referencing late-binding parameters here.
#{stepExecution.jobExecution.id}
o #{stepExecution.jobExecutionId}
dovrebbe funzionare comunque.
Il StepContextfa fornire l'accesso a StepExecution per l'associazione tardiva tramite le espressioni SpEL.
Utilizzare scope = "step" e quindi un'espressione nella query (o i suoi parametri): # {stepExecution.jobExecution.id} (la radice dell'espressione è un StepContext).
- 1. espressione primaverile leggere il contenuto del file
- 2. Cast con linguaggio di espressione
- 3. Powershell Set Lid Close Azione
- 4. Espressione cron primaverile per ogni 30 minuti successivi
- 5. Differenza esatta e relazione tra JSTL e linguaggio di espressione
- 6. Come ottenere la directory di lavoro corrente usando python 3?
- 7. Come confrontare due variabili oggetto nel linguaggio di espressione EL?
- 8. Come parametrizzare @Scheduled (fixedDelay) con linguaggio di espressione Spring 3.0?
- 9. Come convertire int in char in linguaggio di espressione JSP?
- 10. stato di sviluppo web usando il linguaggio di programmazione funzionale
- 11. Le grammatiche di espressione di parsing sono adatte all'analisi del linguaggio di comando della shell?
- 12. come spiegare questa espressione "int a = ({10;});" in linguaggio C?
- 13. Confrontando corda e booleano in un linguaggio di espressione
- 14. non chiaro con il lavoro del linker
- 15. Come ottenere il percorso di lavoro di un'applicazione wcf?
- 16. Come posso ottenere il corpo del metodo usando Javassist?
- 17. JSP EL (linguaggio di espressione) che causa problemi in Eclipse
- 18. Metriche di avvio primaverile + datadog
- 19. Dopo l'iniezione modificata implementazione del linguaggio di espressione di sicurezza Primavera
- 20. Come propagare il contesto di sicurezza primaverile a JMS?
- 21. Cygwin: sviluppo del linguaggio assembly?
- 22. Come ottenere il layout usando il contesto
- 23. Come il linguaggio funzionale è diverso dal punto di vista dell'implementazione del linguaggio
- 24. Come ottenere il nome di lavoro da jenkins
- 25. Come ottenere l'URL del lavoro della pipeline in jenkins
- 26. Come posso impostare il timeout del lavoro usando la Jenkins DSL
- 27. come ottenere $ CAUSE nel flusso di lavoro
- 28. come ottenere il mio UIWindow usando UIApplication?
- 29. Espressività del linguaggio formale dei pattern Perl
- 30. Quartz.net ripetere il lavoro all'intervallo dopo il completamento del lavoro
Potete fornire codice/collegamenti di esempio? –
Vedere un esempio funzionante sotto – emeraldjava
@MichaelMinella Questa risposta è piuttosto vecchia, penso che valga la pena aggiornarla. Sia '# {jobExecution.jobInstance.instanceId}' che '# {jobExecution.jobId}' hanno fornito per me il valore dell'ID di istanza. – jihor