Как условно пропустить шаг Spring Batch? - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть этап предварительных условий, этап тестирования и этап постусловий.Я хотел бы пропустить процесс тестирования, если этап предварительных условий не выполнен.Следуя документам Настройка шага не работает, процесс тестирования выполняется независимо от того, что.Что мне не хватает?Использование Spring Boot 2.0.5.RELEASE с Spring Batch 4.0.1.RELEASE.

val testingFlow = FlowBuilder<SimpleFlow>("TESTING_FLOW")
    .start(testExecutorDecider)
    .on(TestExecutor.JUNIT.name).to(junitExecutionStep())
    .from(testExecutorDecider).on(TestExecutor.GRADLE.name).to(gradleExecutionStep())
    .end()

return jobs.get(touchstoneProperties.jobName)
    .start(preConditionsStep())
    .on("*").to(testingFlow)
    .from(preConditionsStep()).on("FAILED").to(postConditionsStep())
    .from(testingFlow).on("*").to(postConditionsStep())
    .end()
    .build()

1 Ответ

0 голосов
/ 30 сентября 2018

Я сам понял.

val testingFlow = FlowBuilder<SimpleFlow>("TESTING_FLOW")
    .start(testExecutorDecider)
    .on(TestExecutor.JUNIT.name).to(junitExecutionStep())
    .from(testExecutorDecider).on(TestExecutor.GRADLE.name).to(gradleExecutionStep())
    .from(testExecutorDecider).on("*").end()
    .build()

return jobs.get(touchstoneProperties.jobName)
    .start(preConditionsStep())
    .on("*").to(testingFlow)
    .from(testingFlow).on("*").to(postConditionsStep()).end()
    .build()

TestExecutorDecider

class TestExecutorDecider(private val touchstoneProperties: TouchstoneProperties) : JobExecutionDecider {
    companion object {
        private val LOGGER = LoggerFactory.getLogger(TestExecutorDecider::class.java)
    }

    override fun decide(jobExecution: JobExecution, stepExecution: StepExecution): FlowExecutionStatus {
        return when (stepExecution.exitStatus.compareTo(ExitStatus.FAILED)) {
            0 -> FlowExecutionStatus("SKIPPED")
            else -> {
                LOGGER.info("Test executor: {}", touchstoneProperties.testExecutor)
                return FlowExecutionStatus(touchstoneProperties.testExecutor.name)
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...