Introducing Spring Batch Admin

Dave Syer

Spring Batch Admin provides a web-based user interface that features an admin console for Spring Batch applications and systems. It is a new open-source project from SpringSource. A milestone release 1.0.0.M1 will be available soon with all the features below, and we hope to get to a 1.0.0 final release early in 2010.

Main Use Cases

The easiest way to get a quick overview of Spring Batch Admin is to see some screenshots of the main use cases. The user interface is a web application (built with Spring MVC).

Inspect Jobs

Jobs View
The user can inspect the jobs that are known to the system. Jobs are either launchable or non-launchable (in the screenshot they are all launchable). The distinction is that a launchable job is defined and configured in the application itself, whereas a non-launchable job is detected as state left by the execution of a job in another process. (Spring Batch uses a relational database to track the state of jobs and steps, so historic executions can be queried to show the non-launchable jobs.)

Launch Job

Launch Job View
Launchable jobs can be launched from the user interface with job parameters provided as name value pairs, or by an incrementer configured into the application.

Inspect Executions

Job Executions View
Once a job is executing, or has executed, this view can be used to see the most recent executions, and a brief summary of their status (STARTED, COMPLETED, FAILED, etc.).

Job Execution View
Each individual execution has a more detailed view (shown above), and from there the user can click down to a view of each of the step executions in the job (only one in this case). A common reason for wanting to do this is to see the cause of a failure.

Step Execution (Top) View
The top of the step execution detail view shows the history of the execution of this step across all job executions. This is useful for getting a statistical feel for performance characteristics. A developer running a job in an integration test environment might use the statistics here to compare different parameterisations of a job, to see what effect is of changing (for instance) the commit interval in an item processing step.

Step Execution (Bottom) View
The bottom of the step execution view has the detailed meta-data for the step (status, read count, write count, commit count, etc.) as well as an extract of the stack trace from any exception that caused a failure of the step (as in the example shown above).

Stop an Execution

Stop Job Execution View
A job that is executing can be stopped by the user (whether or not it is launchable). The stop signal is sent via the database and once detected by Spring Batch in whatever process is running the job, the job is stopped (status moves from STOPPING to STOPPED) and no further processing takes place.

Where to get it

There is a snapshot download attached to this article, or you can get the source code from subversion and compile it yourself. Snapshot builds also go up to S3 to the Maven repository every night:

<repository>
        <id>spring-snapshots</id>
        <name>Spring Maven Snapshot Repository</name>
        <url>http://s3.amazonaws.com/maven.springframework.org/snapshot</url>
</repository>

There are two JAR artifacts and a WAR sample (org.springframework.batch:spring-batch-admin-sample:war), all of which are in the Maven repository and in SVN. In the the case of the WAR download link from this article the JAR files are included in WEB-INF/lib.

To deploy the sample application just install the WAR into your favourite servlet container, or import the source code into STS and launch the sample with standard Eclipse WTP features (e.g. drag it onto the server or Run As… and run on the server). It uses an in-memory database out of the box, so you will get a fresh copy on each restart of the application.

Similar Posts

Share this Post
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • DZone
  • LinkedIn
  • Slashdot
  • Technorati
  • TwitThis
 

12 responses


  1. Link to Spring Batch in first line is broken, should probably be http://static.springsource.org/spring-batch/


  2. Fixed the broken link, thanks (it used to work at http://www.springframework.org, so something must have changed).


  3. It looks nice, will give it a shot today. Thanks


  4. This looks like the start of something great Dave, Nice Work!


  5. looks very promising! this kind of admin gui and functionality for batches can be very useful for many enterprises!


  6. Hi Dave,

    This looks very cool. Any plan to integrate this with authentication systems like LDAP?


  7. There is no security enabled by default, and no plans to do that in 1.0.0 as yet because the target is really developers for this release. But the interface is RESTful so it's easy to add URL-based business-specific security with Spring Security. I'll write some more about customisation and extensibility soon (there's a brief run through on the website now) and probably use security as an example.


  8. This really looks really ugly, please do something about the usability and look and feel of the console!!


  9. Is there a way to point it at an existing job repository and try things out?


  10. Sure. It starts up with an in-memory database by default, but all you need to do is provide a properties file to change the database connection, or you can override the dataSource bean definition. The getting-started page on the web site has some basic instructions.


  11. This is a really good thing for all the spring batch users…
    Is this working with Spring Batch 2.0.3?
    Will there be a way to restart a job at any previous step?
    For exemple in our case we have two steps that are executed consecutively:
    - 1st step allows to launch an external tool
    - 2nd step allows to check the log file generated by this tool
    What we would like is to retart a the 1st step instead of the last unsuccesfull one.

    Thanks.


  12. It isn't designed to work with Batch 2.0.x. The introspection pieces (if you don't register or launch any jobs) should work because there are no DB schema changes to 2.1.0.

    There is nothing different about the step execution sequences in Admin – just a regular Spring Batch job. Your use case (start at first step) sounds like you don't want a restart, just a normal start. So that works. Or did I miss something?

3 trackbacks

Leave a Reply