I processi vengono espressi mediante una istruzione Extensible Markup Language (XML) detto xJCL (XML Job Control Language). xJCL ha costrutti per l'espressione di tutte le informazioni necessarie sia per i processi a elaborazione intensiva che per i processi batch, nonostante alcuni elementi di xJCL siano applicabili solo ai processi a elaborazione intensiva o ai processi batch. Per ulteriori informazioni su xJCL, fare riferimento all'xJCL fornito con le applicazioni di esempio, alla tabella xJCL e al documento dello schema xJCL. Tenere presente che la definizione xJCL di un processo non fa parte dell'applicazione a lunga durata. Essa è costruita differentemente e viene inoltrata allo scheduler a lunga durata per l'esecuzione. Lo scheduler a lunga durata utilizza le informazioni nel xJCL per determinare dove e quando il processo deve essere eseguito.
Nella seguente tabella sono riportati gli elementi xJCL:
Elemento | Elaborazione intensiva | Batch | Elemento secondario | Attributi | Descrizione |
---|---|---|---|---|---|
processo | A | A | Ambito della descrizione di un processo batch | ||
A | A | name | Il nome del processo. Questo nome deve corrispondere al nome dell'applicazione a lunga durata | ||
A | A | jndi-name | Il nome JNDI assegnato al bean di sessione stateless del controller di processi quando l'applicazione a lunga durata viene distribuita in WebSphere Application Server. | ||
A | A | step-scheduling-criteria | Fare riferimento all'elemento step-scheduling-criteria | ||
N | A | checkpoint-algorithm | Fare riferimento all'elemento checkpoint-algorithm | ||
A | A | job-step | Fare riferimento all'elemento job-step | ||
job-step | |||||
S* | A | name | Il nome del passo. Queste informazioni vengon orestituite con i comandi operativi. | ||
N | A | step-scheduling | Fare riferimento all'elemento step-scheduling | Consente la logica condizionale basata sui codici di ritorno delle operazioni che determina se l'operazione batch deve essere richiamata o meno | |
N | A | checkpoint-algorithm-ref | Fare riferimento all'elemento checkpoint-algorithm-ref | Specifica l'algoritmo del punto di controllo da utilizzare per l'operazione del processo batch. | |
A | N | classname | Il nome completo della classe che implementa il processo a elaborazione intensiva. | ||
N | A | JNDI-name | Il nome logico JNDI della directory principale per il bean di entità (bean dell'operazione batch) che l'ambiente di esecuzione batch utilizzerà per caricare l'operazione del processo batch. | ||
props | Fare riferimento all'elemento props | Le proprietà nome-valore da inviare all'operazione | |||
N | A | batch-data-streams | Fare riferimento all'elemento batch-data-streams | Una sequenza di elementi bds. Ogni bds è dato dalle informazioni di configurazione necessarie per creare un flusso di dati batch. | |
prop | A | A | Un'unica istanza di una coppia nome-valore che funziona da proprietà. | ||
name | Il nome della proprietà. | ||||
valore | Il valore della proprietà. | ||||
props | A | A | Una serie di elementi prop utilizzati per inviare le proprietà delle coppie nome-valore alle operazioni, ai bds, agli algoritmi dei punti di controllo e agli algoritmi dei risultati. | ||
prop | Fare riferimento all'elemento prop | ||||
bds | N | A | Un'unica istanza di una implementazione di un flusso di dati batch resi disponibili per l'utilizzo da parte del processo batch. | ||
logical-name | Il nome logico è una stringa integrata in un'operazione batch che l'operazione batch utilizza per richiedere all'ambiente di esecuzione batch una determinata istanza del flusso di dati. | ||||
impl-class | Il nome classe completo della classe di implementazione del flusso di dati batch. | ||||
props | Fare riferimento all'elemento props | Un elenco di proprietà che vengono inviate alla classe di implementazione del flusso di dati batch. | |||
batch-data-streams | N | A | Una serie di elementi bds | ||
bds | Fare riferimento all'elemento batch-data-streams bds | ||||
step-scheduling | N | A | Può essere applicato a job-steps per creare i flussi condizionali basati sui codici di ritorno per un processo batch. L'elemento può confrontare i valori dei codici di ritorno definiti per questo processo batch per prendere decisioni su qualsiasi operazione che deve essere richiamata o meno durante l'elaborazione di un processo batch. I valori dei codici di ritorno vengono confrontati utilizzando l'elemento returncode-expression. | ||
returncode- expression | Vedere returncode-expression | L'espressione returncode- da valutare. | |||
condition | Se esiste più di un elemento returncode-expression nell'elemento step-scheduling, è possibile applicare degli operatori condizionali. Gli operatori supportati sono AND, OR. | ||||
returncode-expression | N | A | Vengono utilizzati con gli elementi step-scheduling per decidere se un processo batch deve essere eseguito in base ai codici di ritorno delle altre operazioni del processo. | ||
step | Il nome dell'operazione il cui codice di ritorno va confrontato in questa espressione. | ||||
operator | L'operatore da utilizzare per l'espressione del codice di ritorno; gli operatori supportati sono: eq (uguale), lt (minore di), gt (maggiore di), le (minore o uguale a), ge (maggiore o uguale a). | ||||
valore | Il valore con cui confrontare il codice di ritorno. | ||||
step-scheduling-criteria | N | A | Descrive la sequenza in cui verranno elaborate le operazioni del processo. Al momento, è supportata la pianificazione sequenziale, ad esempio le operazioni vengono richiamate nell'ordine con cui appaiono nell'xJCL. | ||
scheduling-mode | La sequenza secondo la quale richiamare le operazioni; l'unico possibile valore al momento è sequential. | ||||
checkpoint-algorithm | N | A | Dichiara un algoritmo del punto di controllo che può essere utilizzato per un'operazione del processo batch. | ||
name | Il nome dell'algoritmo. | ||||
classname | La classe che implementa questo algoritmo. | ||||
props | Fare riferimento all'elemento props | Una sequenza di elementi prop per l'algoritmo del punto di controllo. | |||
checkpoint-algorithm-ref | N | A | Un riferimento a un elemento dell'algoritmo del punto di controllo. | ||
name | Il nome dell'algoritmo del punto di controllo a cui si fa riferimento. | ||||
props | Fare riferimento all'elemento props | Una sequenza di elementi prop per l'algoritmo del punto di controllo. |
* Al momento sono supportati solo i processi a elaborazione intensiva con un un'unica operazione.
<?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
Schema XML per xJCL