首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring-java-config创建一个'decider-step-loop‘

使用spring-java-config创建一个'decider-step-loop‘
EN

Stack Overflow用户
提问于 2014-06-19 20:48:03
回答 2查看 5.5K关注 0票数 2

我正在尝试将一个spring-batch作业移植到一个基于java-config的作业,该作业是在xml中定义的。这是我的job-configuration-file的一个片段:

代码语言:javascript
复制
<decision id="decision" decider="someDecider">
 <next on="continue" to="stepCont" />
 <next on="timeout" to="stepTimeout" />
 <end on="COMPLETED" />
</decision>

<step id="stepCont" next="stepReport">
  ... do something
</step>

<step id="stepReport" next="decision">
  ... create report
</step>

<step id="stepTimeout">
  ...
</step>

有没有办法用spring-java-config创建这样的循环?

我开始说:

代码语言:javascript
复制
.get("myJob")
.start(someStepBefore())
.next(someDecider).on("timeout").to(stepTimeout())
.from(someDecider).on("continue").to(stepCont())
.from(someDecider).on("COMPLETED").end().build()
.build();

它必须是这样的:

代码语言:javascript
复制
.get("myJob")
.start(someStepBefore())
.next(someDecider).on("timeout").to(stepTimeout())
.from(someDecider).on("continue").to(stepCont()).next(someDecider)...
.from(someDecider).on("COMPLETED").end().build()
.build();

我的工作就像loopFlowSample一样。如果没有xml,我如何实现它呢?

EN

回答 2

Stack Overflow用户

发布于 2014-11-15 22:51:57

这样如何:

代码语言:javascript
复制
    FlowBuilder<Flow> flowBuilder = new FlowBuilder<Flow>("flow1");

    Flow flow = flowBuilder
        .start(importPersonStep)
        .next(loopDecider)
        .on("CONTINUE")
        .to(importPersonStep)
        .from(loopDecider)
        .on("COMPLETED")
        .end()
        .build();

    return jobs.get("importUserJob")
            .incrementer(new RunIdIncrementer())
            .start(flow)
            .end()
            .build();
票数 1
EN

Stack Overflow用户

发布于 2018-06-21 20:06:07

我知道的很晚,但是我没有找到一个正确的例子,这个问题一直出现在我的谷歌搜索中。

这是一个最新的spring batch的工作示例。

代码语言:javascript
复制
return jobs.get("myJob")
    .start(someStepBefore)           
    .next(stepReport)
    .next(someDecider).on("timeout").to(stepTimeout)
    .from(someDecider).on("continue").to(stepCont)
    .from(someDecider).on("COMPLETED").end() 
    .from(stepCont).next(someDecider).on("timeout").to(stepTimeout)
    .from(stepCont).from(someDecider).on("continue").to(stepCont)
    .from(stepCont).from(someDecider).on("COMPLETED").end()
    .end()
    .build();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24307020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档