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