diff --git a/docs/models/Figures.ppt b/docs/models/Figures.ppt
index 983683c5a..bcb2bd613 100644
Binary files a/docs/models/Figures.ppt and b/docs/models/Figures.ppt differ
diff --git a/docs/pom.xml b/docs/pom.xml
index 28e12ed85..bb2eb4c1f 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -19,6 +19,9 @@
agilejava
http://agilejava.com/maven
+
+ false
+
@@ -35,17 +38,19 @@
generate-html
- false
${basedir}/src/docbkx/resources/xsl/html.xsl
-
+
-
+
+
+
+
@@ -60,23 +65,34 @@
pre-site
- multi-page
+ single-pdf
generate-pdf
+
+
+ src/site/docbook/reference/
+ src/docbkx/resources/images/
+
+
+
+
+ pre-site
+
+
+ multi-page
+
generate-html
true
- ${basedir}/src/site/docbook/reference/
${basedir}/src/docbkx/resources/xsl/html_chunk.xsl
-
-
+
-
+
@@ -105,7 +121,7 @@
runtime
-
+
org.apache.xmlgraphics
fop
0.93
@@ -113,10 +129,12 @@
index.xml
+ false
+
css/html.css
+ ${basedir}/src/site/docbook/reference
${basedir}/src/docbkx/resources/xsl/fopdf.xsl
true
- ${basedir}/src/site/docbook/reference
version
diff --git a/docs/src/docbkx/resources/images/important.png b/docs/src/docbkx/resources/images/important.png
new file mode 100644
index 000000000..ad57f6f72
Binary files /dev/null and b/docs/src/docbkx/resources/images/important.png differ
diff --git a/docs/src/docbkx/resources/images/note.png b/docs/src/docbkx/resources/images/note.png
new file mode 100644
index 000000000..ad57f6f72
Binary files /dev/null and b/docs/src/docbkx/resources/images/note.png differ
diff --git a/docs/src/docbkx/resources/images/tip.png b/docs/src/docbkx/resources/images/tip.png
new file mode 100644
index 000000000..ad57f6f72
Binary files /dev/null and b/docs/src/docbkx/resources/images/tip.png differ
diff --git a/docs/src/models/domain-chunck-view-classdiagram.gif b/docs/src/models/domain-chunck-view-classdiagram.gif
deleted file mode 100644
index 9417acfd8..000000000
Binary files a/docs/src/models/domain-chunck-view-classdiagram.gif and /dev/null differ
diff --git a/docs/src/models/domain-classdiagram.dnx b/docs/src/models/domain-classdiagram.dnx
deleted file mode 100644
index 8a3a3af86..000000000
--- a/docs/src/models/domain-classdiagram.dnx
+++ /dev/null
@@ -1,847 +0,0 @@
-
-
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/models/flat-file-input-source-design.dnx b/docs/src/models/flat-file-input-source-design.dnx
deleted file mode 100644
index b18b0180a..000000000
--- a/docs/src/models/flat-file-input-source-design.dnx
+++ /dev/null
@@ -1,551 +0,0 @@
-
-
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/models/io-design.dnx b/docs/src/models/io-design.dnx
deleted file mode 100644
index f5294f773..000000000
--- a/docs/src/models/io-design.dnx
+++ /dev/null
@@ -1,1392 +0,0 @@
-
-
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/models/item-reader-design.dnx b/docs/src/models/item-reader-design.dnx
deleted file mode 100644
index 0a981fb08..000000000
--- a/docs/src/models/item-reader-design.dnx
+++ /dev/null
@@ -1,983 +0,0 @@
-
-
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/models/item-stream-adapter.dnx b/docs/src/models/item-stream-adapter.dnx
deleted file mode 100644
index 62cb870ec..000000000
--- a/docs/src/models/item-stream-adapter.dnx
+++ /dev/null
@@ -1,353 +0,0 @@
-
-
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/models/repository-classdiagram.dnx b/docs/src/models/repository-classdiagram.dnx
deleted file mode 100644
index 4677d6176..000000000
--- a/docs/src/models/repository-classdiagram.dnx
+++ /dev/null
@@ -1,482 +0,0 @@
-
-
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/site/docbook/reference/arch-overview.xml b/docs/src/site/docbook/reference/arch-overview.xml
index b928a11c6..954f9adf5 100644
--- a/docs/src/site/docbook/reference/arch-overview.xml
+++ b/docs/src/site/docbook/reference/arch-overview.xml
@@ -1,546 +1,546 @@
-
-
-
- Container Architecture Overview
-
-
-
- Simple Container Architecture Overview
-
-
-
- Introduction
-
- This chapter covers the overall spring batch architecture.
- The Spring Container Archtiecture is made up of five logical
- layers; 1) the Batch Application, 2) the Batch Application Layer,
- 3) the batch core layer, and 4) the batch infrastucture
- layer.
-
-
-
-
-
-
-
-
-
-
- Provided
- ByLayerDescription
-
- Application
- DeveloperBatch
- ApplicationThis is where the
- application developer writes their batch jobs and
- tasklets.
-
- Spring Batch Execution
- ContainerContainer Application
- LayerAllows for extending and
- overwriting of the batch support layer for custom
- requirements. Facilities implemented in this layer could
- migrate down to Batch Support Layer. This is also the layer
- to add the project specific jars required by job types
- (e.g. reporting jars like Crystal, Brio, etc, form
- generation jars like Central Pro or Adobe,
- etc).
-
- Spring Batch Execution
- ContainerContainer Support
- LayerProvides default
- implementations of batch core services including I/O,
- Restart, Partitioning, Statistics, and
- configurations
-
- Spring Batch Execution
- ContainerContainer Core
- LayerEnables configuration,
- Common Services & Interfaces,
- management
-
- Spring Batch
- InfrastructureBatch-InfrastructureProvides
- IO support, Batch style transactions, advanced exception
- handling, batch-template, batch-retry
-
-
-
-
-
-
-
-
-
-
-
- Figure 2.0
-
-
-
- - Batch Architecture Layers
-
- The batch architecture is modeled after a container
- architecture, meaning that there are managed resources
- essential to high performance batch architectures that are
- configured through a spring context. The following sect1s
- will provide a quick review of each layer and their role in
- the batch architecture.
-
-
-
-
-
-
-
-
-
-
-
- Batch Applications
-
-
-
-
-
-
- Container Application Layer
-
-
-
-
-
-
- Container Support Layer
-
- The batch support layer provides default implementations
- for all interfaces, interceptors, advice and other core batch
- services. Figure 2.3.1 illustrates the following logical
- packages. !Batch Support.png! Although physically they break out
- into many more than depicted, logically you can think of the
- groupings in the following manner: * I/O Support packages *
- Restart Support * Lifecycle Support packages * DAO support
- layer
-
-
-
-
-
- I/O Support Packages
-
- The I/O related packages are currently the richest
- packages in the batch architecture. They are modeled after
- Spring Patterns of Operations and Templates. For example,
- you'll see FlatFileInputOperations accompanied with a
- FlatFileInputTemplate. The FlatFileInputTemplate is wired up
- with a File Descriptor, which contains a Record Descriptor
- along with various other properties. With the File and Record
- Descriptors the InputTemplate supports a callback method that
- allows for the mapping of a record into an object. This
- support applies to fixed length records, delimited records
- and XML records. To further simplify this a
- DefaultFlatFileDataProvider is supplied an input template,
- which contains the field and record descriptions, along with
- a line mapper that knows how to map the line to an object.
- The next() operation on a record simply needs to
- readAndMap(lineMapper) a record. This pattern is used over
- again for XML and SQL input for simple mapping of input
- records to objects.
-
- In addition to declarative descriptions of the records
- that can be re-used by multiple batch jobs, the I/O
- facilities also support configurable validation strategies.
- The two currently supported are Apache Commons Validator and
- Spring's VALang.
-
-
-
-
-
- Restart Support
-
- The Restart Support provides implementations for a few
- common restart strategies that will be discussed further in
- the respective sect1. The following are provided
- out-of-the-box: * IDList Restart Strategy - a strategy that
- supports a batch application where the application does not
- have a "process" flag and needs the batch
- architecture to track which records have been processed. This
- is not the ideal scenario. * Last Processed Restart Strategy
- - when the record can be identified through a where and order
- by only the last record(s) processed needs to be saved for
- restart. * No Restart Strategy - some batch jobs simply
- can't support restart. When they are re-run they are
- considered to be a new instance of a batch job. * Sql Restart
- Strategy - [need some additional javadoc for this
- strategy].
-
-
-
-
-
- Lifecycle Support
-
-
-
-
-
-
-
-
-
- The Core Layer
-
- The Batch Core interfaces and services are illustrated in
- a simplified view of a package diagram. There are roughly seven
- logical packages: * Core Spring Extensions * Core Batch Advice *
- Core Batch Configuration * Core Batch Repository * Core Batch
- Tasklet \ !Batch Core.png! [Figure 2.5] Batch Core Layer
-
- In the actual physical packaging there are a few more
- logical services that the batch execution environment provides. The following
- sections will provide an introduction into each set of core batch
- facilities.
-
-
-
-
-
- Core Spring Extensions
-
- The Core Spring extensions provide the scaffolding for
- a batch execution environment. This includes facilities for managing the
- batch architecture in terms of launching, suspending and
- stopping batch jobs. There is house keeping that goes on,
- especially in concurrent batch jobs, related to ensuring that
- batch jobs quiese properly. The lifecycle management provides
- services for the proper initialization and subsequent
- shutdown of batch resources and services. The batch
- architecture is flexible in terms of how batch jobs may be
- launched. For example, batch jobs can be started via JMX
- facilities, scripts from the command line that launch a Java
- VM. It can also support launching batch jobs through web
- services or http. There are no restrictions. Finally, there
- are standard batch error codes. These error codes can be
- exposed to external utilities, like Schedulers, to ensure
- that batch jobs expose the status of jobs to an operational
- environment. This is especially important in the batch
- context where the modus operandi is headless, meaning
- unattended operation.
-
-
-
-
-
- Core Batch Advice
-
- Core Batch Advice is an inventory of the type of advice
- that batch architectures will inject during the runtime of a
- batch application. These are defined as a set of extensible
- interfaces, with a number of default implementations in the
- support layer that provide some of the most common types of
- advice. Partition Advice is helpful with large datasets that
- need to be "chunked" up and run concurrently for
- better through put. Resource Advice is helpful for
- registering interest in transactional information so that
- file locations can be kept in sync with information processed
- within a transaction. In addition, the resource is associated
- with the correct step context and its associated
- configuration properties. Skip advice is applied for records
- that the tasklet is unable to process. Restart Advice is
- helpful for Restartable jobs where for advising the job on
- how to restart. There is considerable variability on how
- restart can occur. For example, a job may be marking records
- as "processed" and the restart advice will advise
- the process with query that restarts the job at the last
- successfully processed record. Finally, Statistics are vital
- in operational environments to report on records processed,
- records skipped and total number of records read. In
- addition, certain batch jobs lend themselves to custom
- reporting to expose additional business level information
- like the number of trades processed or cases opened,
- etc.
-
-
-
-
-
- Core Batch Configuration
-
- Batch configuration is considerably different from
- online web applications or SOA based applications. The Core
- Batch Configuration provides a place for configuring runtime
- properties related to the batch application style. This
- includes the ability to add Commit Policy. In a batch style
- application it is often advantageous to keep the commit
- interval as high as possible when processing Logical Units of
- Work. Whereas in an online web application with declarative
- transaction the transaction scope would be at the entrance to
- a business service, a batch transaction scope may include
- many logical units of work before a transaction commit is
- executed. A Start Policy allows a configuration to tell the
- batch job whether it is Restartable, and if so, what type of
- restart to initiate. Some jobs are not restartable and care
- should be taken to ensure that information is not applied
- multiple times when the business rules do not allow for it.
- Exception policies deal with what to do when exceptions
- occur. This impacts logging policies and exception handling.
- The architecture defines a common set of exceptions that
- projects can apply handlers to like processing errors,
- validation errors, parsing errors, missing configuration
- parameters, etc.
-
-
-
-
-
- 2.5.4 Container Repository
-
- This is an internal package for storing the state of a
- batch job and any associated partition and step status.
-
-
-
-
-
- Core Batch Tasklet
-
- The core batch tasklet is where control is handed off to
- the application. There are a number of patterns that have
- been observed in processing batch data. Spring Core Batch
- Tasklet implements the most common patterns and provides and
- extension point for additional Tasklet processing
- implementations. The basic idea of tasklet provides the
- facilities for reading and processing data. The simplest
- implementation of Tasklet, the ReadProcessTasklet, handles both
- the input and output of data within one class. An alternative
- implementation, the DataProviderProcessTasklet, provides
- functionality for 'split processing'. This type of
- processing is characterized by separating the reading and
- processing of batch data into two seperate classes:
- DataProvider and TaskletProcessor. The DataProvider class
- provides a solid means for reusablility and enforces good
- architecture practices. Because an object *must* be returned
- by the DataProider to continue processing, (Returning null
- indicates processing should end) a developer is forced to
- read in all relevant data, place it into domain or value
- objects, and return the object. The TaskletProcessor will then
- use this object within the business logic and final
- output.
-
-
-
-
-
-
-
-
-
- Container's Use of batch
- infrastructure
-
-
-
-
-
- Infrastructure Provided I/O
-
- The I/O core interfaces and implementations provide
- facilities for simplifying the extraction of data from I/O
- sources like files and database tables. The key concepts are
- FieldDescriptors and FieldSets along with appropriate CallBack
- Handlers. These are modeled after common spring operations and
- templates like JdbcTemplate. Through the use of LineMappers a
- developer needs only to describe a record format and write the
- appropriate callback method that maps the parsed record into an
- object of their choice. These can either be true POJO objects
- or Value Objects (structures) that are subsequently available
- for the tasklet to processs. The interface for Field Descriptors
- also allows for a level of validation through the use of
- Spring's VALang or Apache's Common Validator.
-
-
-
-
-
- Core Batch Interceptors & Interceptor
- Services
-
-
-
-
-
- Batch Operations & Batch Template
-
- Interceptors and the associated services are the key
- to how advise is applied in the batch architecture. The
- interceptors are Point Cuts in the batch lifecycle that
- allow the injection of advise. The shared lifecycle
- behavior abstracted through the BatchLifeCycleInterceptor
- defineds three methods; init, onError and finalize. All
- subclasses of LifeCycleInterceptor define default behavior
- for these three methods. The JobLifecycleInterceptor
- further exposes the methods beforeJob(), beforeStep(),
- afterJob(), and afterStep() allowing hooks into the
- lifecycle for specific advise. The Batch Architecture
- provides default implementations for all lifecycle point
- cuts, or interception points. The Tasklet Interceptor, in
- addition to the standard lifecycle methods, implements
- logic around beforeLuw(), afterLuw(),
- commitIntervalStarted() and commitIntervalCompleted().
- Having well defined lifecycle interception points allows
- for the easy insertion of custom advice into the batch
- runtime environment.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Batch Execution Container Configurations
-
- In addition to core facilities for configuring or wiring
- together jobs and steps with required resources, policies, and
- interceptors, spring batch allows considerable flexibility in how
- scalability is achieved. More options for scalability will be
- available in the future. The important key for scalability in Java
- is the recognition that there is a limit to what one JVM may scale
- up to in terms of number of threads, managed resources, memory
- configuration, etc. The spring batch architecture allows for the
- configuration of simple batch jobs where one VM and one process is
- sufficient to do perform the work within a batch window all the way
- through many threads distributed within a cluster of JEE servers.
- The figure below illistrates the scalability spectrum.
-
- This is not to be understood as the only way to scale batch
- jobs as there are many factors. For example, other federated java
- architectures hold potential like Teracotta or Gigaspaces although
- there is no current implementation for these distributed models in
- the current batch architecture. !scalability-model.png! [Figure
- 2.3.1] - Scalability Model
-
-
-
- Single VM Simple Batch Execution
- Container - One Job, One Step, One Partition
-
- The simplest configuration is one job with with step and
- hence, one implied partition. Implied means that there is nothing
- for the developer to consider because the default number of
- partitions is one. There is typically one input source and one
- output source in this simple configuration. See the Simple Tasklet
- Job for an example of what this configuration looks like. A
- simple configuration still typically configures a datasource
- context, the batch configuration for describing the Job, Step,
- along with the associated configured policies, field descriptors,
- and line mappers. !SimpleTradeConfiguration.jpg! [Figure 2.3.1]
- Simple Container Configuration
-
- The details of this configuration will be covered
- thoroughly in subsequent sect1s of the document but for now it
- should be understood that Job, the Step, the input template, the
- file descriptor with its associated line mapper, and the output
- (e.g. the TradeWriter).
-
-
-
-
-
- Single VM Multi-threaded Batch Execution
- Container Configuration - One Job, One Step, Multiple
- Partitions
-
- In a Single JVM using partitioning a multi-threaded
- execution is supported. [This is still work in progress]
-
-
-
-
-
- Batch Execution Container Hosted in J2EE
- Container - managed environment
-
- The J2EE container model has fallen under fire over the
- past few years for many valid reasons. There are some things that
- the J2EE container do very well though that projects should
- consider when planning for scalability with batch architectures.
- Commercial and open source containers like WebSphere, BEA and
- JBOSS typically:
-
-
-
-
-
- manage datasources effectively along with attendent
- services like prepared statement caching.
-
-
-
-
-
- manage transactions effectively including many
- configurable properties for long lived transactions.
-
-
-
-
-
- manage thread pools more effectively.
-
-
-
-
-
- supply robust implementations of JTA, a requirement
- when batch jobs output to multiple XA resources like JMS and
- JDBC.
-
-
-
-
-
- manage distribution effectively including domains,
- clusters and cells
-
-
-
-
-
- provide robust JMX management for configuring, managing
- and administering distributed applications.
-
-
-
-
-
- workload management facilities (clusters) provided by
- J2EE vendors
-
-
-
-
-
- Projects are encouraged to deploy batch applications with
- the simplest configuration possible, but when federated JVMs are
- a requirement to process volumes of data within a batch window,
- batch-in-container provides an effective way of distributing the
- processing. Spring Batch supports this through a simple change in
- configuration. [Work in progress on the exact implementation -
- being released as part of M2].
-
-
-
-
-
-
+
+
+
+ Container Architecture Overview
+
+
+
+ Simple Container Architecture Overview
+
+
+
+ Introduction
+
+ This chapter covers the overall spring batch architecture.
+ The Spring Container Archtiecture is made up of five logical
+ layers; 1) the Batch Application, 2) the Batch Application Layer,
+ 3) the batch core layer, and 4) the batch infrastucture
+ layer.
+
+
+
+
+
+
+
+
+
+
+ Provided
+ ByLayerDescription
+
+ Application
+ DeveloperBatch
+ ApplicationThis is where the
+ application developer writes their batch jobs and
+ tasklets.
+
+ Spring Batch Execution
+ ContainerContainer Application
+ LayerAllows for extending and
+ overwriting of the batch support layer for custom
+ requirements. Facilities implemented in this layer could
+ migrate down to Batch Support Layer. This is also the layer
+ to add the project specific jars required by job types
+ (e.g. reporting jars like Crystal, Brio, etc, form
+ generation jars like Central Pro or Adobe,
+ etc).
+
+ Spring Batch Execution
+ ContainerContainer Support
+ LayerProvides default
+ implementations of batch core services including I/O,
+ Restart, Partitioning, Statistics, and
+ configurations
+
+ Spring Batch Execution
+ ContainerContainer Core
+ LayerEnables configuration,
+ Common Services & Interfaces,
+ management
+
+ Spring Batch
+ InfrastructureBatch-InfrastructureProvides
+ IO support, Batch style transactions, advanced exception
+ handling, batch-template, batch-retry
+
+
+
+
+
+
+
+
+
+
+
+ Figure 2.0
+
+
+
+ - Batch Architecture Layers
+
+ The batch architecture is modeled after a container
+ architecture, meaning that there are managed resources
+ essential to high performance batch architectures that are
+ configured through a spring context. The following sect1s
+ will provide a quick review of each layer and their role in
+ the batch architecture.
+
+
+
+
+
+
+
+
+
+
+
+ Batch Applications
+
+
+
+
+
+
+ Container Application Layer
+
+
+
+
+
+
+ Container Support Layer
+
+ The batch support layer provides default implementations
+ for all interfaces, interceptors, advice and other core batch
+ services. Figure 2.3.1 illustrates the following logical
+ packages. !Batch Support.png! Although physically they break out
+ into many more than depicted, logically you can think of the
+ groupings in the following manner: * I/O Support packages *
+ Restart Support * Lifecycle Support packages * DAO support
+ layer
+
+
+
+
+
+ I/O Support Packages
+
+ The I/O related packages are currently the richest
+ packages in the batch architecture. They are modeled after
+ Spring Patterns of Operations and Templates. For example,
+ you'll see FlatFileInputOperations accompanied with a
+ FlatFileInputTemplate. The FlatFileInputTemplate is wired up
+ with a File Descriptor, which contains a Record Descriptor
+ along with various other properties. With the File and Record
+ Descriptors the InputTemplate supports a callback method that
+ allows for the mapping of a record into an object. This
+ support applies to fixed length records, delimited records
+ and XML records. To further simplify this a
+ DefaultFlatFileDataProvider is supplied an input template,
+ which contains the field and record descriptions, along with
+ a line mapper that knows how to map the line to an object.
+ The next() operation on a record simply needs to
+ readAndMap(lineMapper) a record. This pattern is used over
+ again for XML and SQL input for simple mapping of input
+ records to objects.
+
+ In addition to declarative descriptions of the records
+ that can be re-used by multiple batch jobs, the I/O
+ facilities also support configurable validation strategies.
+ The two currently supported are Apache Commons Validator and
+ Spring's VALang.
+
+
+
+
+
+ Restart Support
+
+ The Restart Support provides implementations for a few
+ common restart strategies that will be discussed further in
+ the respective sect1. The following are provided
+ out-of-the-box: * IDList Restart Strategy - a strategy that
+ supports a batch application where the application does not
+ have a "process" flag and needs the batch
+ architecture to track which records have been processed. This
+ is not the ideal scenario. * Last Processed Restart Strategy
+ - when the record can be identified through a where and order
+ by only the last record(s) processed needs to be saved for
+ restart. * No Restart Strategy - some batch jobs simply
+ can't support restart. When they are re-run they are
+ considered to be a new instance of a batch job. * Sql Restart
+ Strategy - [need some additional javadoc for this
+ strategy].
+
+
+
+
+
+ Lifecycle Support
+
+
+
+
+
+
+
+
+
+ The Core Layer
+
+ The Batch Core interfaces and services are illustrated in
+ a simplified view of a package diagram. There are roughly seven
+ logical packages: * Core Spring Extensions * Core Batch Advice *
+ Core Batch Configuration * Core Batch Repository * Core Batch
+ Tasklet \ !Batch Core.png! [Figure 2.5] Batch Core Layer
+
+ In the actual physical packaging there are a few more
+ logical services that the batch execution environment provides. The following
+ sections will provide an introduction into each set of core batch
+ facilities.
+
+
+
+
+
+ Core Spring Extensions
+
+ The Core Spring extensions provide the scaffolding for
+ a batch execution environment. This includes facilities for managing the
+ batch architecture in terms of launching, suspending and
+ stopping batch jobs. There is house keeping that goes on,
+ especially in concurrent batch jobs, related to ensuring that
+ batch jobs quiese properly. The lifecycle management provides
+ services for the proper initialization and subsequent
+ shutdown of batch resources and services. The batch
+ architecture is flexible in terms of how batch jobs may be
+ launched. For example, batch jobs can be started via JMX
+ facilities, scripts from the command line that launch a Java
+ VM. It can also support launching batch jobs through web
+ services or http. There are no restrictions. Finally, there
+ are standard batch error codes. These error codes can be
+ exposed to external utilities, like Schedulers, to ensure
+ that batch jobs expose the status of jobs to an operational
+ environment. This is especially important in the batch
+ context where the modus operandi is headless, meaning
+ unattended operation.
+
+
+
+
+
+ Core Batch Advice
+
+ Core Batch Advice is an inventory of the type of advice
+ that batch architectures will inject during the runtime of a
+ batch application. These are defined as a set of extensible
+ interfaces, with a number of default implementations in the
+ support layer that provide some of the most common types of
+ advice. Partition Advice is helpful with large datasets that
+ need to be "chunked" up and run concurrently for
+ better through put. Resource Advice is helpful for
+ registering interest in transactional information so that
+ file locations can be kept in sync with information processed
+ within a transaction. In addition, the resource is associated
+ with the correct step context and its associated
+ configuration properties. Skip advice is applied for records
+ that the tasklet is unable to process. Restart Advice is
+ helpful for Restartable jobs where for advising the job on
+ how to restart. There is considerable variability on how
+ restart can occur. For example, a job may be marking records
+ as "processed" and the restart advice will advise
+ the process with query that restarts the job at the last
+ successfully processed record. Finally, Statistics are vital
+ in operational environments to report on records processed,
+ records skipped and total number of records read. In
+ addition, certain batch jobs lend themselves to custom
+ reporting to expose additional business level information
+ like the number of trades processed or cases opened,
+ etc.
+
+
+
+
+
+ Core Batch Configuration
+
+ Batch configuration is considerably different from
+ online web applications or SOA based applications. The Core
+ Batch Configuration provides a place for configuring runtime
+ properties related to the batch application style. This
+ includes the ability to add Commit Policy. In a batch style
+ application it is often advantageous to keep the commit
+ interval as high as possible when processing Logical Units of
+ Work. Whereas in an online web application with declarative
+ transaction the transaction scope would be at the entrance to
+ a business service, a batch transaction scope may include
+ many logical units of work before a transaction commit is
+ executed. A Start Policy allows a configuration to tell the
+ batch job whether it is Restartable, and if so, what type of
+ restart to initiate. Some jobs are not restartable and care
+ should be taken to ensure that information is not applied
+ multiple times when the business rules do not allow for it.
+ Exception policies deal with what to do when exceptions
+ occur. This impacts logging policies and exception handling.
+ The architecture defines a common set of exceptions that
+ projects can apply handlers to like processing errors,
+ validation errors, parsing errors, missing configuration
+ parameters, etc.
+
+
+
+
+
+ 2.5.4 Container Repository
+
+ This is an internal package for storing the state of a
+ batch job and any associated partition and step status.
+
+
+
+
+
+ Core Batch Tasklet
+
+ The core batch tasklet is where control is handed off to
+ the application. There are a number of patterns that have
+ been observed in processing batch data. Spring Core Batch
+ Tasklet implements the most common patterns and provides and
+ extension point for additional Tasklet processing
+ implementations. The basic idea of tasklet provides the
+ facilities for reading and processing data. The simplest
+ implementation of Tasklet, the ReadProcessTasklet, handles both
+ the input and output of data within one class. An alternative
+ implementation, the DataProviderProcessTasklet, provides
+ functionality for 'split processing'. This type of
+ processing is characterized by separating the reading and
+ processing of batch data into two seperate classes:
+ DataProvider and TaskletProcessor. The DataProvider class
+ provides a solid means for reusablility and enforces good
+ architecture practices. Because an object *must* be returned
+ by the DataProider to continue processing, (Returning null
+ indicates processing should end) a developer is forced to
+ read in all relevant data, place it into domain or value
+ objects, and return the object. The TaskletProcessor will then
+ use this object within the business logic and final
+ output.
+
+
+
+
+
+
+
+
+
+ Container's Use of batch
+ infrastructure
+
+
+
+
+
+ Infrastructure Provided I/O
+
+ The I/O core interfaces and implementations provide
+ facilities for simplifying the extraction of data from I/O
+ sources like files and database tables. The key concepts are
+ FieldDescriptors and FieldSets along with appropriate CallBack
+ Handlers. These are modeled after common spring operations and
+ templates like JdbcTemplate. Through the use of LineMappers a
+ developer needs only to describe a record format and write the
+ appropriate callback method that maps the parsed record into an
+ object of their choice. These can either be true POJO objects
+ or Value Objects (structures) that are subsequently available
+ for the tasklet to processs. The interface for Field Descriptors
+ also allows for a level of validation through the use of
+ Spring's VALang or Apache's Common Validator.
+
+
+
+
+
+ Core Batch Interceptors & Interceptor
+ Services
+
+
+
+
+
+ Batch Operations & Batch Template
+
+ Interceptors and the associated services are the key
+ to how advise is applied in the batch architecture. The
+ interceptors are Point Cuts in the batch lifecycle that
+ allow the injection of advise. The shared lifecycle
+ behavior abstracted through the BatchLifeCycleInterceptor
+ defineds three methods; init, onError and finalize. All
+ subclasses of LifeCycleInterceptor define default behavior
+ for these three methods. The JobLifecycleInterceptor
+ further exposes the methods beforeJob(), beforeStep(),
+ afterJob(), and afterStep() allowing hooks into the
+ lifecycle for specific advise. The Batch Architecture
+ provides default implementations for all lifecycle point
+ cuts, or interception points. The Tasklet Interceptor, in
+ addition to the standard lifecycle methods, implements
+ logic around beforeLuw(), afterLuw(),
+ commitIntervalStarted() and commitIntervalCompleted().
+ Having well defined lifecycle interception points allows
+ for the easy insertion of custom advice into the batch
+ runtime environment.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Batch Execution Container Configurations
+
+ In addition to core facilities for configuring or wiring
+ together jobs and steps with required resources, policies, and
+ interceptors, spring batch allows considerable flexibility in how
+ scalability is achieved. More options for scalability will be
+ available in the future. The important key for scalability in Java
+ is the recognition that there is a limit to what one JVM may scale
+ up to in terms of number of threads, managed resources, memory
+ configuration, etc. The spring batch architecture allows for the
+ configuration of simple batch jobs where one VM and one process is
+ sufficient to do perform the work within a batch window all the way
+ through many threads distributed within a cluster of JEE servers.
+ The figure below illistrates the scalability spectrum.
+
+ This is not to be understood as the only way to scale batch
+ jobs as there are many factors. For example, other federated java
+ architectures hold potential like Teracotta or Gigaspaces although
+ there is no current implementation for these distributed models in
+ the current batch architecture. !scalability-model.png! [Figure
+ 2.3.1] - Scalability Model
+
+
+
+ Single VM Simple Batch Execution
+ Container - One Job, One Step, One Partition
+
+ The simplest configuration is one job with with step and
+ hence, one implied partition. Implied means that there is nothing
+ for the developer to consider because the default number of
+ partitions is one. There is typically one input source and one
+ output source in this simple configuration. See the Simple Tasklet
+ Job for an example of what this configuration looks like. A
+ simple configuration still typically configures a datasource
+ context, the batch configuration for describing the Job, Step,
+ along with the associated configured policies, field descriptors,
+ and line mappers. !SimpleTradeConfiguration.jpg! [Figure 2.3.1]
+ Simple Container Configuration
+
+ The details of this configuration will be covered
+ thoroughly in subsequent sect1s of the document but for now it
+ should be understood that Job, the Step, the input template, the
+ file descriptor with its associated line mapper, and the output
+ (e.g. the TradeWriter).
+
+
+
+
+
+ Single VM Multi-threaded Batch Execution
+ Container Configuration - One Job, One Step, Multiple
+ Partitions
+
+ In a Single JVM using partitioning a multi-threaded
+ execution is supported. [This is still work in progress]
+
+
+
+
+
+ Batch Execution Container Hosted in J2EE
+ Container - managed environment
+
+ The J2EE container model has fallen under fire over the
+ past few years for many valid reasons. There are some things that
+ the J2EE container do very well though that projects should
+ consider when planning for scalability with batch architectures.
+ Commercial and open source containers like WebSphere, BEA and
+ JBOSS typically:
+
+
+
+
+
+ manage datasources effectively along with attendent
+ services like prepared statement caching.
+
+
+
+
+
+ manage transactions effectively including many
+ configurable properties for long lived transactions.
+
+
+
+
+
+ manage thread pools more effectively.
+
+
+
+
+
+ supply robust implementations of JTA, a requirement
+ when batch jobs output to multiple XA resources like JMS and
+ JDBC.
+
+
+
+
+
+ manage distribution effectively including domains,
+ clusters and cells
+
+
+
+
+
+ provide robust JMX management for configuring, managing
+ and administering distributed applications.
+
+
+
+
+
+ workload management facilities (clusters) provided by
+ J2EE vendors
+
+
+
+
+
+ Projects are encouraged to deploy batch applications with
+ the simplest configuration possible, but when federated JVMs are
+ a requirement to process volumes of data within a batch window,
+ batch-in-container provides an effective way of distributing the
+ processing. Spring Batch supports this through a simple change in
+ configuration. [Work in progress on the exact implementation -
+ being released as part of M2].
+
+
+
+
+
+
diff --git a/docs/src/site/docbook/reference/common-patterns.xml b/docs/src/site/docbook/reference/common-patterns.xml
index f2e61800f..b834dfbc7 100644
--- a/docs/src/site/docbook/reference/common-patterns.xml
+++ b/docs/src/site/docbook/reference/common-patterns.xml
@@ -311,7 +311,7 @@
@@ -331,7 +331,7 @@
diff --git a/docs/src/site/docbook/reference/container-overview.xml b/docs/src/site/docbook/reference/container-overview.xml
index 9076b5ef1..193ba2768 100644
--- a/docs/src/site/docbook/reference/container-overview.xml
+++ b/docs/src/site/docbook/reference/container-overview.xml
@@ -39,7 +39,7 @@
diff --git a/docs/src/site/docbook/reference/domain.xml b/docs/src/site/docbook/reference/domain.xml
index 2a625148e..b57cbd98a 100644
--- a/docs/src/site/docbook/reference/domain.xml
+++ b/docs/src/site/docbook/reference/domain.xml
@@ -46,7 +46,7 @@
@@ -83,7 +83,7 @@
+ fileref="images/job-heirarchy.png" />
@@ -178,7 +178,7 @@
+ fileref="images/job-heirarchy.png" />
@@ -559,7 +559,7 @@
+ fileref="images/jobHeirarchyWithSteps.png" />
diff --git a/docs/src/site/docbook/reference/execution.xml b/docs/src/site/docbook/reference/execution.xml
index bd11d6102..d2fa94978 100644
--- a/docs/src/site/docbook/reference/execution.xml
+++ b/docs/src/site/docbook/reference/execution.xml
@@ -18,7 +18,7 @@
@@ -93,7 +93,7 @@
+ fileref="images/run-tier.png" />
@@ -273,7 +273,7 @@
+ fileref="images/jobTier.png" />
@@ -313,7 +313,7 @@
@@ -336,7 +336,7 @@
@@ -790,7 +790,7 @@
+ fileref="images/application-tier.png" />
diff --git a/docs/src/site/docbook/reference/job.xml b/docs/src/site/docbook/reference/job.xml
index e1fc41fcf..10ff2cf5b 100644
--- a/docs/src/site/docbook/reference/job.xml
+++ b/docs/src/site/docbook/reference/job.xml
@@ -15,7 +15,7 @@
@@ -352,7 +352,7 @@
@@ -374,7 +374,7 @@
@@ -596,7 +596,7 @@
@@ -619,7 +619,7 @@
diff --git a/docs/src/site/docbook/reference/readersAndWriters.xml b/docs/src/site/docbook/reference/readersAndWriters.xml
index f77b298e5..1f8f87aa6 100644
--- a/docs/src/site/docbook/reference/readersAndWriters.xml
+++ b/docs/src/site/docbook/reference/readersAndWriters.xml
@@ -1521,7 +1521,7 @@
@@ -1548,7 +1548,7 @@
@@ -1863,7 +1863,7 @@
@@ -2355,7 +2355,7 @@
+ fileref="images/errorOnFlush.png" />
If items are buffered before being written out, any
errors encountered will not be thrown until the buffer is flushed just
@@ -2381,7 +2381,7 @@
+ fileref="images/errorOnWrite.jpg" />
diff --git a/docs/src/site/docbook/reference/schema-appendix.xml b/docs/src/site/docbook/reference/schema-appendix.xml
index 9dbe2a36c..cc6b0ae1b 100644
--- a/docs/src/site/docbook/reference/schema-appendix.xml
+++ b/docs/src/site/docbook/reference/schema-appendix.xml
@@ -26,14 +26,14 @@
their relationships to one another:
-
+
diff --git a/docs/src/site/docbook/reference/spring-batch-intro.xml b/docs/src/site/docbook/reference/spring-batch-intro.xml
index 3628a8d6c..b67b3f70a 100644
--- a/docs/src/site/docbook/reference/spring-batch-intro.xml
+++ b/docs/src/site/docbook/reference/spring-batch-intro.xml
@@ -173,9 +173,9 @@
architecture that supports the extensibility and ease of use for end-user
developers.
-
+
@@ -201,4 +201,4 @@
ItemWriter) and the core framework itself.
(retry)
-
\ No newline at end of file
+
diff --git a/docs/src/site/docbook/reference/step.xml b/docs/src/site/docbook/reference/step.xml
index 2f297b0f4..3b2e766e6 100644
--- a/docs/src/site/docbook/reference/step.xml
+++ b/docs/src/site/docbook/reference/step.xml
@@ -24,7 +24,7 @@
@@ -50,7 +50,7 @@
@@ -988,7 +988,7 @@
@@ -1046,7 +1046,7 @@
diff --git a/docs/src/site/docbook/reference/whatsnew.xml b/docs/src/site/docbook/reference/whatsnew.xml
index 66d751f6a..82112a0d0 100644
--- a/docs/src/site/docbook/reference/whatsnew.xml
+++ b/docs/src/site/docbook/reference/whatsnew.xml
@@ -89,7 +89,7 @@
@@ -163,7 +163,7 @@
@@ -237,7 +237,7 @@
@@ -254,7 +254,7 @@
@@ -277,7 +277,7 @@
@@ -341,7 +341,7 @@
@@ -367,7 +367,7 @@
@@ -382,7 +382,7 @@