[jbpm-commits] JBoss JBPM SVN: r4770 - in jbpm3/branches/jbpm-3.2.5.SP/modules/core/src: test/java/org/jbpm/scenarios and 1 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sun May 10 06:44:34 EDT 2009
Author: alex.guizar at jboss.com
Date: 2009-05-10 06:44:33 -0400 (Sun, 10 May 2009)
New Revision: 4770
Modified:
jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java
jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
Log:
increase timeout to one minute for stabilizing tests
Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java 2009-05-08 21:49:21 UTC (rev 4769)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java 2009-05-10 10:44:33 UTC (rev 4770)
@@ -12,6 +12,7 @@
import org.jbpm.graph.def.Action;
import org.jbpm.graph.def.Event;
import org.jbpm.graph.def.GraphElement;
+import org.jbpm.graph.def.Node;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
@@ -81,11 +82,15 @@
}
// then take a transition if one is specified
- if ((transitionName != null) && (exception == null) // and if no unhandled exception occurred during the action
- ) {
- if (token.getNode().hasLeavingTransition(transitionName)) {
+ // and if no unhandled exception occurred during the action
+ if (transitionName != null && exception == null) {
+ Node node = token.getNode();
+ if (node.hasLeavingTransition(transitionName)) {
token.signal(transitionName);
}
+ else {
+ log.warn(node + " has no leaving transition with name: " + transitionName);
+ }
}
// if repeat is specified, reschedule the job
Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java 2009-05-08 21:49:21 UTC (rev 4769)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java 2009-05-10 10:44:33 UTC (rev 4770)
@@ -9,114 +9,104 @@
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import org.jbpm.graph.node.DecisionHandler;
-import org.jbpm.taskmgmt.def.Task;
-import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
import org.jbpm.taskmgmt.exe.TaskInstance;
public class AsyncTimerAndSubProcessDbTest extends AbstractDbTestCase {
-
- public static class ToTimedDecisionHandler implements DecisionHandler
- {
+
+ public static class ToTimedDecisionHandler implements DecisionHandler {
private static final long serialVersionUID = 1L;
- public String decide(ExecutionContext executionContext) throws Exception
- {
+ public String decide(ExecutionContext executionContext) throws Exception {
return "default";
}
}
public void testTimerInCombinationWithAsyncNode() throws Throwable {
- ProcessDefinition subDefinition = ProcessDefinition.parseXmlString(
- "<process-definition name='sub'>" +
- " <start-state name='start'>" +
- " <transition to='decision'/>" +
- " </start-state>" +
- " <decision name='decision'>" +
- " <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />" +
- " <transition name='default' to='task' />" +
- " </decision>" +
- " <task-node name='task'>" +
- " <task name='do stuff'>" +
- " <controller>" +
- " <variable name='a' access='read' />" +
- " </controller>" +
- " <assignment actor-id='victim' />" +
- " </task>" +
- " <transition to='end'/>" +
- " </task-node>" +
- " <end-state name='end' />" +
- "</process-definition>"
- );
+ ProcessDefinition subDefinition = ProcessDefinition.parseXmlString("<process-definition name='sub'>"
+ + " <start-state name='start'>"
+ + " <transition to='decision'/>"
+ + " </start-state>"
+ + " <decision name='decision'>"
+ + " <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />"
+ + " <transition name='default' to='task' />"
+ + " </decision>"
+ + " <task-node name='task'>"
+ + " <task name='do stuff'>"
+ + " <controller>"
+ + " <variable name='a' access='read' />"
+ + " </controller>"
+ + " <assignment actor-id='victim' />"
+ + " </task>"
+ + " <transition to='end'/>"
+ + " </task-node>"
+ + " <end-state name='end' />"
+ + "</process-definition>");
jbpmContext.deployProcessDefinition(subDefinition);
newTransaction();
-
- ProcessDefinition superDefinition = ProcessDefinition.parseXmlString(
- "<process-definition name='super'>" +
- " <start-state name='start'>" +
- " <transition to='decision'/>" +
- " </start-state>" +
- " <decision name='decision'>" +
- " <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />" +
- " <transition name='default' to='timed' />" +
- " </decision>" +
- " <state name='timed'>" +
- " <timer name='reminder' " +
- " duedate='0 seconds' " +
- " transition='timer fires' />" +
- " <transition name='timer fires' to='async'/>" +
- " <transition name='normal continuation' to='end'/>" +
- " </state>" +
- " <node name='async' async='true'>" +
- " <transition to='subprocess'/>" +
- " </node>" +
- " <process-state name='subprocess'>" +
- " <sub-process name='sub' />" +
- " <variable name='a'/>" +
- " <variable name='b'/>" +
- " <transition to='decision' />" +
- " </process-state>" +
- " <end-state name='end' />" +
- "</process-definition>"
- );
+
+ ProcessDefinition superDefinition = ProcessDefinition.parseXmlString("<process-definition name='super'>"
+ + " <start-state name='start'>"
+ + " <transition to='decision'/>"
+ + " </start-state>"
+ + " <decision name='decision'>"
+ + " <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />"
+ + " <transition name='default' to='timed' />"
+ + " </decision>"
+ + " <state name='timed'>"
+ + " <timer name='reminder' "
+ + " duedate='0 seconds' "
+ + " transition='timer fires' />"
+ + " <transition name='timer fires' to='async'/>"
+ + " <transition name='normal continuation' to='end'/>"
+ + " </state>"
+ + " <node name='async' async='true'>"
+ + " <transition to='subprocess'/>"
+ + " </node>"
+ + " <process-state name='subprocess'>"
+ + " <sub-process name='sub' />"
+ + " <variable name='a'/>"
+ + " <variable name='b'/>"
+ + " <transition to='decision' />"
+ + " </process-state>"
+ + " <end-state name='end' />"
+ + "</process-definition>");
jbpmContext.deployProcessDefinition(superDefinition);
newTransaction();
-
- try
- {
+
+ try {
ProcessInstance superInstance = jbpmContext.newProcessInstanceForUpdate("super");
ContextInstance superContext = superInstance.getContextInstance();
superContext.setVariable("a", "value a");
superContext.setVariable("b", "value b");
superInstance.signal();
-
- processJobs(5000);
+ processJobs(60 * 1000);
+
superInstance = jbpmContext.loadProcessInstance(superInstance.getId());
assertEquals("subprocess", superInstance.getRootToken().getNode().getName());
-
+
List taskInstances = taskMgmtSession.findTaskInstances("victim");
assertEquals(1, taskInstances.size());
TaskInstance taskInstance = (TaskInstance) taskInstances.get(0);
taskInstance.setVariable("a", "value a updated");
taskInstance.setVariable("b", "value b updated");
taskInstance.end();
-
+
jbpmContext.save(taskInstance);
long taskInstanceId = taskInstance.getId();
long tokenId = taskInstance.getToken().getId();
newTransaction();
-
+
taskInstance = jbpmContext.loadTaskInstance(taskInstanceId);
assertEquals("value a updated", taskInstance.getVariable("a"));
assertEquals("value b updated", taskInstance.getVariable("b"));
-
+
Token token = jbpmContext.loadToken(tokenId);
ContextInstance subContextInstance = token.getProcessInstance().getContextInstance();
assertEquals("value a", subContextInstance.getVariable("a"));
assertEquals("value b updated", subContextInstance.getVariable("b"));
}
- finally
- {
+ finally {
jbpmContext.getGraphSession().deleteProcessDefinition(superDefinition.getId());
jbpmContext.getGraphSession().deleteProcessDefinition(subDefinition.getId());
}
Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java 2009-05-08 21:49:21 UTC (rev 4769)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java 2009-05-10 10:44:33 UTC (rev 4770)
@@ -25,11 +25,9 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
-import java.util.TimerTask;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.criterion.Restrictions;
+
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.graph.def.ActionHandler;
@@ -39,14 +37,11 @@
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.job.Timer;
-import org.jbpm.job.executor.JobExecutorThread;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.util.DateDbTestUtil;
public class TimerDbTest extends AbstractDbTestCase {
- private static Log log = LogFactory.getLog(Timer.class);
-
static boolean isNoOpExecuted = false;
protected void setUp() throws Exception {
@@ -86,8 +81,8 @@
assertEquals(ncal.get(Calendar.HOUR_OF_DAY), tcal.get(Calendar.HOUR_OF_DAY));
assertEquals(ncal.get(Calendar.MINUTE), tcal.get(Calendar.MINUTE));
assertEquals(ncal.get(Calendar.SECOND), tcal.get(Calendar.SECOND));
- assertEquals(DateDbTestUtil.getInstance().convertDateToSeconds(now),
- DateDbTestUtil.getInstance().convertDateToSeconds(timer.getDueDate()));
+ assertEquals(DateDbTestUtil.getInstance().convertDateToSeconds(now), DateDbTestUtil.getInstance()
+ .convertDateToSeconds(timer.getDueDate()));
assertEquals("transition-name", timer.getTransitionName());
assertEquals("repeat-duration", timer.getRepeat());
}
@@ -184,7 +179,7 @@
List actions = node.getEvent(Event.EVENTTYPE_NODE_ENTER).getActions();
assertEquals(1, actions.size());
-
+
actions = node.getEvent(Event.EVENTTYPE_NODE_LEAVE).getActions();
assertEquals(1, actions.size());
@@ -251,7 +246,7 @@
processInstance = saveAndReload(processInstance);
assertEquals(1, getTimerCount());
processInstance.signal();
-
+
newTransaction();
assertEquals(1, getTimerCount());
@@ -309,7 +304,7 @@
+ " <state name='a'>"
+ " <timer name='reminder' "
+ " duedate='0 seconds'"
- + " repeat='5 seconds' >"
+ + " repeat='1 minute' >"
+ " <action class='org.jbpm.scheduler.exe.TimerDbTest$NoOp' />"
+ " </timer>"
+ " <transition to='b'/>"
@@ -320,55 +315,37 @@
processDefinition = saveAndReload(processDefinition);
try {
ProcessInstance processInstance = new ProcessInstance(processDefinition);
- // long before = System.currentTimeMillis();
processInstance.signal();
- // long after = System.currentTimeMillis();
jbpmContext.save(processInstance);
newTransaction();
-
Timer timer = (Timer) jobSession.getFirstAcquirableJob(null);
-
assertNotNull(timer);
- Date date = timer.getDueDate();
- assertNotNull(date);
- // assertTrue(before <= date.getTime());
- // assertTrue(date.getTime() <= after);
- long origDueDate = date.getTime();
+ Date dueDate = timer.getDueDate();
+ assertNotNull(dueDate);
timer.execute(jbpmContext);
newTransaction();
+ timer = (Timer) jobSession.loadTimer(timer.getId());
+ assertEquals(dueDate.getTime() + 60 * 1000, timer.getDueDate().getTime());
- List timers = session.createQuery("from org.jbpm.job.Timer").list();
- assertEquals(1, timers.size());
- timer = (Timer) timers.get(0);
-
- assertEquals(origDueDate + 5000, timer.getDueDate().getTime());
-
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
- // before = System.currentTimeMillis();
processInstance.signal("back");
- // after = System.currentTimeMillis();
jbpmContext.save(processInstance);
newTransaction();
-
timer = (Timer) jobSession.getFirstAcquirableJob(null);
assertNotNull(timer);
- date = timer.getDueDate();
- assertNotNull(date);
- // assertTrue(before <= date.getTime());
- // assertTrue(date.getTime() <= after);
+ dueDate = timer.getDueDate();
+ assertNotNull(dueDate);
newTransaction();
-
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
processInstance.signal();
jbpmContext.save(processInstance);
newTransaction();
-
assertEquals(0, getTimerCount());
}
finally {
More information about the jbpm-commits
mailing list