如何 运行 并行执行 Wildfly 批处理作业

How to run a wildfly batch job in parallel

我在 wildfly 8.1 中使用批处理作业,我想从 执行批处理 然后做出决定,如果结果被接受 我想 运行 并行执行多个步骤。 我只是不确定如何在我的 myJob.xml 文件

中完成此操作
    <step id="availableRecords" next="anyRecordsAvailableDecider">
        <batchlet ref="availableRecords"/>
    </step>

    <decision id="anyRecordsAvailableDecider" ref="recordsAvailableDecider">
        <next on="recordesAvailable" to="getAvailableRecordsDetails"/>
        <stop on="noCardsAvailable"/>
    </decision>

<flow id="getAvailableRecordsDetails">
    <step id="getRecordTypeA">
        <batchlet ref="RecordTypeA"/>
    </step>
    <step id="getRecordTypeB">
        <batchlet ref="RecordTypeB"/>
    </step>
    <step id="getRecordTypeC">
        <batchlet ref="RecordTypeC"/>
    </step>
    <step id="getRecordTypeD">
        <batchlet ref="RecordTypeD"/>
    </step>
</flow>

那么是否可以围绕 getAvailableRecordsDetails 流程进行拆分,或者我应该以某种方式使用分区? 使用 Partition 会很好,因为我可以使用 PartitionMapper 在这些步骤中获取一些属性。

我找到了答案:

    <step id="availableRecords" next="anyRecordsAvailableDecider">
        <batchlet ref="availableRecords"/>
    </step>

    <decision id="anyRecordsAvailableDecider" ref="recordsAvailableDecider">
        <next on="recordesAvailable" to="split1"/>
        <stop on="noCardsAvailable"/>
    </decision>

    <split id="split1">
        <flow id="getAvailableRecordsDetails">
            <step id="getRecordTypeA">
                <batchlet ref="RecordTypeA"/>
            </step>
        </flow>
        <flow>
            <step id="getRecordTypeB">
                <batchlet ref="RecordTypeB"/>
            </step>
        </flow>
        <flow>
            <step id="getRecordTypeC">
                <batchlet ref="RecordTypeC"/>
            </step>
        </flow>
        <flow>
            <step id="getRecordTypeD">
                <batchlet ref="RecordTypeD"/>
            </step>
        </flow>
    </split>