Ausführungskontexte
JobContext und StepContext
Wenn ein Step auf seine Metadaten zugreifen oder Daten für den Wiederanlauf sichern möchte, benötigt er Zugriff auf seinen Ausführungskontext (StepContext). Dieser hält einen speziellen Datenbereich für die aktuelle Ausführung dieses Steps bereit. Insbesondere haben unterschiedliche Steps unterschiedliche Ausführungskontexte.
Technologisch wird dieser Ausführungskontext mit einem aus anderen Technologien bekannten Konzept des thread-affinen Kontext umgesetzt.
Hierbei stellt die Batchlaufzeitumgebung sicher, dass für den Step, der im aktuellen Thread ausgeführt wird, der richtige StepContext an diesen Thread gebunden wird. Somit wird jedem Step sein eigener Ausführungskontext während der gesamten Verarbeitung zur Verfügung gestellt.
Neben Informationen über Namen und Eigenschaften (Properties) des Steps stellt der StepContext zwei unterschiedliche Datenbereiche zur Verfügung.
- Der Step kann dem StepContext zu persistierende Daten übergeben. Diese werden über die Ausführung des Stepshinaus gesichert und werden beim Wiederanlauf dem Step übergeben.
- Transiente (d.h. nicht persistente) Daten gelten nur während der Ausführung eines Steps. Diese Daten werden genutzt, um zwischen unterschiedlichen Komponenten eines Steps Informationen auszutauschen.
Genau wie für Steps existiert auch ein Ausführungskontext für den gesamten Job, der sogenannte JobContext. Dieser steht allen Steps des Jobs während ihrer Verarbeitung zur Verfügung.
Neben den Informationen über den Job und dessen aktueller Ausführung liefert der JobContext die aktuellen JobProperties (siehe Batch Properties). Zusätzlich kann er transiente Daten übernehmen, mit deren Hilfe Daten zwischen unterschiedlichen Steps ausgetauscht werden können.
Der Zugriff auf StepContext und JobContext wird durch die Batchlaufzeitumgebung via Dependency Injection bereitgestellt (siehe Listing 1).