[jbpm-commits] JBoss JBPM SVN: r4827 - in jbpm4/trunk/modules: jpdl/src/main/java/org/jbpm/jpdl/internal/activity and 8 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri May 15 15:55:28 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-05-15 15:55:27 -0400 (Fri, 15 May 2009)
New Revision: 4827

Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Execution.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SuperStateActivity.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/MessageImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivityMessage.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ProceedToDestinationMessage.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/SignalMessage.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/TakeTransitionMessage.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/AsyncCommandMessage.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
   jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml
   jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/SuperStateBasicsTest.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/history/EndProcessInstanceTest.java
Log:
JBPM-2026 removed execution locking, moved suspend and resume to ScopeInstanceImpl and introduced suspendHistoryState all in context of adding super states

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Execution.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Execution.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Execution.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -39,8 +39,7 @@
  * then it is locked.  A locked execution is read only.  
  * </p>
  * 
- * <p>When a new execution is created, it is in {@link #STATE_ACTIVE}.  To change 
- * the state to a locked state, use {@link #lock(String)}.  
+ * <p>When a new execution is created, it is in {@link #STATE_ACTIVE}.  
  * {@link #STATE_ACTIVE Some STATE_* constants} are provided that represent the 
  * most commonly used locked states.  But the state '...' in the picture indicates 
  * that any string can be provided as the state in the lock method.
@@ -115,15 +114,6 @@
   /** indicates that this execution is doing an asynchronous continuation. */
   String STATE_ASYNC = "async";
 
-  /** this execution has been cancelled before it came to completion.
-   * Only history executions might expose this state.  This state can be 
-   * passed in {@link ExecutionService#endProcessInstance(String, String)}.
-   * Make sure that comparisons are 
-   * done with .equals and not with '==' because if executions are 
-   * loaded from persistent storage, a new string is created instead 
-   * of the constants. */
-  String STATE_CANCELLED = "cancelled";
-
   /** the externally given name or id of this execution. The id of a main 
    * path of execution is null.   Can be used to differentiate concurrent 
    * paths of execution e.g. the shipping and billing paths.  */
@@ -151,9 +141,6 @@
   /** is this execution active ? This is the inverse of {@link #isLocked()}. */
   boolean isActive();
 
-  /** is this execution {@link #lock(String) locked} ? This is the inverse of {@link #isActive()}. */
-  boolean isLocked();
-
   /** is this execution ended */
   boolean isEnded();
 

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SuperStateActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SuperStateActivity.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SuperStateActivity.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.jpdl.internal.activity;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -41,18 +42,23 @@
   public void execute(ActivityExecution execution) throws Exception {
     // find the start activity
     Activity activity = execution.getActivity();
-    Activity startActivity = findStartActivity(activity);
-    execution.execute(startActivity);
+    List<Activity> startActivities = findStartActivities(activity);
+    if (startActivities.size()==1) {
+      execution.execute(startActivities.get(0));
+    }
   }
 
-  private Activity findStartActivity(Activity activity) {
+  private List<Activity> findStartActivities(Activity activity) {
+    List<Activity> startActivities = new ArrayList<Activity>();
     List nestedActivities = activity.getActivities();
     for (ActivityImpl nestedActivity : (List<ActivityImpl>) nestedActivities) {
-      if (nestedActivity.getBehaviour() instanceof StartActivity) {
-        return nestedActivity;
+      if ( (nestedActivity.getIncomingTransitions()==null)
+           || (nestedActivity.getIncomingTransitions().isEmpty())
+         ) {
+        startActivities.add(nestedActivity);
       }
     }
-    throw new JbpmException("no start activity in "+activity);
+    return startActivities;
   }
 
   public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/MessageImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/MessageImpl.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/MessageImpl.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,7 +21,6 @@
  */
 package org.jbpm.pvm.internal.job;
 
-import org.jbpm.api.JbpmException;
 import org.jbpm.api.job.Message;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 
@@ -43,11 +42,4 @@
     this.execution = execution;
     this.processInstance = execution.getProcessInstance();
   }
-
-  protected void unlockExecution() {
-    if (execution == null) {
-      throw new JbpmException("This message isn't bound to any execution");
-    }
-    execution.unlock();
-  }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -52,7 +52,6 @@
 import org.jbpm.api.model.OpenExecution;
 import org.jbpm.api.model.Transition;
 import org.jbpm.api.session.MessageSession;
-import org.jbpm.api.session.PvmDbSession;
 import org.jbpm.api.session.RepositorySession;
 import org.jbpm.internal.log.Log;
 import org.jbpm.pvm.internal.hibernate.HibernatePvmDbSession;
@@ -72,7 +71,6 @@
 import org.jbpm.pvm.internal.model.op.ProceedToDestination;
 import org.jbpm.pvm.internal.model.op.Signal;
 import org.jbpm.pvm.internal.model.op.TakeTransition;
-import org.jbpm.pvm.internal.repository.RepositorySessionImpl;
 import org.jbpm.pvm.internal.util.EqualsUtil;
 import org.jbpm.pvm.internal.util.Priority;
 
@@ -124,8 +122,6 @@
   protected ExecutionImpl parent = null;
   protected ExecutionImpl processInstance;
   
-  protected ScopeInstanceImpl scopeInstanceImpl;
-  
   /** the super process link in case this is a sub process execution */  
   protected ExecutionImpl superProcessExecution;
   
@@ -351,32 +347,6 @@
   }
 
 
-  // execution method : suspend and resume ////////////////////////////////////
-
-  /** @see Execution#suspend() */
-  public void suspend() {
-    if (isSuspended()) {
-      throw new JbpmException(toString()+" is suspended");
-    }
-    HibernatePvmDbSession hibernatePvmDbSession = Environment.getFromCurrent(HibernatePvmDbSession.class, false);
-    if (hibernatePvmDbSession!=null) {
-      hibernatePvmDbSession.cascadeExecutionSuspend(this);
-    }
-    lock(STATE_SUSPENDED);
-  }
-
-  /** @see Execution#resume() */
-  public void resume() {
-    if (! isSuspended()) {
-      throw new JbpmException(toString()+" is not suspended");
-    }
-    HibernatePvmDbSession hibernatePvmDbSession = Environment.getFromCurrent(HibernatePvmDbSession.class, false);
-    if (hibernatePvmDbSession!=null) {
-      hibernatePvmDbSession.cascadeExecutionResume(this);
-    }
-    unlock();
-  }
-
   // execution method : signal ////////////////////////////////////////////////
 
   public void signal() {
@@ -392,7 +362,7 @@
   }
 
   public void signal(String signal, Map<String, Object> parameters) {
-    checkLock();
+    checkActive();
     if (getActivity()!=null) {
       performAtomicOperation(new Signal(signal, parameters, getActivity()));
     } else if (transition!=null) {
@@ -443,7 +413,7 @@
 
   /** @see Execution#takeDefaultTransition() */
   public void take(Transition transition) {
-    checkLock();
+    checkActive();
 
     setPropagation(Propagation.EXPLICIT);
     setTransition((TransitionImpl) transition);
@@ -478,7 +448,7 @@
     if (activity==null) {
       throw new JbpmException("activity is null");
     }
-    checkLock();
+    checkActive();
     
     this.propagation = Propagation.EXPLICIT;
     performAtomicOperation(new MoveToChildActivity((ActivityImpl) activity));
@@ -493,7 +463,7 @@
   // execution method : proceed ///////////////////////////////////////////////
 
   public void proceed() {
-    checkLock();
+    checkActive();
 
     // in graph based processDefinition languages we assume that a
     // default transition is available
@@ -583,7 +553,7 @@
       throw new JbpmException("no message-session configured to send asynchronous continuation message");
     }
     MessageImpl<?> asyncMessage = operation.createAsyncMessage(this);
-    lock(Execution.STATE_ASYNC);
+    setState(Execution.STATE_ASYNC);
     messageSession.send(asyncMessage);
   }
 
@@ -778,7 +748,7 @@
     // creating a child execution implies that this execution 
     // is not a leave any more and therefore, it is inactivated
     if (isActive()) {
-      lock(STATE_INACTIVE);
+      setState(STATE_INACTIVE);
       propagation = Propagation.EXPLICIT;
     }
 
@@ -936,28 +906,31 @@
     return subProcessInstance;
   }
 
-  // state : internal methods /////////////////////////////////////////////////
+  // state mgmt ///////////////////////////////////////////////////////////////
 
-  /** @see Execution#lock(String) */
-  public void lock(String state) {
-    if (state==null) {
-      throw new JbpmException("given state is null");
+  /** @see Execution#suspend() */
+  public void suspend() {
+    super.suspend();
+    HibernatePvmDbSession hibernatePvmDbSession = Environment.getFromCurrent(HibernatePvmDbSession.class, false);
+    if (hibernatePvmDbSession!=null) {
+      hibernatePvmDbSession.cascadeExecutionSuspend(this);
     }
-    checkLock();
-    log.trace("locking "+this);
-    this.state = state;
   }
-  
-  /** @see Execution#unlock() */
-  public void unlock() {
-    if (Execution.STATE_ACTIVE.equals(state)) {
-      throw new JbpmException("state is already active");
+
+  /** @see Execution#resume() */
+  public void resume() {
+    super.resume();
+    HibernatePvmDbSession hibernatePvmDbSession = Environment.getFromCurrent(HibernatePvmDbSession.class, false);
+    if (hibernatePvmDbSession!=null) {
+      hibernatePvmDbSession.cascadeExecutionResume(this);
     }
-    log.trace("unlocking "+this);
-    this.state = Execution.STATE_ACTIVE;
   }
 
-  protected void checkLock() {
+  public void setState(String state) {
+    this.state = state;
+  }
+
+  protected void checkActive() {
     if (!Execution.STATE_ACTIVE.equals(state)) {
       throw new JbpmException(toString()+" is not active: "+state);
     }
@@ -1165,9 +1138,6 @@
   public void setName(String name) {
     this.name = name;
   }
-  public void setState(String state) {
-    this.state = state;
-  }
   public void setExecutions(Collection<ExecutionImpl> executions) {
     this.executions = executions;
   }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -37,6 +37,7 @@
 import org.jbpm.api.job.Timer;
 import org.jbpm.api.session.TimerSession;
 import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.hibernate.HibernatePvmDbSession;
 import org.jbpm.pvm.internal.job.TimerImpl;
 import org.jbpm.pvm.internal.type.Converter;
 import org.jbpm.pvm.internal.type.Type;
@@ -63,6 +64,7 @@
   protected Set<TimerImpl> timers;
   
   protected String state;
+  protected String suspendHistoryState;
   
   // variables ////////////////////////////////////////////////////////////////
 
@@ -397,6 +399,29 @@
   
   // state ////////////////////////////////////////////////////////////////////
 
+  /** @see Execution#suspend() */
+  public void suspend() {
+    if (Execution.STATE_SUSPENDED.equals(state)) {
+      return;
+    }
+    suspendHistoryState = state;
+    state = Execution.STATE_SUSPENDED;
+  }
+
+  /** @see Execution#resume() */
+  public void resume() {
+    if (!Execution.STATE_SUSPENDED.equals(state)) {
+      return;
+    }
+    state = suspendHistoryState;
+    suspendHistoryState = null;
+  }
+
+  public void setState(String state) {
+    this.state = state;
+  }
+
+
   /** @see Execution#getState() */
   public String getState() {
     return state;
@@ -407,11 +432,6 @@
     return Execution.STATE_ACTIVE.equals(state);
   }
 
-  /** @see Execution#isLocked() */
-  public boolean isLocked() {
-    return ! isActive();
-  }
-  
   /** @see Execution#isSuspended() */
   public boolean isSuspended() {
     return Execution.STATE_SUSPENDED.equals(state);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivityMessage.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivityMessage.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivityMessage.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.pvm.internal.model.op;
 
+import org.jbpm.api.Execution;
 import org.jbpm.api.env.Environment;
 import org.jbpm.pvm.internal.job.MessageImpl;
 import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
@@ -41,7 +42,8 @@
   }
 
   public Object execute(Environment environment) throws Exception {
-    unlockExecution();
+    execution.setState(Execution.STATE_ACTIVE);
+    
     execution.performAtomicOperationSync(ExecutionImpl.EXECUTE_ACTIVITY);
 
     JobDbSession jobDbSession = environment.get(JobDbSession.class);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ProceedToDestinationMessage.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ProceedToDestinationMessage.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ProceedToDestinationMessage.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.pvm.internal.model.op;
 
+import org.jbpm.api.Execution;
 import org.jbpm.api.env.Environment;
 import org.jbpm.pvm.internal.job.MessageImpl;
 import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
@@ -42,7 +43,7 @@
   }
 
   public Object execute(Environment environment) throws Exception {
-    unlockExecution();
+    execution.setState(Execution.STATE_ACTIVE);
     execution.performAtomicOperationSync(ExecutionImpl.PROCEED_TO_DESTINATION);
     
     JobDbSession jobDbSession = environment.get(JobDbSession.class);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/SignalMessage.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/SignalMessage.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/SignalMessage.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.pvm.internal.model.op;
 
+import org.jbpm.api.Execution;
 import org.jbpm.api.env.Environment;
 import org.jbpm.pvm.internal.job.MessageImpl;
 import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
@@ -47,7 +48,7 @@
   }
 
   public Object execute(Environment environment) throws Exception {
-    unlockExecution();
+    execution.setState(Execution.STATE_ACTIVE);
     
     Signal signal = new Signal(signalName, null, activity);
     execution.performAtomicOperationSync(signal);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/TakeTransitionMessage.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/TakeTransitionMessage.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/TakeTransitionMessage.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.pvm.internal.model.op;
 
+import org.jbpm.api.Execution;
 import org.jbpm.api.env.Environment;
 import org.jbpm.pvm.internal.job.MessageImpl;
 import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
@@ -41,7 +42,8 @@
   }
 
   public Object execute(Environment environment) throws Exception {
-    unlockExecution();
+    execution.setState(Execution.STATE_ACTIVE);
+
     execution.performAtomicOperationSync(ExecutionImpl.TAKE_TRANSITION);
     
     JobDbSession jobDbSession = environment.get(JobDbSession.class);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/AsyncCommandMessage.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/AsyncCommandMessage.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/AsyncCommandMessage.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.pvm.internal.svc;
 
+import org.jbpm.api.Execution;
 import org.jbpm.api.cmd.Command;
 import org.jbpm.api.cmd.CommandService;
 import org.jbpm.api.env.Environment;
@@ -47,7 +48,8 @@
   }
 
   public Object execute(Environment environment) throws Exception {
-    unlockExecution();
+    execution.setState(Execution.STATE_ACTIVE);
+
     if (userId!=null) {
       environment.setUserId(userId);
     }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -489,9 +489,4 @@
   public void setForm(String form) {
     this.form = form;
   }
-
-  public void suspend() {
-  }
-  public void resume() {
-  }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml	2009-05-15 19:55:27 UTC (rev 4827)
@@ -53,8 +53,8 @@
     <property name="name" column="NAME_" />
     <property name="key" column="KEY_" />
     <property name="id" column="ID_" unique="true" />
-
     <property name="state" column="STATE_" />
+    <property name="suspendHistoryState" column="SUSPHISTSTATE_" />
 
     <property name="priority" column="PRIORITY_" />
     <property name="historyActivityInstanceDbid" column="HISACTINST_" />

Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml	2009-05-15 19:55:27 UTC (rev 4827)
@@ -17,6 +17,7 @@
     <property name="name" column="NAME_"/>
     <property name="description" column="DESCR_"/>
     <property name="state" column="STATE_"/>
+    <property name="suspendHistoryState" column="SUSPHISTSTATE_" />
     <property name="assignee" column="ASSIGNEE_"/>
     <property name="form" column="FORM_"/>
     

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/SuperStateBasicsTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/SuperStateBasicsTest.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/SuperStateBasicsTest.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -60,6 +60,30 @@
     assertTrue(processInstance.isEnded());
   }
 
+  public void testSuperStateStartActivityWithoutIncomingTransitions() {
+    deployJpdlXmlString(
+      "<process name='Super'>" +
+      "  <start>" +
+      "    <transition to='super' />" +
+      "  </start>" +
+      "  <super-state name='super'>" +
+      "    <state name='a'>" +
+      "      <transition to='done' />" +
+      "    </state>" +
+      "    <end name='done' />" +
+      "    <transition to='end' />" +
+      "  </super-state>" +
+      "  <end name='end' />" +
+      "</process>"
+    );
+
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("Super");
+    assertEquals("a", processInstance.getActivityName());
+    
+    processInstance = executionService.signalExecutionById(processInstance.getId());
+    assertTrue(processInstance.isEnded());
+  }
+
   public void testSuperStateDirectEntry() {
     deployJpdlXmlString(
       "<process name='Super'>" +

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/history/EndProcessInstanceTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/history/EndProcessInstanceTest.java	2009-05-15 18:29:00 UTC (rev 4826)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/history/EndProcessInstanceTest.java	2009-05-15 19:55:27 UTC (rev 4827)
@@ -48,7 +48,7 @@
 
     Execution execution = executionService.startProcessInstanceByKey("ICL");
     String processInstanceId = execution.getId();
-    executionService.endProcessInstance(processInstanceId, Execution.STATE_CANCELLED);
+    executionService.endProcessInstance(processInstanceId, "cancel");
 
     List<Execution> executions = executionService.createProcessInstanceQuery()
         .processInstanceId(processInstanceId)
@@ -60,6 +60,6 @@
       .uniqueResult();
 
     assertNotNull(historyProcessInstance.getEndTime());
-    assertEquals(Execution.STATE_CANCELLED, historyProcessInstance.getState());
+    assertEquals("cancel", historyProcessInstance.getState());
   }
 }




More information about the jbpm-commits mailing list