Jobs werden mit dem XML-Dialekt (Extensible Markup Language) mit dem Namen xJCL (XML Job Control Language) definiert. Dieser Dialekt verfügt über Anweisungen, um alle erforderlichen Informationen für rechenintensive und Stapeljobs zu formulieren, obwohl einige Elemente von xJCL nur auf rechenintensive oder Stapeljobs anwendbar sind. Weitere Informationen zu xJCL können Sie der mit den Beispielanwendungen bereitgestellten xJCL, der xJCL-Tabelle und dem Schemadokument für xJCL XSD entnehmen. Die xJCL-Definition des Jobs gehört nicht zur Compute-Grid-Anwendung. Sie wird gesondert erstellt und zur Ausführung an den Job-Scheduler übergeben. Der Job-Scheduler verwendet die Informationen in der xJCL, um festzulegen, wo und wann der Job ausgeführt werden soll.
Die folgende Tabelle enthält eine Zusammenfassung der xJCL-Elemente:
Element | Rechenintensiv | Stapelbetrieb | Unterelement | Attribute | Beschreibung |
---|---|---|---|---|---|
Job | J | J | Nicht zutreffend | Nicht zutreffend | Definiert die Beschreibung eines Stapeljobs. |
Nicht zutreffend | J | J | Nicht zutreffend | Name | Name des Jobs. Dieser Name muss mit dem Namen der Compute-Grid-Anwendung übereinstimmen. |
Nicht zutreffend | J | J | jndi-name | Nicht zutreffend | Der JNDI-Name, der der Stateless-Session-Bean des Job-Controller zugeordnet wird, wenn die Compute-Grid-Anwendung in WebSphere Application Server implementiert wird. |
Nicht zutreffend | J | J | step-scheduling-criteria | Siehe Element "step-scheduling-criteria". | Nicht zutreffend |
Nicht zutreffend | N | J | checkpoint-algorithm | Siehe Element "checkpoint-algorithm". | Nicht zutreffend |
Nicht zutreffend | J | J | job-step | Siehe Element "job-step". | Nicht zutreffend |
job-step | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend |
Nicht zutreffend | J++ | J | Nicht zutreffend | Name | Name des Abschnitts. Diese Information wird bei Betriebsbefehlen zurückgegeben. |
Nicht zutreffend | N | J | step-scheduling | Siehe Element "step-scheduling". | Ermöglicht eine bedingte, auf Rückkehrcodes von Abschnitten basierende Logik, die bestimmt, ob der Stapelabschnitt aufgerufen werden soll. |
Nicht zutreffend | N | J | checkpoint-algorithm-ref | Siehe Element "checkpoint-algorithm-ref". | Gibt den Prüfpunktalgorithmus an, der für den Abschnitt des Stapeljobs verwendet werden soll. |
Nicht zutreffend | J | N | classname | Nicht zutreffend | Vollständig qualifizierter Name einer Klasse, die den rechenintensiven Job implementiert. |
Nicht zutreffend | N | J | JNDI-name | Nicht zutreffend | Der logische JNDI-Name der Home-Schnittstelle für die Entity-Bean (Stapelabschnitt-Bean), mit der die Stapellaufzeitumgebung den Abschnitt des Jobstapels lädt. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | props | Siehe Element "props". | Name/Wert-Eigenschaften zur Übergabe des Schritts. |
Nicht zutreffend | N | J | batch-data-streams | Siehe Element "batch-data-streams". | Eine Folge von bds-Elementen. Jedes bds-Element ist die Konfigurationsinformation, die zum Erstellen eines Stapeldatenstroms erforderlich ist. |
prop | J | J | Nicht zutreffend | Nicht zutreffend | Eine einzelne Instanz eines Name/Wert-Paares, die als Eigenschaft verwendet wird. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Name | Der Name der Eigenschaft. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Wert | Der Wert der Eigenschaft. |
props | J | J | Nicht zutreffend | Nicht zutreffend | Eine Folge von prop-Elementen, mit denen Name/Wert-Paare als Eigenschaften an Abschnitte, bds-Elemente, Prüfpunktalgorithmen und Ergebnisalgorithmen übergeben werden. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | prop | Siehe Element "prop". | Nicht zutreffend |
bds | N | J | Nicht zutreffend | Nicht zutreffend | Ein bds-Element stellt eine einzelne Instanz einer Stapeldatenstromimplementierung dar, die dem Stapeljob zur Verfügung gestellt wird. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | logical-name | Nicht zutreffend | Eine Zeichenfolge, die in den Stapelabschnitt integriert wird und die der Stapelabschnitt verwendet, um eine bestimmte Stapeldatenstrominstanz von der Stapellaufzeitumgebung anzufordern. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | impl-class | Nicht zutreffend | Vollständig qualifizierter Klassenname der Implementierungsklasse für den Stapeldatenstrom. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | props | Siehe Element "props". | Eine Liste mit Eigenschaften, die an die Implementierungsklasse des Stapeldatenstroms übergeben wird. |
batch-data-streams | N | J | Nicht zutreffend | Nicht zutreffend | Eine Folge von bds-Elementen. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | bds | Siehe Element "bds". | Nicht zutreffend |
step-scheduling | N | J | Nicht zutreffend | Nicht zutreffend | Das Element step-scheduling kann auf job-step-Elemente angewendet werden, um basierend auf bedingten Abläufen für einen Stapeljob Rückkehrcodes zu erstellen. Das Element step-scheduling kann die Werte von Rückkehrcodes, die für den Stapeljob definiert sind, vergleichen, um zu entscheiden, ob ein Abschnitt während der Verarbeitung eines Stapeljobs aufgerufen werden soll oder nicht. Die Werte der Rückkehrcodes werden mit dem Element return verglichen. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | returncode-expression | Siehe "returncode-expression". | Der auszuwertende Ausdruck für den Rückkehrcode. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Bedingung | Wenn das step-scheduling-Element mehrere returncode-expression-Elemente enthält, können bedingte Operatoren auf diese Elemente angewendet werden. Folgende bedingte Operatoren werden unterstützt: AND, OR. |
returncode-expression | N | J | Nicht zutreffend | Nicht zutreffend | Das Element returncode-expression wird für step-scheduling-Elemente verwendet, um basierend auf den Rückkehrcodes anderer Jobabschnitte zu entscheiden, ob ein bestimmter Abschnitt eines Stapeljobs ausgeführt werden soll. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Abschnitt | Der Name des Abschnitts, dessen Rückkehrcode in diesem Ausdruck verglichen werden soll. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Operator | Der Operator, der für den Ausdruck des Rückkehrcodes verwendet werden soll. Folgende Operatoren werden unterstützt: eq (equals = gleich), lt (less than = kleiner als), gt (greater than = größer als), le (less than or equal to = kleiner-gleich), ge (greater than or equal to = größer-gleich). |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Wert | Der Wert, mit dem der Rückkehrcode verglichen werden soll. |
step-scheduling-criteria | N | J | Nicht zutreffend | Nicht zutreffend | Beschreibt die Folge, in der die Jobabschnitte verarbeitet werden. Derzeit wird nur die sequenzielle Planung unterstützt, d. h., die Abschnitte werden in der Reihenfolge aufgerufen, in der sie in der xJCL erscheinen. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | scheduling-mode | Nicht zutreffend | Reihenfolge, in der die Abschnitte aufgerufen werden sollen. Der einzige gültige Wert ist sequential. |
checkpoint-algorithm | N | J | Nicht zutreffend | Nicht zutreffend | Deklariert einen Prüfpunktalgorithmus, der für einen Stapeljobabschnitt verwendet werden kann. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Name | Der Name des Algorithmus. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | classname | Nicht zutreffend | Die Klasse, die diesen Algorithmus implementiert. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | props | Siehe Element "props". | Eine Folge von props-Elementen für den Prüfpunktalgorithmus. |
checkpoint-algorithm-ref | N | J | Nicht zutreffend | Nicht zutreffend | Eine Referenz auf ein checkpoint-algorithm-Element. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | Name | Name des Prüfpunktalgorithmus, auf den Sie verweisen. |
Nicht zutreffend | Nicht zutreffend | Nicht zutreffend | props | Siehe Element "props". | Eine Folge von prop-Elementen für den Prüfpunktalgorithmus. |
+ Es werden nur rechenintensive Jobs mit einem Abschnitt unterstützt.
Die folgende Tabelle enthält eine Zusammenfassung der xJCL-Elemente:
Element | J2EE - Rechenintensiv | J2EE - Stapel | Natives Dienstprogramm | Unterelement | Attribute | Beschreibung |
---|---|---|---|---|---|---|
Job | J | J | N | Definiert die Beschreibung eines Stapeljobs. | ||
J | J | J | Name | Name des Jobs. Dieser Name muss mit dem Namen der Compute-Grid-Anwendung übereinstimmen. | ||
J | J | J | accounting | Optionales Informationsattribut für die Abrechnung. | ||
J | J | J | class | Optionales Jobklassenattribut, das die Jobklasse angibt, unter der der Job ausgeführt wird. | ||
J | J | J | default-application-name | Der Anwendungsname, der verwendet werden soll, wenn kein Attribut "application-name" für den Jobabschnitt gefunden wird. | ||
J | J | N | jndi-name | Der JNDI-Name, der der Stateless-Session-Bean des Job-Controller zugeordnet wird, wenn die Compute-Grid-Anwendung im WebSphere Application Server implementiert wird. | ||
J | J | J | job-scheduling criteria | required-capability | Die erforderliche Kapazität des Jobs, die auf einem Endpunkt definiert sein muss, damit der Job diesem Endpunkt zugeteilt werden kann. | |
J | J | N | step-scheduling criteria |
Siehe Element "step-scheduling-criteria". | ||
N | J | N | checkpoint algorithm | Siehe Element "checkpoint-algorithm". | ||
N | J | J | results-algorithm | Siehe Element "results-algorithms". | ||
J | J | J | substitution-props++ |
Siehe Element "prop". | Die erforderliche Kapazität des Jobs, die auf einem Endpunkt definiert sein muss, damit der Job diesem Endpunkt zugeteilt werden kann. | |
job-step | ||||||
J* | J | N | Name | Optionaler Name des Abschnitts. Diese Information wird bei Betriebsbefehlen zurückgegeben. | ||
J* | J | N | application-name | Optionaler Name der vom Abschnitt ausgeführten Anwendung. Der Attributname wird verwendet, wenn das Element "application-name"und das Attribut "default-application-name" auf Jobebene nicht definiert sind. | ||
N | J | N | step-scheduling | Siehe Element "step-scheduling". | Ermöglicht eine bedingte, auf Rückkehrcodes von Abschnitten basierende Logik, die bestimmt, ob der Stapelabschnitt aufgerufen werden soll. | |
N | J | N | JNDI-name | Der logische JNDI-Name der Home-Schnittstelle für die Entity-Bean (Stapelabschnitt-Bean), mit der die Stapelausführungsumgebung den Abschnitt des Jobstapels lädt. | ||
J | J | N | classname | Vollständig qualifizierter Name einer Klasse, die den rechenintensiven Job implementiert. | ||
J | N | N | checkpoint-algorithm-ref | Gibt den Prüfpunktalgorithmus an, der für den Abschnitt des Stapeljobs verwendet werden soll. | ||
N | J | N | results-ref | Siehe Element "results-ref". | Gibt den für die bedingte Ausführung des Stapeljobabschnitts zu verwendenden Ergebnisalgorithmus an. | |
N | J | N | batch-data-streams | Siehe Element "batch-data-streams". | Das Element A ist eine Folge von bds-Elementen. Jedes bds-Element ist die Konfigurationsinformation, die zum Erstellen eines Stapeldatenstroms erforderlich ist. | |
J | J | N | props | Siehe Element "props". | Name-Wert-Eigenschaften, die an den Abschnitt übergeben werden. | |
N | N | J | exec | Siehe Element "exec". | Gibt die ausführbare Datei an, die diesem Jobabschnitt zugeordnet ist. | |
N | N | J | env-entries | Siehe Element "env-entries". | Gibt die Umgebungseigenschaften an, die dem Jobabschnitt zugeordnet sind. | |
prop | J | J | N | Eine einzelne Instanz eines Name/Wert-Paares, die als Eigenschaft verwendet wird. | ||
Name | Der Name der Eigenschaft. | |||||
Wert | Der Wert der Eigenschaft. | |||||
props | J | J | N | prop | Siehe Element prop. | |
env-entries | N | N | J | Eine Folge von prop-Elementen, mit denen Name/Wert-Paare als Eigenschaften an Abschnitte, bds-Elemente, Prüfpunktalgorithmen und Ergebnisalgorithmen übergeben werden. | ||
env-var | Siehe Element "env-var". | |||||
exec | N | N | J | Eine Folge von prop-Elementen, mit denen Name/Wert-Paare als Eigenschaften an Abschnitte, bds-Elemente, Prüfpunktalgorithmen und Ergebnisalgorithmen übergeben werden. | ||
Ausführbare Datei | Der Name der ausführbaren Datei, die dem Jobabschnitt zugeordnet ist. | |||||
arg | Siehe Element "line". | |||||
line | N | N | J | Befehlszeilenparameter, die an die ausführbare Datei für den Jobabschnitt übergeben werden. | ||
bds | N | J | N | Ein bds-Element stellt eine einzelne Instanz einer Stapeldatenstromimplementierung dar, die dem Stapeljob zur Verfügung gestellt wird. | ||
logical-name | Eine Zeichenfolge, die in den Stapelabschnitt eingebettet ist, der sie verwendet, um die Stapellaufzeitumgebung nach einer bestimmten Instanz eines Stapeldatenstroms abzufragen. | |||||
impl-class | Vollständig qualifizierter Klassenname der Implementierungsklasse für den Stapeldatenstrom. | |||||
props | Siehe Element props. | Eine Liste mit Eigenschaften, die an die Implementierungsklasse des Stapeldatenstroms übergeben wird. | ||||
batch-data-streams | N | J | N | Eine Folge von bds-Elementen. | ||
bds | Siehe Element bds. | |||||
step-scheduling | N | J | Wird auf job-step-Elemente angewendet, um basierend auf bedingten Abläufen für einen Stapeljob Rückkehrcodes zu erstellen. Vergleicht die Werte von Rückkehrcodes, die für den Stapeljob definiert sind, um zu entscheiden, ob ein Abschnitt während der Verarbeitung eines Stapeljobs aufgerufen werden soll oder nicht. Die Werte der Rückkehrcodes werden mit dem Element returncode-expression verglichen. | |||
returncode-expression | Siehe "returncode-expression". | Der auszuwertende Ausdruck für den Rückkehrcode. | ||||
Bedingung | Wenn das step-scheduling-Element mehrere returncode-expression-Elemente enthält, können bedingte Operatoren auf diese Elemente angewendet werden. Folgende bedingte Operatoren werden unterstützt: AND, OR. | |||||
returncode-expression | N | J | Das Element returncode-expression wird in step-scheduling-Elementen verwendet, um basierend auf den Rückkehrcodes anderer Jobabschnitte zu entscheiden, ob ein bestimmter Abschnitt eines Stapeljobs ausgeführt werden soll. | |||
Abschnitt | Der Name des Abschnitts, dessen Rückkehrcode in diesem Ausdruck verglichen werden soll. | |||||
Operator | Der Operator, der für den Ausdruck des Rückkehrcodes verwendet werden soll. Folgende Operatoren werden unterstützt: eq (equals = gleich), lt (less than = kleiner als), gt (greater than = größer als), le (less than or equal to = kleiner-gleich), ge (greater than or equal to = größer-gleich). | |||||
Wert | Der Wert, mit dem der Rückkehrcode verglichen werden soll. | |||||
step-scheduling-criteria | N | J | Beschreibt die Folge, in der die Jobabschnitte verarbeitet werden. Derzeit wird nur die sequenzielle Planung unterstützt, d. h., die Abschnitte werden in der Reihenfolge aufgerufen, in der sie in der xJCL erscheinen. | |||
scheduling-mode | Die Reihenfolge, in der Abschnitte aufgerufen werden. Z. Zt. ist nur der Wert sequential (Sequenziell) möglich. | |||||
checkpoint-algorithm | N | J | Deklariert einen Prüfpunktalgorithmus, der für einen Stapeljobabschnitt verwendet werden kann. | |||
Name | Der Name des Algorithmus. | |||||
classname | Die Klasse, die diesen Algorithmus implementiert. | |||||
props | Siehe Element props. | Eine Folge von prop-Elementen für den Prüfpunktalgorithmus. | ||||
checkpoint-algorithm-ref | N | J | Eine Referenz auf ein checkpoint-algorithm-Element. | |||
Name | Name des Prüfpunktalgorithmus, auf den Sie verweisen. | |||||
props | Siehe Element props. | Eine Folge von prop-Elementen für den Prüfpunktalgorithmus. |
++ Das xJCL-Element substitution-props wird im Folgenden beschrieben.
<checkpoint-algorithm-ref name="${checkpoint}" />
<substitution-props> <prop name="wsbatch.count" value="5" /> <prop name="checkpoint" value="timebased" /> <prop name="checkpointInterval" value="15" /> <prop name="postingsDataStream" value="${was.install.root}${file.separator}temp${file.separator}postings" /> </substitution-props>
Die Substitution von Symbolvariablen erfolgt zur Laufzeit. Zur Laufzeit wird die Zeichenfolge ${variable-name} bei der Übergabe der xJCL zur Ausführung durch den Wert der Eigenschaft ersetzt. Unter Verwendung der Eigenschaften aus dem vorherigen Beispiel wird die Zeichenfolge ${checkpoint} durch die Zeichenfolge "timebased" ersetzt, bevor der Job übergeben wird.
Symbolvariablen können indirekt sein. Der Beispielausdruck "name=FILENAME value=${${filename}}", der mit dem Name/Wert-Paar "filename=postingsDataStream" verwendet wird, liefert dasselbe Ergebnis wie der Ausdruck "name=FILENAME value=${postingsDataStream}".
Symbolvariablen können verbunden werden. Beispiel: name=postingsDataStream value=${was.install.root}${file.separator}temp${file.separator}postings.
Die Name/Wert-Paare müssen nicht im Element substitution-props des Jobdokuments definiert sein. Die props-Name/Wert-Paare, die im Element substitution-props definiert sind, sind Standardwerte für benannte Variablen. Sofern sie nicht im Element substitution-props definiert sind, müssen Name/Wert-Paare entweder über die APIs des Job-Schedulers übergeben werden, wenn der Job übergeben wird, oder in Systemeigenschaften der JVM definiert sein. Jede Symbolvariable, die im Hauptteil eines Jobdokuments definiert ist, muss aufgelöst werden, damit die xJCL als gültige xJCL betrachtet wird. Jedes Name/-Wert-Paar, das im Jobdokument definiert ist, muss in eine Symbolvariable aufgelöst werden, die im Hauptteil der xJCL enthalten ist, damit die xJCL als gültige xJCL betrachtet wird.
Wenn sowohl Name/Wert-Paare im xJCL-Dokument definiert sind als auch Name/Wert-Paare bei der Jobübergabe an die APIs des Job-Schedulers übergeben werden, überschreiben die Name/Wert-Paare, die über die APIs des Job-Schedulers übergeben werden, die im xJCL-Dokument definierten Standardwerte. Wenn keine Name/Wert-Paare über die APIs des Job-Schedulers übergeben werden und auch keine Standardwerte im xJCL-Dokument definiert sind, müssen Name/Wert-Paare für die Symbolvariablen in den Systemeigenschaften der JVM definiert werden, damit die xJCL als gültige xJCL betrachtet wird.