From e3b551ea9b19c32e1bf6c21736724782e5977af5 Mon Sep 17 00:00:00 2001 From: lucasward Date: Wed, 12 Mar 2008 16:16:36 +0000 Subject: [PATCH] Forgot to commit core.xml and accidentally deleted an image. --- docs/models/spring-batch-reference-model.png | Bin 0 -> 32357 bytes docs/src/site/docbook/reference/core.xml | 171 +++++++----------- .../reference/images/spring-batch-layers.png | Bin 0 -> 5595 bytes 3 files changed, 64 insertions(+), 107 deletions(-) create mode 100755 docs/models/spring-batch-reference-model.png create mode 100644 docs/src/site/resources/reference/images/spring-batch-layers.png diff --git a/docs/models/spring-batch-reference-model.png b/docs/models/spring-batch-reference-model.png new file mode 100755 index 0000000000000000000000000000000000000000..ae1ff22ef3671b51a54854ceb24ab59061ed7cea GIT binary patch literal 32357 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 - + commitCount - + The number of times the transaction has been committed + for this execution + + + + itemCount + + The number of items that have been process for this + execution. It should be noted that this value will continue + increasing even if a rollback causes items to be + reprocessed. @@ -669,89 +679,33 @@ A Tasklet represents the execution of a logical unit of work, as defined by its implementation of the Spring - Batch provided Tasklet interface. Tasklets are - used when defining step configurations to specify the work done by the - step. Subsequently, the logic in a tasklet is atomic in terms of - transactions. A transaction will never commit until an entire tasklet - execution is complete (unless an exception occurs - a transaction might - either commit or rollback if that behavior 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. + Batch provided Tasklet interface. A + Tasklet is useful for encapsulating processing + logic that is not natural to split into read-(transform)-write phases, + such as invoking a system command or a stored procedure.
- Item-Oriented Processing Stereotypes + Item Reader - A powerful batch processing paradigm implemented by the Spring Batch - framework is the concept of item-oriented processing. That is, doing work - by defining each unit of work as the operation of retrieving an item from - input and then processing that item, including any side effects that - processing might entail, such as file or database operations. - -
- Reader and Writer Stereotypes - - 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. - -
- Item Readers - - An item reader is an object that is used to retrieve the inputs - 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. -
- -
- Item Writers/Processors - - An item writer is an object that is used to perform processing - 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 - 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. -
-
+ ItemReader is an abstraction that represents + the retrieval of input for a Step, one item at a + time. When the ItemReader has exhausted the items + it can provide, it will indicate this by returning null. More details + about the ItemReader interface and it's various + implementatiosn can be found in Chapter 3.
- Support Stereotypes + Item Writer - 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. - -
- Item Transformers - - 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. -
+ ItemWriter is an abstraction that represents + the output of 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 was passed in its current invocation. More + details about the ItemWriter interface and it's + various implementations can be found in Chatper 3.
@@ -802,55 +756,58 @@ 4.1 The first thing the Step is responsible for is the initialization of the data required to begin - processing. The Step will interact with other architecture components, - such as the Input Source, to setup the data required to be - processed. + processing. The Step will interact with other + architecture components, such as the ItemReader, to + setup the data required to be processed. - 4.1.1 The Input Source provides - services to access various data sources. It provides location transparency - to the Batch Tasklet and hides the physical location details of the + 4.1.1 The + ItemReader provides services to access various data + sources. It provides location transparency to the Batch + Step and hides the physical location details of the data. 4.2 Once the data is initialized by - the Input Source, the Step will call into the Tasklet to begin processing. - The Tasklet contains the business logic to define the LUW and the Step - repeatedly calls the Tasklets LUW to finish the business function. The - Step does this by first invoking the execute method on the Tasklet in - order to acquire a single record/set of data for processing. + the ItemReader, the Step + will begin processing. 4.2.1 Before a record is returned - to the Tasklet, it may be validated by any number of validation Frameworks - that can be provided to an input source. A single record/set of data is - gathered by interacting with the Input Source. + to the Step, it may be validated by any number of + validation Frameworks that can be provided to an + ItemReader. A single record/set of data is gathered + by interacting with the ItemReader. 4.3 Once a record/set has been - obtained, the step calls the tasklet to begin processing. + obtained, the step calls the + ItemWriter to begin processing. - 4.3.1 The Tasklet executes its - internal business logic by calling other Business Logic components as - necessary. Based on the business service, it requests or persists objects - from the data access components. + 4.3.1 Either an ItemReader or + ItemWriter can execute its internal business logic by calling other + Business Logic components as necessary. Based on the business service, it + requests or persists objects from the data access components. 4.3.3 Data Access components can be leveraged retrieve or persist domain objects. 4.3.4 Once the business logic has been executed, the resulting output record is written out by utilizing the - Output Source interface. The Step will repeatedly call steps 4.2 -> 4.3 - for every record provided by the Input Source. + ItemWriter interface. The + Step will repeatedly call steps 4.2 -> 4.3 for + every record provided by the Input Source. 4.4 Once all of the records are - processed, the Step calls the Tasklet to perform any clean up activities - such as closing connections, exporting files, etc. + processed, the Step closes all streams to perform + any clean up activities such as closing connections, exporting files, + etc. - 4.4.1 The Step is responsible for - committing data associated with the remaining logical units of work as - well as performing any finalization and administrative functions (e.g. - closing database connections). + 4.4.1 The + Step is responsible for committing data associated + with the remaining logical units of work as well as performing any + finalization and administrative functions (e.g. closing database + connections). - Once the Step has completed finalization the control is passed back - to the Job, where any necessary logging or clean up is executed for - application termination and wrap-up -- provided there are no additional - Steps to execute. + Once the Step has completed finalization the + control is passed back to the Job, where any + necessary logging or clean up is executed for application termination and + wrap-up, provided there are no additional Steps to execute.
\ No newline at end of file diff --git a/docs/src/site/resources/reference/images/spring-batch-layers.png b/docs/src/site/resources/reference/images/spring-batch-layers.png new file mode 100644 index 0000000000000000000000000000000000000000..ff17640743c8f50ee3a8f225caab0e690c9f2d9a GIT binary patch literal 5595 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 V?PxVS-QB~j3+8aM5|b;@{{R}BQY!!e literal 0 HcmV?d00001