You can build a transactional batch application as a job and divide the job into
subordinate jobs so that the subordinate jobs can run independently and in parallel. You use the
parallel job manager to submit and manage the transactional batch jobs.
Before you begin
適用於轉換使用者: Parallel job management applications built for prior versions of WebSphere
Batch can run as is on
WebSphere® Application Server Version 8.5. However,
follow the same procedure as having two xJCl files, an
xd.spi.properties file,
and a shared library configured for two SPI implementations. When using the application as is, do
not do the steps in the following procedure.
trns
適用於轉換使用者: You can migrate parallel job management applications to
WebSphere Application Server Version 8.5. Add the API implementation classes to
the application EAR. Reauthor the xJCL as described in the following procedure.
trns
About this task
You develop subordinate jobs for your job so that the subordinate jobs can run
independently and in parallel. First develop the criteria that breaks jobs into subordinate jobs.
Then build a simple batch application and make the pieces of the application parallel. Finally,
create the xJCl for the subordinate jobs so that in another procedure you can deploy the application
following another procedure.
Procedure
- Develop the criteria that breaks jobs into subordinate jobs.
For example, divide jobs into subordinate jobs based on bank branches, with the subordinate job
for each branch based on the location of the branch. For a given bank branch, have the subordinate
job compute the balance of each account at the end of the day based on the daily transactions for
each account.
- Build a simple batch application to process the information as a job.
- Make the pieces of the application parallel.
Implement the parameter API to divide the job for the batch application into multiple subordinate
jobs.
- Optional: Collect information about a subordinate job that is running.
Use the SubJobCollector API to collect the information.
- Optional: Analyze information collected about the subordinate job.
Use the SubJobAnalyzer API to analyze the information.
- Create the xJCL.
Start with xJCL from the job that you created for the simple batch application.
- Specify the run element as a child of the job element.
- Set the instances attribute on the run element to multiple.
- Set the Java™ virtual machine (JVM) attribute on the run
element to single or multiple.
Use the single attribute to run
all subordinate jobs in the same JVM. Use the multiple attribute to run the subordinate jobs on any
valid JVM.
<run instances="multiple" jvm="multiple">
You can specify the run element as a child of a step. In this situation, the step is run as a
parallel job. The contents of the step xJCL are used to generate a one step subordinate job
xJCL.
- Specify one prop element as a child of the run element for each PJM API.
- Specify the PJM API on the name attribute.
The following APIs are valid for the PJM:
- com.ibm.websphere.batch.parallel.parameterizer
- com.ibm.websphere.batch.parallel.synchronization
- com.ibm.websphere.batch.parallel.subjobanalyzer
- com.ibm.websphere.batch.parallel.subjobcollector
- Set the value attribute to a name for the API.
- Include a prop element to specify the subordinate job name.
- Set the name attribute to com.ibm.wsspi.batch.parallel.subjob.name.
- Set the value attribute to the name of the job.
- Optional: Include a prop element to indicate the job count.
- Set the name attribute to parallel.jobcount.
- Set the value attribute to a value for the job count.
- Specify any other job-level properties.
<run instances="multiple" jvm="multiple">
<props>
<prop name="com.ibm.websphere.batch.parallel.parameterizer"
value="com.ibm.websphere.samples.spi.MailerParameterizer"/>
<prop name="com.ibm.websphere.batch.parallel.synchronization"
value="com.ibm.websphere.samples.spi.MailerTXSynchronization"/>
<prop name="com.ibm.websphere.batch.parallel.subjobanalyzer"
value="com.ibm.websphere.samples.spi.MailerSubJobAnalyzer"/>
<prop name="com.ibm.websphere.batch.parallel.subjobcollector"
value="com.ibm.websphere.samples.spi.MailerSubJobCollector"/>
<prop name="com.ibm.wsspi.batch.parallel.subjob.name"
value="MailerSampleSubJob" />
<!-- The count of parallel sub jobs to be submitted -->
<prop name="parallel.jobcount" value="3" />
</props>
</run>
- Include the same three step level properties in each step in the xJCL.
<prop name="com.ibm.wsspi.batch.parallel.jobname" value="${parallel.jobname}" />
<prop name="com.ibm.wsspi.batch.parallel.logicalTXID" value="${logicalTXID}" />
<prop name="com.ibm.wsspi.batch.parallel.jobmanager" value="${parallel.jobmanager}" />
Results
You have created a job with subordinate jobs that can run independently and in
parallel.
What to do next
Deploy the application as you would other batch applications.