Jobs werden mit dem XML-Dialekt (Extensible Markup Language) xJCL (XML Job Control Language) definiert. xJCL 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. Nähere Informationen zu xJCL können Sie der mit den Beispielanwendungen bereitgestellten xJCL, der xJCL-Tabelle und dem Schemadokument für xJCL XSD entnehmen. Beachten Sie bitte, dass die xJCL-Definition eines Jobs nicht Teil der Anwendung mit langer Laufzeit ist. Sie wird gesondert erstellt und zur Ausführung an den Scheduler für lange Laufzeit übergeben. Der Scheduler für lange Laufzeit verwendet die Informationen in der xJCL, um festzustellen, 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 | Definiert die Beschreibung eines Stapeljobs. | ||
J | J | Name | Name des Jobs. Dieser Name muss mit dem Namen der Anwendung mit langer Laufzeit übereinstimmen. | ||
J | J | jndi-name | Der JNDI-Name, der der Stateless-Session-Bean des Job-Controller zugeordnet wird, wenn die Anwendung mit langer Laufzeit im WebSphere Application Server implementiert wird. | ||
J | J | step-scheduling-criteria | Siehe Element step-scheduling-criteria. | ||
N | J | checkpoint-algorithm | Siehe Element checkpoint-algorithm. | ||
J | J | job-step | Siehe Element job-step. | ||
job-step | |||||
J* | J | Name | Name des Abschnitts. Diese Information wird bei Betriebsbefehlen zurückgegeben. | ||
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. | |
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. | |
J | N | classname | Vollständig qualifizierter Name einer Klasse, die den rechenintensiven Job implementiert. | ||
N | J | JNDI-name | Der logische JNDI-Name des Home-Interface für die Entity-Bean (Stapelabschnitt-Bean), mit der die Ausführungsumgebung des Stapels den Abschnitt des Jobstapels lädt. | ||
props | Siehe Element props. | Name/Wert-Merkmale zur Übergabe des Schritts. | |||
N | J | 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 Batch-Datenstroms erforderlich ist. | |
prop | J | J | Eine einzelne Instanz eines Name/Wert-Paares, die als Merkmal verwendet wird. | ||
Name | Der Name des Merkmals. | ||||
Wert | Der Wert des Merkmals. | ||||
props | J | J | Eine Folge von prop-Elementen, mit denen Name/Wert-Paare als Merkmale an Abschnitte, bds-Elemente, Prüfpunktalgorithmen und Ergebnisalgorithmen übergeben werden. | ||
prop | Siehe Element prop. | ||||
bds | N | J | Ein bds-Element stellt eine einzelne Instanz einer Batch-Datenstromimplementierung dar, die dem Stapeljob zur Verfügung gestellt wird. | ||
logical-name | Das Element logical-name enthält eine Zeichenfolge, die in den Stapelabschnitt integriert wird und die der Stapelabschnitt verwendet, um eine bestimmte Batch-Datenstrominstanz von der Ausführungsumgebung des Stapels anzufordern. | ||||
impl-class | Vollständig qualifizierter Klassenname der Implementierungsklasse für den Batch-Datenstrom. | ||||
props | Siehe props-Elemente. | Eine Liste mit Merkmalen, die an die Implementierungsklasse des Batch-Datenstroms übergeben wird. | |||
batch-data-streams | N | J | Eine Folge von bds-Elementen. | ||
bds | Siehe bds-Element. | ||||
step-scheduling | N | J | 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 returncode-expression verglichen. | ||
Ausdruck für Rückkehrcode | 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 | Der Name des Prüfpunktalgorithmus, auf den verwiesen wird. | ||||
props | Siehe Element props. | Eine Folge von prop-Elementen für den Prüfpunktalgorithmus. |
* Es werden nur rechenintensive Jobs mit einem Abschnitt unterstützt.
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="classname" type="xsd:string" /> <xsd:element name="impl-class" type="xsd:string" /> <xsd:element name="jndi-name" type="xsd:string" /> <xsd:element name="logical-name" type="xsd:string" /> <xsd:element name="scheduling-mode" type="xsd:string" /> <xsd:element name="batch-data-streams"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="bds"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="bds"> <xsd:complexType> <xsd:sequence> <xsd:element ref="logical-name" minOccurs="1" maxOccurs="1"/ > <xsd:element ref="impl-class" minOccurs="1" maxOccurs="1"/ > <xsd:element ref="props" minOccurs="0" maxOccurs="1"/ > </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="checkpoint-algorithm"> <xsd:complexType> <xsd:sequence> <xsd:element ref="classname" minOccurs="1" maxOccurs="1"/> <xsd:element ref="props" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="checkpoint-algorithm-ref"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="results-algorithm"> <xsd:complexType> <xsd:sequence> <xsd:element ref="classname" minOccurs="1" maxOccurs="1"/> <xsd:element ref="props" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="results-algorithms"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="results- algorithm" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="results-ref"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="job"> <xsd:complexType> <xsd:sequence> <xsd:element ref="jndi-name" minOccurs="1" maxOccurs="1"/> <xsd:element ref="step-scheduling-criteria" minOccurs="1" maxOccurs="1"/> <xsd:element ref="checkpoint-algorithm" maxOccurs="unbounded" <minOccurs="1"/> <xsd:element ref="results-algorithms" maxOccurs="1" minOccurs="0"/> <xsd:element ref="job-step" maxOccurs="unbounded" minOccurs="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="job-step"> <xsd:complexType> <xsd:sequence> <xsd:choice> <!-- jndi-name for batch jobs --> <xsd:element ref="jndi-name" minOccurs="1" maxOccurs="1"/> <!-- classname for compute intensive jobs --> <xsd:element ref="classname" minOccurs="1" maxOccurs="1"/> </xsd:choice> <xsd:element ref="step-scheduling" minOccurs="0" maxOccurs="1"/> <xsd:element ref="checkpoint-algorithm-ref" minOccurs="0" maxOccurs="1"/> <xsd:element ref="batch-data-streams" minOccurs="0" maxOccurs="1"/> <xsd:element ref="props" minOccurs="0" maxOccurs="1"/> <xsd:element ref="results-ref" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="optional" /> </xsd:complexType> </xsd:element> <xsd:element name="prop"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="value" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="props"> <xsd:complexType> <xsd:sequence> <xsd:element ref="prop" maxOccurs="unbounded" minOccurs="1"/> </xsd:sequence> </xsd:complexType> /xsd:element <xsd:element name="returncode-expression"> <xsd:complexType> <xsd:attribute name="step" type="xsd:string" use="required" /> <xsd:attribute name="operator" type="xsd:string" use="required" /> <xsd:attribute name="value" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="step-scheduling"> <xsd:complexType> <xsd:sequence> <xsd:element ref="returncode-expression" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="condition" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="step-scheduling-criteria"> <xsd:complexType> <xsd:sequence> <xsd:element ref="scheduling-mode" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <job name="SampleEar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <jndi-name>ejb/com/ibm/websphere/samples/PostingsJob</jndi-name> <step-scheduling-criteria> <scheduling-mode>sequential</scheduling-mode> </step-scheduling-criteria> <checkpoint-algorithm name="timebased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname> <props> <prop name="interval" value="15" /> </props> </checkpoint-algorithm> <results-algorithms> <results-algorithm name="jobsum"> <classname>com.ibm.wsspi.batch.resultsalgorithms.jobsum</classname> </results-algorithm> </results-algorithms> <job-step name="Step1"> <jndi-name>ejb/DataCreationBean</jndi-name> <checkpoint-algorithm-ref name="timebased" /> <results-ref name="jobsum"/> <batch-data-streams> <bds> <logical-name>myoutput</logical-name> <impl-class>com.ibm.websphere.samples.PostingOutputStream</impl-class> <props> <prop name="FILENAME" value="somefile”/> </props> </bds> </batch-data-streams> <props> <prop name="wsbatch.count" value="5000" /> </props> </job-step> <job-step name="Step2"> <step-scheduling condition="OR"> <returncode-expression step="Step1" operator="eq" value="0" /> <returncode-expression step="Step1" operator="eq" value="1" /> </step-scheduling> <jndi-name>ejb/PostingAccountData</jndi-name> <checkpoint-algorithm-ref name="timebased" / > <results-ref name="jobsum"/> <batch-data-streams> <bds> <logical-name>myinput</logical-name> <impl-class>com.ibm.websphere.samples.PostingStream</impl-class> <props> <prop name="FILENAME" value="somefile" /> </props> </bds> </batch-data-streams> </job-step> </job>
<?xml version="1.0" encoding="UTF-8"?> <job name="SimpleCIEar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <jndi-name>ejb/com/ibm/ws/ci/SimpleCIEJB</jndi-name> <job-step name="Step1"> <classname>com.ibm.websphere.ci.samples.SimpleCIWork</classname> <props> <prop name="calculationTimeInSecs" value="30" /> <prop name="outputFileName" value="SimpleCI_output_file" /> </props> </job-step> </job>
Related concepts
XML-Schema für xJCL