Skip to content

Commit

Permalink
[RHPAM-2960] Case instance update fails with java.io.NotSerializableE…
Browse files Browse the repository at this point in the history
…xception: org.jbpm.services.task.persistence.JPATaskModelFactory for cases containing multiple SLAs
  • Loading branch information
Enrique Gonzalez Martinez committed May 27, 2020
1 parent 63014d6 commit 0de393b
Showing 1 changed file with 16 additions and 11 deletions.
Expand Up @@ -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;
Expand Down Expand Up @@ -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;

/**
*
*/
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;
}

Expand All @@ -498,7 +503,7 @@ public Date hasNextFireTime() {
return null;
}
long then = date.getTime();
long now = kruntime.getSessionClock().getCurrentTime();
long now = kruntime != null ? kruntime.getSessionClock().getCurrentTime() : then;
// overdue timer
if (then < now) {
return new Date((now + OVERDUE_DELAY));
Expand Down

0 comments on commit 0de393b

Please sign in to comment.