protected void updateBasedOnTrigger(TimerInstance timerInstance) { Trigger trigger = ((DefaultJobHandle)timerInstance.getJobHandle()).getTimerJobInstance().getTrigger(); if (trigger instanceof IntervalTrigger && timerInstance.getPeriod() > 0) { IntervalTrigger intervalTrigger = (IntervalTrigger) trigger; if (timerInstance.getRepeatLimit() > 0) { timerInstance.setRepeatLimit(intervalTrigger.getRepeatLimit() - intervalTrigger.getRepeatCount() + 1); // +1 because repeatCount contains also one last scheduled, but cancelled trigger } long delay; if (intervalTrigger.getLastFireTime() != null) { // it is already fired calculate the new delay using the period instead of the delay delay = timerInstance.getPeriod() - (System.currentTimeMillis() - intervalTrigger.getLastFireTime().getTime()); } else { delay = timerInstance.getDelay() - (System.currentTimeMillis() - intervalTrigger.getCreatedTime().getTime()); } timerInstance.setDelay(delay); } }
public static JBPMMessages.ProcessTimer.TimerInstance writeTimer(MarshallerWriteContext context, TimerInstance timer) { Builder _timer = JBPMMessages.ProcessTimer.TimerInstance.newBuilder() .setId( timer.getId() ) .setTimerId( timer.getTimerId() ) .setSessionId( timer.getSessionId() ) .setDelay( timer.getDelay() ) .setPeriod( timer.getPeriod() ) .setProcessInstanceId( timer.getProcessInstanceId() ) .setActivatedTime( timer.getActivated().getTime() ) .setRepeatLimit(timer.getRepeatLimit()); Date lastTriggered = timer.getLastTriggered(); if ( lastTriggered != null ) { _timer.setLastTriggered( lastTriggered.getTime() ); } return _timer.build(); }
public void registerTimer(final TimerInstance timer, String processId, Map<String, Object> params) { try { kruntime.startOperation(); timer.setId(++timerId); timer.setProcessInstanceId(-1l); timer.setSessionId(((StatefulKnowledgeSession) kruntime).getIdentifier()); timer.setActivated(new Date()); Trigger trigger = null; if (timer.getCronExpression() != null) { Date startTime = new Date(timerService.getCurrentTime() + 1000); trigger = new CronTrigger(timerService.getCurrentTime(), startTime, null, -1, timer.getCronExpression(), null, null); // cron timers are by nature repeatable timer.setPeriod(1); } else { trigger = new IntervalTrigger(timerService.getCurrentTime(), null, null, timer.getRepeatLimit(), timer.getDelay(), timer.getPeriod(), null, null); } StartProcessJobContext ctx = new StartProcessJobContext(timer, trigger, processId, params, this.kruntime); JobHandle jobHandle = this.timerService.scheduleJob(startProcessJob, ctx, trigger); timer.setJobHandle(jobHandle); timers.put(timer.getId(), timer); } finally { kruntime.endOperation(); } }
public void registerTimer(final TimerInstance timer, ProcessInstance processInstance) { try { kruntime.startOperation(); timer.setId(++timerId); timer.setProcessInstanceId(processInstance.getId()); timer.setSessionId(((KieSession) kruntime).getIdentifier()); timer.setActivated(new Date()); Trigger trigger = null; if (timer.getCronExpression() != null) { Date startTime = new Date(timerService.getCurrentTime() + 1000); trigger = new CronTrigger(timerService.getCurrentTime(), startTime, null, -1, timer.getCronExpression(), null, null); // cron timers are by nature repeatable timer.setPeriod(1); } else { trigger = new IntervalTrigger(timerService.getCurrentTime(), null, null, timer.getRepeatLimit(), timer.getDelay(), timer.getPeriod(), null, null); } ProcessJobContext ctx = new ProcessJobContext(timer, trigger, processInstance.getId(), this.kruntime); JobHandle jobHandle = this.timerService.scheduleJob(processJob, ctx, trigger); timer.setJobHandle(jobHandle); timers.put(timer.getId(), timer); } finally { kruntime.endOperation(); } }
protected void updateBasedOnTrigger(TimerInstance timerInstance) { Trigger trigger = ((DefaultJobHandle)timerInstance.getJobHandle()).getTimerJobInstance().getTrigger(); if (trigger instanceof IntervalTrigger && timerInstance.getPeriod() > 0) { IntervalTrigger intervalTrigger = (IntervalTrigger) trigger; if (timerInstance.getRepeatLimit() > 0) { timerInstance.setRepeatLimit(intervalTrigger.getRepeatLimit() - intervalTrigger.getRepeatCount() + 1); // +1 because repeatCount contains also one last scheduled, but cancelled trigger } long delay; if (intervalTrigger.getLastFireTime() != null) { // it is already fired calculate the new delay using the period instead of the delay delay = timerInstance.getPeriod() - (System.currentTimeMillis() - intervalTrigger.getLastFireTime().getTime()); } else { delay = timerInstance.getDelay() - (System.currentTimeMillis() - intervalTrigger.getCreatedTime().getTime()); } timerInstance.setDelay(delay); } }
public static JBPMMessages.ProcessTimer.TimerInstance writeTimer(MarshallerWriteContext context, TimerInstance timer) { Builder _timer = JBPMMessages.ProcessTimer.TimerInstance.newBuilder() .setId( timer.getId() ) .setTimerId( timer.getTimerId() ) .setSessionId( timer.getSessionId() ) .setDelay( timer.getDelay() ) .setPeriod( timer.getPeriod() ) .setProcessInstanceId( timer.getProcessInstanceId() ) .setActivatedTime( timer.getActivated().getTime() ) .setRepeatLimit(timer.getRepeatLimit()); Date lastTriggered = timer.getLastTriggered(); if ( lastTriggered != null ) { _timer.setLastTriggered( lastTriggered.getTime() ); } return _timer.build(); }
public void registerTimer(final TimerInstance timer, String processId, Map<String, Object> params) { try { kruntime.startOperation(); timer.setId(++timerId); timer.setProcessInstanceId(-1l); timer.setSessionId(((StatefulKnowledgeSession) kruntime).getIdentifier()); timer.setActivated(new Date()); Trigger trigger = null; if (timer.getCronExpression() != null) { Date startTime = new Date(timerService.getCurrentTime() + 1000); trigger = new CronTrigger(timerService.getCurrentTime(), startTime, null, -1, timer.getCronExpression(), null, null); // cron timers are by nature repeatable timer.setPeriod(1); } else { trigger = new IntervalTrigger(timerService.getCurrentTime(), null, null, timer.getRepeatLimit(), timer.getDelay(), timer.getPeriod(), null, null); } StartProcessJobContext ctx = new StartProcessJobContext(timer, trigger, processId, params, this.kruntime); JobHandle jobHandle = this.timerService.scheduleJob(startProcessJob, ctx, trigger); timer.setJobHandle(jobHandle); timers.put(timer.getId(), timer); } finally { kruntime.endOperation(); } }
public void registerTimer(final TimerInstance timer, ProcessInstance processInstance) { try { kruntime.startOperation(); timer.setId(++timerId); timer.setProcessInstanceId(processInstance.getId()); timer.setSessionId(((KieSession) kruntime).getIdentifier()); timer.setActivated(new Date()); Trigger trigger = null; if (timer.getCronExpression() != null) { Date startTime = new Date(timerService.getCurrentTime() + 1000); trigger = new CronTrigger(timerService.getCurrentTime(), startTime, null, -1, timer.getCronExpression(), null, null); // cron timers are by nature repeatable timer.setPeriod(1); } else { trigger = new IntervalTrigger(timerService.getCurrentTime(), null, null, timer.getRepeatLimit(), timer.getDelay(), timer.getPeriod(), null, null); } ProcessJobContext ctx = new ProcessJobContext(timer, trigger, processInstance.getId(), this.kruntime); JobHandle jobHandle = this.timerService.scheduleJob(processJob, ctx, trigger); timer.setJobHandle(jobHandle); timers.put(timer.getId(), timer); } finally { kruntime.endOperation(); } }