@Override
		public void postJobSpecWalk(Element[] elements, JobSpecification jobSpec) {
			if (elements != null) {
				// These are the final elements that were visited
				for (Element element : elements) {
					if (isMappingExitSpace(element)) {
						if (!isMappingExitStatus(element, "*")) {
							addFailAttribute(element, "*");
						}
					}
				}
			}
			Map<String, String> transitionStepsToCreate = transitionNamesToElementIdsInFlow.pop();
			for (Map.Entry<String, String> transitionStepToCreate : transitionStepsToCreate.entrySet()) {
				Element step = createStep(transitionStepToCreate.getValue(), transitionStepToCreate.getKey());
				currentElement.peek().appendChild(step);
			}

			Set<String> generatedBeans = new HashSet<>();
			for (String jobRunnerBeanName : jobRunnerBeanNames) {
				if (generatedBeans.contains(jobRunnerBeanName)) {
					continue;
				}
				// Producing:
				// <bean class="org.springframework.xd.dirt.batch.tasklet.JobLaunchingTasklet" id="jobRunner-bbb" scope="step">
				//        <constructor-arg ref="messageBus"/>
				//        <constructor-arg ref="jobDefinitionRepository"/>
				//        <constructor-arg ref="xdJobRepository"/>
				//        <constructor-arg value="bbb"/>
				//        <constructor-arg value="${timeout}"/>
				// </bean>
				Element bean = doc.createElement("bean");
				bean.setAttribute("scope", "step");
				bean.setAttribute("class", "org.springframework.xd.dirt.batch.tasklet.JobLaunchingTasklet");
				bean.setAttribute("id", "jobRunner-" + jobRunnerBeanName);
				addConstructorArg(bean, "ref", "messageBus");
				addConstructorArg(bean, "ref", "jobDefinitionRepository");
				addConstructorArg(bean, "ref", "xdJobRepository");
				addConstructorArg(bean, "value", jobRunnerBeanName);
				addConstructorArg(bean, "value", "${timeout}");
				this.doc.getElementsByTagName("beans").item(0).appendChild(bean);
				generatedBeans.add(jobRunnerBeanName);
			}
			try {
				// Write the content
				TransformerFactory transformerFactory = TransformerFactory.newInstance();
				javax.xml.transform.Transformer transformer;
				transformer = transformerFactory.newTransformer();
				if (prettyPrint) {
					transformer.setOutputProperty(OutputKeys.INDENT, "yes");
					transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
				}
				DOMSource source = new DOMSource(doc);
				StringResult sr = new StringResult();
				transformer.transform(source, sr);
				xmlString = sr.toString().trim();
			}
			catch (TransformerException e) {
				throw new IllegalStateException("Unexpected problem building XML representation", e);
			}
		}
Create a &lt;end on=&gt; attribute and attach it to the supplied step element.
@param step the step that will get the new attribute
@param jobExitStatus the jobExitStatus to fill in as the 'on' attribute value field
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/dsl/JobSpecification.java