From 821084c580aef5197a45d33f1e39cd5699cc1b54 Mon Sep 17 00:00:00 2001 From: dsyer Date: Mon, 20 Aug 2007 21:09:24 +0000 Subject: [PATCH] Refactor parent website content to reflect container -> core / execution changes --- src/site/apt/blotter.apt | 104 ------------------ src/site/apt/cases/parallel.apt | 22 ++-- src/site/apt/cases/restart.apt | 14 +-- src/site/apt/cases/steps.apt | 22 ++-- src/site/apt/changelog.apt | 6 +- src/site/apt/index.apt | 71 ++---------- src/site/apt/sitemap.apt | 31 +++++- src/site/apt/snapshots.apt | 33 ++++++ src/site/ppt/ExecutionEnvironment.ppt | Bin 0 -> 26112 bytes src/site/ppt/Figures.ppt | Bin 0 -> 74240 bytes src/site/resources/images/ContainerLayer.png | Bin 30564 -> 0 bytes .../resources/images/ExecutionEnvironment.png | Bin 0 -> 3756 bytes .../resources/images/RuntimeDependencies.png | Bin 0 -> 3719 bytes src/site/site.xml | 1 + 14 files changed, 99 insertions(+), 205 deletions(-) delete mode 100644 src/site/apt/blotter.apt create mode 100644 src/site/apt/snapshots.apt create mode 100644 src/site/ppt/ExecutionEnvironment.ppt create mode 100644 src/site/ppt/Figures.ppt delete mode 100644 src/site/resources/images/ContainerLayer.png create mode 100644 src/site/resources/images/ExecutionEnvironment.png create mode 100644 src/site/resources/images/RuntimeDependencies.png diff --git a/src/site/apt/blotter.apt b/src/site/apt/blotter.apt deleted file mode 100644 index 3e58e8133..000000000 --- a/src/site/apt/blotter.apt +++ /dev/null @@ -1,104 +0,0 @@ - ------ - Spring Batch-Retry Comments - ------ - Dave Syer - ------ - February 2007 - -Open Comments and Questions - -* Batches and Asynchronous JMS - - There are a large number of common concerns between - <<>> and <<>>. In - fact one could imagine <<>> being a - simple example of a batch, something like: - -+--- -RepeatTemplate template = new RepeatTemplate(); - -template.setTaskExecutor(new SimpleAsyncTaskExecutor()); - -template.setTerminationPolicy(new TerminateNeverPolicy()); - -template.execute(new JmsItemProviderCallback(jmsTemplate)); -+--- - - * Instead of setting the transactionManager in - <<>>, wrap the callback in a - transaction proxy. - - * Instead of setting sessionTransacted=true in the - <<>>, set it on the - <<>>. - - I think that would give me 80% of the functionality in a - <<>> without any changes to - <<>>. Maybe the other 20% would be useful additions - to <<>> anyway (like being able to stop and start). - Maybe there is a case for sharing some code, e.g. a base class. - Maybe the batch project should be an offshoot from the core.task - package. It certainly looks like the - <<>> could be a lot simpler (and - easier to test), if it delegates transactional properties to - something not a lot different from a <<>>. - -Resolved - -* Using <<>> in Batches - - * What can you do with a <<>> that you couldn't do with - a <<>>? Maybe <<>> should be a - <<>>, or use one to execute the batch? Probably the - latter would work best, on the basis of preferring composition to - inheritance generally. - -* Asynchronous Batching - - * Can you run a batch asynchronously? Would need a thread-safe - <<>> that can be shared amongst participating - threads, and used to determine termination conditions. - - * If <<>> used a <<>> to execute its - tasks, asynchronous batch might be as simple as using an - asynchronous <<>> internally - the same - <<>> would be able to operate in both modes, just - by changing the <<>>. - -* Using RetryContext to Stash State for the Policies - - E.g. in <<>>: - -+--- - protected void setupContext(RetryCallback callback, - RetryContext context) { - - if (callback instanceof AttributeAccessor) { - AttributeAccessor accessor = (AttributeAccessor) callback; - String[] names = accessor.attributeNames(); - for (int i = 0; i < names.length; i++) { - String name = names[i]; - context.setAttribute(name, accessor.getAttribute(name)); - } - } - } - -+--- - - But this is pants: it makes the callback stateful. We can't store - state in the callback to do with the current item becaue the - callback might (will?) be shared between attempts in a concurrent - system. - - So what to do? Nothing - the state for retry is nothing to do with - the callback, and it is natural to store it in the context. - -* Asynchronous Batching - Thread Safe Context - - * What would happen if several threads were sharing a context object - via a synchronization manager in a thread local (like - <<>>)? The context itself had - better be thread safe, otherwise the concurrent peers might assume - that they have the only copy of the context and try and modify it. - - diff --git a/src/site/apt/cases/parallel.apt b/src/site/apt/cases/parallel.apt index fd00e1e64..d9944f2d8 100644 --- a/src/site/apt/cases/parallel.apt +++ b/src/site/apt/cases/parallel.apt @@ -32,7 +32,7 @@ Use Case: Massively Parallel Batch Processing * A data source with multiple chunks (commitable units) - more chunks than parallel processes. - * A way for the container to launch parallel processes. + * A way for the framework to launch parallel processes. * Success @@ -43,19 +43,19 @@ Use Case: Massively Parallel Batch Processing * Description - [[1]] Container splits input data into partitions. + [[1]] Framework splits input data into partitions. - [[1]] Container sends input data (or references to them) to + [[1]] Framework sends input data (or references to them) to processing nodes. [[1]] Processing nodes act independently, converting the input data and sending it transactionally to output source (as per normal single process batch). - [[1]] Container collects status data from individual nodes for + [[1]] Framework collects status data from individual nodes for reporting and auditing. - [[1]] When all nodes are complete Container decides that batch is + [[1]] When all nodes are complete Framework decides that batch is complete finishes processing. * Variations @@ -64,17 +64,17 @@ Use Case: Massively Parallel Batch Processing an internal node failure have different implications for how to proceed. In both cases, however - [[1]] Container catches exception and classifies it. Rolls back + [[1]] Framework catches exception and classifies it. Rolls back current transaction to preserve state of data (input and output). - [[1]] Container saves state for restart from last known good + [[1]] Framework saves state for restart from last known good point, including a pointer to the next input record. Then if a processing node detects bad data in the input source, it cannot be restarted or re-distributed because the data need to be modified for a successful outcome. - [[1]] Container alerts Operator of the location and nature of the + [[1]] Framework alerts Operator of the location and nature of the failure. [[1]] Operator waits for batch to finish - the overall status will @@ -82,7 +82,7 @@ Use Case: Massively Parallel Batch Processing [[1]] Operator fixes problem and restarts batch. - [[1]] Container does not re-process data that has already been + [[1]] Framework does not re-process data that has already been processed successfully. The parallel processing nodes are used as before. @@ -90,7 +90,7 @@ Use Case: Massively Parallel Batch Processing If a processing node fails unrecoverably (e.g. after retry timeout), but with no indication that the input data were bad, then the data - can be re-used: Container returns unprocessed input data, and + can be re-used: Framework returns unprocessed input data, and redistributes it to other nodes. * Implementation @@ -192,7 +192,7 @@ batchTemplate.iterate(new ItemProviderRepeatCallback(provider, processor)); result might be unpredictable if data can be added to an input source while it is being read. - * If only one query is done by the Container and the results shared + * If only one query is done by the Framework and the results shared out amongst the nodes we face the issue of how to send the data between nodes. Performance problems might ensue. Plus (more seriously) the individual nodes would now need a different diff --git a/src/site/apt/cases/restart.apt b/src/site/apt/cases/restart.apt index bd4296ec9..8a71279d8 100644 --- a/src/site/apt/cases/restart.apt +++ b/src/site/apt/cases/restart.apt @@ -19,7 +19,7 @@ Use Case: Manual Restart After Failure * Scope Any batch should be able to restart gracefully, even if (depending - on chosen container or client implementation) it might have to go + on chosen execution or client implementation) it might have to go right back to the beginning. * Preconditions @@ -28,8 +28,8 @@ Use Case: Manual Restart After Failure restart will be able to carry on processing a batch from where it left off. - * There exists a presistent storage mechanism for the initial - conditions. + * There exists a persistent storage mechanism for the initial + conditions. * Success @@ -41,12 +41,12 @@ Use Case: Manual Restart After Failure [[1]] A batch operation encounters an exception which forces the process to stop processing. - [[1]] Container catches exception and classifies it. + [[1]] Framework catches exception and classifies it. - [[1]] Container logs event with enough information to identify the + [[1]] Framework logs event with enough information to identify the location of the job and the nature of the problem. - [[1]] Container saves initial condition from last commit point, to + [[1]] Framework saves initial condition from last commit point, to enable restart to start from the last known good operation. [[1]] Operator fixes problem (e.g. makes missing resource available, @@ -54,7 +54,7 @@ Use Case: Manual Restart After Failure [[1]] Operator restarts batch. - [[1]] Container loads initial conditions and continues processing. + [[1]] Framework loads initial conditions and continues processing. * Variations diff --git a/src/site/apt/cases/steps.apt b/src/site/apt/cases/steps.apt index 4d21c1667..cce7226e1 100644 --- a/src/site/apt/cases/steps.apt +++ b/src/site/apt/cases/steps.apt @@ -54,20 +54,20 @@ Use Case: Sequential Processing of Dependent Steps The vanilla successful case proceeds as follows: - [[1]] Container logs the start of a step, uniquely indentifying + [[1]] Framework logs the start of a step, uniquely indentifying the initial conditions. - [[1]] Container stores internal state so that initial conditions + [[1]] Framework stores internal state so that initial conditions can be re-created in the event of a restart. [[1]] Step execution proceeds as per one of the other use cases (e.g. {{{file-to-database.html}Copy File to Database}}), including transactional behaviour. - [[1]] Client instructs Container to store internal state needed by + [[1]] Client instructs Framework to store internal state needed by further steps (e.g. cached reference data). - [[1]] Container logs successful completion of step, and stores + [[1]] Framework logs successful completion of step, and stores [[1]] Repeat for next and subsequent steps. Internal state is passed from one state to the next. @@ -85,35 +85,35 @@ Use Case: Sequential Processing of Dependent Steps [[1]] Operator restarts batch with no configuration or input data changes. - [[1]] Container resumes batch from the last commit point of the + [[1]] Framework resumes batch from the last commit point of the failed step. [[1]] Sequence completes normally. - The process above could be carried out by the container entirely (no + The process above could be carried out by the framework entirely (no need for operator intervention) if a retry policy is in effect. ** Failure of Step Owing to Bad Initial State If a step fails because it receives bad data from an earlier step, - the Container cannot recover without intervention. + the Framework cannot recover without intervention. [[1]] Operator attempts to restart without doing anything to fix the problem. - [[1]] Container detects bad initial state immediately and fails + [[1]] Framework detects bad initial state immediately and fails fast. If the original problem can be located and fixed (e.g. input data for earlier step is revised): - [[1]] Operator restarts batch signalling to container which step + [[1]] Operator restarts batch signalling to framework which step to begin with. - [[1]] Container locates initial state for the first step to be + [[1]] Framework locates initial state for the first step to be executed. - [[1]] Container starts execution from the beginning of the desired + [[1]] Framework starts execution from the beginning of the desired state. This time the input data are different, so the sequence can complete normally. diff --git a/src/site/apt/changelog.apt b/src/site/apt/changelog.apt index 1d789e3a6..8f2bd585c 100644 --- a/src/site/apt/changelog.apt +++ b/src/site/apt/changelog.apt @@ -1,7 +1,3 @@ Changelog: Spring Batch - See the individual subprojects for their changelogs: - - * {{{spring-batch-infrastructure/changelog.html}Infrastructure}} - - * {{{spring-batch-container/changelog.html}Container}} + See the changes report generated from {{{issue-tracking.html}JIRA}}. diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt index e22508960..7b81f5889 100644 --- a/src/site/apt/index.apt +++ b/src/site/apt/index.apt @@ -11,75 +11,29 @@ Introduction Spring Batch is a lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. Spring Batch builds upon the productivity, POJO-based development approach, and general ease of use capabilities people have come to know from the Spring Framework, while making it easy for developers to access and leverage more advance enterprise services when necessary. - Spring Batch provides reusable functions that are essential in - processing large volumes of records, including logging/tracing, - transaction management, job processing statistics, job restart, - skip, and resource management. It also provides more advance - technical services and features that will enable extremely - high-volume and high performance batch jobs though optimization and - partitioning techniques. Simple as well as complex, high-volume - batch jobs can leverage the framework in a highly scalable manner to - process significant volumes of information. + Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advance technical services and features that will enable extremely high-volume and high performance batch jobs though optimization and partitioning techniques. Simple as well as complex, high-volume batch jobs can leverage the framework in a highly scalable manner to process significant volumes of information. - Spring Batch is part of the - {{{http://www.springframework.org/sub-projects}Spring Portfolio}}. + Spring Batch is part of the {{{http://www.springframework.org/sub-projects}Spring Portfolio}}. * Spring Batch Architecture - Spring Batch is designed with extensibility and a diverse group of - end users in mind. The figure below shows a sketch of the layered - architecture that supports the extensibility and ease of use for - end-user developers. + Spring Batch is designed with extensibility and a diverse group of end users in mind. The figure below shows a sketch of the layered architecture that supports the extensibility and ease of use for end-user developers. -[images/ContainerLayer.png] Spring Batch Architecture showing -Infrastructure and Container Layers. Potential container -implementations support different platforms and end-user goals from -the same blocks of business logic in the Application Layer. +[images/ExecutionEnvironment.png] Spring Batch Architecture showing Infrastructure and Execution Layers. Potential execution strategy implementations support different platforms and end-user goals from the same blocks of business logic in the Application Layer. - The initial release provides an Infrastructure layer in the form of - low level tools. There is also a simple Container application, - using the infrastructure in its implementation. The container - provides robust features for traceability and management of the - batch lifecycle. A key goal is that the management of the batch - process (locating a job and its input, starting, scheduling, - restarting, and finally processing to created results) should be as - easy as possible for developers. + The initial release provides an Infrastructure layer in the form of low level tools. There is also a simple execution environment, using the infrastructure in its implementation. The execution environment provides robust features for traceability and management of the batch lifecycle. A key goal is that the management of the batch process (locating a job and its input, starting, scheduling, restarting, and finally processing to created results) should be as easy as possible for developers. - The Infrastructure provides the ability to batch operations - together, and to retry an piece of work if there is an exception. - Both requirements have a transactional flavour, and similar concepts - are relevant (propagation, synchronisation). They also both lend - themselves to the template programming model common in Spring, - c.f. <<>>, <<>>, - <<>>. + The Infrastructure provides the ability to batch operations together, and to retry an piece of work if there is an exception. Both requirements have a transactional flavour, and similar concepts are relevant (propagation, synchronisation). They also both lend themselves to the template programming model common in Spring, c.f. <<>>, <<>>, <<>>. - The Simple Batch Execution Container is the first container available. It provides a robust set of integrated features including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management to enable the management of the full lifecycle of traditional batch processing. A number of sample jobs are packaged with this container and are described in detail to more clearly articulate usage and capabilities of the container. + The simple batch execution environment is the reference implementation, expressed through the execution module of the Spring Batch product. It provides a robust set of integrated features including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management to enable the management of the full lifecycle of traditional batch processing. A number of sample jobs are packaged with this environment and are described in detail to more clearly articulate its usage and capabilities. * Roadmap - 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. + 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. - A Partitioned Batch Execution Container is also being developed that will provide alternate scaling solutions. This container 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. + A partitioned step execution strategy is also being developed that will provide alternate scaling solutions. This will provide more advanced 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. - Matt Welsh's work shows that - {{{http://www.eecs.harvard.edu/~mdw/proj/seda/}SEDA}} has enormous - benefits over more rigid processing architectures, and messaging - containers give us a lot of resilience out of the box. So we also - want to provide a more SEDA flavoured container, or container - support, 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. + Matt Welsh's work shows that {{{http://www.eecs.harvard.edu/~mdw/proj/seda/}SEDA}} has enormous benefits over more rigid processing architectures, and messaging environments give us a lot of resilience out of the box. So we also want to provide a more SEDA flavoured execution environments, 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. * Background @@ -90,9 +44,4 @@ the same blocks of business logic in the Application Layer. Accenture is contributing previously proprietary batch processing architecture frameworks -- based upon decades worth of experience in building batch architectures with the last several generations of platforms (i.e., COBOL/Mainframe, C++/Unix, and now Java/anywhere) -- to the Spring Batch project along with committer resources to drive support, enhancements, and the future roadmap. The collaborative effort between Accenture and Interface21 aims to promote the standardization of software processing approaches, frameworks, and tools that can be consistently leveraged by enterprise users when creating batch applications. Companies and government agencies desiring to deliver standard, proven solutions to their enterprise IT environments will benefit from Spring Batch. - - -* Links: - - * A discussion {{{blotter.html}blotter}}. diff --git a/src/site/apt/sitemap.apt b/src/site/apt/sitemap.apt index 6f46215b9..a7bf864a5 100644 --- a/src/site/apt/sitemap.apt +++ b/src/site/apt/sitemap.apt @@ -18,7 +18,9 @@ Spring Batch Site Map * Integration Tests - reports on tests of infrastructure - * Container - CI and technical information about container layer + * Core - CI and technical information about core domain + + * Execution - CI and technical information about execution (implementation of core) * Main Site @@ -53,11 +55,11 @@ Spring Batch Site Map * Infrastructure - How to use the core API - * Simple Container + * Simple Execution Environment - * Partitioning Container + * Partitioning Execution Environment - * Other Containers? + * Other Execution Environments? * Changelog @@ -89,9 +91,16 @@ Spring Batch Site Map * CI Reports (same as for infrastructure). -* Container +* Core - Should the use case go here (showing which ones are implemented)? + * Changelog + + * Project information (duplicated from Main Site - Maven "feature" - + TODO: find a way to switch them off in sub-projects) + + * CI Reports (same as for infrastructure). + +* Execution * Changelog @@ -99,3 +108,13 @@ Spring Batch Site Map * CI Reports (same as for infrastructure). +* Integration Tests + + * Changelog + + * Project information (duplicated from Main Site - Maven "feature" - + TODO: find a way to switch them off in sub-projects) + + * CI Reports (same as for infrastructure). + + diff --git a/src/site/apt/snapshots.apt b/src/site/apt/snapshots.apt new file mode 100644 index 000000000..86f84688a --- /dev/null +++ b/src/site/apt/snapshots.apt @@ -0,0 +1,33 @@ + --------- + Snapshots + --------- + Dave Syer + ------ + August 2007 + +Snapshot Builds + + These builds are provided for testing and development purposes only. They are built by a Bamboo process + automatically using the latest snapshot from Subversion. + + The snapshots are deloyed to a Maven2 snapshot repository. To use it, just add the following repository to your POM: + ++--------------- + + spring-s3 + Springframework Maven SNAPSHOT Repository + http://s3.amazonaws.com/maven.springframework.org/snapshot + ++--------------- + + Individual dependencies can then by added like so: + ++--------------- + + org.springframework.batch + spring-batch-core + 1.0-m2-SNAPSHOT + ++--------------- + + Additionally, you can browse the repository with a web browser {{{http://s3browse.com/explore/maven.springframework.org/snapshot/org/springframework/batch}here}}. diff --git a/src/site/ppt/ExecutionEnvironment.ppt b/src/site/ppt/ExecutionEnvironment.ppt new file mode 100644 index 0000000000000000000000000000000000000000..70875e745bcd1e4496db6bdbefe73327f5164f48 GIT binary patch literal 26112 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]k=ceA)^zQwDCKt(PLHG6a(e{ST1_wU*GC!yiDTGR9=XrA1 z*|*v|@N3J{E~$R?BTKFpUR8SQV}Rrz2I)VLo?{*~1!wjU+SlyLcMP~4Ww+PN^rf=+ zLZkn!0IHZ_7(}e&P#PX6YtZ?bw1NUfgX`pnheb&g zxkx}bd^uMXu9#_xIEZgDCySE^r10~)==vdg)%fgr5Dtx5AXSPuwpdLoRF>D}1nczFo{C4Y*=&S6fr^!{ z7jmhhtu1MDM1Ce4Wk+>_oODHBbMllg6IH%n)64-|=haumjzE;GR8}2aU(gue{QZaG8Xwh5QUARepLEZLJ zB{YobV6lNXe@Oa=5R9prU=P~|E%D+3}yZmR7U8i7K}w5lTEmz-!Z zBJ=7jJfi%-^{;3>J@_E2TQP5qkUUbYXe*^;uxi_w`rHLJk;39C<r%P8vRD>IK8hOsj8ENnvJXB`Qq*P{6`rJf-Y&O(GUGL^U!2 sG9{fPMu5?bekRF!^Ug&EpWxBIb_M2oAR~j{!-bLlpde8yX5jn(01<;TQ2+n{ diff --git a/src/site/resources/images/ExecutionEnvironment.png b/src/site/resources/images/ExecutionEnvironment.png new file mode 100644 index 0000000000000000000000000000000000000000..e574236b37fb6004508ed73cc59a1c63677b0725 GIT binary patch literal 3756 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 Yqv~b4{?#}H-?0#ex~69ewJFel0R9tn4gdfE literal 0 HcmV?d00001 diff --git a/src/site/resources/images/RuntimeDependencies.png b/src/site/resources/images/RuntimeDependencies.png new file mode 100644 index 0000000000000000000000000000000000000000..a8834c84b3e683c10ab9c576baa6b0f661290910 GIT binary patch literal 3719 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 literal 0 HcmV?d00001 diff --git a/src/site/site.xml b/src/site/site.xml index e58b0ed8e..6b15c906d 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -30,6 +30,7 @@ +