【问题标题】:JSR352 decide next step based on return parameter from DeciderJSR352 根据 Decider 的返回参数决定下一步
【发布时间】:2019-12-06 13:44:01
【问题描述】:

我想实现一个判定器,它返回需要执行的下一步的 ID。 (如果您想知道我为什么要这样做,这个问题与我的另一个问题有关:JEE Batch Job Specification with many optional Steps

<decision id="decider1" ref="skipNextStepDecider">
    <properties>
        <property name="condition" value="isExecuteSteps"/>
    </properties>
    <next on="*" to="STEP_ID_RETURNED_BY_DECIDER"/>
    <end on="SKIP"/>
</decision>

有没有办法做到这一点? 我将 JSR352 与 Websphere Liberty 一起使用,以防万一。

更新

我的目的是避免以下情况:

<decision id="decider1" ref="skipNextStepDecider">
    <properties>
        <property name="condition" value="isExecuteSteps"/>
    </properties>
    <next on="STEP1" to="step1"/>
    <next on="STEP2" to="step2"/>
    <next on="STEP3" to="step3"/>
    <end on="SKIP"/>
</decision>

【问题讨论】:

    标签: batch-processing websphere-liberty jsr352 java-batch


    【解决方案1】:

    为此,您需要提前了解可能的目标步骤...

    JSL 被预先解析(大部分情况下),因此您无法在“to”值中放入任何可以通过 step/decider 处理的结果来解析的内容。

    可能是一个有趣的规范更新可能性。

    【讨论】:

    • 我确实提前知道了可能的目标步骤。这对我有什么帮助? (我想避免列出一长串下一个属性)
    • @DFollis 只是指出了这个解决方案的含义。您提前知道完整的步骤列表这一事实使这成为可能的解决方案。它不会让它变得更干净或更优雅。你必须包括下一个元素的长列表。如果您不知道目标步骤,这将是一个非首发。
    • 这不可能的原因属于更广泛的问题,即 JSL 替换通常不允许在执行时计算任何值(这是@DFollis 提出的另一点)。我们已经针对 JSR 352 规范打开了这个问题......我们还没有恢复 Jakarta Batch 项目的问题跟踪器,但应该作为 Jakarta 的下一步。
    • 非常感谢您的澄清。
    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多