As a developer, I need to be able to create a Spring XD job module that consists of a job orchestrating the execution of other Spring Batch jobs using the Spring Batch Job Step (see section 5.3.6 here: http://docs.spring.io/spring-batch/reference/html/configureStep.html) within the same module definition.
- Define the "contract" for a job module
- Currently the contract consists of a single job definition within the assembled ApplicationContext (context.getBean(Job.class)).
- The new version will need to document what job definition within the assembled ApplicationContext should be run as the entry point. I'm assuming it would be by id (context.getBean("job") for example) of the job but am open to other options.
- A custom job module that orchestrates multiple Spring Batch jobs via Job steps should be able to be deployed and executed as a single Spring XD module.
- Spring XD launches the job that conforms to the previously defined "contract".
- Spring Batch manages the execution of the child jobs.
- The existing OOTB jobs should work under the new "contract".
- The UI should "just work" in that child jobs update the job repository independently so no updates should be needed for an MVP of this functionality.
- This will be a breaking change for users that have developed custom job modules.
Out of Scope
- Execution of child jobs that are remote (deployed on another node / ApplicationContext).
- Dynamically assembling jobs via the shell's DSL or the UI.