diff --git a/docs/src/site/docbook/reference/glossary.xml b/docs/src/site/docbook/reference/glossary.xml
index a528a40fa..bc2246eb2 100644
--- a/docs/src/site/docbook/reference/glossary.xml
+++ b/docs/src/site/docbook/reference/glossary.xml
@@ -7,254 +7,211 @@
Batch
+
- An accumulation of business transactions over
- time.
-
+ An accumulation of business transactions over time.
Batch Application Style
+
-
- Term used to designate batch as an application style in its
- own right similar to online, Web or SOA. It has standard
- elements of input, validation, transformation of
- information to business model, business processing and
- output. In addition, it requires monitoring at a macro
- level.
-
+ Term used to designate batch as an application style in its own
+ right similar to online, Web or SOA. It has standard elements of
+ input, validation, transformation of information to business model,
+ business processing and output. In addition, it requires monitoring at
+ a macro level.
Batch Processing
+
-
- The handling of a batch of many business transactions that
- have accumulated over a period of time (e.g. an hour, day,
- week, month, or year). It is the application of a process,
- or set of processes, to many data entities or objects in a
- repetitive and predictable fashion with either no manual
- element, or a separate manual element for error processing.
-
+ The handling of a batch of many business transactions that have
+ accumulated over a period of time (e.g. an hour, day, week, month, or
+ year). It is the application of a process, or set of processes, to
+ many data entities or objects in a repetitive and predictable fashion
+ with either no manual element, or a separate manual element for error
+ processing.
Batch Window
+
-
- The time frame within which a batch job must complete. This
- can be constrained by other systems coming online, other
- dependent jobs needing to execute or other factors specific
- to the batch environment.
-
+ The time frame within which a batch job must complete. This can
+ be constrained by other systems coming online, other dependent jobs
+ needing to execute or other factors specific to the batch
+ environment.
- Step Controller
+ Step
+
-
- It is the main batch task or Unit of Work controller. It
- initializes the tasklet, and controls the transaction
- environment based on commit interval setting, etc.
-
+ It is the main batch task or unit of work controller. It
+ initializes the business logic, and controls the transaction
+ environment based on commit interval setting, etc.
Tasklet
+
-
- The main application program created by application developer to process
- the business logic for each LUW.
-
+ An application program created by application developer to
+ process the business logic for an entire Step.
Batch Job Type
+
-
- Job Types describe application of jobs for particular type
- of processing. Common areas are interface processing
- (typically flat files), forms processing (either for online
- pdf generation or print formats), report processing.
-
+ Job Types describe application of jobs for particular type of
+ processing. Common areas are interface processing (typically flat
+ files), forms processing (either for online pdf generation or print
+ formats), report processing.
Driving Query
-
- A driving
- query identifies the set of work for a job to do; the job then
- breaks that work into individual units of work. For instance,
- identify all financial transactions that have a status of
- "pending transmission" and send them to our partner
- system. The driving query returns a set of record IDs to process;
- each record ID then becomes a unit of work. A driving query may
- involve a join (if the criteria for selection falls across two or
- more tables) or it may work with a single table.
-
+
+ A driving query identifies the set of work for a job to do; the
+ job then breaks that work into individual units of work. For instance,
+ identify all financial transactions that have a status of "pending
+ transmission" and send them to our partner system. The driving query
+ returns a set of record IDs to process; each record ID then becomes a
+ unit of work. A driving query may involve a join (if the criteria for
+ selection falls across two or more tables) or it may work with a
+ single table.
+
Item
+
-
- An item represents the smallest ammount of complete data for processing. In the most
- simple terms this might mean a line in a file, a row in a database table, or a particular
- element in an XML file.
-
+ An item represents the smallest ammount of complete data for
+ processing. In the most simple terms this might mean a line in a file,
+ a row in a database table, or a particular element in an XML
+ file.
+ Logicial Unit of Work (LUW)
- Logicial Unit of Work
- (LUW)
- A batch job iterates through a driving query
- (or another input source such as a file) to perform the set of
- work that the job must accomplish. Each iteration of work
- performed is a unit of work.
+ A batch job iterates through a driving query (or another input
+ source such as a file) to perform the set of work that the job must
+ accomplish. Each iteration of work performed is a unit of work.
-
-
Commit Interval
-
- A set of
- LUWs constitute a commit interval.
-
+
+ A set of LUWs constitute a commit interval.
+
-
Partitioning
-
- Splitting a
- job into multiple threads where each thread is responsible for a
- subset of the overall data to be processed. The threads of
- execution may be within the same JVM or they may span JVMs in a
- clustered environment that supports workload balancing.
-
+
+ Splitting a job into multiple threads where each thread is
+ responsible for a subset of the overall data to be processed. The
+ threads of execution may be within the same JVM or they may span JVMs
+ in a clustered environment that supports workload balancing.
+
-
Staging Table
-
- A table
- that holds temporary data while it is being processed.
-
+
+ A table that holds temporary data while it is being
+ processed.
+
-
Restartable
-
- - a job that
- can be executed again and will assume the same identity as when
- run initially. In othewords, it is has the same job instance
- id.
-
+
+ - a job that can be executed again and will assume the same
+ identity as when run initially. In othewords, it is has the same job
+ instance id.
+
-
Rerunnable
+
-
- a job that is restartable and manages it's own state in
- terms of previous run's record processing. Note>>
- Rerunnable is tied to the driving query. If the driving
- query can be formed so that it will limit the processed rows
- when the job is restarted than re-runnable = true. This is
- managed by the application architecture. Often times a
- condition is added to the where statement to limit the rows
- returned by the driving query with something like "and
- processedFlag != true".
-
- Understanding Rerunnable
-
- If re-runnable = false the architecture assumes responsibility for
- tracking which rows have been processed. There is a default strategy
- for tracking the last record processed by partition. Most batch jobs
- only have one partition. The option is only valid for a restartable
- job. The reason being is that the architecture will have to persist
- the restart data, which is only available on a restartable job as the
- restart data is saved and made available from the execution of the
- last run if restartable = true. In pseudo code it is the following:
-
-
- StartOver ::= restartable = false. Restartable ::= true | false If
- (Restartable) re-runnable ::= true | false We don't persist restart
- information for a non-restartable job. As you can see, it doesn't
- make sense. Rerunnable has always confused the best of us and we're
- open to suggestions on how to better explain it.
-
-
-
+ a job that is restartable and manages it's own state in terms of
+ previous run's record processing. An example of a rerunnable step is
+ one based on a driving query. If the driving query can be formed so
+ that it will limit the processed rows when the job is restarted than
+ it is re-runnable. This is managed by the application logic. Often
+ times a condition is added to the where statement to limit the rows
+ returned by the driving query with something like "and processedFlag
+ != true".
-
-
-
+
Repeat
+
- One of the most basic units of batch processing, that
- defines repeatability calling a portion of code until it is
- finished, and while there is no error. Typically a batch
- process would be repeatable as long as there is input.
-
+ One of the most basic units of batch processing, that defines
+ repeatability calling a portion of code until it is finished, and
+ while there is no error. Typically a batch process would be repeatable
+ as long as there is input.
-
+
Retry
-
- Simplifies the execution of operations with retry semantics most frequently associated
- with handling transactional output exceptions. Retry is slightly different from repeat, rather than continually calling a block of code,
- retry is stateful, and continually calls the same block of code with the same input, until it either succeeds, or some type of retry limit
- has been exceeded. It is only generally useful if the operation is non-deterministic meaning that a retry on a subsequent invocation might
- succeed because something in the environment has improved.
-
-
+
+ Simplifies the execution of operations with retry semantics most
+ frequently associated with handling transactional output exceptions.
+ Retry is slightly different from repeat, rather than continually
+ calling a block of code, retry is stateful, and continually calls the
+ same block of code with the same input, until it either succeeds, or
+ some type of retry limit has been exceeded. It is only generally
+ useful if the operation is non-deterministic meaning that a retry on a
+ subsequent invocation might succeed because something in the
+ environment has improved.
+
-
Recover
-
- Recover operations handle an exception in such a way that a repeat process is able to
- continue.
-
-
+
+ Recover operations handle an exception in such a way that a
+ repeat process is able to continue.
+
+
-
Skip
-
- Skip is a recovery strategy often used on file input sources as the strategy for ignoring
- bad input records that failed validation.
-
-
+
+ Skip is a recovery strategy often used on file input sources as
+ the strategy for ignoring bad input records that failed
+ validation.
+
-
+
\ No newline at end of file
diff --git a/docs/src/site/docbook/reference/readersAndWriters.xml b/docs/src/site/docbook/reference/readersAndWriters.xml
index a0cb431fa..7b79751c3 100644
--- a/docs/src/site/docbook/reference/readersAndWriters.xml
+++ b/docs/src/site/docbook/reference/readersAndWriters.xml
@@ -1090,60 +1090,58 @@
java.io.File. Both XML and Flat File resources can
be configured using standard Spring constructs:
- <bean id="customerFileLocator"
- class="org.springframework.core.io.FileSystemResource">
- <constructor-arg type="java.lang.String"
- value="/outputs/20070122.testStream.CustomerReportStep.TEMP.txt" />
+ <bean id="flatFileItemReader"
+ class="org.springframework.batch.item.file.FlatFileItemReader">
+ <property name="resource"
+ value="file://outputs/20070122.testStream.CustomerReportStep.TEMP.txt" />
</bean>
The above Resource will load the file from
- the file system, at the location specificied in the constructor. In most
- spring applications, this solution is good enough. Resources are primarily
- used to load spring application context files, and perhaps a properties
- file. The names of these are known at compile time. However, in many batch
- scenarios, the file name may need to be determined at runtime as a
- parameter to the job. This could be solved using a
- PropertyPlaceholderConfigurer and '-D' parameters.
- (System arguments):
+ the file system, at the location specificied. Note that absolute locations
+ have to start with a double slash ("//"). In most spring applications,
+ this solution is good enough because the names of these are known at
+ compile time. However, in batch scenarios, the file name may need to be
+ determined at runtime as a parameter to the job. This could be solved
+ using '-D' parameters, i.e. a system property:
- <bean id="customerFileLocator"
- class="org.springframework.core.io.FileSystemResource">
- <constructor-arg type="java.lang.String"
- value="${file.name}" />
- </bean>
+ <bean id="flatFileItemReader"
+ class="org.springframework.batch.item.file.FlatFileItemReader">
+ <property name="resource" value="${input.file.name}" />
+</bean>
All that would be required for this solution to work would be a
- placeholder configurer in the ApplicationContext
- and the system arguments provided. (-Dfile.name="/file.txt") This solution
- will work, but it would be much preferred to place the file name in the
- JobParameters of the job and access them that way.
- To allow for this, Spring Batch provides the
+ system argument (-Dinput.file.name="file://file.txt"). (Note that although
+ a PropertyPlaceholderConfigurer can be used here,
+ it is not necessary if the system property is always set because the
+ ResourceEditor in Spring already filters and does
+ placeholder replacement on system properties.)
+
+ Often in a batch setting it is preferable to parameterise the file
+ name in the JobParameters of the job, instead of
+ through system properties, and access them that way. To allow for this,
+ Spring Batch provides the
StepExecutionResourceProxy. The proxy can use
either job name, step name, or any values from the
JobParameters, by surround them with %:
<bean id="inputFile"
class="org.springframework.batch.core.resource.StepExecutionResourceProxy" />
- <property name="filePattern" value="/%JOB_NAME%/%STEP_NAME%/%file.name%" />
+ <property name="filePattern" value="//%JOB_NAME%/%STEP_NAME%/%file.name%" />
</bean>
Assuming a job name of 'fooJob', and a step name of 'fooStep', and
the key-value pair of 'file.name="fileName.txt' is in the
JobParameters the job is start with, the following
filename will be passed as the Resource:
- "/fooJob/fooStep/fileName.txt". It should be noted
+ "//fooJob/fooStep/fileName.txt". It should be noted
that in order for the proxy to have access to the
StepExecution, it must be registered as a
- StepListener:
+ StepListener:
<bean id="fooStep" parent="abstractStep"
p:itemReader-ref="itemReader"
p:itemWriter-ref="itemWriter">
- <property name="listeners">
- <list>
- <ref bean="inputFile" />
- </list>
- </property>
+ <property name="listeners" ref="inputFile" />
</bean>
The StepListener interface will be discussed