[jbpm-commits] JBoss JBPM SVN: r6123 - in jbpm4/trunk/modules: examples/src/test/resources/org/jbpm and 9 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Jan 22 22:37:00 EST 2010


Author: alex.guizar at jboss.com
Date: 2010-01-22 22:37:00 -0500 (Fri, 22 Jan 2010)
New Revision: 6123

Added:
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskDueDateTest.java
Removed:
   jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/bpmn/usertask/
   jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/test/
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/cache/
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/cfg/
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/subprocess/
Modified:
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/timer/event/TimerEventTest.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
   jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/timer/TimerTest.java
Log:
JBPM-2560: factor out due date calculation, test task due date


Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/timer/event/TimerEventTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/timer/event/TimerEventTest.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/timer/event/TimerEventTest.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -22,7 +22,7 @@
 package org.jbpm.examples.timer.event;
 
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
@@ -30,7 +30,6 @@
 import org.jbpm.api.job.Job;
 import org.jbpm.test.JbpmTestCase;
 
-
 /**
  * @author Tom Baeyens
  */
@@ -63,8 +62,7 @@
 
     processInstance = executionService.findProcessInstanceById(processInstance.getId());
 
-    Set<String> expectedActivityNames = new HashSet<String>();
-    expectedActivityNames.add("guardedWait");
+    Set<String> expectedActivityNames = Collections.singleton("guardedWait");
     assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
 
     assertEquals(Boolean.TRUE, executionService.getVariable(processInstance.getId(), "escalation"));

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -21,19 +21,19 @@
  */
 package org.jbpm.jpdl.internal.activity;
 
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
 import org.jbpm.api.JbpmException;
 import org.jbpm.api.activity.ActivityExecution;
 import org.jbpm.api.model.Transition;
-import org.jbpm.pvm.internal.cal.BusinessCalendar;
 import org.jbpm.pvm.internal.env.EnvironmentImpl;
 import org.jbpm.pvm.internal.history.HistoryEvent;
 import org.jbpm.pvm.internal.history.events.TaskActivityStart;
+import org.jbpm.pvm.internal.job.TimerImpl;
 import org.jbpm.pvm.internal.model.ActivityImpl;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.script.ScriptManager;
 import org.jbpm.pvm.internal.session.DbSession;
 import org.jbpm.pvm.internal.task.ParticipationImpl;
 import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
@@ -42,9 +42,9 @@
 import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
 import org.jbpm.pvm.internal.task.TaskImpl;
 
-
 /**
  * @author Tom Baeyens
+ * @author Alejandro Guizar
  */
 public class TaskActivity extends JpdlExternalActivity {
 
@@ -71,14 +71,21 @@
       task.setName(execution.getActivityName());
     }
 
-    task.setDescription(taskDefinition.getDescription());
+    String description = taskDefinition.getDescription();
+    if (description != null) {
+      if (description.contains("#{")) {
+        Object result = ScriptManager.getScriptManager().evaluateExpression(description, null);
+        description = result instanceof String ? (String) result : result.toString();
+      }
+      task.setDescription(description);
+    }
     task.setPriority(taskDefinition.getPriority());
     task.setFormResourceName(taskDefinition.getFormResourceName());
 
     // calculate the due date of the task based on the due date duration
-    if (taskDefinition.getDueDateDuration() != null) {
-      BusinessCalendar businessCalendar = EnvironmentImpl.getFromCurrent(BusinessCalendar.class);
-      task.setDuedate(businessCalendar.add(task.getCreateTime(), taskDefinition.getDueDateDuration()));
+    String dueDateDescription = taskDefinition.getDueDateDescription();
+    if (dueDateDescription != null) {
+      task.setDuedate(TimerImpl.calculateDueDate(dueDateDescription));
     }
 
     // save task so that TaskDbSession.findTaskByExecution works for assign event listeners
@@ -147,7 +154,6 @@
       if (transition==null) { // no unnamed transition found
         
         if (signalName == null) { 
-          
           // null was explicitely given as outcome
           throw new JbpmException("No unnamed transitions were found for the task '" + getTaskDefinition().getName() + "'"); 
           

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -528,7 +528,7 @@
     taskDefinition.setFormResourceName(form);
 
     String duedate = XmlUtil.attribute(element, "duedate");
-    taskDefinition.setDueDateDuration(duedate);
+    taskDefinition.setDueDateDescription(duedate);
 
     Integer priority = XmlUtil.attributeInteger(element, "priority", false, parse);
     if (priority != null) {

Modified: jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -9,19 +9,16 @@
 
 public class TaskParsingTest extends JpdlParseTestCase {
 
-  public static final String PROCESS = "<process name='Test Task Parsing'>"
-          + "  <start>"
-          + "    <transition to='t1' />"
-          + "  </start>"
-          + "  <task name='t1' duedate='1 day' priority='3' form='aForm'>"
-          + "    <description>first task</description>"
-          + "    <transition to='end'  />"
-          + "  </task>"
-          + "  <end name='end' />"
-          + "</process>";
-
   public void testTaskParse() {
-    ClientProcessDefinition definition = parse(PROCESS);
+    ClientProcessDefinition definition = parse(
+        "<process name='task parse'>" +
+        "  <start>" +
+        "    <transition to='t1' />" +
+        "  </start>" +
+        "  <task name='t1' duedate='1 day' priority='3' form='aForm'>" +
+        "    <description>first task</description>" +
+        "  </task>" +
+        "</process>");
 
     Activity activity = definition.findActivity("t1");
     assert activity instanceof ActivityImpl : activity.getClass();
@@ -37,7 +34,6 @@
     assertEquals("first task", taskDefinition.getDescription());
     assertEquals(3, taskDefinition.getPriority());
     assertEquals("aForm", taskDefinition.getFormResourceName());
-    assertEquals("1 day", taskDefinition.getDueDateDuration());
+    assertEquals("1 day", taskDefinition.getDueDateDescription());
   }
-
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -21,9 +21,12 @@
  */
 package org.jbpm.pvm.internal.job;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.jbpm.api.JbpmException;
 import org.jbpm.api.cmd.Environment;
@@ -41,11 +44,9 @@
 import org.jbpm.pvm.internal.tx.Transaction;
 import org.jbpm.pvm.internal.util.Clock;
 
-/** a runtime timer instance.
+/**
+ * a runtime timer instance.
  * 
- * <p>Timers can be
- * </p>
- * 
  * @author Tom Baeyens
  * @author Pascal Verdage
  * @author Alejandro Guizar
@@ -56,7 +57,11 @@
   private static final long serialVersionUID = 1L;
   private static final Log log = Log.getLog(TimerImpl.class.getName());
 
-  private final static String dateFormat = "yyyy-MM-dd HH:mm:ss,SSS";
+  private final static String dateFormat = "yyyy-MM-dd HH:mm:ss";
+  private static final Pattern dateDurationPattern = Pattern.compile("\\s*(#\\{.+\\})\\s*"
+      + "(?:(\\+|-)\\s*(\\d+\\s+(?:business\\s+)?\\w+))?\\s*");
+  private static final Pattern durationPattern = Pattern.compile("\\s*(\\d+\\s+(?:business\\s+)?"
+      + "\\w+)\\s*");
 
   protected String signalName;
   protected String eventName;
@@ -73,60 +78,59 @@
     timerSession.schedule(this);
   }
 
-  public void setDueDateDescription(String dueDateDescription) {	  
-	if (dueDateDescription != null) {	
-	    ScriptManager scriptManager = ScriptManager.getScriptManager();
+  public void setDueDateDescription(String dueDateDescription) {
+    if (dueDateDescription != null) {
+      duedate = calculateDueDate(dueDateDescription);
+    }
+  }
 
-	    Date baseDate;
-	    String durationString = null;
-	    char durationSeparator = '+'; // needs to be initialized
-	    
-	    if (dueDateDescription.startsWith("#")) {
-	      
-	      String baseDateEL = dueDateDescription.substring(0, dueDateDescription.indexOf("}") + 1);
-	      Object result = scriptManager.evaluateExpression(baseDateEL, null);
+  public static Date calculateDueDate(String dueDateDescription) {
+    Date dueDate;
+    // is due date description in date_expression +|- fixed_duration format?
+    Matcher dateDurationMatcher = dateDurationPattern.matcher(dueDateDescription);
+    if (dateDurationMatcher.matches()) {
+      // evaluate date expression
+      String dateExpression = dateDurationMatcher.group(1);
+      Object result = ScriptManager.getScriptManager().evaluateExpression(dateExpression, null);
+      // convert result to Date
+      if (result instanceof Date) {
+        dueDate = (Date) result;
+      } else if (result instanceof Calendar) {
+        Calendar calendar = (Calendar) result;
+        dueDate = calendar.getTime();
+      } else if (result instanceof String) {
+        try {
+          // TODO use a locale-sensitive date format?
+          dueDate = new SimpleDateFormat(dateFormat).parse((String) result);
+        } catch (ParseException e) {
+          throw new JbpmException("invalid base date: " + result, e);
+        }
+      } else {
+        throw new JbpmException("invalid base date: " + result);
+      }
 
-	      if (result instanceof Date) {
-	        baseDate = (Date)result;
-	      }
-	      else if (result instanceof Calendar) {
-	        baseDate = ((Calendar)result).getTime();
-	      } else {
-	        throw new JbpmException("Invalid basedate type: " + baseDateEL + " is of type " + result.getClass().getName()
-	            + ". Only Date and Calendar are supported");
-	      }
-	      
-	      int endOfELIndex = dueDateDescription.indexOf("}");
-	      if (endOfELIndex < (dueDateDescription.length() - 1)) {
-	        durationSeparator = dueDateDescription.substring(endOfELIndex + 1).trim().charAt(0);
-	        if (durationSeparator != '+' && durationSeparator != '-') {
-	          throw new JbpmException("Invalid duedate, + or - missing after EL");
-	        }
-	        durationString = dueDateDescription.substring(endOfELIndex + 1).substring(2).trim();
-	        log.debug("durationString: " + durationString);
-	      }
-	      
-	    } else {
-	      
-	      baseDate = Clock.getCurrentTime();
-	      durationString = dueDateDescription;
-	      
-	    }
-
-	    if (durationString == null || durationString.length() == 0) {
-	      duedate = baseDate;
-	    } else {
-	    	if (durationString.contains("business") && durationSeparator == '-') {
-	    		throw new JbpmException("Invalid duedate, subtraction ('-') not supported if duedate contains 'business'");
-	    	}
-	        BusinessCalendar businessCalendar = EnvironmentImpl.getFromCurrent(BusinessCalendar.class);
-	        if (durationSeparator == '+') {
-	          duedate = businessCalendar.add(baseDate, durationString);
-	        } else {
-	          duedate = businessCalendar.subtract(baseDate, durationString);
-	        }
-	    }
-	}
+      // fixed duration is optional
+      String operationString = dateDurationMatcher.group(2);
+      if (operationString != null) {
+        char operation = operationString.charAt(0);
+        String duration = dateDurationMatcher.group(3);
+        // add duration to base date
+        BusinessCalendar businessCalendar = EnvironmentImpl.getFromCurrent(BusinessCalendar.class);
+        dueDate = operation == '+' ? businessCalendar.add(dueDate, duration)
+            : businessCalendar.subtract(dueDate, duration);
+      }
+    } else {
+      // is due date description in fixed_duration format?
+      Matcher durationMatcher = durationPattern.matcher(dueDateDescription);
+      if (durationMatcher.matches()) {
+        // add duration to current date
+        dueDate = EnvironmentImpl.getFromCurrent(BusinessCalendar.class).add(
+            Clock.getCurrentTime(), durationMatcher.group(1));
+      } else {
+        throw new JbpmException("invalid due date duration: " + dueDateDescription);
+      }
+    }
+    return dueDate;
   }
 
   public Boolean execute(Environment environment) throws Exception {
@@ -190,16 +194,14 @@
     StringBuilder text = new StringBuilder();
     text.append("timer[");
     text.append(dbid);
-    if (duedate!=null) {
-      text.append("|");
-      text.append(formatDueDate(duedate));
+    if (duedate != null) {
+      text.append('|').append(formatDueDate(duedate));
     }
-    if (signalName!=null) {
-      text.append("|");
-      text.append(signalName);
+    if (signalName != null) {
+      text.append('|').append(signalName);
     }
-    if (eventName!=null) {
-      text.append("|");
+    if (eventName != null) {
+      text.append('|');
       text.append(eventName);
     }
     text.append("]");
@@ -207,7 +209,7 @@
   }
 
   public static String formatDueDate(Date date) {
-      return new SimpleDateFormat(dateFormat).format(date);
+    return new SimpleDateFormat(dateFormat).format(date);
   }
 
   public String getSignalName() {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -34,7 +34,7 @@
   
   private static final long serialVersionUID = 1L;
 
-  protected String dueDateDuration;
+  protected String dueDateDescription;
   protected String formResourceName;
   protected List<TaskDefinitionImpl> subTaskDefinitions = new ArrayList<TaskDefinitionImpl>();
   protected int priority = Priority.NORMAL;
@@ -58,11 +58,11 @@
   public void setSwimlaneDefinition(SwimlaneDefinitionImpl swimlaneDefinition) {
     this.swimlaneDefinition = swimlaneDefinition;
   }
-  public String getDueDateDuration() {
-    return dueDateDuration;
+  public String getDueDateDescription() {
+    return dueDateDescription;
   }
-  public void setDueDateDuration(String dueDateDuration) {
-    this.dueDateDuration = dueDateDuration;
+  public void setDueDateDescription(String dueDateDescription) {
+    this.dueDateDescription = dueDateDescription;
   }
   public String getFormResourceName() {
     return formResourceName;

Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskDueDateTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskDueDateTest.java	                        (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskDueDateTest.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -0,0 +1,134 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test.task;
+
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.jbpm.api.task.Task;
+import org.jbpm.pvm.internal.util.Clock;
+import org.jbpm.test.JbpmTestCase;
+
+/**
+ * Exercises for various ways to define the deadline of a task.
+ * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2560">JBPM-2560</a>
+ * @author Alejandro Guizar
+ */
+public class TaskDueDateTest extends JbpmTestCase {
+
+  public void testBaseDate() {
+    deployJpdlXmlString(
+        "<process name='BaseDate'>" +
+        "  <start><transition to='t'/></start>" +
+        "  <task name='t' duedate='#{tomorrow}'/>" +
+        "</process>");
+
+    Calendar tomorrow = Calendar.getInstance();
+    tomorrow.add(Calendar.DATE, 1);
+    Map<String, ? > variables = Collections.singletonMap("tomorrow", tomorrow);
+    String processInstanceId = executionService.startProcessInstanceByKey("BaseDate", variables)
+        .getId();
+
+    List<Task> taskList = taskService.createTaskQuery()
+        .processInstanceId(processInstanceId)
+        .list();
+    assertEquals(1, taskList.size());
+
+    Task task = taskList.get(0);
+    assertEquals(tomorrow.getTime(), task.getDuedate());
+  }
+
+  public void testBaseDatePlusDuration() {
+    deployJpdlXmlString(
+        "<process name='BaseDatePlusDuration'>" +
+        "  <start><transition to='t'/></start>" +
+        "  <task name='t' duedate='#{tomorrow} + 1 hour'/>" +
+        "</process>");
+
+    Calendar tomorrow = Calendar.getInstance();
+    tomorrow.add(Calendar.DATE, 1);
+    Map<String, ? > variables = Collections.singletonMap("tomorrow", tomorrow);
+    String processInstanceId = executionService.startProcessInstanceByKey(
+        "BaseDatePlusDuration", variables).getId();
+
+    List<Task> taskList = taskService.createTaskQuery()
+        .processInstanceId(processInstanceId)
+        .list();
+    assertEquals(1, taskList.size());
+
+    Task task = taskList.get(0);
+    tomorrow.add(Calendar.HOUR, 1);
+    assertEquals(tomorrow.getTime(), task.getDuedate());
+  }
+
+  public void testBaseDateMinusDuration() {
+    deployJpdlXmlString(
+        "<process name='BaseDateMinusDuration'>" +
+        "  <start><transition to='t'/></start>" +
+        "  <task name='t' duedate='#{tomorrow} - 1 hour'/>" +
+        "</process>");
+
+    Calendar tomorrow = Calendar.getInstance();
+    tomorrow.add(Calendar.DATE, 1);
+    Map<String, ? > variables = Collections.singletonMap("tomorrow", tomorrow);
+    String processInstanceId = executionService.startProcessInstanceByKey(
+        "BaseDateMinusDuration", variables).getId();
+
+    List<Task> taskList = taskService.createTaskQuery()
+        .processInstanceId(processInstanceId)
+        .list();
+    assertEquals(1, taskList.size());
+
+    Task task = taskList.get(0);
+    tomorrow.add(Calendar.HOUR, -1);
+    assertEquals(tomorrow.getTime(), task.getDuedate());
+  }
+
+  public void testDuration() {
+    deployJpdlXmlString(
+        "<process name='Duration'>" +
+        "  <start><transition to='t'/></start>" +
+        "  <task name='t' duedate='1 hour'/>" +
+        "</process>");
+
+    Calendar now = Calendar.getInstance();
+    // prevent wrong results in databases lacking millisecond precision
+    now.set(Calendar.MILLISECOND, 0);
+    Clock.setCurrentTime(now.getTime());
+
+    String processInstanceId = executionService.startProcessInstanceByKey("Duration").getId();
+
+    List<Task> taskList = taskService.createTaskQuery()
+        .processInstanceId(processInstanceId)
+        .list();
+    assertEquals(1, taskList.size());
+
+    Task task = taskList.get(0);
+    now.add(Calendar.HOUR, 1);
+    // because task.getDuedate() returns java.sql.Timestamp here,
+    // comparison has to be made in milliseconds
+    assertEquals(now.getTimeInMillis(), task.getDuedate().getTime());
+  }
+}


Property changes on: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskDueDateTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/timer/TimerTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/timer/TimerTest.java	2010-01-22 11:51:41 UTC (rev 6122)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/timer/TimerTest.java	2010-01-23 03:37:00 UTC (rev 6123)
@@ -22,7 +22,6 @@
 package org.jbpm.test.timer;
 
 import java.util.Calendar;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -36,7 +35,6 @@
 import org.jbpm.api.listener.EventListenerExecution;
 import org.jbpm.test.JbpmTestCase;
 
-
 /**
  * @author Tom Baeyens
  * @author Ronald Van Kuijk
@@ -198,117 +196,116 @@
   }
   
   public void testTimerELCalendarAdd() {
-	    deployJpdlXmlString(
-	      "<process name='Insurance claim' key='ICL'>" +
-	      "  <start>" +
-	      "    <transition to='a' />" +
-	      "  </start>" +
-	      "  <state name='a'>" +
-	      "    <transition to='b' />" +
-	      "    <transition name='timeout' to='escalate'>" +
-	      "      <timer duedate='#{proc_var} + 5 days' />" +
-	      "    </transition>" +
-	      "  </state>" +
-	      "  <state name='b' />" +
-	      "  <end name='escalate' />" +
-	      "</process>"
-	    );
-		    
-	    Map<String, Object> proc_vars = new HashMap<String, Object>();
-	    Calendar cal = Calendar.getInstance();
-	    cal.add(Calendar.DAY_OF_MONTH, 6);
-	    proc_vars.put("proc_var", cal);
-	    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
-		    
-	    Job job = managementService.createJobQuery()
-	      .processInstanceId(processInstance.getId())
-	      .uniqueResult();
-	    
-	    Calendar jobDate = Calendar.getInstance();
-	    jobDate.setTime(job.getDuedate());
-	    
-	    cal.add(Calendar.DAY_OF_MONTH, 5);
-	    assertEquals(cal.get(Calendar.DAY_OF_MONTH), jobDate.get(Calendar.DAY_OF_MONTH));
-	    
-	    managementService.executeJob(job.getId());
-	    assertProcessInstanceEnded(processInstance);
-	  }
-  
+    deployJpdlXmlString(
+      "<process name='Insurance claim' key='ICL'>" +
+      "  <start>" +
+      "    <transition to='a' />" +
+      "  </start>" +
+      "  <state name='a'>" +
+      "    <transition to='b' />" +
+      "    <transition name='timeout' to='escalate'>" +
+      "      <timer duedate='#{proc_var} + 5 days' />" +
+      "    </transition>" +
+      "  </state>" +
+      "  <state name='b' />" +
+      "  <end name='escalate' />" +
+      "</process>"
+    );
+
+    Map<String, Object> proc_vars = new HashMap<String, Object>();
+    Calendar cal = Calendar.getInstance();
+    cal.add(Calendar.DAY_OF_MONTH, 6);
+    proc_vars.put("proc_var", cal);
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
+
+    Job job = managementService.createJobQuery()
+      .processInstanceId(processInstance.getId())
+      .uniqueResult();
+
+    Calendar jobDate = Calendar.getInstance();
+    jobDate.setTime(job.getDuedate());
+
+    cal.add(Calendar.DAY_OF_MONTH, 5);
+    assertEquals(cal.get(Calendar.DAY_OF_MONTH), jobDate.get(Calendar.DAY_OF_MONTH));
+
+    managementService.executeJob(job.getId());
+    assertProcessInstanceEnded(processInstance);
+  }
+
   public void testTimerELCalendarSubtract() {
-	    deployJpdlXmlString(
-	      "<process name='Insurance claim' key='ICL'>" +
-	      "  <start>" +
-	      "    <transition to='a' />" +
-	      "  </start>" +
-	      "  <state name='a'>" +
-	      "    <transition to='b' />" +
-	      "    <transition name='timeout' to='escalate'>" +
-	      "      <timer duedate='#{proc_var} - 5 days' />" +
-	      "    </transition>" +
-	      "  </state>" +
-	      "  <state name='b' />" +
-	      "  <end name='escalate' />" +
-	      "</process>"
-	    );
-		    
-	    Map<String, Object> proc_vars = new HashMap<String, Object>();
-	    Calendar cal = Calendar.getInstance();
-	    cal.add(Calendar.DAY_OF_MONTH, 6);
-	    proc_vars.put("proc_var", cal);
-	    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
-		    
-	    Job job = managementService.createJobQuery()
-	      .processInstanceId(processInstance.getId())
-	      .uniqueResult();
-	    
-	    Calendar jobDate = Calendar.getInstance();
-	    jobDate.setTime(job.getDuedate());
-	    
-	    // 6 days from now minus 5 days is tomorrow so subtract 5 from the original added 6.
-	    assertEquals(cal.get(Calendar.DAY_OF_MONTH) -5 , jobDate.get(Calendar.DAY_OF_MONTH));
-	    
-	    managementService.executeJob(job.getId());
-	    assertProcessInstanceEnded(processInstance);
-	  }
-  
-  
+    deployJpdlXmlString(
+      "<process name='Insurance claim' key='ICL'>" +
+      "  <start>" +
+      "    <transition to='a' />" +
+      "  </start>" +
+      "  <state name='a'>" +
+      "    <transition to='b' />" +
+      "    <transition name='timeout' to='escalate'>" +
+      "      <timer duedate='#{proc_var} - 5 days' />" +
+      "    </transition>" +
+      "  </state>" +
+      "  <state name='b' />" +
+      "  <end name='escalate' />" +
+      "</process>"
+    );
+
+    Map<String, Object> proc_vars = new HashMap<String, Object>();
+    Calendar cal = Calendar.getInstance();
+    cal.add(Calendar.DAY_OF_MONTH, 6);
+    proc_vars.put("proc_var", cal);
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
+
+    Job job = managementService.createJobQuery()
+      .processInstanceId(processInstance.getId())
+      .uniqueResult();
+
+    Calendar jobDate = Calendar.getInstance();
+    jobDate.setTime(job.getDuedate());
+
+    // 6 days from now minus 5 days is tomorrow so subtract 5 from the original added 6.
+    assertEquals(cal.get(Calendar.DAY_OF_MONTH) -5 , jobDate.get(Calendar.DAY_OF_MONTH));
+
+    managementService.executeJob(job.getId());
+    assertProcessInstanceEnded(processInstance);
+  }
+
   public void testTimerELCalendarAddBusiness() {
-	    deployJpdlXmlString(
-	      "<process name='Insurance claim' key='ICL'>" +
-	      "  <start>" +
-	      "    <transition to='a' />" +
-	      "  </start>" +
-	      "  <state name='a'>" +
-	      "    <transition to='b' />" +
-	      "    <transition name='timeout' to='escalate'>" +
-	      "      <timer duedate='#{proc_var} + 5 business days' />" +
-	      "    </transition>" +
-	      "  </state>" +
-	      "  <state name='b' />" +
-	      "  <end name='escalate' />" +
-	      "</process>"
-	    );
-		    
-	    Map<String, Object> proc_vars = new HashMap<String, Object>();
-	    Calendar cal = Calendar.getInstance();
-	    cal.set(2010, 01, 12, 12, 00, 00); // 12 feb 2010 noon
-	    proc_vars.put("proc_var", cal);
-	    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
-		    
-	    Job job = managementService.createJobQuery()
-	      .processInstanceId(processInstance.getId())
-	      .uniqueResult();
-	    
-	    Calendar jobDate = Calendar.getInstance();
-	    jobDate.setTime(job.getDuedate());
-	    
-	    // 12 feb is friday, 5 businessdays further is friday 19th
-	    assertEquals(19 , jobDate.get(Calendar.DAY_OF_MONTH));
-	    
-	    managementService.executeJob(job.getId());
-	    assertProcessInstanceEnded(processInstance);
-	  }
-  
+    deployJpdlXmlString(
+      "<process name='Insurance claim' key='ICL'>" +
+      "  <start>" +
+      "    <transition to='a' />" +
+      "  </start>" +
+      "  <state name='a'>" +
+      "    <transition to='b' />" +
+      "    <transition name='timeout' to='escalate'>" +
+      "      <timer duedate='#{proc_var} + 5 business days' />" +
+      "    </transition>" +
+      "  </state>" +
+      "  <state name='b' />" +
+      "  <end name='escalate' />" +
+      "</process>"
+    );
+
+    Map<String, Object> proc_vars = new HashMap<String, Object>();
+    Calendar cal = Calendar.getInstance();
+    cal.set(2010, 01, 12, 12, 00, 00); // 12 feb 2010 noon
+    proc_vars.put("proc_var", cal);
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
+
+    Job job = managementService.createJobQuery()
+      .processInstanceId(processInstance.getId())
+      .uniqueResult();
+
+    Calendar jobDate = Calendar.getInstance();
+    jobDate.setTime(job.getDuedate());
+
+    // 12 feb is friday, 5 businessdays further is friday 19th
+    assertEquals(19 , jobDate.get(Calendar.DAY_OF_MONTH));
+
+    managementService.executeJob(job.getId());
+    assertProcessInstanceEnded(processInstance);
+  }
+
   public void testTimerELFail() {
     deployJpdlXmlString(
       "<process name='Insurance claim' key='ICL'>" +
@@ -329,65 +326,65 @@
     Map<String, Object> proc_vars = new HashMap<String, Object>();
     proc_vars.put("proc_var", new Long(0));
     try {
-      ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
+      executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
       fail("Should not happen, exception expected");
     } catch (Exception e) {}
   }
 
   public void testTimerELSubtractBusinessFail() {
-	    deployJpdlXmlString(
-	      "<process name='Insurance claim' key='ICL'>" +
-	      "  <start>" +
-	      "    <transition to='a' />" +
-	      "  </start>" +
-	      "  <state name='a'>" +
-	      "    <transition to='b' />" +
-	      "    <transition name='timeout' to='escalate'>" +
-	      "      <timer duedate='#{proc_var} - 6 business days' />" +
-	      "    </transition>" +
-	      "  </state>" +
-	      "  <state name='b' />" +
-	      "  <end name='escalate' />" +
-	      "</process>"
-	    );
-	    
-	    Map<String, Object> proc_vars = new HashMap<String, Object>();
-	    Calendar cal = Calendar.getInstance();
-	    cal.set(2010, 01, 12, 12, 00, 00); // 12 feb 2010 noon
-	    proc_vars.put("proc_var", cal);
-	    try {
-	      ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
-	      fail("Should not happen, exception expected");
-	    } catch (Exception e) {}
+    deployJpdlXmlString(
+      "<process name='Insurance claim' key='ICL'>" +
+      "  <start>" +
+      "    <transition to='a' />" +
+      "  </start>" +
+      "  <state name='a'>" +
+      "    <transition to='b' />" +
+      "    <transition name='timeout' to='escalate'>" +
+      "      <timer duedate='#{proc_var} - 6 business days' />" +
+      "    </transition>" +
+      "  </state>" +
+      "  <state name='b' />" +
+      "  <end name='escalate' />" +
+      "</process>"
+    );
+
+    Map<String, Object> proc_vars = new HashMap<String, Object>();
+    Calendar cal = Calendar.getInstance();
+    cal.set(2010, 01, 12, 12, 00, 00); // 12 feb 2010 noon
+    proc_vars.put("proc_var", cal);
+    try {
+      executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
+      fail("Should not happen, exception expected");
+    } catch (Exception e) {}
   }
   
   public void testTimerELSubtractPastFail() {
-	    deployJpdlXmlString(
-	      "<process name='Insurance claim' key='ICL'>" +
-	      "  <start>" +
-	      "    <transition to='a' />" +
-	      "  </start>" +
-	      "  <state name='a'>" +
-	      "    <transition to='b' />" +
-	      "    <transition name='timeout' to='escalate'>" +
-	      "      <timer duedate='#{proc_var} - 3 days' />" +
-	      "    </transition>" +
-	      "  </state>" +
-	      "  <state name='b' />" +
-	      "  <end name='escalate' />" +
-	      "</process>"
-	    );
-	    
-	    Map<String, Object> proc_vars = new HashMap<String, Object>();
-	    Calendar cal = Calendar.getInstance();
-	    cal.add(Calendar.DAY_OF_MONTH, 2);
-	    proc_vars.put("proc_var", cal);
-	    try {
-	      ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
-	      fail("Should not happen, exception expected");
-	    } catch (Exception e) {}
-}
-  
+    deployJpdlXmlString(
+      "<process name='Insurance claim' key='ICL'>" +
+      "  <start>" +
+      "    <transition to='a' />" +
+      "  </start>" +
+      "  <state name='a'>" +
+      "    <transition to='b' />" +
+      "    <transition name='timeout' to='escalate'>" +
+      "      <timer duedate='#{proc_var} - 3 days' />" +
+      "    </transition>" +
+      "  </state>" +
+      "  <state name='b' />" +
+      "  <end name='escalate' />" +
+      "</process>"
+    );
+
+    Map<String, Object> proc_vars = new HashMap<String, Object>();
+    Calendar cal = Calendar.getInstance();
+    cal.add(Calendar.DAY_OF_MONTH, 2);
+    proc_vars.put("proc_var", cal);
+    try {
+      executionService.startProcessInstanceByKey("ICL", proc_vars, "82436");
+      fail("Should not happen, exception expected");
+    } catch (Exception e) {}
+  }
+
   public void testTimerTimeoutCustom() {
     deployJpdlXmlString(TEST_PROCESS_CUSTOM);
 
@@ -412,7 +409,6 @@
     assertProcessInstanceActive(processInstance);
     executionService.signalExecutionById(processInstance.getExecution("a").getId());
     assertActivityActive(processInstance.getId(), "b");
-
   }
 
   public void testTimerSignalCustom() {



More information about the jbpm-commits mailing list