[jbpm-commits] JBoss JBPM SVN: r3255 - in jbpm3/trunk/modules/integration: spec/src/main/java/org/jbpm/integration/spec/model and 5 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sun Dec 7 08:54:55 EST 2008


Author: thomas.diesler at jboss.com
Date: 2008-12-07 08:54:54 -0500 (Sun, 07 Dec 2008)
New Revision: 3255

Added:
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessInstanceServiceImpl.java
Removed:
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessServiceImpl.java
Modified:
   jbpm3/trunk/modules/integration/jboss42/src/main/etc/jboss-beans.xml
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EndEventImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EventImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExclusiveGatewayImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExpressionImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/GatewayImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NodeImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NoneTaskImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayForkImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayJoinImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessInstanceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/SequenceFlowImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/StartEventImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/TaskImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/UserTaskImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/WaitStateImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/GatewayBuilderImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxy.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxySupport.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeExecuteInterceptor.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeInterceptor.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenAttachmentDelegate.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DeploymentServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DialectHandlerServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionContextServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/IdentityServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/NoopPersistenceServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessBuilderServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessDefinitionServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/TaskServiceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/task/TaskInstanceImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/resources/jbpm-cfg-beans.xml
Log:
Use ProcessInstanceService

Modified: jbpm3/trunk/modules/integration/jboss42/src/main/etc/jboss-beans.xml
===================================================================
--- jbpm3/trunk/modules/integration/jboss42/src/main/etc/jboss-beans.xml	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/jboss42/src/main/etc/jboss-beans.xml	2008-12-07 13:54:54 UTC (rev 3255)
@@ -30,7 +30,7 @@
  <bean name="BPMPersistenceService" class="org.jbpm.integration.spec.service.NoopPersistenceServiceImpl" />
 
  <!-- The ProcessService -->
- <bean name="BPMProcessService" class="org.jbpm.integration.spec.service.ProcessServiceImpl">
+ <bean name="BPMProcessService" class="org.jbpm.integration.spec.service.ProcessInstanceServiceImpl">
   <property name="interceptors">
    <list elementClass="java.lang.String">
     <value>org.jbpm.integration.spec.runtime.NodeExecuteInterceptor</value>

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -49,7 +49,7 @@
   {
     this.engine = engine;
     this.objClass = objClass;
-    
+
     // Store the ID of the underlying jBPM3 object
     objID = tempObj.getId();
     if (objID == 0)
@@ -65,17 +65,17 @@
   public T getDelegate()
   {
     T retObj = null;
-    
+
     // Determine the current ID to use
     long currID = objID;
     if (currID == 0 && tempObj != null)
       currID = tempObj.getId();
-    
+
     // If there is no ID, use the tmp object
     if (currID == 0 && tempObj != null)
       retObj = tempObj;
 
-    // Get the delegate from the persistence session 
+    // Get the delegate from the persistence session
     if (retObj == null)
     {
       if (objClass == null || currID == 0)
@@ -84,7 +84,7 @@
       // From now on use this object ID
       objID = currID;
       tempObj = null;
-      
+
       ExecutionContextService execService = getProcessEngine().getService(ExecutionContextService.class);
       ExecutionContext bpmContext = execService.getExecutionContext(true);
       try

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EndEventImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EndEventImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EndEventImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -32,7 +32,7 @@
 import org.jbpm.graph.node.EndState;
 
 /**
- * An integration wrapper 
+ * An integration wrapper
  * 
  * @author thomas.diesler at jboss.com
  * @since 15-Nov-2008
@@ -40,25 +40,25 @@
 public class EndEventImpl extends EventImpl<EndState> implements EndEvent
 {
   private static final long serialVersionUID = 1L;
-  
+
   public EndEventImpl(ProcessEngine engine, ProcessDefinition procDef, Node oldEnd)
   {
     super(engine, procDef, EndState.class, oldEnd);
   }
 
-  //@Override
+  // @Override
   public EventDetailType getResultType()
   {
     return EventDetailType.None;
   }
 
-  //@Override
+  // @Override
   public EventType getEventType()
   {
     return EventType.End;
   }
 
-  //@Override
+  // @Override
   public SequenceFlow getInFlow()
   {
     List<SequenceFlow> inFlows = getInFlows();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EventImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EventImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/EventImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -27,7 +27,7 @@
 import org.jbpm.graph.def.Node;
 
 /**
- * An integration wrapper 
+ * An integration wrapper
  * 
  * @author thomas.diesler at jboss.com
  * @since 15-Nov-2008
@@ -35,7 +35,7 @@
 public abstract class EventImpl<T extends Node> extends NodeImpl<T> implements Event
 {
   private static final long serialVersionUID = 1L;
-  
+
   public EventImpl(ProcessEngine engine, ProcessDefinition procDef, Class<T> clazz, Node oldNode)
   {
     super(engine, procDef, clazz, oldNode);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExclusiveGatewayImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExclusiveGatewayImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExclusiveGatewayImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -55,13 +55,13 @@
     getDelegate().setDecisionDelegation(new Delegation(decisionHandler));
   }
 
-  //@Override
+  // @Override
   public GatewayType getGatewayType()
   {
     return GatewayType.Exclusive;
   }
-  
-  //@Override
+
+  // @Override
   public ExclusiveType getExclusiveType()
   {
     return ExclusiveType.Data;
@@ -71,12 +71,12 @@
   {
     private static final long serialVersionUID = 1L;
 
-    //@Override
+    // @Override
     public String decide(ExecutionContext execContext) throws Exception
     {
       ProcessEngine engine = getProcessDefinition().getProcessEngine();
       Token token = TokenImpl.newInstance(engine, execContext.getToken());
-      
+
       SequenceFlow selectedGate = null;
       for (SequenceFlow auxGate : getGates())
       {

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExpressionImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExpressionImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ExpressionImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -53,13 +53,13 @@
     this.lang = lang;
   }
 
-  //@Override
+  // @Override
   public ExpressionLanguage getExpressionLanguage()
   {
     return lang;
   }
 
-  //@Override
+  // @Override
   public String getExpressionBody()
   {
     return body;
@@ -77,7 +77,7 @@
     }
     return expr;
   }
-  
+
   public String toString()
   {
     return "[" + lang + ":" + body + "]";

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/GatewayImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/GatewayImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/GatewayImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -45,19 +45,19 @@
     super(engine, procDef, clazz, oldNode);
   }
 
-  //@Override
+  // @Override
   public List<SequenceFlow> getGates()
   {
     return getOutFlows();
   }
 
-  //@Override
+  // @Override
   public SequenceFlow getGateByName(String targetName)
   {
     throw new NotImplementedException();
   }
 
-  //@Override
+  // @Override
   public SequenceFlow getDefaultGate()
   {
     throw new NotImplementedException();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NodeImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NodeImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NodeImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -41,7 +41,7 @@
 import org.jbpm.integration.spec.runtime.InvocationProxy;
 
 /**
- * An integration wrapper 
+ * An integration wrapper
  * 
  * @author thomas.diesler at jboss.com
  * @since 15-Nov-2008
@@ -49,9 +49,9 @@
 public abstract class NodeImpl<T extends org.jbpm.graph.def.Node> extends AbstractElementImpl<T> implements Node
 {
   private static final long serialVersionUID = 1L;
-  
+
   private ProcessDefinition procDef;
-  
+
   private List<SequenceFlow> outFlows = new ArrayList<SequenceFlow>();
   private List<SequenceFlow> inFlows = new ArrayList<SequenceFlow>();
 
@@ -66,7 +66,7 @@
     long id = getDelegate().getId();
     return ObjectNameFactory.create(Constants.ID_DOMAIN + ":node=" + getName() + ",id=" + id);
   }
-  
+
   public String getName()
   {
     return getDelegate().getNameExt();
@@ -81,7 +81,7 @@
   {
     throw new NotImplementedException();
   }
-  
+
   @SuppressWarnings("unchecked")
   public void addSequenceFlow(SequenceFlowImpl flow)
   {
@@ -89,16 +89,16 @@
     NodeImpl<T> targetNode = (NodeImpl<T>)procDef.getNode(targetRef);
     if (targetNode == null)
       throw new InvalidProcessException("Cannot obtain target node: " + targetRef);
-    
+
     org.jbpm.graph.def.Node delegate = getDelegate();
-    
+
     Transition trans = flow.getOldTransition();
     if (delegate.hasLeavingTransition(trans.getName()) == false)
     {
       delegate.addLeavingTransition(trans);
       targetNode.getDelegate().addArrivingTransition(trans);
     }
-    
+
     if (flow.getConditionType() == ConditionType.Expression)
     {
       trans.setCondition(flow.getConditionExpression().toString());
@@ -107,11 +107,11 @@
     {
       trans.setCondition("[" + ConditionType.Default + "]");
     }
-    
+
     targetNode.inFlows.add(flow);
     outFlows.add(flow);
   }
-  
+
   public SequenceFlow getOutFlowByTransition(Transition trans)
   {
     SequenceFlow outFlow = null;
@@ -126,7 +126,7 @@
     }
     return outFlow;
   }
-  
+
   public List<SequenceFlow> getInFlows()
   {
     return Collections.unmodifiableList(inFlows);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NoneTaskImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NoneTaskImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/NoneTaskImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -41,7 +41,7 @@
     super(engine, procDef, Node.class, oldNode);
   }
 
-  //@Override
+  // @Override
   public TaskType getTaskType()
   {
     return TaskType.None;

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayForkImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayForkImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayForkImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -43,8 +43,7 @@
   {
     super(engine, procDef, Fork.class, oldFork);
   }
-  
-  // @Override
+
   public GatewayType getGatewayType()
   {
     return GatewayType.Parallel;

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayJoinImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayJoinImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ParallelGatewayJoinImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -44,7 +44,6 @@
     super(engine, procDef, Join.class, oldJoin);
   }
 
-  // @Override
   public GatewayType getGatewayType()
   {
     return GatewayType.Parallel;

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -68,14 +68,14 @@
     }
     return procDef;
   }
-  
+
   private ProcessDefinitionImpl(ProcessEngine engine, org.jbpm.graph.def.ProcessDefinition tmpProcDef)
   {
     super(engine, tmpProcDef, org.jbpm.graph.def.ProcessDefinition.class);
 
     if (tmpProcDef.getName() == null)
       throw new InvalidProcessException("ProcessDefinition name cannot be null");
-    
+
     if (tmpProcDef.getId() > 0)
       keyCache = getKey(tmpProcDef);
   }

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessInstanceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessInstanceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessInstanceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -57,7 +57,7 @@
   private static final long serialVersionUID = 1L;
 
   private ObjectName keyCache;
-  
+
   public static ProcessInstance newInstance(ProcessEngine engine, org.jbpm.graph.exe.ProcessInstance tmpProc, boolean proxy)
   {
     ProcessInstance proc = new ProcessInstanceImpl(engine, tmpProc);
@@ -67,16 +67,15 @@
     }
     return proc;
   }
-  
+
   private ProcessInstanceImpl(ProcessEngine engine, org.jbpm.graph.exe.ProcessInstance tmpProc)
   {
     super(engine, tmpProc, org.jbpm.graph.exe.ProcessInstance.class);
-    
+
     if (tmpProc.getId() > 0)
       keyCache = getKey(tmpProc);
   }
 
-  // @Override
   public ObjectName getKey()
   {
     ObjectName objKey = keyCache;
@@ -95,24 +94,22 @@
     org.jbpm.graph.def.ProcessDefinition oldProcDef = procInst.getProcessDefinition();
     return ObjectNameFactory.create(Constants.ID_DOMAIN + ":procInst=" + oldProcDef.getName() + ",id=" + procInst.getId());
   }
-  
-  // @Override
+
   public ProcessDefinition getProcessDefinition()
   {
     org.jbpm.graph.def.ProcessDefinition oldProcDef = getDelegate().getProcessDefinition();
     return ProcessDefinitionImpl.newInstance(getProcessEngine(), oldProcDef, true);
   }
 
-  // @Override
   public ProcessStatus getProcessStatus()
   {
     Token rootToken = getRootToken();
     TokenStatus tokenStatus = rootToken != null ? rootToken.getTokenStatus() : null;
-    
+
     org.jbpm.graph.exe.ProcessInstance oldProcInst = getDelegate();
 
     ProcessStatus status = ProcessStatus.None;
-    
+
     if (oldProcInst.getStart() != null)
       status = ProcessStatus.Active;
 
@@ -121,13 +118,13 @@
 
     if (oldProcInst.hasEnded() || tokenStatus == TokenStatus.Destroyed)
       status = ProcessStatus.Completed;
-    
+
     return status;
   }
 
   public void setProcessStatus(ProcessStatus status)
   {
-    //this.status = status;
+    // this.status = status;
   }
 
   public Token getRootToken()
@@ -140,7 +137,6 @@
     return token;
   }
 
-  // @Override
   public String getName()
   {
     return getProcessDefinition().getName();
@@ -156,37 +152,31 @@
     return getDelegate().getStart();
   }
 
-  // @Override
   public <T extends Node> T getNode(Class<T> clazz, String name)
   {
     return getProcessDefinition().getNode(clazz, name);
   }
 
-  // @Override
   public Node getNode(String name)
   {
     return getProcessDefinition().getNode(name);
   }
 
-  // @Override
   public List<Node> getNodes()
   {
     return getProcessDefinition().getNodes();
   }
 
-  // @Override
   public <T extends Node> List<T> getNodes(Class<T> clazz)
   {
     return getProcessDefinition().getNodes(clazz);
   }
 
-  // @Override
   public Token startProcess()
   {
     return startProcess(null);
   }
 
-  // @Override
   public Token startProcess(Attachments contextData)
   {
     ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
@@ -199,7 +189,7 @@
         procService.registerInstance(this);
 
       org.jbpm.graph.exe.ProcessInstance procInst = getDelegate();
-      
+
       // Initialize the members
       org.jbpm.graph.exe.Token rootToken = new org.jbpm.graph.exe.Token(procInst);
       procInst.setStart(Clock.getCurrentTime());
@@ -207,7 +197,7 @@
 
       // Create the root token
       Token token = TokenImpl.newInstance(getProcessEngine(), rootToken);
-      
+
       // Save the root token
       JbpmContext jbpmContext = bpmContext.getAttachment(JbpmContext.class);
       jbpmContext.getSession().save(rootToken);
@@ -225,10 +215,10 @@
 
       // Set process to active
       setProcessStatus(ProcessStatus.Active);
-      
+
       // Fire the start event
       procInst.fireStartEvent(rootToken.getNode());
-      
+
       // Signal the root token
       token.signal();
 
@@ -255,7 +245,7 @@
     ProcessStatus status = getProcessStatus();
     if (status != ProcessStatus.Active)
       throw new IllegalStateException("Cannot suspend a process in state: " + status);
-    
+
     getDelegate().suspend();
   }
 
@@ -264,7 +254,7 @@
     ProcessStatus status = getProcessStatus();
     if (status != ProcessStatus.Suspended)
       throw new IllegalStateException("Cannot resume a process in state: " + status);
-    
+
     getDelegate().resume();
   }
 
@@ -273,7 +263,7 @@
     ProcessStatus status = getProcessStatus();
     if (status != ProcessStatus.Active && status != ProcessStatus.Suspended)
       throw new IllegalStateException("Cannot cancel a process in state: " + status);
-    
+
     org.jbpm.graph.exe.ProcessInstance delegate = getDelegate();
     delegate.setEnd(new Date());
     delegate.end();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/SequenceFlowImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/SequenceFlowImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/SequenceFlowImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -49,7 +49,7 @@
   public SequenceFlowImpl(Transition oldTrans, ExpressionLanguage exprLang, String exprBody)
   {
     this.oldTrans = oldTrans;
-    
+
     if (exprLang != null && exprBody != null)
     {
       this.condType = ConditionType.Expression;
@@ -68,38 +68,38 @@
     return oldTrans;
   }
 
-  //@Override
+  // @Override
   public String getName()
   {
     return oldTrans.getName();
   }
 
-  //@Override
+  // @Override
   public Expression getConditionExpression()
   {
     return expr;
   }
 
-  //@Override
+  // @Override
   public ConditionType getConditionType()
   {
     return condType;
   }
 
-  //@Override
+  // @Override
   public String getSourceRef()
   {
     Node from = oldTrans.getFrom();
     return from != null ? from.getName() : null;
   }
 
-  //@Override
+  // @Override
   public String getTargetRef()
   {
     Node to = oldTrans.getTo();
     return to != null ? to.getName() : null;
   }
-  
+
   public String toString()
   {
     return "[" + getSourceRef() + "->" + getTargetRef() + ",cond=" + condType + "]";

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/StartEventImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/StartEventImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/StartEventImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -46,19 +46,16 @@
     super(engine, procDef, StartState.class, oldStart);
   }
 
-  // @Override
   public EventDetailType getTriggerType()
   {
     return EventDetailType.None;
   }
 
-  // @Override
   public EventType getEventType()
   {
     return EventType.Start;
   }
 
-  // @Override
   public SequenceFlow getOutFlow()
   {
     List<SequenceFlow> outFlows = getOutFlows();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/TaskImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/TaskImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/TaskImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -45,7 +45,7 @@
     super(engine, procDef, clazz, oldNode);
   }
 
-  //@Override
+  // @Override
   public SequenceFlow getInFlow()
   {
     List<SequenceFlow> inFlows = getInFlows();
@@ -57,7 +57,7 @@
     return inFlows.get(0);
   }
 
-  //@Override
+  // @Override
   public SequenceFlow getOutFlow()
   {
     List<SequenceFlow> outFlows = getOutFlows();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/UserTaskImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/UserTaskImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/UserTaskImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -45,7 +45,6 @@
     super(engine, procDef, TaskNode.class, oldTaskNode);
   }
 
-  // @Override
   public TaskType getTaskType()
   {
     return TaskType.User;

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/WaitStateImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/WaitStateImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/WaitStateImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -42,7 +42,7 @@
     super(engine, procDef, State.class, oldState);
   }
 
-  //@Override
+  // @Override
   public TaskType getTaskType()
   {
     return TaskType.Wait;

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/GatewayBuilderImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/GatewayBuilderImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/GatewayBuilderImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -45,7 +45,7 @@
     addSequenceFlow(targetName);
     return this;
   }
-  
+
   public GatewayBuilder addConditionalGate(String targetName, ExpressionLanguage exprLang, String exprBody)
   {
     addSequenceFlow(targetName, exprLang, exprBody);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -66,7 +66,7 @@
   protected ProcessEngine engine;
   protected ProcessDefinitionImpl procDefImpl;
   protected NodeImpl<?> nodeImpl;
-  
+
   private List<FlowSpec> flows = new ArrayList<FlowSpec>();
 
   public ProcessBuilderImpl(ProcessEngine engine)
@@ -82,35 +82,35 @@
     this.flows = procBuilder.flows;
   }
 
-  //@Override
+  // @Override
   public ProcessBuilder addProcess(String name)
   {
     org.jbpm.graph.def.ProcessDefinition oldProcDef = org.jbpm.graph.def.ProcessDefinition.createNewProcessDefinition();
     oldProcDef.setName(name);
-    
+
     procDefImpl = (ProcessDefinitionImpl)ProcessDefinitionImpl.newInstance(engine, oldProcDef, false);
     return this;
   }
 
-  //@Override
+  // @Override
   public ProcessDefinition getProcessDefinition()
   {
     initProcessDefinition();
     return procDefImpl;
   }
 
-  //@Override
+  // @Override
   public ProcessBuilder addStartEvent(String name)
   {
     if (name == null)
       throw new InvalidProcessException("StartEvent name cannot be null");
-    
+
     nodeImpl = new StartEventImpl(engine, procDefImpl, new StartState(name));
     procDefImpl.addNode(nodeImpl);
     return this;
   }
 
-  //@Override
+  // @Override
   public GatewayBuilder addGateway(String name, GatewayType type)
   {
     if (type == GatewayType.Exclusive)
@@ -125,13 +125,13 @@
     return new GatewayBuilderImpl(this);
   }
 
-  //@Override
+  // @Override
   public ProcessBuilder addTask(String name)
   {
     return addTask(name, TaskType.None);
   }
 
-  //@Override
+  // @Override
   public ProcessBuilder addTask(String name, TaskType type)
   {
     if (type == TaskType.None)
@@ -151,7 +151,7 @@
     return this;
   }
 
-  //@Override
+  // @Override
   public ProcessBuilder addEndEvent(String name)
   {
     nodeImpl = new EndEventImpl(engine, procDefImpl, new EndState(name));
@@ -159,25 +159,25 @@
     return this;
   }
 
-  //@Override
+  // @Override
   public ProcessBuilder addSequenceFlow(String targetName)
   {
     return addSequenceFlow(targetName, null, null);
   }
-  
+
   public ProcessBuilder addSequenceFlow(String targetName, ExpressionLanguage exprLang, String exprBody)
   {
     flows.add(new FlowSpec(nodeImpl.getName(), targetName, exprLang, exprBody));
     return this;
   }
-  
+
   class FlowSpec
   {
     String source;
     String target;
     ExpressionLanguage exprLang;
     String exprBody;
-    
+
     public FlowSpec(String source, String target, ExpressionLanguage exprLang, String exprBody)
     {
       this.source = source;
@@ -195,48 +195,48 @@
       NodeImpl<?> srcNode = (NodeImpl<?>)procDefImpl.getNode(flow.source);
       if (srcNode == null)
         throw new InvalidProcessException("Cannot obtain source node: " + flow.source);
-      
+
       NodeImpl<?> targetNode = (NodeImpl<?>)procDefImpl.getNode(flow.target);
       if (targetNode == null)
         throw new InvalidProcessException("Cannot obtain target node: " + flow.target);
-      
+
       Transition trans = new Transition(flow.target);
       trans.setFrom(srcNode.getDelegate());
       trans.setTo(targetNode.getDelegate());
-      
+
       SequenceFlowImpl seqFlow = new SequenceFlowImpl(trans, flow.exprLang, flow.exprBody);
       srcNode.addSequenceFlow(seqFlow);
     }
-    
+
     // Verify that there is a start event
     List<StartEvent> startEvents = procDefImpl.getNodes(StartEvent.class);
     if (startEvents.size() == 0)
       throw new InvalidProcessException("Cannot obtain a start event");
-      
+
     // Verify that there is an end event
     List<EndEvent> endEvents = procDefImpl.getNodes(EndEvent.class);
     if (endEvents.size() == 0)
       throw new InvalidProcessException("Cannot obtain an end event");
-      
+
     // Detect unreachable nodes
     for (Node node : procDefImpl.getNodes())
     {
       NodeImpl<?> nodeImpl = (NodeImpl<?>)node;
       org.jbpm.graph.def.Node delegate = nodeImpl.getDelegate();
       Set<Transition> arriving = delegate.getArrivingTransitions();
-      
+
       NodeType nodeType = delegate.getNodeType();
       if (nodeType != NodeType.StartState && arriving == null)
         throw new InvalidProcessException("Unreachable node: " + node);
     }
-    
+
     // Detect dead end nodes
     for (Node node : procDefImpl.getNodes())
     {
       NodeImpl<?> nodeImpl = (NodeImpl<?>)node;
       org.jbpm.graph.def.Node delegate = nodeImpl.getDelegate();
       List<Transition> leaving = delegate.getLeavingTransitions();
-      
+
       NodeType nodeType = delegate.getNodeType();
       if (nodeType != NodeType.EndState && leaving == null)
         throw new InvalidProcessException("Dead end node: " + node);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxy.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxy.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxy.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -28,11 +28,12 @@
 import java.util.Arrays;
 import java.util.List;
 
-import org.jboss.bpm.api.model.AbstractElement;
 import org.jboss.bpm.api.runtime.ExecutionContext;
 import org.jboss.bpm.api.service.ExecutionContextService;
 import org.jboss.bpm.api.service.ProcessEngine;
-import org.jbpm.integration.spec.model.AbstractElementImpl;
+import org.jboss.bpm.api.service.ProcessEngineSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Decorates management invocations with common system aspects.
@@ -42,13 +43,16 @@
  */
 public class InvocationProxy implements InvocationProxySupport, InvocationHandler
 {
+  // provide logging
+  private static final Logger log = LoggerFactory.getLogger(InvocationProxy.class);
+
   private static List<Method> proxyMethods = Arrays.asList(InvocationProxySupport.class.getMethods());
-  
-  private AbstractElementImpl<?> abstractElement;
+
+  private ProcessEngineSupport obj;
   private ProcessEngine engine;
-  
+
   @SuppressWarnings("unchecked")
-  public static <T> T newInstance(AbstractElementImpl<?> obj, Class<T> interf)
+  public static <T> T newInstance(ProcessEngineSupport obj, Class<T> interf)
   {
     Class[] interfaces = new Class[] { interf, InvocationProxySupport.class };
     ClassLoader classLoader = obj.getClass().getClassLoader();
@@ -66,7 +70,7 @@
     else if (implObj instanceof InvocationProxySupport)
     {
       InvocationProxySupport proxy = (InvocationProxySupport)implObj;
-      underlyingImpl = (T)proxy.getAbstractElement();
+      underlyingImpl = (T)proxy.getUnderlying();
     }
     else
     {
@@ -74,39 +78,53 @@
     }
     return underlyingImpl;
   }
-  
-  private InvocationProxy(AbstractElementImpl<?> obj)
+
+  private InvocationProxy(ProcessEngineSupport obj)
   {
     this.engine = obj.getProcessEngine();
-    this.abstractElement = obj;
+    this.obj = obj;
   }
 
-  public AbstractElement getAbstractElement()
+  public ProcessEngineSupport getUnderlying()
   {
-    return abstractElement;
+    return obj;
   }
 
   public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
   {
-    if (proxyMethods.contains(m) && "getAbstractElement".equals(m.getName()))
+    if (proxyMethods.contains(m))
     {
-      return getAbstractElement();
+      return m.invoke(this, args);
     }
     else
     {
+      Throwable targetException = null;
+
       ExecutionContextService ctxService = engine.getService(ExecutionContextService.class);
       ExecutionContext bpmContext = ctxService.getExecutionContext(true);
       try
       {
-        return m.invoke(abstractElement, args);
+        return m.invoke(obj, args);
       }
       catch (InvocationTargetException ex)
       {
-        throw ex.getTargetException();
+        targetException = ex.getTargetException();
+        throw targetException;
       }
       finally
       {
-        bpmContext.close();
+        try
+        {
+          bpmContext.close();
+        }
+        catch (Throwable th)
+        {
+          if (targetException == null)
+            throw th;
+
+          log.error("Cannot close the execution context", th);
+          throw targetException;
+        }
       }
     }
   }

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxySupport.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxySupport.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/InvocationProxySupport.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -21,7 +21,7 @@
  */
 package org.jbpm.integration.spec.runtime;
 
-import org.jboss.bpm.api.model.AbstractElement;
+import org.jboss.bpm.api.service.ProcessEngineSupport;
 
 /**
  * Implemented by the proxy to give access to the underlying element.
@@ -31,5 +31,5 @@
  */
 public interface InvocationProxySupport
 {
-  AbstractElement getAbstractElement();
+  ProcessEngineSupport getUnderlying();
 }

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeExecuteInterceptor.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeExecuteInterceptor.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeExecuteInterceptor.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -23,16 +23,15 @@
 
 //$Id$
 
-
 /**
- * An interceptor that invokes the Node.execute 
+ * An interceptor that invokes the Node.execute
  * 
  * @author thomas.diesler at jboss.com
  * @since 07-Oct-2008
  */
 public class NodeExecuteInterceptor implements NodeInterceptor
 {
-  //@Override
+  // @Override
   public void execute(RuntimeContext rtContext)
   {
     rtContext.getToken();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeInterceptor.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeInterceptor.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/NodeInterceptor.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -31,5 +31,5 @@
  */
 public interface NodeInterceptor
 {
-  void execute (RuntimeContext rtContext);
+  void execute(RuntimeContext rtContext);
 }
\ No newline at end of file

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenAttachmentDelegate.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenAttachmentDelegate.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenAttachmentDelegate.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -40,7 +40,7 @@
 {
   private ContextInstance context;
   private TokenImpl token;
-  
+
   public TokenAttachmentDelegate(TokenImpl token, ContextInstance context)
   {
     this.token = token;

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -98,13 +98,11 @@
     return ProcessInstanceImpl.newInstance(getProcessEngine(), getDelegate().getProcessInstance(), true);
   }
 
-  // @Override
   public Attachments getAttachments()
   {
     return att;
   }
 
-  // @Override
   public TokenStatus getTokenStatus()
   {
     TokenStatus status = TokenStatus.Suspended;
@@ -115,7 +113,6 @@
     return status;
   }
 
-  // @Override
   public Set<Token> getChildTokens()
   {
     Set<Token> childTokens = new HashSet<Token>();
@@ -134,20 +131,17 @@
     return childTokens;
   }
 
-  // @Override
   public Node getNode()
   {
     String nodeName = getDelegate().getNode().getNameExt();
     return getProcess().getNode(nodeName);
   }
 
-  // @Override
   public SequenceFlow getLastFlow()
   {
     return lastFlow;
   }
 
-  // @Override
   public Token getParentToken()
   {
     Token token = null;
@@ -158,7 +152,6 @@
     return token;
   }
 
-  // @Override
   public Token getRootToken()
   {
     org.jbpm.graph.exe.Token root = getDelegate();
@@ -169,13 +162,11 @@
     return token;
   }
 
-  // @Override
   public void signal()
   {
     signalInternal(null);
   }
 
-  // @Override
   public void signal(String name)
   {
     signalInternal(name);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DeploymentServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DeploymentServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DeploymentServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -49,7 +49,7 @@
   // Provide logging
   final Logger log = LoggerFactory.getLogger(DeploymentServiceImpl.class);
 
-  //@Override
+  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);
@@ -78,14 +78,14 @@
     try
     {
       String pdXML = dep.getProcessDefinitionXML();
-      
+
       // Parse and register the ProcessDefinition
       ProcessDefinitionService pdService = getProcessEngine().getService(ProcessDefinitionService.class);
       ProcessDefinition procDef = pdService.parseProcessDefinition(pdXML);
       procDef = pdService.registerProcessDefinition(procDef);
-      
+
       dep.addAttachment(ObjectName.class, "procDefKey", procDef.getKey());
-      
+
       return procDef;
     }
     catch (IOException ex)

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DialectHandlerServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DialectHandlerServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/DialectHandlerServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -38,7 +38,7 @@
  */
 public class DialectHandlerServiceImpl extends AbstractDialectHandlerService implements MutableService
 {
-  //@Override
+  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionContextServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionContextServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionContextServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -62,13 +62,13 @@
   public ExecutionContext getExecutionContext(boolean create)
   {
     ExecutionContextImpl currContext = contextAssociation.get();
-    
+
     if (currContext == null && create == true)
       currContext = (ExecutionContextImpl)createExecutionContext();
-    
+
     if (currContext != null)
       currContext.clientCount++;
-    
+
     return currContext;
   }
 

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ExecutionServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -47,7 +47,6 @@
   // Provide logging
   final Logger log = LoggerFactory.getLogger(ExecutionServiceImpl.class);
 
-  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);
@@ -73,7 +72,7 @@
   public Token getToken(ObjectName tokenID)
   {
     Token token = null;
-    
+
     // [TODO] is there a better way than iterating over all processes and tokens?
     ProcessInstanceService procService = getProcessEngine().getService(ProcessInstanceService.class);
     for (ObjectName procID : procService.getInstance())

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/IdentityServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/IdentityServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/IdentityServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -49,16 +49,16 @@
   // Provide logging
   final Logger log = LoggerFactory.getLogger(IdentityServiceImpl.class);
 
-  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);
   }
 
+  @SuppressWarnings("unchecked")
   public List<String> getActors()
   {
     List<String> actors = new ArrayList<String>();
-    
+
     IdentitySession identSession = getIdentitySession();
     try
     {
@@ -72,14 +72,15 @@
     {
       identSession.close();
     }
-    
+
     return actors;
   }
 
+  @SuppressWarnings("unchecked")
   public List<String> getActorsByGroup(String group)
   {
     List<String> actors = new ArrayList<String>();
-    
+
     IdentitySession identSession = getIdentitySession();
     try
     {
@@ -97,7 +98,7 @@
     {
       identSession.close();
     }
-    
+
     return actors;
   }
 
@@ -106,10 +107,11 @@
     throw new NotImplementedException();
   }
 
+  @SuppressWarnings("unchecked")
   public List<String> getGroupsByActor(String actor)
   {
     List<String> groups = new ArrayList<String>();
-    
+
     IdentitySession identSession = getIdentitySession();
     try
     {
@@ -127,7 +129,7 @@
     {
       identSession.close();
     }
-    
+
     return groups;
   }
 

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/NoopPersistenceServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/NoopPersistenceServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/NoopPersistenceServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -53,85 +53,85 @@
   private Map<ObjectName, ProcessInstance> procs = new HashMap<ObjectName, ProcessInstance>();
   private Map<ObjectName, Node> nodes = new HashMap<ObjectName, Node>();
 
-  //@Override
+  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);
   }
-  
-  //@Override
+
+  // @Override
   public Session createSession()
   {
     return null;
   }
 
-  //@Override
+  // @Override
   public ObjectName saveProcessDefinition(ProcessDefinition procDef)
   {
     procDefs.put(procDef.getKey(), procDef);
     return procDef.getKey();
   }
 
-  //@Override
+  // @Override
   public ProcessDefinition loadProcessDefinition(ObjectName procDefID)
   {
     ProcessDefinition procDef = procDefs.get(procDefID);
     if (procDef == null)
       throw new ProcessNotFoundException("Cannot find process: " + procDefID);
-      
+
     return procDef;
   }
 
-  //@Override
+  // @Override
   public void deleteProcessDefinition(ProcessDefinition procDef)
   {
     procDefs.remove(procDef.getKey());
   }
 
-  //@Override
+  // @Override
   public ObjectName saveProcess(ProcessInstance proc)
   {
     procs.put(proc.getKey(), proc);
-    
+
     for (Node node : proc.getNodes())
       nodes.put(node.getKey(), node);
-    
+
     return proc.getKey();
   }
 
-  //@Override
+  // @Override
   public ProcessInstance loadProcess(ObjectName procID)
   {
     ProcessInstance proc = procs.get(procID);
     if (proc == null)
       throw new ProcessNotFoundException("Cannot find process: " + procID);
-    
+
     return proc;
   }
 
-  //@Override
+  // @Override
   public void deleteProcess(ProcessInstance proc)
   {
     procs.remove(proc.getKey());
-    
+
     for (Node node : proc.getNodes())
       nodes.remove(node.getKey());
   }
 
-  //@Override
+  // @Override
   public ObjectName saveNode(Session session, Node node)
   {
     return node.getKey();
   }
 
-  //@Override
+  // @Override
   @SuppressWarnings("unchecked")
   public <T extends Node> T loadNode(Session session, Class<T> nodeImpl, ObjectName nodeID)
   {
     T node = (T)nodes.get(nodeID);
     if (node == null)
       throw new ProcessNotFoundException("Cannot find node: " + nodeID);
-    
+
     return node;
   }
 }

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessBuilderServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessBuilderServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessBuilderServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -28,6 +28,7 @@
 import org.jboss.bpm.api.service.ProcessBuilderService;
 import org.jboss.bpm.api.service.ProcessEngine;
 import org.jbpm.integration.spec.model.builder.ProcessBuilderImpl;
+
 /**
  * The ProcessBuilder can be used to build a {@link ProcessInstance} dynamically.
  * 
@@ -36,15 +37,15 @@
  */
 public class ProcessBuilderServiceImpl extends ProcessBuilderService implements MutableService
 {
-  //@Override
+  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);
   }
-  
-  //@Override
+
+  // @Override
   public ProcessBuilder getProcessBuilder()
   {
-    return new ProcessBuilderImpl(getProcessEngine()); 
+    return new ProcessBuilderImpl(getProcessEngine());
   }
 }
\ No newline at end of file

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessDefinitionServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessDefinitionServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessDefinitionServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -53,7 +53,7 @@
 {
   // Provide logging
   final static Logger log = LoggerFactory.getLogger(ProcessDefinitionServiceImpl.class);
-  
+
   @Override
   public void setProcessEngine(ProcessEngine engine)
   {
@@ -67,14 +67,14 @@
     try
     {
       ProcessDefinition procDef = null;
-      
+
       GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
       org.jbpm.graph.def.ProcessDefinition oldProcDef = graphSession.getProcessDefinition(adaptKey(procDefID));
       if (oldProcDef != null)
       {
         procDef = ProcessDefinitionImpl.newInstance(getProcessEngine(), oldProcDef, true);
       }
-      
+
       return procDef;
     }
     finally
@@ -90,14 +90,14 @@
     try
     {
       Set<ObjectName> procDefs = new HashSet<ObjectName>();
-      
+
       GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
       for (Object item : graphSession.findAllProcessDefinitions())
       {
         org.jbpm.graph.def.ProcessDefinition oldProcDef = (org.jbpm.graph.def.ProcessDefinition)item;
         procDefs.add(ProcessDefinitionImpl.getKey(oldProcDef));
       }
-      
+
       return Collections.unmodifiableSet(procDefs);
     }
     finally
@@ -113,14 +113,14 @@
     try
     {
       log.debug("registerProcessDefinition: " + procDef);
-      
+
       if (getProcessDefinition(procDef.getKey()) != null)
         throw new IllegalStateException("Process definition already registered: " + procDef);
-      
+
       JbpmContext jbpmContext = bpmContext.getAttachment(JbpmContext.class);
       ProcessDefinitionImpl procDefImpl = InvocationProxy.getUnderlying(procDef, ProcessDefinitionImpl.class);
       jbpmContext.deployProcessDefinition(procDefImpl.getDelegate());
-      
+
       procDef = InvocationProxy.newInstance(procDefImpl, ProcessDefinition.class);
       return procDef;
     }
@@ -133,7 +133,7 @@
   public boolean unregisterProcessDefinition(ObjectName procDefID)
   {
     boolean removed = false;
-    
+
     ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
     ExecutionContext bpmContext = ctxService.getExecutionContext(true);
     try
@@ -142,12 +142,12 @@
       if (procDef != null)
       {
         log.debug("unregisterProcessDefinition: " + procDef);
-        
+
         // Unregister the associated process instances
         ProcessInstanceService procService = getProcessEngine().getService(ProcessInstanceService.class);
         for (ObjectName procID : procService.getInstance(procDefID, null))
           procService.unregisterInstance(procID);
-        
+
         JbpmContext jbpmContext = bpmContext.getAttachment(JbpmContext.class);
         jbpmContext.getGraphSession().deleteProcessDefinition(adaptKey(procDefID));
         removed = true;
@@ -157,10 +157,10 @@
     {
       bpmContext.close();
     }
-    
+
     return removed;
   }
-  
+
   private Long adaptKey(ObjectName key)
   {
     String id = key.getKeyProperty("id");

Copied: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessInstanceServiceImpl.java (from rev 3248, jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessServiceImpl.java)
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessInstanceServiceImpl.java	                        (rev 0)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessInstanceServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -0,0 +1,275 @@
+/*
+ * 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.integration.spec.service;
+
+// $Id$
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.api.model.ProcessInstance;
+import org.jboss.bpm.api.model.ProcessDefinition;
+import org.jboss.bpm.api.model.ProcessInstance.ProcessStatus;
+import org.jboss.bpm.api.runtime.ExecutionContext;
+import org.jboss.bpm.api.service.ExecutionContextService;
+import org.jboss.bpm.api.service.ProcessDefinitionService;
+import org.jboss.bpm.api.service.ProcessEngine;
+import org.jboss.bpm.api.service.ProcessInstanceService;
+import org.jboss.bpm.api.service.internal.AbstractProcessService;
+import org.jbpm.JbpmContext;
+import org.jbpm.db.GraphSession;
+import org.jbpm.integration.spec.model.ProcessDefinitionImpl;
+import org.jbpm.integration.spec.model.ProcessInstanceImpl;
+import org.jbpm.integration.spec.runtime.InvocationProxy;
+import org.jbpm.integration.spec.runtime.NodeInterceptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The ProcessService is the entry point to create, find and otherwise manage processes.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 18-Jun-2008
+ */
+public class ProcessInstanceServiceImpl extends AbstractProcessService implements ProcessInstanceService, MutableService
+{
+  // Provide logging
+  final static Logger log = LoggerFactory.getLogger(ProcessInstanceServiceImpl.class);
+
+  private List<NodeInterceptor> nodeInterceptors = new ArrayList<NodeInterceptor>();
+
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
+
+  public void setInterceptors(List<String> itorClassNames)
+  {
+    for (String itorClass : itorClassNames)
+    {
+      NodeInterceptor itor = loadNodeInterceptor(itorClass);
+      nodeInterceptors.add(itor);
+    }
+  }
+
+  public List<NodeInterceptor> getNodeInterceptors()
+  {
+    return Collections.unmodifiableList(nodeInterceptors);
+  }
+
+  /**
+   * Get a Process for a given id
+   */
+  public ProcessInstance getInstance(ObjectName procID)
+  {
+    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
+    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
+    try
+    {
+      ProcessInstance proc = null;
+
+      GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
+      org.jbpm.graph.exe.ProcessInstance oldProc = graphSession.getProcessInstance(adaptKey(procID));
+      if (oldProc != null)
+      {
+        proc = ProcessInstanceImpl.newInstance(getProcessEngine(), oldProc, true);
+      }
+
+      return proc;
+    }
+    finally
+    {
+      bpmContext.close();
+    }
+  }
+
+  /**
+   * Get the set of registered Processes
+   */
+  public Set<ObjectName> getInstance()
+  {
+    Set<ObjectName> procs = new HashSet<ObjectName>();
+
+    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
+    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
+    try
+    {
+      ProcessDefinitionService pdService = getProcessEngine().getService(ProcessDefinitionService.class);
+      for (ObjectName procDefID : pdService.getProcessDefinitions())
+      {
+        Long id = adaptKey(procDefID);
+        GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
+        for (Object item : graphSession.findProcessInstances(id))
+        {
+          org.jbpm.graph.exe.ProcessInstance oldProc = (org.jbpm.graph.exe.ProcessInstance)item;
+          procs.add(ProcessInstanceImpl.getKey(oldProc));
+        }
+      }
+    }
+    finally
+    {
+      bpmContext.close();
+    }
+    return Collections.unmodifiableSet(procs);
+  }
+
+  /**
+   * Find the set of Processes for a given name
+   * 
+   * @param procDefID The process name
+   * @param status The optional process status
+   * @return An empty set if the process cannot be found
+   */
+  public Set<ObjectName> getInstance(ObjectName procDefID, ProcessStatus status)
+  {
+    Set<ObjectName> procs = new HashSet<ObjectName>();
+
+    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
+    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
+    try
+    {
+      Long id = adaptKey(procDefID);
+      GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
+      for (Object item : graphSession.findProcessInstances(id))
+      {
+        org.jbpm.graph.exe.ProcessInstance oldProc = (org.jbpm.graph.exe.ProcessInstance)item;
+        ProcessInstance auxProc = ProcessInstanceImpl.newInstance(getProcessEngine(), oldProc, true);
+        if (status == null || auxProc.getProcessStatus() == status)
+          procs.add(auxProc.getKey());
+      }
+    }
+    finally
+    {
+      bpmContext.close();
+    }
+    return Collections.unmodifiableSet(procs);
+  }
+
+  /**
+   * Register a Process.
+   */
+  public ProcessInstance registerInstance(ProcessInstance proc)
+  {
+    log.debug("registerProcess: " + proc);
+
+    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
+    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
+    try
+    {
+      if (getInstance(proc.getKey()) != null)
+        throw new IllegalStateException("Process already registered: " + proc);
+
+      ProcessStatus procStatus = proc.getProcessStatus();
+      if (procStatus != ProcessStatus.None)
+        throw new IllegalStateException("Cannot register process in state: " + procStatus);
+
+      ProcessDefinition procDef = proc.getProcessDefinition();
+
+      // Register the process definition if needed
+      ProcessDefinitionService procDefService = getProcessEngine().getService(ProcessDefinitionService.class);
+      if (procDefService.getProcessDefinition(procDef.getKey()) == null)
+        procDefService.registerProcessDefinition(procDef);
+
+      ProcessInstanceImpl procImpl = InvocationProxy.getUnderlying(proc, ProcessInstanceImpl.class);
+      org.jbpm.graph.exe.ProcessInstance oldProcInst = procImpl.getDelegate();
+
+      // Make sure the process definition from this session is associated with the process instance
+      procDef = procDefService.getProcessDefinition(procDef.getKey());
+      ProcessDefinitionImpl procDefImpl = InvocationProxy.getUnderlying(procDef, ProcessDefinitionImpl.class);
+      oldProcInst.setProcessDefinition(procDefImpl.getDelegate());
+
+      // Save the ProcessInstance
+      JbpmContext jbpmContext = bpmContext.getAttachment(JbpmContext.class);
+      jbpmContext.save(oldProcInst);
+
+      procImpl.setProcessStatus(ProcessStatus.Ready);
+      proc = InvocationProxy.newInstance(procImpl, ProcessInstance.class);
+      return proc;
+    }
+    finally
+    {
+      bpmContext.close();
+    }
+  }
+
+  /**
+   * Unregister a Process.
+   */
+  public boolean unregisterInstance(ObjectName procID)
+  {
+    boolean removed = false;
+
+    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
+    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
+    try
+    {
+      ProcessInstance proc = getInstance(procID);
+      if (proc != null)
+      {
+        log.debug("unregisterProcess: " + proc);
+
+        ProcessInstanceImpl procImpl = InvocationProxy.getUnderlying(proc, ProcessInstanceImpl.class);
+        GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
+        graphSession.deleteProcessInstance(procImpl.getDelegate());
+        removed = true;
+      }
+    }
+    finally
+    {
+      bpmContext.close();
+    }
+    return removed;
+
+  }
+
+  private NodeInterceptor loadNodeInterceptor(String className)
+  {
+    NodeInterceptor itor = null;
+    if (className != null)
+    {
+      try
+      {
+        ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
+        itor = (NodeInterceptor)ctxLoader.loadClass(className).newInstance();
+      }
+      catch (Exception ex)
+      {
+        log.error("Cannot load interceptor: " + className, ex);
+      }
+    }
+    return itor;
+  }
+
+  private Long adaptKey(ObjectName key)
+  {
+    String id = key.getKeyProperty("id");
+    if (id == null)
+      throw new IllegalStateException("Cannot obtain id property from: " + key);
+
+    return new Long(id);
+  }
+}
\ No newline at end of file

Deleted: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/ProcessServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -1,279 +0,0 @@
-/*
- * 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.integration.spec.service;
-
-// $Id$
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.ObjectName;
-
-import org.jboss.bpm.api.model.ProcessInstance;
-import org.jboss.bpm.api.model.ProcessDefinition;
-import org.jboss.bpm.api.model.ProcessInstance.ProcessStatus;
-import org.jboss.bpm.api.runtime.ExecutionContext;
-import org.jboss.bpm.api.service.ExecutionContextService;
-import org.jboss.bpm.api.service.ProcessDefinitionService;
-import org.jboss.bpm.api.service.ProcessEngine;
-import org.jboss.bpm.api.service.ProcessInstanceService;
-import org.jboss.bpm.api.service.internal.AbstractProcessService;
-import org.jbpm.JbpmContext;
-import org.jbpm.db.GraphSession;
-import org.jbpm.integration.spec.model.ProcessDefinitionImpl;
-import org.jbpm.integration.spec.model.ProcessInstanceImpl;
-import org.jbpm.integration.spec.runtime.InvocationProxy;
-import org.jbpm.integration.spec.runtime.NodeInterceptor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The ProcessService is the entry point to create, find and otherwise manage processes.
- * 
- * @author thomas.diesler at jboss.com
- * @since 18-Jun-2008
- */
-public class ProcessServiceImpl extends AbstractProcessService implements ProcessInstanceService, MutableService
-{
-  // Provide logging
-  final static Logger log = LoggerFactory.getLogger(ProcessServiceImpl.class);
-
-  private List<NodeInterceptor> nodeInterceptors = new ArrayList<NodeInterceptor>();
-
-  // @Override
-  public void setProcessEngine(ProcessEngine engine)
-  {
-    super.setProcessEngine(engine);
-  }
-
-  public void setInterceptors(List<String> itorClassNames)
-  {
-    for (String itorClass : itorClassNames)
-    {
-      NodeInterceptor itor = loadNodeInterceptor(itorClass);
-      nodeInterceptors.add(itor);
-    }
-  }
-
-  public List<NodeInterceptor> getNodeInterceptors()
-  {
-    return Collections.unmodifiableList(nodeInterceptors);
-  }
-
-  /**
-   * Get a Process for a given id
-   */
-  // @Override
-  public ProcessInstance getInstance(ObjectName procID)
-  {
-    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
-    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
-    try
-    {
-      ProcessInstance proc = null;
-      
-      GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
-      org.jbpm.graph.exe.ProcessInstance oldProc = graphSession.getProcessInstance(adaptKey(procID));
-      if (oldProc != null)
-      {
-        proc = ProcessInstanceImpl.newInstance(getProcessEngine(), oldProc, true);
-      }
-      
-      return proc;
-    }
-    finally
-    {
-      bpmContext.close();
-    }
-  }
-
-  /**
-   * Get the set of registered Processes
-   */
-  // @Override
-  public Set<ObjectName> getInstance()
-  {
-    Set<ObjectName> procs = new HashSet<ObjectName>();
-
-    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
-    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
-    try
-    {
-      ProcessDefinitionService pdService = getProcessEngine().getService(ProcessDefinitionService.class);
-      for (ObjectName procDefID : pdService.getProcessDefinitions())
-      {
-        Long id = adaptKey(procDefID);
-        GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
-        for (Object item : graphSession.findProcessInstances(id))
-        {
-          org.jbpm.graph.exe.ProcessInstance oldProc = (org.jbpm.graph.exe.ProcessInstance)item;
-          procs.add(ProcessInstanceImpl.getKey(oldProc));
-        }
-      }
-    }
-    finally
-    {
-      bpmContext.close();
-    }
-    return Collections.unmodifiableSet(procs);
-  }
-
-  /**
-   * Find the set of Processes for a given name
-   * 
-   * @param procDefID The process name
-   * @param status The optional process status
-   * @return An empty set if the process cannot be found
-   */
-  // @Override
-  public Set<ObjectName> getInstance(ObjectName procDefID, ProcessStatus status)
-  {
-    Set<ObjectName> procs = new HashSet<ObjectName>();
-
-    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
-    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
-    try
-    {
-      Long id = adaptKey(procDefID);
-      GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
-      for (Object item : graphSession.findProcessInstances(id))
-      {
-        org.jbpm.graph.exe.ProcessInstance oldProc = (org.jbpm.graph.exe.ProcessInstance)item;
-        ProcessInstance auxProc = ProcessInstanceImpl.newInstance(getProcessEngine(), oldProc, true);
-        if (status == null || auxProc.getProcessStatus() == status)
-          procs.add(auxProc.getKey());
-      }
-    }
-    finally
-    {
-      bpmContext.close();
-    }
-    return Collections.unmodifiableSet(procs);
-  }
-
-  /**
-   * Register a Process.
-   */
-  public ProcessInstance registerInstance(ProcessInstance proc)
-  {
-    log.debug("registerProcess: " + proc);
-
-    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
-    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
-    try
-    {
-      if (getInstance(proc.getKey()) != null)
-        throw new IllegalStateException("Process already registered: " + proc);
-
-      ProcessStatus procStatus = proc.getProcessStatus();
-      if (procStatus != ProcessStatus.None)
-        throw new IllegalStateException("Cannot register process in state: " + procStatus);
-
-      ProcessDefinition procDef = proc.getProcessDefinition();
-
-      // Register the process definition if needed
-      ProcessDefinitionService procDefService = getProcessEngine().getService(ProcessDefinitionService.class);
-      if (procDefService.getProcessDefinition(procDef.getKey()) == null)
-        procDefService.registerProcessDefinition(procDef);
-      
-      ProcessInstanceImpl procImpl = InvocationProxy.getUnderlying(proc, ProcessInstanceImpl.class);
-      org.jbpm.graph.exe.ProcessInstance oldProcInst = procImpl.getDelegate();
-
-      // Make sure the process definition from this session is associated with the process instance
-      procDef = procDefService.getProcessDefinition(procDef.getKey());
-      ProcessDefinitionImpl procDefImpl = InvocationProxy.getUnderlying(procDef, ProcessDefinitionImpl.class);
-      oldProcInst.setProcessDefinition(procDefImpl.getDelegate());
-
-      // Save the ProcessInstance
-      JbpmContext jbpmContext = bpmContext.getAttachment(JbpmContext.class);
-      jbpmContext.save(oldProcInst);
-
-      procImpl.setProcessStatus(ProcessStatus.Ready);
-      proc = InvocationProxy.newInstance(procImpl, ProcessInstance.class);
-      return proc;
-    }
-    finally
-    {
-      bpmContext.close();
-    }
-  }
-
-  /**
-   * Unregister a Process.
-   */
-  public boolean unregisterInstance(ObjectName procID)
-  {
-    boolean removed = false;
-
-    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
-    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
-    try
-    {
-      ProcessInstance proc = getInstance(procID);
-      if (proc != null)
-      {
-        log.debug("unregisterProcess: " + proc);
-
-        ProcessInstanceImpl procImpl = InvocationProxy.getUnderlying(proc, ProcessInstanceImpl.class);
-        GraphSession graphSession = bpmContext.getAttachment(JbpmContext.class).getGraphSession();
-        graphSession.deleteProcessInstance(procImpl.getDelegate());
-        removed = true;
-      }
-    }
-    finally
-    {
-      bpmContext.close();
-    }
-    return removed;
-
-  }
-
-  private NodeInterceptor loadNodeInterceptor(String className)
-  {
-    NodeInterceptor itor = null;
-    if (className != null)
-    {
-      try
-      {
-        ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
-        itor = (NodeInterceptor)ctxLoader.loadClass(className).newInstance();
-      }
-      catch (Exception ex)
-      {
-        log.error("Cannot load interceptor: " + className, ex);
-      }
-    }
-    return itor;
-  }
-
-  private Long adaptKey(ObjectName key)
-  {
-    String id = key.getKeyProperty("id");
-    if (id == null)
-      throw new IllegalStateException("Cannot obtain id property from: " + key);
-
-    return new Long(id);
-  }
-}
\ No newline at end of file

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/TaskServiceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/TaskServiceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/service/TaskServiceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -54,7 +54,6 @@
   // Provide logging
   final Logger log = LoggerFactory.getLogger(TaskServiceImpl.class);
 
-  // @Override
   public void setProcessEngine(ProcessEngine engine)
   {
     super.setProcessEngine(engine);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/task/TaskInstanceImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/task/TaskInstanceImpl.java	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/task/TaskInstanceImpl.java	2008-12-07 13:54:54 UTC (rev 3255)
@@ -46,7 +46,7 @@
  * @author thomas.diesler at jboss.com
  * @since 28-Nov-2008
  */
-public class TaskInstanceImpl extends AbstractElementImpl<org.jbpm.taskmgmt.exe.TaskInstance> implements TaskInstance 
+public class TaskInstanceImpl extends AbstractElementImpl<org.jbpm.taskmgmt.exe.TaskInstance> implements TaskInstance
 {
   private static final long serialVersionUID = 1L;
 
@@ -54,16 +54,16 @@
   final Logger log = LoggerFactory.getLogger(TaskInstanceImpl.class);
 
   private ObjectName keyCache;
-  
+
   public static TaskInstance newInstance(ProcessEngine engine, org.jbpm.taskmgmt.exe.TaskInstance tmpTask)
   {
     return InvocationProxy.newInstance(new TaskInstanceImpl(engine, tmpTask), TaskInstance.class);
   }
-  
+
   private TaskInstanceImpl(ProcessEngine engine, org.jbpm.taskmgmt.exe.TaskInstance tmpTask)
   {
     super(engine, tmpTask, org.jbpm.taskmgmt.exe.TaskInstance.class);
-    
+
     if (tmpTask.getId() > 0)
       keyCache = getKey(tmpTask);
   }
@@ -95,17 +95,17 @@
   {
     getDelegate().end(targetName);
   }
-  
+
   public boolean hasEnded()
   {
     return getDelegate().hasEnded();
   }
-  
+
   public boolean isCancelled()
   {
     return getDelegate().isCancelled();
   }
-  
+
   public boolean isBlocking()
   {
     return getDelegate().isBlocking();
@@ -124,7 +124,7 @@
   public ObjectName getCorrelationKey()
   {
     Token token = null;
-    
+
     if (getDelegate().getToken() != null)
     {
       long tokenID = getDelegate().getToken().getId();
@@ -139,10 +139,10 @@
         }
       }
     }
-    
+
     if (token == null)
       throw new IllegalStateException("Cannot obtain associated token");
-    
+
     return token.getKey();
   }
 

Modified: jbpm3/trunk/modules/integration/spec/src/main/resources/jbpm-cfg-beans.xml
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/resources/jbpm-cfg-beans.xml	2008-12-07 13:19:26 UTC (rev 3254)
+++ jbpm3/trunk/modules/integration/spec/src/main/resources/jbpm-cfg-beans.xml	2008-12-07 13:54:54 UTC (rev 3255)
@@ -30,7 +30,7 @@
  <bean name="BPMPersistenceService" class="org.jbpm.integration.spec.service.NoopPersistenceServiceImpl" />
 
  <!-- The ProcessService -->
- <bean name="BPMProcessService" class="org.jbpm.integration.spec.service.ProcessServiceImpl">
+ <bean name="BPMProcessService" class="org.jbpm.integration.spec.service.ProcessInstanceServiceImpl">
   <property name="interceptors">
    <list elementClass="java.lang.String">
     <value>org.jbpm.integration.spec.runtime.NodeExecuteInterceptor</value>




More information about the jbpm-commits mailing list