0

我想使用 CMS 上的 java jar 文件重新触发所有失败的计划。

只是为了测试,我在下面编写了这个程序,我想它会重新触发某个计划,该计划成功完成。

请帮我找出我哪里出错了,因为当我在 CMS 上运行这个程序时它显示成功,但日程没有被触发

public class Schedule_CRNA implements IProgramBase {
 public void run(IEnterpriseSession enterprisesession, IInfoStore infostore, String str[]) throws SDKException {
  //System.out.println("Connected to " + enterprisesession.getCMSName() + "CMS");
  //System.out.println("Using the credentials of " + enterprisesession.getUserInfo().getUserName() );
  IInfoObjects oInfoObjects = infostore.query("SELECT * from CI_INFOOBJECTS WHERE si_instance=1 and si_schedule_status=1 and SI_ID=9411899");
  for (int x = 0; x < oInfoObjects.size(); x++) {
   IInfoObject oI = (IInfoObject) oInfoObjects.get(x);
   IInfoObjects oScheds = infostore.query("select * from ci_infoobjects,ci_appobjects where si_id = " + oI.getID());
   IInfoObject oSched = (IInfoObject) oScheds.get(0);

   Integer iOwner = (Integer) oI.properties().getProperty("SI_OWNERID").getValue();

   oSched.getSchedulingInfo().setScheduleOnBehalfOf(iOwner);
   oSched.getSchedulingInfo().setRightNow(true);
   oSched.getSchedulingInfo().setType(CeScheduleType.ONCE);
   infostore.schedule(oScheds);
   oI.deleteNow();
  }
 }
}
4

1 回答 1

0

您似乎错过了将检索到的计划对象放入集合中。

代码段的最后一部分应该是:

oSched.getSchedulingInfo().setScheduleOnBehalfOf(iOwner);
oSched.getSchedulingInfo().setRightNow(true);
oSched.getSchedulingInfo().setType(CeScheduleType.ONCE);
IInfoObjects objectsToSchedule = infostore.newInfoObjectCollection();
objectsToSchedule.add(oI);
infostore.schedule(objectsToSchedule);
oI.deleteNow();

您不能直接安排报告,而是通过收集来安排报告。完整样本在这里

此外,您的编码从存储库中删除对象并在每次迭代时再次重新安排它似乎很奇怪,但这取决于您的要求。

于 2020-05-25T07:19:13.057 回答