【问题标题】:Java EE JSR 352 - Jberet Dynamic Job Builder and ExecutionJava EE JSR 352 - Jberet 动态作业生成器和执行
【发布时间】:2017-06-19 11:27:40
【问题描述】:

从 Jberet userguide 了解到,可以动态构建作业以替代静态 xml,但该指南没有关于如何执行作业构建的任何输入,因此愿意知道如何执行作业。

Job job = new JobBuilder(jobName)
  .restartable(false)
  .property("jobk1", "J")
  .property("jobk2", "J")
  .listener("jobListener1", new String[]{"jobListenerk1", "#{jobParameters['jobListenerPropVal']}"},
          new String[]{"jobListenerk2", "#{jobParameters['jobListenerPropVal']}"})

  .step(new StepBuilder(stepName)
          .properties(new String[]{"stepk1", "S"}, new String[]{"stepk2", "S"})
          .batchlet(batchlet1Name, new String[]{"batchletk1", "B"}, new String[]{"batchletk2", "B"})
          .listener("stepListener1", stepListenerProps)
          .stopOn("STOP").restartFrom(stepName).exitStatus()
          .endOn("END").exitStatus("new status for end")
          .failOn("FAIL").exitStatus()
          .nextOn("*").to(step2Name)
          .build())

  .step(new StepBuilder(step2Name)
          .batchlet(batchlet1Name)
          .build())

          .build();

【问题讨论】:

    标签: java java-ee-7 jsr352 jberet


    【解决方案1】:

    简而言之,您使用以下方法启动使用 Java JSL 创建的作业:

    org.jberet.operations.AbstractJobOperator#start(org.jberet.job.model.Job, java.util.Properties)
    

    版本 1.3.0 测试版

    由于Java JSL是一个额外的特性,你需要获取JobOperator的JBeret实现并调用上面的start方法:

    import org.jberet.job.model.Job;
    import org.jberet.operations.JobOperatorImpl;
    import org.jberet.spi.JobOperatorContext;
    
    JobOperatorImpl jobOperator = (JobOperatorImpl) JobOperatorContext.getJobOperatorContext().getJobOperator();
    
    Job job = new JobBuilder(jobName)
                    .step(new StepBuilder(stepName)
                            .reader(...)
                            .writer(...)
                            .build())
                    .build();
    Properties params = null;
    long jobExecutionId = jobOperator.start(job, params);
    

    版本 1.2.0-Final

    JobOperatorImpl jobOperator = (JobOperatorImpl) BatchRuntime.getJobOperator();
    Properties jobProperties = new Properties();
    long jobExecutionId = jobOperator.start(job, jobProperties);
    

    更多详情请见JBeretsample app javaJSL,代码how to get JBeret job operator

    【讨论】:

    • 谢谢.. import org.jberet.spi.JobOperatorContext; 在 jberet-core-1.3.0-beta 中可用,但现在我使用的是 V1.2.0final,所以我做了JobOperatorImpl jobOperator = (JobOperatorImpl) BatchRuntime.getJobOperator();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    相关资源
    最近更新 更多