BATCH-1013: split the <step> elements name attribute into id and ref attributes
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright 2006-2009 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.batch.core.configuration.xml;
|
||||
|
||||
import org.springframework.batch.core.JobInterruptedException;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
|
||||
/**
|
||||
* Class used for delegating from a <step> definition to an individual bean
|
||||
* defining the actual step. This is needed to maintain the id from the <step>
|
||||
* element for any flow references.
|
||||
*
|
||||
* @author Thomas Risberg
|
||||
* @since 2.0
|
||||
*/
|
||||
public class DelegatingStep implements Step {
|
||||
|
||||
String name;
|
||||
Step delegate;
|
||||
|
||||
/**
|
||||
* Constructor taking the step name and the delegate as parameters.
|
||||
*
|
||||
* @param name the name to be used for the step
|
||||
* @param delegate the step definition to delegate to
|
||||
*/
|
||||
public DelegatingStep(String name, Step delegate) {
|
||||
this.name = name;
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
public void execute(StepExecution stepExecution)
|
||||
throws JobInterruptedException {
|
||||
delegate.execute(stepExecution);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getStartLimit() {
|
||||
return delegate.getStartLimit();
|
||||
}
|
||||
|
||||
public boolean isAllowStartIfComplete() {
|
||||
return delegate.isAllowStartIfComplete();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -54,28 +54,43 @@ public class InlineStepParser extends AbstractStepParser {
|
||||
|
||||
BeanDefinitionBuilder stateBuilder =
|
||||
BeanDefinitionBuilder.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.StepState");
|
||||
String stepRef = element.getAttribute("name");
|
||||
String stepId = element.getAttribute("id");
|
||||
String stepRef = element.getAttribute("ref");
|
||||
String taskletRef = element.getAttribute("tasklet");
|
||||
|
||||
if (!StringUtils.hasText(stepRef)) {
|
||||
parserContext.getReaderContext().error("The name attribute can't be empty for <" + element.getNodeName() + ">", element);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Element> processTaskElements = (List<Element>) DomUtils.getChildElementsByTagName(element, "tasklet");
|
||||
if (StringUtils.hasText(taskletRef)) {
|
||||
List<Element> listOfTaskElements = (List<Element>) DomUtils.getChildElementsByTagName(element, "tasklet");
|
||||
if (StringUtils.hasText(stepRef)) {
|
||||
if (StringUtils.hasText(taskletRef)) {
|
||||
parserContext.getReaderContext().error("The 'tasklet' attribute can't be combined with the 'ref=\""+ stepRef +"\"' attribute specification for <" + element.getNodeName() + ">", element);
|
||||
}
|
||||
if (listOfTaskElements.size() > 0) {
|
||||
parserContext.getReaderContext().error("The <" + listOfTaskElements.get(0).getNodeName() +
|
||||
"> element can't be combined with the 'ref=\""+ stepRef +"\"' attribute specification for <" + element.getNodeName() + ">", element);
|
||||
}
|
||||
BeanDefinitionBuilder stepBuilder =
|
||||
BeanDefinitionBuilder.genericBeanDefinition("org.springframework.batch.core.configuration.xml.DelegatingStep");
|
||||
stepBuilder.addConstructorArgValue(stepId);
|
||||
stepBuilder.addConstructorArgReference(stepRef);
|
||||
AbstractBeanDefinition bd = stepBuilder.getBeanDefinition();
|
||||
bd.setSource(parserContext.extractSource(element));
|
||||
parserContext.getRegistry().registerBeanDefinition(stepId, bd);
|
||||
stateBuilder.addConstructorArgReference(stepId);
|
||||
}
|
||||
else if (StringUtils.hasText(taskletRef)) {
|
||||
if (listOfTaskElements.size() > 0) {
|
||||
parserContext.getReaderContext().error("The <" + listOfTaskElements.get(0).getNodeName() +
|
||||
"> element can't be combined with the 'tasklet=\""+ taskletRef +"\"' attribute specification for <" + element.getNodeName() + ">", element);
|
||||
}
|
||||
AbstractBeanDefinition bd = parseTaskletRef(element, taskletRef, parserContext, jobRepositoryRef);
|
||||
parserContext.registerBeanComponent(new BeanComponentDefinition(bd, stepRef));
|
||||
stateBuilder.addConstructorArgReference(stepRef);
|
||||
parserContext.registerBeanComponent(new BeanComponentDefinition(bd, stepId));
|
||||
stateBuilder.addConstructorArgReference(stepId);
|
||||
}
|
||||
else if (processTaskElements.size() > 0) {
|
||||
Element taskElement = processTaskElements.get(0);
|
||||
else if (listOfTaskElements.size() > 0) {
|
||||
Element taskElement = listOfTaskElements.get(0);
|
||||
AbstractBeanDefinition bd = parseTaskletElement(element, taskElement, parserContext, jobRepositoryRef);
|
||||
parserContext.registerBeanComponent(new BeanComponentDefinition(bd, stepRef));
|
||||
stateBuilder.addConstructorArgReference(stepRef);
|
||||
}
|
||||
else if (StringUtils.hasText(stepRef)) {
|
||||
stateBuilder.addConstructorArgReference(stepRef);
|
||||
parserContext.registerBeanComponent(new BeanComponentDefinition(bd, stepId));
|
||||
stateBuilder.addConstructorArgReference(stepId);
|
||||
}
|
||||
else {
|
||||
parserContext.getReaderContext().error("Incomplete configuration detected while creating step with name " + stepRef, element);
|
||||
|
||||
@@ -148,7 +148,8 @@
|
||||
<xsd:complexType>
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="stepType">
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" >
|
||||
<xsd:attribute name="id" type="xsd:ID" use="required" />
|
||||
<xsd:attribute name="ref" type="xsd:string" use="optional" >
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
The step name attribute defines the name for the step. It can be used as
|
||||
|
||||
@@ -67,7 +67,7 @@ public class BranchStepJobParserTests {
|
||||
for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
|
||||
names.add(stepExecution.getStepName());
|
||||
}
|
||||
assertTrue(names.contains("step3"));
|
||||
assertFalse(names.contains("step2"));
|
||||
assertTrue(names.contains("s3"));
|
||||
assertFalse(names.contains("s2"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,17 +41,17 @@ public class DefaultFailureJobParserTests extends AbstractJobParserTests {
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
|
||||
@@ -41,17 +41,17 @@ public class DefaultSuccessJobParserTests extends AbstractJobParserTests {
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("step2"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("s2"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "step2");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "s2");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution2.getExitStatus());
|
||||
|
||||
|
||||
@@ -41,12 +41,12 @@ public class EndTransitionDefaultStatusJobParserTests extends AbstractJobParserT
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution1.getExitStatus().getExitCode());
|
||||
|
||||
|
||||
@@ -46,17 +46,17 @@ public class EndTransitionJobParserTests extends AbstractJobParserTests {
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals("EARLY TERMINATION (FAIL)", jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
|
||||
@@ -41,12 +41,12 @@ public class FailTransitionDefaultStatusJobParserTests extends AbstractJobParser
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
|
||||
@@ -44,17 +44,17 @@ public class FailTransitionJobParserTests extends AbstractJobParserTests {
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals("EARLY TERMINATION (FAIL)", jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
@@ -65,12 +65,12 @@ public class FailTransitionJobParserTests extends AbstractJobParserTests {
|
||||
jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size()); // step1 is not executed
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals("EARLY TERMINATION (FAIL)", jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution3 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution3 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution3.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution3.getExitStatus().getExitCode());
|
||||
|
||||
|
||||
@@ -41,17 +41,17 @@ public class SplitDifferentResultsFailFirstJobParserTests extends AbstractJobPar
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
|
||||
@@ -41,22 +41,22 @@ public class SplitDifferentResultsFailSecondJobParserTests extends AbstractJobPa
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(3, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("step3"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
assertTrue(stepNamesList.contains("s3"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution3 = getStepExecution(jobExecution, "step3");
|
||||
StepExecution stepExecution3 = getStepExecution(jobExecution, "s3");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution3.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution3.getExitStatus());
|
||||
|
||||
|
||||
@@ -53,8 +53,9 @@ public class StepParserTests {
|
||||
ConfigurableApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("org/springframework/batch/core/configuration/xml/StepParserBeanNameTests-context.xml");
|
||||
Map<String, Object> beans = ctx.getBeansOfType(Step.class);
|
||||
assertTrue("'step1' bean not found", beans.containsKey("step1"));
|
||||
assertTrue("'step2' bean not found", beans.containsKey("step2"));
|
||||
assertTrue("'s1' bean not found", beans.containsKey("s1"));
|
||||
Step s1 = (Step)ctx.getBean("s1");
|
||||
assertEquals("wrong name", "s1", s1.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -45,12 +45,12 @@ public class StopIncompleteJobParserTests extends AbstractJobParserTests {
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("failingStep"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "failingStep");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution1.getExitStatus().getExitCode());
|
||||
|
||||
@@ -61,12 +61,12 @@ public class StopIncompleteJobParserTests extends AbstractJobParserTests {
|
||||
jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size()); // step1 is not executed
|
||||
assertTrue(stepNamesList.contains("step2"));
|
||||
assertTrue(stepNamesList.contains("s2"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "step2");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "s2");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution2.getExitStatus());
|
||||
|
||||
|
||||
@@ -45,12 +45,12 @@ public class StopJobParserTests extends AbstractJobParserTests {
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("step1"));
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "step1");
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
@@ -61,12 +61,12 @@ public class StopJobParserTests extends AbstractJobParserTests {
|
||||
jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size()); // step1 is not executed
|
||||
assertTrue(stepNamesList.contains("step2"));
|
||||
assertTrue(stepNamesList.contains("s2"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "step2");
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "s2");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution2.getExitStatus());
|
||||
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1">
|
||||
<next on="FAILED" to="step2" />
|
||||
<next on="*" to="step3" />
|
||||
<step id="s1" ref="step1">
|
||||
<next on="FAILED" to="s2" />
|
||||
<next on="*" to="s3" />
|
||||
</step>
|
||||
<step name="step2" />
|
||||
<step name="step3" />
|
||||
<step id="s2" ref="step2"/>
|
||||
<step id="s3" ref="step3"/>
|
||||
</job>
|
||||
|
||||
|
||||
</beans:beans>
|
||||
@@ -10,11 +10,11 @@
|
||||
|
||||
<job id="job">
|
||||
<decision id="decision" decider="decider">
|
||||
<next on="FOO" to="step1"/>
|
||||
<next on="*" to="step2"/>
|
||||
<next on="FOO" to="s1"/>
|
||||
<next on="*" to="s2"/>
|
||||
</decision>
|
||||
<step name="step1" />
|
||||
<step name="step2" />
|
||||
<step id="s1" ref="step1" />
|
||||
<step id="s2" ref="step2" />
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -9,8 +9,8 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="failingStep"/>
|
||||
<step name="failingStep" />
|
||||
<step id="s1" ref="step1" next="fail"/>
|
||||
<step id="fail" ref="failingStep"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -9,8 +9,8 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="step2"/>
|
||||
<step name="step2" />
|
||||
<step id="s1" ref="step1" next="s2"/>
|
||||
<step id="s2" ref="step2"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -9,7 +9,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1">
|
||||
<step id="s1" ref="step1">
|
||||
<end on="COMPLETED"/>
|
||||
<fail on="COMPLETED"/>
|
||||
</step>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="failingStep">
|
||||
<step id="fail" ref="failingStep">
|
||||
<end on="*" />
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="failingStep"/>
|
||||
<step name="failingStep">
|
||||
<step id="s1" ref="step1" next="fail"/>
|
||||
<step id="fail" ref="failingStep">
|
||||
<end on="*" status="EARLY TERMINATION (FAIL)"/>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1">
|
||||
<step id="s1" ref="step1">
|
||||
<fail on="*" />
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="failingStep"/>
|
||||
<step name="failingStep">
|
||||
<step id="s1" ref="step1" next="fail"/>
|
||||
<step id="fail" ref="failingStep">
|
||||
<fail on="FAILED" status="EARLY TERMINATION (FAIL)"/>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job" incrementer="testIncrementer" job-repository="jobRepository">
|
||||
<step name="step1" tasklet="tasklet"/>
|
||||
<step id="s1" ref="step1"/>
|
||||
<listeners>
|
||||
<listener after-method="afterJob" ref="testListener"/>
|
||||
<listener after-method="afterJob" class="org.springframework.batch.core.configuration.xml.TestJobListener"/>
|
||||
@@ -15,8 +15,6 @@
|
||||
</listeners>
|
||||
</job>
|
||||
|
||||
<beans:bean id="tasklet" class="org.springframework.batch.core.configuration.xml.TestTasklet"/>
|
||||
|
||||
<beans:bean id="testListener" class="org.springframework.batch.core.configuration.xml.TestJobListener" />
|
||||
|
||||
<beans:bean id="testIncrementer" class="org.springframework.batch.core.configuration.xml.TestIncrementer" />
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="failingStep" next="step2"/>
|
||||
<step name="step2" />
|
||||
<step id="fail" ref="failingStep" next="s2"/>
|
||||
<step id="s2" ref="step2"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -7,8 +7,8 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="step2"/>
|
||||
<step name="step2" />
|
||||
<step id="s1" ref="step1" next="s2"/>
|
||||
<step id="s2" ref="step2"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -7,11 +7,11 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="step3">
|
||||
<next on="COMPLETED WITH SKIPS" to="step2" />
|
||||
<step id="s1" ref="step1" next="s3">
|
||||
<next on="COMPLETED WITH SKIPS" to="s2" />
|
||||
</step>
|
||||
<step name="step2" />
|
||||
<step name="step3" />
|
||||
<step id="s2" ref="step2"/>
|
||||
<step id="s3" ref="step3"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -7,7 +7,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" />
|
||||
<step id="s1" ref="step1" />
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -21,7 +21,7 @@
|
||||
</beans:bean>
|
||||
|
||||
<job id="job" job-repository="thisRepository">
|
||||
<step name="step1" />
|
||||
<step id="s1" ref="step1" />
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -11,10 +11,10 @@
|
||||
<job id="job">
|
||||
<split id="split1">
|
||||
<flow>
|
||||
<step name="failingStep"/>
|
||||
<step id="fail" ref="failingStep"/>
|
||||
</flow>
|
||||
<flow>
|
||||
<step name="step1"/>
|
||||
<step id="s1" ref="step1"/>
|
||||
</flow>
|
||||
</split>
|
||||
</job>
|
||||
|
||||
@@ -10,17 +10,17 @@
|
||||
|
||||
<job id="job">
|
||||
<split id="split1">
|
||||
<next on="FAILED" to="step3"/>
|
||||
<next on="FAILED" to="s3"/>
|
||||
<fail on="COMPLETED" />
|
||||
|
||||
<flow>
|
||||
<step name="step1"/>
|
||||
<step id="s1" ref="step1"/>
|
||||
</flow>
|
||||
<flow>
|
||||
<step name="failingStep"/>
|
||||
<step id="fail" ref="failingStep"/>
|
||||
</flow>
|
||||
</split>
|
||||
<step name="step3"/>
|
||||
<step id="s3" ref="step3"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -7,16 +7,16 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<split id="split" next="step4">
|
||||
<split id="split" next="s4">
|
||||
<flow>
|
||||
<step name="step1" next="step2"/>
|
||||
<step name="step2" />
|
||||
<step id="s1" ref="step1" next="s2"/>
|
||||
<step id="s2" ref="step2" />
|
||||
</flow>
|
||||
<flow>
|
||||
<step name="step3" />
|
||||
<step id="s3" ref="step3" />
|
||||
</flow>
|
||||
</split>
|
||||
<step name="step4" />
|
||||
<step id="s4" ref="step4" />
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -7,7 +7,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step">
|
||||
<step id="step">
|
||||
<tasklet reader="reader" processor="processor" writer="writer"
|
||||
commit-interval="10" skip-limit="20"
|
||||
retry-limit="3" cache-capacity="100"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="ft-step" tasklet="tasklet">
|
||||
<step id="ft-step" tasklet="tasklet">
|
||||
<listeners>
|
||||
<listener ref="listener" class="org.springframework.batch.core.configuration.xml.TestListener"/>
|
||||
</listeners>
|
||||
|
||||
@@ -4,23 +4,10 @@
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.0.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
|
||||
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" next="step2">
|
||||
<tasklet reader="reader" writer="writer" commit-interval="10"/>
|
||||
</step>
|
||||
<step name="step2" tasklet="tasklet"/>
|
||||
<step id="s1" ref="step2"/>
|
||||
</job>
|
||||
|
||||
<beans:bean id="tasklet" class="org.springframework.batch.core.configuration.xml.TestTasklet"/>
|
||||
|
||||
<beans:bean id="reader" class="org.springframework.batch.core.configuration.xml.TestReader"/>
|
||||
|
||||
<beans:bean id="writer" class="org.springframework.batch.core.configuration.xml.TestWriter"/>
|
||||
|
||||
<beans:bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
|
||||
|
||||
<beans:bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
|
||||
<beans:property name="transactionManager" ref="transactionManager" />
|
||||
</beans:bean>
|
||||
|
||||
</beans:beans>
|
||||
@@ -5,7 +5,7 @@
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
|
||||
|
||||
<job id="job">
|
||||
<step name="step">
|
||||
<step id="step">
|
||||
<tasklet reader="reader" processor="processor" writer="writer"
|
||||
start-limit="25" allow-start-if-complete="true"
|
||||
commit-interval="10" skip-limit="20"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="ft-step">
|
||||
<step id="ft-step">
|
||||
<tasklet reader="reader" processor="processor" writer="writer"
|
||||
commit-interval="10">
|
||||
<streams>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step">
|
||||
<step id="step">
|
||||
<tasklet reader="reader" processor="processor" writer="writer"
|
||||
commit-interval="10" skip-limit="20"
|
||||
retry-limit="3" cache-capacity="100"
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1" tasklet="tasklet">
|
||||
<step id="step1" tasklet="tasklet">
|
||||
<next on="*" to="step2" />
|
||||
</step>
|
||||
<step name="step2" tasklet="tasklet">
|
||||
<step id="step2" tasklet="tasklet">
|
||||
<listeners>
|
||||
<listener ref="listener"/>
|
||||
</listeners>
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
<beans:bean id="decider" class="org.springframework.batch.core.configuration.xml.StopJobParserTests$TestDecider"/>
|
||||
|
||||
<job id="job">
|
||||
<step name="failingStep">
|
||||
<pause on="FAILED" to="step2"/>
|
||||
<step id="fail" ref="failingStep">
|
||||
<pause on="FAILED" to="s2"/>
|
||||
</step>
|
||||
<step name="step2"/>
|
||||
<step id="s2" ref="step2"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -9,14 +9,14 @@
|
||||
<beans:bean id="decider" class="org.springframework.batch.core.configuration.xml.StopJobParserTests$TestDecider"/>
|
||||
|
||||
<job id="job">
|
||||
<step name="step1">
|
||||
<step id="s1" ref="step1">
|
||||
<pause on="COMPLETED" to="decision"/>
|
||||
</step>
|
||||
<decision id="decision" decider="decider">
|
||||
<next on="FOO" to="step2"/>
|
||||
<next on="FOO" to="s2"/>
|
||||
<end on="*" status="FAILED"/>
|
||||
</decision>
|
||||
<step name="step2" />
|
||||
<step id="s2" ref="step2"/>
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -7,10 +7,10 @@
|
||||
<beans:import resource="common-context.xml" />
|
||||
|
||||
<job id="job">
|
||||
<step name="step1">
|
||||
<next on="*" to="step2" />
|
||||
<step id="s1" ref="step1">
|
||||
<next on="*" to="s2" />
|
||||
</step>
|
||||
<step name="step2" />
|
||||
<step id="s2" ref="step2" />
|
||||
</job>
|
||||
|
||||
</beans:beans>
|
||||
@@ -14,7 +14,7 @@
|
||||
multiple environments. -->
|
||||
|
||||
<job id="loopJob" incrementer="jobParametersIncrementer">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="reader" writer="writer" commit-interval="3"/>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
|
||||
|
||||
<job id="beanWrapperMapperJob">
|
||||
<step name="step1" next="step2">
|
||||
<step id="step1" next="step2">
|
||||
<tasklet reader="tradeFileItemReader" processor="processor" writer="tradeWriter" commit-interval="1"></tasklet>
|
||||
</step>
|
||||
<step name="step2">
|
||||
<step id="step2">
|
||||
<tasklet reader="personFileItemReader" writer="personWriter" commit-interval="1"></tasklet>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</beans:description>
|
||||
|
||||
<job id="compositeItemWriterJob">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="fileItemReader" processor="processor" writer="compositeWriter" commit-interval="1">
|
||||
<streams>
|
||||
<stream ref="fileItemReader"/>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.0.xsd">
|
||||
|
||||
<job id="customerFilterJob">
|
||||
<step name="uploadCustomer">
|
||||
<step id="uploadCustomer">
|
||||
<tasklet reader="customerFileUploadReader"
|
||||
processor="customerUpdateProcessor"
|
||||
writer="customerUpdateWriter"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</beans:description>
|
||||
|
||||
<job id="delegateJob">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="reader" writer="writer" commit-interval="1"/>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -12,15 +12,15 @@
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
|
||||
|
||||
<job id="footballJob">
|
||||
<step name="playerload" next="gameLoad">
|
||||
<step id="playerload" next="gameLoad">
|
||||
<tasklet reader="playerFileItemReader" writer="playerWriter"
|
||||
commit-interval="${job.commit.interval}" />
|
||||
</step>
|
||||
<step name="gameLoad" next="playerSummarization">
|
||||
<step id="gameLoad" next="playerSummarization">
|
||||
<tasklet reader="gameFileItemReader" writer="gameWriter"
|
||||
commit-interval="${job.commit.interval}" />
|
||||
</step>
|
||||
<step name="playerSummarization">
|
||||
<step id="playerSummarization">
|
||||
<tasklet reader="playerSummarizationSource" writer="summaryWriter"
|
||||
commit-interval="${job.commit.interval}" />
|
||||
</step>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</beans:description>
|
||||
|
||||
<job id="headerFooterSample">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="reader" writer="writer" commit-interval="3">
|
||||
<streams>
|
||||
<stream ref="reader"/>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<beans:description>Example for Hibernate integration.</beans:description>
|
||||
|
||||
<job id="hibernateJob" restartable="false">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="hibernateItemReader"
|
||||
processor="creditIncreaseProcessor"
|
||||
writer="hibernateCreditWriter"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
|
||||
|
||||
<job id="ioSampleJob">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="itemReader" processor="itemProcessor" writer="itemWriter" commit-interval="2"/>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
|
||||
|
||||
<batch:job id="ioSampleJob">
|
||||
<batch:step name="step1">
|
||||
<batch:step id="step1">
|
||||
<batch:tasklet reader="itemReader" writer="itemWriter" commit-interval="2"/>
|
||||
</batch:step>
|
||||
</batch:job>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
|
||||
|
||||
<batch:job id="ioSampleJob">
|
||||
<batch:step name="step1">
|
||||
<batch:step id="step1">
|
||||
<batch:tasklet reader="itemReader" writer="itemWriter" commit-interval="2"/>
|
||||
</batch:step>
|
||||
</batch:job>
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
|
||||
|
||||
<job id="loopFlowSample">
|
||||
<step name="step1" next="step2">
|
||||
<step id="step1" next="step2">
|
||||
<tasklet reader="itemGenerator" writer="itemWriter" commit-interval="1"/>
|
||||
<listeners>
|
||||
<listener ref="resettingListener"/>
|
||||
</listeners>
|
||||
</step>
|
||||
<step name="step2" next="limitDecision">
|
||||
<step id="step2" next="limitDecision">
|
||||
<tasklet reader="itemGenerator" writer="itemWriter"
|
||||
commit-interval="1" allow-start-if-complete="true"/>
|
||||
<listeners>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
|
||||
|
||||
<job id="multilineJob">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="reader" writer="writer" commit-interval="1">
|
||||
<streams>
|
||||
<stream ref="fileItemReader"/>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<beans:import resource="multilineOrderIo.xml" />
|
||||
|
||||
<job id="multilineOrderJob">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="reader" processor="processor" writer="fileItemWriter" commit-interval="">
|
||||
<streams>
|
||||
<stream ref="fileItemWriter"/>
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
|
||||
|
||||
<job id="parallelJob">
|
||||
<step name="staging" next="loading">
|
||||
<step id="staging" next="loading">
|
||||
<tasklet reader="fileItemReader"
|
||||
processor="validatingProcessor"
|
||||
writer="stagingItemWriter"
|
||||
commit-interval="2"/>
|
||||
</step>
|
||||
<step name="loading">
|
||||
<step id="loading">
|
||||
<tasklet reader="stagingReader"
|
||||
processor="stagingProcessor"
|
||||
writer="tradeWriter"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
|
||||
|
||||
<job id="restartSampleJob" restartable="true">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="itemReader" processor="processor" writer="tradeWriter" commit-interval="2">
|
||||
<streams>
|
||||
<stream ref="fileItemReader"/>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
|
||||
|
||||
<job id="retrySample">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="itemGenerator"
|
||||
writer="itemWriter"
|
||||
commit-interval="1"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
|
||||
|
||||
<job id="skipJob" incrementer="incrementer">
|
||||
<step name="step1">
|
||||
<step id="step1">
|
||||
<tasklet reader="fileItemReader" processor="tradeProcessor" writer="tradeWriter"
|
||||
commit-interval="1" skip-limit="1">
|
||||
</tasklet>
|
||||
@@ -28,9 +28,9 @@
|
||||
</listeners>
|
||||
</step>
|
||||
|
||||
<step name="errorPrint1" next="step2" tasklet="errorLogTasklet"/>
|
||||
<step id="errorPrint1" next="step2" tasklet="errorLogTasklet"/>
|
||||
|
||||
<step name="step2" next="skipCheckingDecision">
|
||||
<step id="step2" next="skipCheckingDecision">
|
||||
<tasklet reader="tradeSqlItemReader" processor="tradeProcessor" writer="itemTrackingWriter"
|
||||
commit-interval="2" skip-limit="1">
|
||||
<skippable-exception-classes>
|
||||
@@ -49,7 +49,7 @@
|
||||
<end on="*"/>
|
||||
</decision>
|
||||
|
||||
<step name="errorPrint2" tasklet="errorLogTasklet"/>
|
||||
<step id="errorPrint2" tasklet="errorLogTasklet"/>
|
||||
</job>
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
|
||||
|
||||
<job id="tradeJob">
|
||||
<step name="step1" next="step2">
|
||||
<step id="step1" next="step2">
|
||||
<tasklet reader="fileItemReader"
|
||||
processor="validatingProcessor"
|
||||
writer="tradeWriter"
|
||||
@@ -24,10 +24,10 @@
|
||||
</streams>
|
||||
</tasklet>
|
||||
</step>
|
||||
<step name="step2" next="step3">
|
||||
<step id="step2" next="step3">
|
||||
<tasklet reader="tradeSqlItemReader" writer="customerWriter" commit-interval="1"/>
|
||||
</step>
|
||||
<step name="step3">
|
||||
<step id="step3">
|
||||
<tasklet reader="customerSqlItemReader" writer="creditWriter" commit-interval="1"/>
|
||||
</step>
|
||||
</job>
|
||||
|
||||
@@ -12,11 +12,25 @@
|
||||
http://www.springframework.org/schema/aop
|
||||
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
|
||||
|
||||
<beans:import resource="sample-steps.xml" />
|
||||
|
||||
<job id="sampleFlowJob">
|
||||
<step name="step1" next="step2"/>
|
||||
<step name="step2"/>
|
||||
<step id="step1" ref="s1" next="step2"/>
|
||||
<step id="step2" ref="s2"/>
|
||||
</job>
|
||||
|
||||
<beans:bean id="s1" parent="taskletStep">
|
||||
<beans:property name="tasklet">
|
||||
<beans:bean class="org.springframework.batch.test.sample.SampleTasklet">
|
||||
<beans:constructor-arg value="1" />
|
||||
</beans:bean>
|
||||
</beans:property>
|
||||
</beans:bean>
|
||||
|
||||
<beans:bean id="s2" parent="taskletStep">
|
||||
<beans:property name="tasklet">
|
||||
<beans:bean class="org.springframework.batch.test.sample.SampleTasklet">
|
||||
<beans:constructor-arg value="2" />
|
||||
</beans:bean>
|
||||
</beans:property>
|
||||
</beans:bean>
|
||||
|
||||
</beans:beans>
|
||||
Reference in New Issue
Block a user