diff --git a/jbpm-flow/src/main/java/org/jbpm/process/instance/timer/TimerManager.java b/jbpm-flow/src/main/java/org/jbpm/process/instance/timer/TimerManager.java index 26594272b0..137fc7fdf3 100644 --- a/jbpm-flow/src/main/java/org/jbpm/process/instance/timer/TimerManager.java +++ b/jbpm-flow/src/main/java/org/jbpm/process/instance/timer/TimerManager.java @@ -16,6 +16,13 @@ package org.jbpm.process.instance.timer; +import java.io.Serializable; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import org.drools.core.common.InternalKnowledgeRuntime; import org.drools.core.common.InternalWorkingMemory; import org.drools.core.marshalling.impl.MarshallerReaderContext; @@ -45,13 +52,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.Serializable; -import java.util.Collection; -import java.util.Date; -import java.util.Iterator; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - /** * */ @@ -261,9 +261,10 @@ public void deserialize(MarshallerReaderContext inCtx, Timer timer) throws Class long now = pctx.getKnowledgeRuntime().getSessionClock().getCurrentTime(); // overdue timer if (then < now) { - trigger = new OverdueTrigger(trigger, pctx.getKnowledgeRuntime()); + trigger = new OverdueTrigger(trigger); } } + trigger.initialize(pctx.getKnowledgeRuntime()); JobHandle jobHandle = ts.scheduleJob(processJob, pctx, trigger); timerInstance.setJobHandle(jobHandle); pctx.setJobHandle(jobHandle); @@ -485,10 +486,14 @@ public static class OverdueTrigger implements Trigger { public static final long OVERDUE_DELAY = Long.parseLong(System.getProperty("jbpm.overdue.timer.delay", "2000")); private Trigger orig; - private InternalKnowledgeRuntime kruntime; + private transient InternalKnowledgeRuntime kruntime; - public OverdueTrigger(Trigger orig, InternalKnowledgeRuntime kruntime) { + public OverdueTrigger(Trigger orig) { this.orig = orig; + } + + @Override + public void initialize(InternalKnowledgeRuntime kruntime) { this.kruntime = kruntime; }