Re-trigger scheduled instances with SAP BO API?

313 views Asked by At

I want to re-trigger all the failed schedules using a java jar file on CMS.

Just for testing I wrote this below program which I suppose would re-trigger a certain schedule, which completed successfully.

Please help me find where did I go wrong since it shows success when I run this program on CMS but the schedule doesn't get triggered

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();
  }
 }
}
1

There are 1 answers

1
Suncatcher On

It seems you missed the putting of your retrieved scheduled object into collection.

The last part in your snippet should be:

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();

You cannot schedule report directly but rather through collection. Full sample is here.

Also your coding deleting object from repository and rescheduling it again with each iteration seems weird, but it is up to your requirement.