如何使用Java 1.8从存储在DB for Spring Batch应用程序中的JSON创建动态步骤?因此,将在工作启动后创建步骤

时间:2019-07-16 07:13:40

标签: json java-8 spring-batch

我必须在启动Job之后创建步骤。我的工作参数将从数据库中获取JSON,其中包含步骤和子步骤。如果JSON中没有该步骤,则不必将其包含在我的Job中。步骤可以是随机顺序,客户可以更改步骤的顺序。

我已经创建了自定义的作业工厂,它将返回流程给我,因此,如果有与文件相关的任务,我将为其读取JSON并在主作业中创建/包含流程。使用这种方法,我无法在作业启动后查询数据库,而是在作业配置时(使用注释)运行了JSON查询。

然后,我为每个步骤编写了决策程序,并为该特定步骤在Job and Continue中添加了所有决策程序。但是在这里,我失去了阶跃动力。

jobbuilderFactory.get("DynamicJob").start(bootstrapData())
.next(step1Decider).on("CONTINUE").to(step1Execution())
.next(step2Decider).on("CONTINUE").to(step2Execution())
.
.
.end().build();

我想要得到的 1.用户将使用一些参数启动作业 2.使用作业参数值从数据库获取JSON 3.读取/解析JSON以创建步骤并将其包含在Job中 4.开始执行作业

1 个答案:

答案 0 :(得分:0)

一旦您从JSON定义了所有步骤,就可以动态创建作业定义,如下所示:

Step bootstrapData, step1, step2;

JobFlowBuilder jobBuilder = jobBuilderFactory.get("myjob").flow(bootstrapData);
if (someCondition()) {
    jobBuilder.next(step1);
}
if (someOtherCondition()) {
    jobBuilder.on("CONTINUE").to(step2);
}

// etc