/** * @inheritDoc * * @see org.drools.time.TimerService#removeJob(org.drools.time.JobHandle) */ public boolean removeJob(JobHandle jobHandle) { jobHandle.setCancel( true ); jobFactoryManager.removeTimerJobInstance( ((DefaultJobHandle) jobHandle).getTimerJobInstance() ); synchronized( queue ) { return this.queue.remove( (Callable<Void>) ((DefaultJobHandle) jobHandle).getTimerJobInstance() ); } }
public boolean isPendingReactivation() { DefaultJobHandle timeHandle = (DefaultJobHandle) getJobHandle(); Trigger trig = timeHandle.getTimerJobInstance().getTrigger(); return trig.hasNextFireTime() != null && trig instanceof CronTrigger; } }
public void write(JobContext jobCtx, MarshallerWriteContext outputCtx) throws IOException { outputCtx.writeShort( PersisterEnums.EXPIRE_TIMER ); // ExpireJob, no state ExpireJobContext ejobCtx = (ExpireJobContext) jobCtx; WorkingMemoryReteExpireAction expireAction = ejobCtx.getExpireAction(); outputCtx.writeInt( expireAction.getFactHandle().getId() ); outputCtx.writeUTF( expireAction.getNode().getEntryPoint().getEntryPointId() ); outputCtx.writeUTF( ((ClassObjectType) expireAction.getNode().getObjectType()).getClassType().getName() ); DefaultJobHandle jobHandle = (DefaultJobHandle) ejobCtx.getJobHandle(); PointInTimeTrigger trigger = (PointInTimeTrigger) jobHandle.getTimerJobInstance().getTrigger(); outputCtx.writeLong( trigger.hasNextFireTime().getTime() ); }
public Trigger createTrigger( Activation item, WorkingMemory wm ) { long timestamp = ((InternalWorkingMemory) wm).getTimerService().getCurrentTime(); String[] calendarNames = item.getRule().getCalendars(); Calendars calendars = ((InternalWorkingMemory) wm).getCalendars(); long timeSinceLastFire = 0; ScheduledAgendaItem schItem = ( ScheduledAgendaItem ) item; if ( schItem.getJobHandle() != null ) { DefaultJobHandle jh = ( DefaultJobHandle) schItem.getJobHandle(); IntervalTrigger preTrig = ( IntervalTrigger ) jh.getTimerJobInstance().getTrigger(); if ( preTrig.hasNextFireTime() != null ) { timeSinceLastFire = timestamp - preTrig.getLastFireTime().getTime(); } } long newDelay = (delay != null ? evalDelay( item, wm ) : 0) - timeSinceLastFire; if ( newDelay < 0 ) { newDelay = 0; } return new IntervalTrigger( timestamp, this.startTime, this.endTime, this.repeatLimit, newDelay, period != null ? evalPeriod( item, wm ) : 0, calendarNames, calendars ); }
public ProtobufMessages.Timers.Timer serialize(JobContext jobCtx, MarshallerWriteContext outputCtx) { // ExpireJob, no state ExpireJobContext ejobCtx = ( ExpireJobContext ) jobCtx; WorkingMemoryReteExpireAction expireAction = ejobCtx.getExpireAction(); DefaultJobHandle jobHandle = ( DefaultJobHandle ) ejobCtx.getJobHandle(); PointInTimeTrigger trigger = ( PointInTimeTrigger ) jobHandle.getTimerJobInstance().getTrigger(); return ProtobufMessages.Timers.Timer.newBuilder() .setType( ProtobufMessages.Timers.TimerType.EXPIRE ) .setExpire( ProtobufMessages.Timers.ExpireTimer.newBuilder() .setHandleId( expireAction.getFactHandle().getId() ) .setEntryPointId( expireAction.getNode().getEntryPoint().getEntryPointId() ) .setClassName( ((ClassObjectType)expireAction.getNode().getObjectType()).getClassType().getName() ) .setNextFireTimestamp( trigger.hasNextFireTime().getTime() ) .build() ) .build(); } }