Java EE 7批处理API(JSR-352):是否可以停止单个步骤而不是全部工作?

问题描述 投票:0回答:1

Note:JSR-352,Java EE,在wildfly 17.0.1上,没有春季

我已经在xml中定义了以下作业:

<?xml version="1.0" encoding="UTF-8"?>
<job id="xml2json" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/jobXML_1_0.xsd" version="1.0">
    <flow id="flow">
        <step id="step1" next="step2">
            <batchlet ref="xmlRead">
            </batchlet>
        </step>
        <step id="step2">
            <batchlet ref="notificationBatchlet">
            </batchlet>        
        </step>
    </flow>
</job>

我的要求是处理作业停止,并且我可以覆盖xmlRead中的stop()(第一步)。

问题是我还需要确保始终执行第二步,但是如果我在第一批XmlRead中运行以下代码,请从我的测试中进行:

        if (shouldStop) {
            log.warn("xmlRead - job stopped by user");
            return FAILED.toString();
        }

在该作业的结束出口状态将失败(错误!!),但是从不执行第二步。

任何想法如何为这种情况建模?

java java-ee-7 jsr352 jberet jbatch
1个回答
1
投票

第一步中,您可以具有过渡元素列表,而不是next属性,以便根据退出状态(批处理的返回值)来指导作业的执行流程。 Somethig如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.