Rapidly develop JSR-352 compliant applications for z/OS
doctorbatch.io has finally arrived: Find it on GitHub!
doctorbatch.io is an API for developing batch applications in the Java programming language targetted for deployment to IBM’s WebSphere Batch or WebSphere Liberty Profile’s Java EE Batch runtime environments. The doctorbatch.io provides portability between the two runtimes by abstracting application development away from the runtime-specific API, and providing adapters for deployment.
Interested in getting started with Doctor Batch? Checkout the development lab that was hosted at IBM Interconnect 2016.
To get started with this lab, you must:
That’s it!
To use doctorbatch.io, you’ll need to import several dependencies from IBM products into your local Maven repository. The dependencies are as follows:
Note that doctorbatch.io-core and doctorbatch.io-javabatch may be built and used without and IBM dependencies.
See the details here: doctorbatch.io prerequisites
Once you have imported the necessary prerequisuites, you are ready to use doctorbatch.io. doctorbatch.io is avaialble in Maven Central at the following coordinates:
The core library provides the API for the implementation of a doctorbatch.io application.
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-core</artifactId>
<version>1.0.0</version>
</dependency>
The batch runtime components provide bridges so that doctorbatch.io applications can be executed in a provided batch runtime environment. At present, doctorbatch.io supports JSR-352 compatible “Java Batch” containers, such as IBM WebSphere Liberty Profile, and IBM WebSphere Application Server’s Batch Runtime (aka “Compute Grid”).
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-javabatch</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-websphere</artifactId>
<version>1.0.0</version>
</dependency>
The MVS components provide drop-in support for reading and writing from z/OS DataSets using the IBM JZOS library.
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-mvs</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-javabatch-mvs</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-websphere-mvs</artifactId>
<version>1.0.0</version>
</dependency>
The Operational Decision Manager component provides drop-in capability to consume business rules applications as the processing logic of your batch application.
<dependency>
<groupId>com.zblservices.doctorbatch</groupId>
<artifactId>doctorbatch-io-odm</artifactId>
<version>1.0.0</version>
</dependency>
Alternatively, you can build doctorbatch-io from source. Please note, by default, the parent POM includes all submodules. If you do not have certain prerequisites available to you, then you will need to comment out the affected modules.
git clone https://github.com/zblservices/doctorbatch.io.git
cd doctorbatch.io
mvn install
Below is a sample server configuration that will get you started quickly with JSR-352 and the Batch Management capabilities available in WebSphere Liberty Profile.
Be sure you have installed Liberty 8.5.5.x with Java EE 7 Full Platform, as well as the Batch Management feature!
<server description="batch server">
<!-- Enable features -->
<featureManager>
<feature>javaee-7.0</feature>
<feature>batchManagement-1.0</feature>
<feature>localConnector-1.0</feature>
<feature>appSecurity-2.0</feature>
</featureManager>
<!-- SSL KeyStore -->
<keyStore password="password"/>
<!-- User registry -->
<basicRegistry id="basic" realm="ibm/api">
<user name="demo" password="password"/>
</basicRegistry>
<administrator-role>
<user>demo</user>
</administrator-role>
<!-- Define the batch authorization roles -->
<authorization-roles id="com.ibm.ws.batch">
<security-role name="batchAdmin">
<user name="demo"/>
</security-role>
<security-role name="batchSubmitted">
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</security-role>
<security-role name="batchMonitor">
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</security-role>
</authorization-roles>
<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>
<applicationMonitor updateTrigger="mbean"/>
</server>