Updates to documentation, mostly cleanup.
This commit is contained in:
6
docs/.classpath
Normal file
6
docs/.classpath
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="org.devzuz.q.maven.jdt.core.mavenClasspathContainer"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
@@ -1,3 +1,28 @@
|
|||||||
|
<<<<<<< .mine
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>docs</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.devzuz.q.maven.jdt.core.mavenIncrementalBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.devzuz.q.maven.jdt.core.mavenNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
|
=======
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>docs</name>
|
<name>docs</name>
|
||||||
@@ -27,3 +52,4 @@
|
|||||||
<nature>org.codehaus.groovy.eclipse.groovyNature</nature>
|
<nature>org.codehaus.groovy.eclipse.groovyNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
>>>>>>> .r10743
|
||||||
|
|||||||
33
docs/src/site/docbook/reference/Discard.xml
Normal file
33
docs/src/site/docbook/reference/Discard.xml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||||
|
<chapter>
|
||||||
|
<title>Discard</title>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title id="s.5.2">Support Stereotypes</title>
|
||||||
|
|
||||||
|
<para>While item readers and writers serve as the main entry points for
|
||||||
|
item-oriented processing, they might be supplemented by a number of
|
||||||
|
support classes that perform specific tasks within the reader / writer
|
||||||
|
lifecycle. These support stereotypes are useful for dividing the work of
|
||||||
|
item readers and writers into reusable pieces, as well as abstracting away
|
||||||
|
the details of processing, such as interaction with external systems.
|
||||||
|
Additionally, they give us another opportunity to leverage the powerful
|
||||||
|
configuration features of the Spring framework, as we can switch between
|
||||||
|
several beans implementing these support interfaces without changing the
|
||||||
|
driving item reader or writer.</para>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title id="s.2.4.2">Item Transformers</title>
|
||||||
|
|
||||||
|
<para>An item transformer is a class that is capable of taking an object
|
||||||
|
and changing it somehow before processing occurs. For instance, an item
|
||||||
|
transformer my alter an object by changing its properties or by
|
||||||
|
replacing it with another object entirely, such as a wrapper or
|
||||||
|
derivative object. It can also be defined as an adaptor, allowing an
|
||||||
|
object of one type to be converted for use as an object of a second
|
||||||
|
type.</para>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
</chapter>
|
||||||
BIN
docs/src/site/docbook/reference/ExecutionEnvironment.png
Normal file
BIN
docs/src/site/docbook/reference/ExecutionEnvironment.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
12
docs/src/site/docbook/reference/appendix.xml
Normal file
12
docs/src/site/docbook/reference/appendix.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||||
|
<appendix>
|
||||||
|
<title>List of ItemReaders</title>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title></title>
|
||||||
|
|
||||||
|
<para></para>
|
||||||
|
</section>
|
||||||
|
</appendix>
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
<para>To any experienced batch architect, the overall concepts of batch
|
<para>To any experienced batch architect, the overall concepts of batch
|
||||||
processing described above should be familiar and comfortable. There are
|
processing described above should be familiar and comfortable. There are
|
||||||
“Jobs” and “Steps” and a developer supplied processing unit that Spring
|
“Jobs” and “Steps” and a developer supplied processing units called
|
||||||
Batch refers to as the “Tasklet.” The following diagram is only a slight
|
ItemReaders and ItemWriters. The following diagram is only a slight
|
||||||
variation of the batch reference architecture that has been used for
|
variation of the batch reference architecture that has been used for
|
||||||
decades. JCL and COBOL developers are likely to be as comfortable with the
|
decades. JCL and COBOL developers are likely to be as comfortable with the
|
||||||
concepts as C++, C# and Java developers. However, because of the Spring
|
concepts as C++, C# and Java developers. However, because of the Spring
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>In addition the components describe the batch interaction
|
</itemizedlist>In addition the components describe the batch interaction
|
||||||
and services stereotypes that are the domain language and interfaces
|
and services stereotypes that are the domain language and interfaces
|
||||||
implemented by developers in constructing a batch solution. As he diagram
|
implemented by developers in constructing a batch solution. As the diagram
|
||||||
illustrates, custom applicaton archifacts, generally created by the
|
illustrates, custom applicaton archifacts, generally created by the
|
||||||
developer, are the following:</para>
|
developer, are the following:</para>
|
||||||
|
|
||||||
@@ -140,11 +140,11 @@
|
|||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Define how the batch jobs will be launched</para>
|
<para>Define how batch jobs will be launched</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Define the Job Execution Environment</para>
|
<para>Job construction and Configuration</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -190,21 +190,15 @@
|
|||||||
configuration.</para>
|
configuration.</para>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
||||||
|
|
||||||
<title id="s.2.1.1">Job</title>
|
<title id="s.2.1.1">Job</title>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<para>The job could be described as the heart of the Spring Batch
|
<para>The job could be described as the heart of the Spring Batch
|
||||||
framework. It is represented by a Spring bean that implements the
|
framework. It is represented by a Spring bean that implements the
|
||||||
<emphasis role="bold">Job</emphasis> interface and contains all of the
|
<emphasis role="bold">Job</emphasis> interface and contains all of the
|
||||||
information necessary to define the operations performed by a job. A job
|
information necessary to define the operations performed by a job. A job
|
||||||
configuration is typically contained within a Spring XML configuration
|
configuration is typically contained within a Spring XML configuration
|
||||||
file and the job's name is determined by the "id" attribute associated
|
file and the job's name is determined by the "id" attribute associated
|
||||||
with the job configuration bean. The job configuration contains:</para>
|
with the job configuration bean. The job configuration contains</para>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -225,31 +219,13 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
A default simple implementation of the
|
<para>A default simple implementation of the <emphasis
|
||||||
|
role="bold">Job</emphasis> interface is provided by Spring Batch in the
|
||||||
<emphasis role="bold">Job</emphasis>
|
form of the SimpleJob class which creates some standard functionality on
|
||||||
|
top of <emphasis role="bold">Job</emphasis>, namely a standard execution
|
||||||
interface is provided by Spring Batch in the form of the JobSupport class. Jobs can be defined by creating beans from subclasses of
|
logic that all jobs should utilize. In general, all job configurations
|
||||||
|
should be defined using a bean of type <emphasis
|
||||||
<emphasis role="bold">JobSupport</emphasis>
|
role="bold">SimpleJob</emphasis>.</para>
|
||||||
|
|
||||||
. The
|
|
||||||
|
|
||||||
<emphasis role="bold">JobSupport</emphasis>
|
|
||||||
|
|
||||||
class, however, does not provide much in the way of functionality. The provided
|
|
||||||
|
|
||||||
<emphasis role="bold">SimpleJob</emphasis>
|
|
||||||
|
|
||||||
class creates some standard functionality on top of
|
|
||||||
|
|
||||||
<emphasis role="bold">JobSupport</emphasis>
|
|
||||||
|
|
||||||
, namely a standard execution logic that all jobs should utilize. In general, all job configurations should be defined using a bean of type
|
|
||||||
|
|
||||||
<emphasis role="bold">SimpleJob</emphasis>
|
|
||||||
|
|
||||||
.
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
@@ -261,12 +237,12 @@
|
|||||||
time "foo" is supposed to run would be an instance of the "foo" job.
|
time "foo" is supposed to run would be an instance of the "foo" job.
|
||||||
Each instance would be uniquely identified as each one represents a
|
Each instance would be uniquely identified as each one represents a
|
||||||
distinct batch need. Further, each instance might have attempted several
|
distinct batch need. Further, each instance might have attempted several
|
||||||
times to complete its work. Each attempt is represented by a [#Job
|
times to complete its work. Each attempt is represented by a <link
|
||||||
Execution], described below. A job instance is not considered to be
|
linkend="s.3.3">JobExecution</link>, described below. A job instance is
|
||||||
complete until an associated job execution completes successfully. As
|
not considered to be complete until an associated job execution
|
||||||
such, a single job instance may have many executions. To keep track of
|
completes successfully. As such, a single job instance may have many
|
||||||
this, every job instance provides a reference to the last execution
|
executions. To keep track of this, every job instance provides a
|
||||||
attempt.</para>
|
reference to the last execution attempt.</para>
|
||||||
|
|
||||||
<para>For example, a unique instance might be identified by just a job
|
<para>For example, a unique instance might be identified by just a job
|
||||||
name, or by the combination of a job name and a scheduled date. Using
|
name, or by the combination of a job name and a scheduled date. Using
|
||||||
@@ -284,6 +260,13 @@
|
|||||||
identifies this job instance.</para>
|
identifies this job instance.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title id="s.2.1.3">Job Parameters</title>
|
||||||
|
|
||||||
|
<para>Job Parameters represent parameters to a job that
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.2.1.3">Job Execution</title>
|
<title id="s.2.1.3">Job Execution</title>
|
||||||
|
|
||||||
@@ -305,11 +288,11 @@
|
|||||||
<para>Job executions are represented by objects of the <emphasis
|
<para>Job executions are represented by objects of the <emphasis
|
||||||
role="bold">JobExecution</emphasis> class. These job executions are
|
role="bold">JobExecution</emphasis> class. These job executions are
|
||||||
created by an implementation of the <emphasis
|
created by an implementation of the <emphasis
|
||||||
role="bold">JobExecutorFacade</emphasis> interface from a given
|
role="bold">JobRepository</emphasis> interface from a given
|
||||||
<emphasis role="bold">JobInstance</emphasis> corresponding to a unique
|
<emphasis role="bold">JobInstance</emphasis> corresponding to a unique
|
||||||
<emphasis role="bold">JobParameters</emphasis> object. Each job
|
<emphasis role="bold">JobParameters</emphasis> object. Each job
|
||||||
execution contains a reference to its corresponding job instance,
|
execution contains a reference to its corresponding job instance and
|
||||||
related Step Executions and step/chunk context data.</para>
|
related Step Executions.</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -319,15 +302,20 @@
|
|||||||
<para>This section describes stereotypes relating to the concept of a
|
<para>This section describes stereotypes relating to the concept of a
|
||||||
batch step. A step is an entity that encapsulates a single, independent
|
batch step. A step is an entity that encapsulates a single, independent
|
||||||
phase of a batch job. Therefore, every batch job is composed entirely of
|
phase of a batch job. Therefore, every batch job is composed entirely of
|
||||||
one or more batch steps.</para>
|
one or more batch steps. Steps should be thought of as unique processing streams that
|
||||||
|
will be executed in sequence. For example, if you have one step that loads a file into a database,
|
||||||
|
another that reads from the database, validates the data, preforms processing, and then
|
||||||
|
writes to another table, and another that reads from that table and writes out to a file. Each
|
||||||
|
of these steps will be performed completely before moving on to the next step. The file will
|
||||||
|
be completely read into the database before step 2 can begin.</para>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.2.1.1">Step Configuration</title>
|
<title id="s.2.1.1">Step</title>
|
||||||
|
|
||||||
<para>The step bean contains all of the information necessary to define
|
<para>A batch step contains all of the information necessary to define
|
||||||
a discrete set of business logic within a job configuration. This is a
|
a discrete set of business logic within a job. This is a
|
||||||
necessarily vague description because the contents of any given step
|
necessarily vague description because the contents of any given step
|
||||||
configuration are at the discretion of the developer writing jobs. A
|
are at the discretion of the developer writing jobs. A
|
||||||
step can be as narrowly defined as a single line of code or as broadly
|
step can be as narrowly defined as a single line of code or as broadly
|
||||||
defined as necessary to complete the entire work of your job. There are
|
defined as necessary to complete the entire work of your job. There are
|
||||||
several factors that will affect the breadth of your step
|
several factors that will affect the breadth of your step
|
||||||
@@ -352,55 +340,17 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
<para>Step configurations are defined by instantiating implementations
|
<para>Steps are defined by instantiating implementations
|
||||||
of the <emphasis role="bold">Step</emphasis> interface. Additionally,
|
of the <emphasis role="bold">Step</emphasis> interface. Two step implementation
|
||||||
the utility class <emphasis role="bold">StepSupport</emphasis> and its
|
classes are available in the Spring Batch
|
||||||
abstract subclass, <emphasis role="bold">AbstractStep</emphasis> provide
|
|
||||||
a basic implementation of <emphasis role="bold">Step</emphasis> with
|
|
||||||
default functionality that should be common to any concrete Step
|
|
||||||
implementation. Generally, all step configuration implementations should
|
|
||||||
extend from these classes.</para>
|
|
||||||
|
|
||||||
<para>Two step implementation classes are available in the Spring Batch
|
|
||||||
framework, and they are each discussed in detail in other sections of
|
framework, and they are each discussed in detail in other sections of
|
||||||
this guide. For most situations, the <emphasis
|
this guide. For most situations, the <emphasis
|
||||||
role="bold">SimpleStep</emphasis> implementation is sufficient, but
|
role="bold">ItemOrientedStep</emphasis> implementation is sufficient, but
|
||||||
custom control flow behavior and transaction management behavior can
|
custom control flow behavior and transaction management behavior can
|
||||||
also be configured by using a <emphasis
|
also be configured by using a <emphasis
|
||||||
role="bold">RepeatOperationsStep</emphasis>.</para>
|
role="bold">RepeatOperationsStep</emphasis>.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
|
||||||
<title id="s.2.1.2">Step Instance</title>
|
|
||||||
|
|
||||||
<para>A step instance, represented by the <emphasis
|
|
||||||
role="bold">StepInstance</emphasis> class, represents the business
|
|
||||||
concept of a single step within a job invocation. That is to say, every
|
|
||||||
job instance contains one or more step instances.</para>
|
|
||||||
|
|
||||||
<para>For example, suppose we have a job instance called
|
|
||||||
"foo-01-01-2008" that is an instance of a job configuration containing
|
|
||||||
three steps. Suppose these steps are named "step1", "step2" and "step3."
|
|
||||||
There will be corresponding "foo-01-01-2008#step1",
|
|
||||||
"foo-01-01-2008#step2" and "foo-01-01-2008#step3" step instances, which
|
|
||||||
will be distinct from the step instances of any other job instance (e.g.
|
|
||||||
those of "foo-01-02-2008").</para>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<title />
|
|
||||||
|
|
||||||
The step instance naming here is for clarity, this is not necessarily how the instance will be named internally within the framework.
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<para>Each step instance will contain the current status of the batch
|
|
||||||
execution and a reference to its corresponding <emphasis
|
|
||||||
role="bold">JobInstance</emphasis>. Additionally, a step instance keeps
|
|
||||||
track of how many attempts are made to run the corresponding step. Each
|
|
||||||
attempt to run a step will create a <emphasis
|
|
||||||
role="bold">StepExecution</emphasis>, so a single job instance might
|
|
||||||
have several corresponding step executions.</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.2.1.3">Step Execution</title>
|
<title id="s.2.1.3">Step Execution</title>
|
||||||
|
|
||||||
@@ -418,58 +368,33 @@
|
|||||||
<para>Step executions are represented by objects of the <emphasis
|
<para>Step executions are represented by objects of the <emphasis
|
||||||
role="bold">StepExecution</emphasis> class. These step executions are
|
role="bold">StepExecution</emphasis> class. These step executions are
|
||||||
created by an implementation of the <emphasis
|
created by an implementation of the <emphasis
|
||||||
role="bold">JobExecutor</emphasis> interface from a given <emphasis
|
role="bold">Job</emphasis> interface from a given <emphasis
|
||||||
role="bold">StepInstance</emphasis> and <emphasis
|
|
||||||
role="bold">JobExecution</emphasis>. Each step execution contains a
|
role="bold">JobExecution</emphasis>. Each step execution contains a
|
||||||
reference to its corresponding step instance and job execution, and
|
reference to its corresponding step and job execution, and
|
||||||
transaction related data such as commit and rollback count and start and
|
transaction related data such as commit and rollback count and start and
|
||||||
end times. Additionally, each step execution will contain a set of
|
end times. Additionally, each step execution will contain a set of
|
||||||
execution attributes, which will contain statistics and restart
|
execution attributes, which will contain statistics and restart
|
||||||
data.</para>
|
data.</para>
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<title id="s.2.1.4">Chunk</title>
|
|
||||||
<para>
|
|
||||||
Each step execution is divided into one or more transactions. These
|
|
||||||
individual transactions are sometimes referred to as "chunks." Each
|
|
||||||
chunk may represent one or many individual operations within a step
|
|
||||||
execution, depending on configuration. Although chunk-based processing
|
|
||||||
is an important feature of Spring Batch, there is no domain object that
|
|
||||||
directly corresponds to a chunk, as chunks are implicitly created through
|
|
||||||
the opening and closing of transactions.
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<title id="s.2.1.5">Step Contribution</title>
|
|
||||||
<para>
|
|
||||||
A step contribution represents the metadata for an uncommitted portion, or chunk,
|
|
||||||
of a step execution that is being "buffered" until a transaction boundary is reached
|
|
||||||
and the operations within the chunk are successfully committed. Each step contribution
|
|
||||||
is created by the enclosing step execution, and each contribution is later "applied"
|
|
||||||
by the enclosing step executor, allowing metadata to be applied only after each processed
|
|
||||||
chunk succeeds.
|
|
||||||
</para>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.2.1.6">Tasklets</title>
|
<title id="s.2.1.6">Tasklets</title>
|
||||||
|
|
||||||
<para>A tasklet represents the execution of a logical unit of work, as
|
<para>A tasklet represents the execution of a logical unit of work, as
|
||||||
defined by its implementation of the Spring Batch provided _Tasklet_
|
defined by its implementation of the Spring Batch provided Tasklet
|
||||||
interface. Tasklets are used when defining step configurations to
|
interface. Tasklets are used when defining step configurations to
|
||||||
specify the work done by the step. Subsequently, the logic in a tasklet
|
specify the work done by the step. Subsequently, the logic in a tasklet
|
||||||
is atomic in terms of transactions. A transaction will never commit
|
is atomic in terms of transactions. A transaction will never commit
|
||||||
until an entire tasklet execution is complete (unless an exception
|
until an entire tasklet execution is complete (unless an exception
|
||||||
occurs - a transaction might either commit or rollback if that behavior
|
occurs - a transaction might either commit or rollback if that behavior
|
||||||
is specified in the step's exception management strategy).</para>
|
is specified in the step's exception management strategy). There is a
|
||||||
|
specific implementation of the Step interface, TaskletStep, that works
|
||||||
|
directly with a Tasklet.</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.5">Item-Oriented Processing Stereotypes</title>
|
<title id="s.5">Processing Stereotypes</title>
|
||||||
|
|
||||||
<para>A powerful batch processing paradigm implemented by the Spring Batch
|
<para>A powerful batch processing paradigm implemented by the Spring Batch
|
||||||
framework is the concept of item-oriented processing. That is, doing work
|
framework is the concept of item-oriented processing. That is, doing work
|
||||||
@@ -478,66 +403,39 @@
|
|||||||
processing might entail, such as file or database operations.</para>
|
processing might entail, such as file or database operations.</para>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.5.1">Reader and Writer Stereotypes</title>
|
<title id="s.5.1">Reader and Writer Stereotypes</title>
|
||||||
|
|
||||||
<para>There are two basic stereotypes that represent the first-class
|
|
||||||
participants in item-oriented processing, item providers and item
|
|
||||||
processors. They are each represented by a simple interface provided by
|
|
||||||
the Spring Batch framework, which allows free reign over their
|
|
||||||
implementations and improves our ability to leverage the Spring
|
|
||||||
framework's dependency injection capabilities.</para>
|
|
||||||
|
|
||||||
<section>
|
<para>There are two basic stereotypes that represent the first-class
|
||||||
<title id="s.5.1.1">Item Readers</title>
|
participants in item-oriented processing, item providers and item
|
||||||
|
processors. They are each represented by a simple interface provided by
|
||||||
|
the Spring Batch framework, which allows free reign over their
|
||||||
|
implementations and improves our ability to leverage the Spring
|
||||||
|
framework's dependency injection capabilities.</para>
|
||||||
|
|
||||||
<para>An item reader is an object that is used to retrieve the inputs
|
<section>
|
||||||
for a step, one at a time. When the item reader has exhausted the items
|
<title id="s.5.1.1">Item Reader</title>
|
||||||
it can provide, it will indicate this in a meaningful way (generally by
|
|
||||||
returning null). When coupled with an item processor, this forms a
|
|
||||||
complete item-oriented process, as each item taken from the provider is
|
|
||||||
then processed by the writer.</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
<para>An item reader is an object that is used to retrieve the inputs
|
||||||
<title id="s.5.1.2">Item Writers/Processors</title>
|
for a step, one at a time. When the item reader has exhausted the
|
||||||
|
items it can provide, it will indicate this in a meaningful way
|
||||||
|
(generally by returning null). When coupled with an item processor,
|
||||||
|
this forms a complete item-oriented process, as each item taken from
|
||||||
|
the provider is then processed by the writer.</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
<para>An item writer is an object that is used to perform processing
|
<section>
|
||||||
for a step, one item at a time. Generally, an item writer has no
|
<title id="s.5.1.2">Item Writer</title>
|
||||||
knowledge of the input it will receive next, only the item that that was
|
|
||||||
passed in its current invocation. As a result, item writers will
|
|
||||||
generally make no assumptions about the input they receive an treat
|
|
||||||
every item the same way and keep track of its own state between
|
|
||||||
invocations. When coupled with an item provider, this forms a complete
|
|
||||||
item-oriented process, as each item taken from the provider is then
|
|
||||||
processed by the processor.</para>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
<para>An item writer is an object that is used to perform processing
|
||||||
<title id="s.5.2">Support Stereotypes</title>
|
for a step, one item at a time. Generally, an item writer has no
|
||||||
|
knowledge of the input it will receive next, only the item that that
|
||||||
<para>While item readers and writers serve as the main entry points
|
was passed in its current invocation. As a result, item writers will
|
||||||
for item-oriented processing, they might be supplemented by a number of support
|
generally make no assumptions about the input they receive an treat
|
||||||
classes that perform specific tasks within the reader / writer
|
every item the same way and keep track of its own state between
|
||||||
lifecycle. These support stereotypes are useful for dividing the work of
|
invocations. When coupled with an item provider, this forms a complete
|
||||||
item readers and writers into reusable pieces, as well as abstracting
|
item-oriented process, as each item taken from the provider is then
|
||||||
away the details of processing, such as interaction with external systems.
|
processed by the processor.</para>
|
||||||
Additionally, they give us another opportunity to leverage the powerful
|
</section>
|
||||||
configuration features of the Spring framework, as we can switch between
|
|
||||||
several beans implementing these support interfaces without changing the
|
|
||||||
driving item reader or writer.</para>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<title id="s.2.4.2">Item Transformers</title>
|
|
||||||
|
|
||||||
<para>An item transformer is a class that is capable of taking an object
|
|
||||||
and changing it somehow before processing occurs. For instance, an item
|
|
||||||
transformer my alter an object by changing its properties or by
|
|
||||||
replacing it with another object entirely, such as a wrapper or
|
|
||||||
derivative object. It can also be defined as an adaptor, allowing an
|
|
||||||
object of one type to be converted for use as an object of a second
|
|
||||||
type.</para>
|
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -640,4 +538,4 @@
|
|||||||
application termination and wrap-up -- provided there are no additional
|
application termination and wrap-up -- provided there are no additional
|
||||||
Steps to execute.</para>
|
Steps to execute.</para>
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
16
docs/src/site/docbook/reference/glossary-test.xml
Normal file
16
docs/src/site/docbook/reference/glossary-test.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||||
|
<glossary>
|
||||||
|
<glossdiv>
|
||||||
|
<title></title>
|
||||||
|
|
||||||
|
<glossentry>
|
||||||
|
<glossterm></glossterm>
|
||||||
|
|
||||||
|
<glossdef>
|
||||||
|
<para></para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
</glossdiv>
|
||||||
|
</glossary>
|
||||||
@@ -30,8 +30,8 @@
|
|||||||
</legalnotice>
|
</legalnotice>
|
||||||
</bookinfo>
|
</bookinfo>
|
||||||
<xi:include href="spring-batch-intro.xml"/>
|
<xi:include href="spring-batch-intro.xml"/>
|
||||||
<xi:include href="infrastructure.xml"/>
|
|
||||||
<xi:include href="core.xml"/>
|
<xi:include href="core.xml"/>
|
||||||
|
<xi:include href="infrastructure.xml"/>
|
||||||
<xi:include href="execution.xml"/>
|
<xi:include href="execution.xml"/>
|
||||||
<xi:include href="application.xml"/>
|
<xi:include href="application.xml"/>
|
||||||
<xi:include href="samples.xml"/>
|
<xi:include href="samples.xml"/>
|
||||||
|
|||||||
@@ -27,7 +27,11 @@
|
|||||||
productivity, POJO-based development approach, and general ease of use
|
productivity, POJO-based development approach, and general ease of use
|
||||||
capabilities people have come to know from the Spring Framework, while
|
capabilities people have come to know from the Spring Framework, while
|
||||||
making it easy for developers to access and leverage more advance
|
making it easy for developers to access and leverage more advance
|
||||||
enterprise services when necessary.</para>
|
enterprise services when necessary. Spring Batch is not a scheduling
|
||||||
|
framework. There are many good enterprise schedulers available in both the
|
||||||
|
commerical and open source spaces such as Quartz, Tivoli, Control-M, etc.
|
||||||
|
It is intended to work in conjunction with a scheduler, not replace a
|
||||||
|
scheduler.</para>
|
||||||
|
|
||||||
<para>Spring Batch provides reusable functions that are essential in
|
<para>Spring Batch provides reusable functions that are essential in
|
||||||
processing large volumes of records, including logging/tracing,
|
processing large volumes of records, including logging/tracing,
|
||||||
@@ -38,10 +42,6 @@
|
|||||||
complex, high-volume batch jobs can leverage the framework in a highly
|
complex, high-volume batch jobs can leverage the framework in a highly
|
||||||
scalable manner to process significant volumes of information.</para>
|
scalable manner to process significant volumes of information.</para>
|
||||||
|
|
||||||
<para>Spring Batch is part of the <ulink
|
|
||||||
url="http://www.springframework.org/sub-projects">Spring
|
|
||||||
Portfolio</ulink>.</para>
|
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.1.1">Spring Batch Architecture</title>
|
<title id="s.1.1">Spring Batch Architecture</title>
|
||||||
|
|
||||||
@@ -116,42 +116,6 @@
|
|||||||
</mediaobject></para>
|
</mediaobject></para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
|
||||||
<title id="s.1.3">Roadmap</title>
|
|
||||||
|
|
||||||
<para>Once the framework is released it can be used immediately to
|
|
||||||
simplify batch optimisations and automatic retries. The framework is
|
|
||||||
oriented around application developers not needing to know any details
|
|
||||||
of the framework - there are a few application developer interfaces that
|
|
||||||
can be used for convenient construction of data processing pipelines,
|
|
||||||
but apart from that we support as close to a POJO programming model as
|
|
||||||
is practical. This is similar to the approach taken in Spring Core in
|
|
||||||
the area of DAO implementation.</para>
|
|
||||||
|
|
||||||
<para>A Partitioned Batch Execution Environment is also being developed
|
|
||||||
that will provide an alternate scaling solution. This execution
|
|
||||||
environment will provide more advance technical services and features to
|
|
||||||
enable extremely high-volume and high performance batch jobs though
|
|
||||||
proven optimization and partitioning techniques. Proven scaling
|
|
||||||
techniques will be provided as partitioned strategies allowing users to
|
|
||||||
spread the load across a pool of clustered J2EE application servers.
|
|
||||||
There are also discussions to leverage grid technologies as an alternate
|
|
||||||
scaling solution.</para>
|
|
||||||
|
|
||||||
<para>Matt Welsh's work shows that <ulink
|
|
||||||
url="http://www.eecs.harvard.edu/~mdw/proj/seda/">SEDA</ulink> has
|
|
||||||
enormous benefits over more rigid processing architectures, and
|
|
||||||
messaging environments provde a lot of resilience out of the box. So we
|
|
||||||
also want to provide a more SEDA flavoured execution environment, as
|
|
||||||
well as supporting the more traditional ETL style approach. There might
|
|
||||||
be a tie in with Mule and/or other ESB tools here, giving the benefit of
|
|
||||||
a very scalable architecture, where the choice of transport and
|
|
||||||
distribution strategy can be made as late as possible. The same
|
|
||||||
application code could be used in principle for a standalone tool
|
|
||||||
processing a small amount of data, and a massive enterprise-scale
|
|
||||||
bulk-processing engine.</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title id="s.1.4">Background</title>
|
<title id="s.1.4">Background</title>
|
||||||
|
|
||||||
@@ -165,9 +129,9 @@
|
|||||||
in-house solutions developed within client enterprise IT
|
in-house solutions developed within client enterprise IT
|
||||||
functions.</para>
|
functions.</para>
|
||||||
|
|
||||||
<para>Interface21 and Accenture are collaborating to change this.
|
<para>SpringSource and Accenture have collaborated to change this.
|
||||||
Accenture's hands-on industry and technical experience in implementing
|
Accenture's hands-on industry and technical experience in implementing
|
||||||
batch architectures, Interface21's depth of technical experience, and
|
batch architectures, SpringSource's depth of technical experience, and
|
||||||
Spring's proven programming model together mark a natural and powerful
|
Spring's proven programming model together mark a natural and powerful
|
||||||
partnership to create high-quality, market relevant software aimed at
|
partnership to create high-quality, market relevant software aimed at
|
||||||
filling an important gap in enterprise Java. Both companies are also
|
filling an important gap in enterprise Java. Both companies are also
|
||||||
@@ -175,18 +139,18 @@
|
|||||||
developing Spring-based batch architecture solutions. This has provided
|
developing Spring-based batch architecture solutions. This has provided
|
||||||
some useful additional detail and real-life constraints helping to
|
some useful additional detail and real-life constraints helping to
|
||||||
ensure the solution can be applied to the real-world problems posed by
|
ensure the solution can be applied to the real-world problems posed by
|
||||||
clients. For these reasons and many more, Interface21 and Accenture have
|
clients. For these reasons and many more, SpringSource and Accenture
|
||||||
teamed to collaborate on the development of Spring Batch.</para>
|
have teamed to collaborate on the development of Spring Batch.</para>
|
||||||
|
|
||||||
<para>Accenture is contributing previously proprietary batch processing
|
<para>Accenture has contributed previously proprietary batch processing
|
||||||
architecture frameworks -- based upon decades worth of experience in
|
architecture frameworks -- based upon decades worth of experience in
|
||||||
building batch architectures with the last several generations of
|
building batch architectures with the last several generations of
|
||||||
platforms (i.e., COBOL/Mainframe, C++/Unix, and now Java/anywhere) -- to
|
platforms (i.e., COBOL/Mainframe, C++/Unix, and now Java/anywhere) -- to
|
||||||
the Spring Batch project along with committer resources to drive
|
the Spring Batch project along with committer resources to drive
|
||||||
support, enhancements, and the future roadmap.</para>
|
support, enhancements, and the future roadmap.</para>
|
||||||
|
|
||||||
<para>The collaborative effort between Accenture and Interface21 aims to
|
<para>The collaborative effort between Accenture and SpringSource aims
|
||||||
promote the standardization of software processing approaches,
|
to promote the standardization of software processing approaches,
|
||||||
frameworks, and tools that can be consistently leveraged by enterprise
|
frameworks, and tools that can be consistently leveraged by enterprise
|
||||||
users when creating batch applications. Companies and government
|
users when creating batch applications. Companies and government
|
||||||
agencies desiring to deliver standard, proven solutions to their
|
agencies desiring to deliver standard, proven solutions to their
|
||||||
|
|||||||
Reference in New Issue
Block a user