Transcript of "Design & Develop Batch Applications in Java/JEE"
Design & Develop
What are Batch Applications ?
● Execution of a series of programs ("jobs")
without manual intervention
● Conducting a group of computer tasks at
The input data is pre-selected through
scripts, command-line parameters or Job-
● No user intervention
● No UI or minimal UI
● Need not be high
● Single machine based
● Larger Input data
● System latency is not
● Transactions run for
Batch Processing vs Online Processing
● Interacting with System
● Command-line based
UI or GUI interface
● High availability
● Distributed processing
● Smaller Input data
● System response time
● Short transaction time
● Shift the time of job processing to when the
computing resources are less busy. (e.g., Nightly,
Weekly or Monthly Jobs)
● Avoids idling the computing resources with minute-
by-minute manual intervention and supervision.
● Manage large volume of transactions
● Long running application
Benefits of Batch Processing
● Payroll Processing
● Bank monthly statements
● Credit card companies processing bills
● Fraud detection system
● Extract Transform Load Data processing
● Business Intelligence or Social Intelligence
● Predictive or Risk analysis systems
Examples Of Batch Processing
● File-driven applications are driven by
records or values retrieved from a file
● Database-driven applications are driven
by rows or values retrieved from the
● Message-driven applications are driven by
messages retrieved from a message
Batch App Categories
● Normal processing in a batch window
● Concurrent batch & on-line processing
● Parallel processing of many different batch
runs or jobs at the same time
● Partitioning (i.e. processing of many
instances of the same job at the same
● Simple Batch Repeat
● Automatic Retry After Failure
● Commit Batch Process Periodically: chunk processing
● Asynchronous Chunk Processing: parallel processing within
● Copy File to File in a Batch
● Massively Parallel Batch Processing
● Manual Restart After Failure
● Sequential Processing of Dependent Steps
● Partial Processing: skip records (e.g. on rollback).
● Whole-Batch Transaction
● Scheduled Processing
● Non-Sequential Processing of Steps (Conditional
Batch App Use Cases
A Job is an instance that encapsulates an entire batch process. A job is
typically put together using a Job Specification Language and consists of
multiple steps. The Job Specification Language is implemented with XML
and is referred as "Job XML".
A Step is a domain object that encapsulates an independent, sequential
phase of a job. A step contains all of the information necessary to define
and control the actual batch processing.
JobOperator provides an interface to manage all aspects of job processing,
including operational commands, such as start, restart, and stop, as well as
job repository commands, such as retrieval of job and step executions.
JobRepository holds information about jobs current
running and jobs that run in the past. JobOperator
provides access to this repository.
Reader-Processor-Writer pattern is the primary pattern
and is called as Chunk-oriented processing.
In this, ItemReader reads one item at a time,
ItemProcessor processes the item based upon the
business logic, such as calculate account balance and
hands it to ItemWriter for aggregation. Once the 'chunk'
number of items are aggregated, they are written out,
and the transaction is committed.