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