当前位置: 首页 > 知识库问答 >
问题:

基于作业参数的跳步

凤昊东
2023-03-14

我已经阅读了spring批处理文档几次,并搜索了一种基于作业参数跳过作业步骤的方法。

<batch:job id="job" restartable="true"
        xmlns="http://www.springframework.org/schema/batch">
        <batch:step id="step1-partitioned-export-master">
            <batch:partition handler="partitionHandler"
                partitioner="partitioner" />
            <batch:next on="COMPLETED" to="step2-join" />
        </batch:step>
        <batch:step id="step2-join">
            <batch:tasklet>
                <batch:chunk reader="xmlMultiResourceReader" writer="joinXmlItemWriter"
                    commit-interval="1000">
                </batch:chunk>
            </batch:tasklet>
            <batch:next on="COMPLETED" to="step3-zipFile" />
        </batch:step>
        <batch:step id="step3-zipFile">
            <batch:tasklet ref="zipFileTasklet" />
            <!-- <batch:next on="COMPLETED" to="step4-fileCleanUp" /> -->
        </batch:step>
        <!-- <batch:step id="step4-fileCleanUp">
            <batch:tasklet ref="fileCleanUpTasklet" />
        </batch:step> -->
    </batch:job>

我希望能够跳过步骤4,如果希望通过指定在工作Paramaters。

我能找到的唯一相关的问题是如何根据应用程序参数--spring boot java config选择运行哪个spring批处理作业

这似乎表明应该创建两个不同的作业上下文,并在批处理步骤定义之外做出决定。

但是,必须创建4个单独的上下文文件,以便能够在每个导出案例中包含或不包含步骤4,这似乎有点疯狂。

我一定是漏掉了什么。

共有1个答案

关玮
2023-03-14

你不能用决定者做吗?http://docs.spring.io/spring-batch/reference/html/configurestep.html(第5.3.4章Programmatic Flow Decisions)

编辑:链接到更新的url https://docs.spring.io/spring-batch/trunk/reference/html/configurestep.html#ProgrammaticFlowDecisions

 类似资料:
  • 我得和Spring批处理问题。都与通过命令行传入的JobParameters有关。 第一期: 为了从JobParameters获取路径,我使用BeforeStep注释加载JobParameters并将它们复制到局部变量上。不幸的是,这不起作用。变量将为并且执行失败,因为文件无法打开。 如何访问读取器中的作业参数?我想将文件路径作为命令行参数传入,然后读取这个文件。

  • 问题内容: 通过以下脚本触发: 该脚本在 Mac上 成功运行,并且jenkins作业确实被触发。如何使此脚本在 Windows上运行 ?在 Windows 上运行以上PHP脚本时出现以下错误? 。另外,有没有更好的方法在PHP中执行cURL?看这个:http : //php.net/manual/en/book.curl.php,有人可以 根据上面的PHP脚本 (对于 Windows )中 我的c

  • 问题内容: 我正在尝试使函数采用可扩展的多个类之一,并在其Class中返回该对象的新实例,而不是的新实例。 我确定这是一个常见问题。有没有好的例子? 我从未使用过一个类作为输入参数,只使用了一个类的成员。根据我的搜索,这应该可行吗? 问题答案: 您是将对象作为参数传递还是作为的子类传递? 在这两种情况下,解决方案都几乎相同,您可以在Class对象上使用newInstance方法。 如果需要构造函数

  • 我在Spring中设置了几个线性步骤。如果在任何一点上,一个步骤失败了,作业应该失败。 这些步骤包括多个微线程,然后是一个基于块的步骤。即。: 步骤1 任务1 小任务2 读者 处理器 作家 如果出现问题,最明显的做法就是抛出异常。Spring Batch将处理此问题并记录所有内容。这种行为,尤其是打印堆栈跟踪,是不可取的,如果作业可以优雅地结束,并将状态设置为。 Tasklet当前直接在上设置。它

  • 我试图击中一个看起来像 。< br > < code > API shop . create([CreateCampaignService,{ auth _ token:user . token })] 我怎样才能使APIshop能够像这样的东西: 并点击 /

  • 我正在寻找一种基于方法接收到的参数来同步方法的方法,如下所示: 我希望基于参数同步方法,如下所示: 线程1:做某事(“A”); 线程2:doSomething(“B”); 线程3:doSomething(“C”); 线程4:做某事(“A”); 线程1、线程2和线程3将在没有同步的情况下执行代码,但是线程4将等待线程1完成代码,因为它具有相同的“a”值。 谢谢 更新 基于Tudor的解释,我认为我面