public Trigger createTrigger(long timestamp, String[] calendarNames, Calendars calendars) { long offset = timestamp + duration; if( NumberUtils.isAddOverflow( timestamp, duration, offset ) ) { // this should not happen, but possible in some odd simulation scenarios, so creating a trigger for immediate execution instead return new PointInTimeTrigger( timestamp, calendarNames, calendars ); } else { return new PointInTimeTrigger( offset, calendarNames, calendars ); } }
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 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(); } }
public void deserialize(MarshallerReaderContext inCtx, Timer _timer) throws ClassNotFoundException { ExpireTimer _expire = _timer.getExpire(); InternalFactHandle factHandle = inCtx.handles.get( _expire.getHandleId() ); EntryPointNode epn = ((ReteooRuleBase)inCtx.wm.getRuleBase()).getRete().getEntryPointNode( new EntryPoint( _expire.getEntryPointId() ) ); Class<?> cls = ((ReteooRuleBase)inCtx.wm.getRuleBase()).getRootClassLoader().loadClass( _expire.getClassName() ); ObjectTypeNode otn = epn.getObjectTypeNodes().get( new ClassObjectType( cls ) ); TimerService clock = inCtx.wm.getTimerService(); JobContext jobctx = new ExpireJobContext( new WorkingMemoryReteExpireAction(factHandle, otn), inCtx.wm ); JobHandle handle = clock.scheduleJob( job, jobctx, new PointInTimeTrigger( _expire.getNextFireTimestamp(), null, null ) ); jobctx.setJobHandle( handle ); } }
.setType(ProtobufMessages.Trigger.TriggerType.POINT_IN_TIME) .setPit(ProtobufMessages.Trigger.PointInTimeTrigger.newBuilder() .setNextFireTime(pinTrigger.hasNextFireTime().getTime()) .build()) .build();
public void read(MarshallerReaderContext inCtx) throws IOException, ClassNotFoundException { InternalFactHandle factHandle = inCtx.handles.get( inCtx.readInt() ); String entryPointId = inCtx.readUTF(); EntryPointNode epn = ((ReteooRuleBase) inCtx.wm.getRuleBase()).getRete().getEntryPointNode( new EntryPoint( entryPointId ) ); String className = inCtx.readUTF(); Class< ? > cls = ((ReteooRuleBase) inCtx.wm.getRuleBase()).getRootClassLoader().loadClass( className ); ObjectTypeNode otn = epn.getObjectTypeNodes().get( new ClassObjectType( cls ) ); long nextTimeStamp = inCtx.readLong(); TimerService clock = inCtx.wm.getTimerService(); JobContext jobctx = new ExpireJobContext( new WorkingMemoryReteExpireAction( factHandle, otn ), inCtx.wm ); JobHandle handle = clock.scheduleJob( job, jobctx, new PointInTimeTrigger( nextTimeStamp, null, null ) ); jobctx.setJobHandle( handle ); }
outCtx.writeLong( pinTrigger.hasNextFireTime().getTime() );
JobHandle handle = clock.scheduleJob( job, jobctx, new PointInTimeTrigger( nextTimestamp, null, null ) ); jobctx.setJobHandle( handle );
long startTime = inCtx.readLong(); PointInTimeTrigger trigger = new PointInTimeTrigger( startTime, null, null ); return trigger;
PointInTimeTrigger trigger = new PointInTimeTrigger( _trigger.getPit().getNextFireTime(), null, null ); return trigger;
JobHandle handle = clock.scheduleJob( job, jobctx, new PointInTimeTrigger( nextTimestamp, null, null ) );