【问题标题】:Trouble updating job deadline in specific jobstream through tws Java API通过 tws Java API 在特定作业流中更新作业截止日期时遇到问题
【发布时间】:2018-02-05 22:46:35
【问题描述】:

我想使用 Java-API 更改特定作业流中作业的截止日期。 更新作业流本身的截止日期没有问题。在作业流级别上使用查询过滤器,我得到了作业流标头 ID (jsh) 并实例化了一个 JobStream 对象。这可以修改和设置。

  JobStream js = (JobStream) model.getTWSObject(JobStream.class, jsh.getId(), false, context);
  TimeRestrictions t = js.getTimeRestrictions();
  t.setDeadlineOffset(Long.parseLong(newDlineOffset));
  js.setTimeRestrictions(t);
  model.setTWSObject(js, false, false, context);

但是,我看不到如何在 JobStream 中更新作业的时间限制。我可以在作业流中获取作业列表,并找到这些作业本身的时间限制:

List<Job> joblist = js.getJobs();
  for (Job j : joblist) {
    j.getTimeRestrictions().getDeadlineOffset();
  }

但是,在编辑作业对象后,我似乎无法再次更新作业流对象;作业流对象没有 setJobs 函数。

有人知道我如何实现这一点吗?

【问题讨论】:

    标签: java workload-scheduler tivoli-work-scheduler


    【解决方案1】:

    原来没有必要再次显式设置 JobStream 的 Job。当编辑 Job,然后只设置 JobStream 对象时,编辑后的 ​​Job-properties 也包含在 JobStream-object 中。

    JobStream js = (JobStream) model.getTWSObject(JobStream.class, jsh.getId(), false, context);
    List<Job> joblist = js.getJobs();
      for (Job j : joblist) {
        TimeRestrictions t = j.getTimeRestrictions();
        t.setDeadLineOffset(offset);
        j.setTimeRestrictions(t);
      }
    model.setTWSObject(js, false, false, context);
    

    【讨论】:

      【解决方案2】:

      为了更新作业流中的作业,您应该更改作业中的值,然后再次设置作业流

      在你的例子中:

              List<Job> joblist = js.getJobs();
                for (Job j : joblist) {
                  j.getTimeRestrictions().setDeadlineOffset(Long.parseLong(newDlineOffset));              
                }
      
              model.setTWSObject(js, false, false, context);
      

      我希望这会有所帮助。

      洛伦佐

      【讨论】:

      • 我昨天也意识到了(见帖子),但感谢您的回答!
      • 不客气,我很乐意协助您进一步澄清 tws api!
      猜你喜欢
      • 1970-01-01
      • 2021-09-21
      • 2016-09-21
      • 2018-10-23
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多