diff --git a/scenario-task/README.adoc b/scenario-task/README.adoc
index d6182fe..4c1a2e6 100644
--- a/scenario-task/README.adoc
+++ b/scenario-task/README.adoc
@@ -30,6 +30,8 @@ docker run spring/scenario-task:latest
### Properties
+All properties should be prefixed with `io.spring.`
+
* *jobName* - The name associated with the batch job. The default is "scenario-job".
* *stepName* - The name associated with the single step for the job. The default is "scenario-step".
* *failBatch* - If true, the batch will throw a {@link ExpectedException}. Defaults to false.
diff --git a/scenario-task/pom.xml b/scenario-task/pom.xml
index c2c795e..c645ac7 100644
--- a/scenario-task/pom.xml
+++ b/scenario-task/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.6.3
+ 2.7.18
io.spring
@@ -16,8 +16,8 @@
8
- 2021.0.0
- 1.15.3
+ 2021.0.5
+ 1.19.7
21.1.0.0
diff --git a/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java b/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java
index bb3d80c..25c7b95 100644
--- a/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java
+++ b/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java
@@ -2,8 +2,10 @@ package io.spring.scenariotask;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.task.configuration.EnableTask;
@SpringBootApplication
+@EnableTask
public class ScenarioTaskApplication {
public static void main(String[] args) {
diff --git a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java
index 425a43b..0bbaa6c 100644
--- a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java
+++ b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java
@@ -117,4 +117,17 @@ public class ScenarioProperties {
public void setIncludeRunidIncrementer(boolean includeRunidIncrementer) {
this.includeRunidIncrementer = includeRunidIncrementer;
}
+
+ @Override
+ public String toString() {
+ return "ScenarioProperties{" +
+ "jobName='" + jobName + '\'' +
+ ", stepName='" + stepName + '\'' +
+ ", failBatch=" + failBatch +
+ ", failTask=" + failTask +
+ ", launchBatchJob=" + launchBatchJob +
+ ", pauseInSeconds=" + pauseInSeconds +
+ ", includeRunidIncrementer=" + includeRunidIncrementer +
+ '}';
+ }
}
diff --git a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java
index 6221e32..b8448b7 100644
--- a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java
+++ b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java
@@ -42,7 +42,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.cloud.task.configuration.EnableTask;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@@ -52,7 +51,6 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
*
* @author Glenn Renfro
*/
-@EnableTask
@EnableBatchProcessing
@Configuration
@EnableConfigurationProperties(ScenarioProperties.class)
@@ -61,10 +59,7 @@ public class ScenarioTaskConfiguration {
private static final Log logger = LogFactory.getLog(ScenarioTaskConfiguration.class);
@Configuration
- @ConditionalOnProperty(
- value = "io.spring.launchBatchJob",
- havingValue = "true",
- matchIfMissing = true)
+ @ConditionalOnProperty(value = "io.spring.launch-batch-job", havingValue = "true", matchIfMissing = true)
static class BatchConfig {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@@ -80,16 +75,17 @@ public class ScenarioTaskConfiguration {
@Bean
public Job pausedemoAgain() {
+ logger.info("properties=:" + properties);
SimpleJobBuilder jobBuilder = this.jobBuilderFactory.get(properties.getJobName())
.start(this.stepBuilderFactory.get(properties.getStepName())
+ .allowStartIfComplete(true)
.tasklet((contribution, chunkContext) -> {
logger.info(String.format("%s is starting", properties.getStepName()));
if (properties.getPauseInSeconds() > 0) {
- logger.info(String.format("%s is pausing", properties.getStepName()));
+ logger.info(String.format("%s is pausing for %d seconds", properties.getStepName(), properties.getPauseInSeconds()));
Thread.sleep(properties.getPauseInSeconds() * 1000);
}
logger.info(String.format("%s is completing", properties.getStepName()));
-
if (jobExecutionCount() == 1 && properties.isFailBatch()) {
throw new ExpectedException("Exception thrown during Batch Execution");
}
@@ -151,6 +147,10 @@ public class ScenarioTaskConfiguration {
public ApplicationRunner applicationRunner(ScenarioProperties properties) {
return args -> {
logger.info("ApplicationRunner Executing for ScenarioTaskApplication");
+ if (!properties.isLaunchBatchJob() && properties.getPauseInSeconds() > 0) {
+ logger.info(String.format("Task is pausing for %d seconds", properties.getPauseInSeconds()));
+ Thread.sleep(properties.getPauseInSeconds() * 1000);
+ }
if (properties.isFailTask()) {
throw new ExpectedException("Exception thrown during Task Execution");
}
diff --git a/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java b/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java
index f054aa1..6338d74 100644
--- a/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java
+++ b/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java
@@ -83,7 +83,7 @@ public class ScenarioTaskApplicationTests {
}
private static TaskExplorer taskExplorer() {
- TaskExecutionDaoFactoryBean taskExecutionDaoFactoryBean = new TaskExecutionDaoFactoryBean(dataSource, "TASK_");
+ TaskExecutionDaoFactoryBean taskExecutionDaoFactoryBean = new TaskExecutionDaoFactoryBean(dataSource);
return new SimpleTaskExplorer(taskExecutionDaoFactoryBean);
}