[jbpm-commits] JBoss JBPM SVN: r2476 - in projects/spec/trunk/modules: cts/src/test/java/org/jbpm/test/cts/service/process and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sat Oct 4 08:30:21 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-10-04 08:30:21 -0400 (Sat, 04 Oct 2008)
New Revision: 2476

Added:
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java
Removed:
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java
Modified:
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
Log:
SequenceTest - pass

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -86,7 +86,7 @@
    */
   public ObjectName registerProcessDefinition(ProcessDefinition procDef)
   {
-    if (getProcessDefinitionByName(procDef.getName()) != null)
+    if (getProcessDefinition(procDef.getKey()) != null)
       throw new IllegalStateException("Process definition already registered: " + procDef);
     
     log.debug("registerProcessDefinition: " + procDef);
@@ -136,23 +136,6 @@
   }
 
   /**
-   * Get a ProcessDefinition for a given name
-   */
-  public ProcessDefinition getProcessDefinitionByName(String name)
-  {
-    ProcessDefinition procDef = null;
-    for (ProcessDefinition auxDef : procDefs.values())
-    {
-      if (auxDef.getName().equals(name))
-      {
-        procDef = auxDef;
-        break;
-      }
-    }
-    return procDef;
-  }
-
-  /**
    * Get the set of registered ProcessDefinition names
    */
   public Set<ObjectName> getProcessDefinitions()

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -33,6 +33,7 @@
 
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
 import org.jbpm.api.model.Process.ProcessStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -72,6 +73,21 @@
   {
     log.debug("registerProcess: " + proc);
     
+    if (getProcess(proc.getKey()) != null)
+      throw new IllegalStateException("Process already registered: " + proc);
+    
+    ProcessStatus procStatus = proc.getProcessStatus();
+    ProcessDefinition procDef = proc.getProcessDefinition();
+    ProcessEngine engine = getProcessEngine();
+    
+    if (procStatus != ProcessStatus.None)
+      throw new IllegalStateException("Cannot register process in state: " + procStatus);
+    
+    // Register the process definition if needed
+    ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
+    if (procDefService.getProcessDefinition(procDef.getKey()) == null)
+      procDefService.registerProcessDefinition(procDef);
+    
     // Save the process through the PersistenceService
     PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
     ObjectName procID = dbService.saveProcess(proc);

Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java (from rev 2470, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java)
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java	                        (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test.cts.service.process;
+
+// $Id$
+
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.service.ProcessDefinitionService;
+import org.jbpm.api.service.ProcessService;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Test the ProcessDefinition
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 24-Sep-2008
+ */
+public class ProcessDefinitionServiceTest extends CTSTestCase
+{
+  public void testBasicProcess() throws Exception
+  {
+    ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
+    ProcessCatalog.validateDefaultProcess(procDef);
+
+    ProcessEngine engine = procDef.getProcessEngine();
+    assertNotNull("Process engine not null", engine);
+
+    ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
+    ProcessService procService = engine.getService(ProcessService.class);
+
+    Set<ObjectName> procDefs = procDefService.getProcessDefinitions();
+    assertEquals("ProcessDefinition not automatically registered", 0, procDefs.size());
+
+    Process proc = procDef.newInstance();
+    assertNotNull("Process not null", proc);
+    assertNull("Process not automatically registered", procService.getProcess(proc.getKey()));
+    assertNull("ProcessDefinition not automatically registered", procDefService.getProcessDefinition(procDef.getKey()));
+  }
+}

Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -1,72 +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.test.cts.service.process;
-
-// $Id$
-
-import java.util.Set;
-
-import javax.management.ObjectName;
-
-import org.jbpm.api.client.ProcessEngine;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.model.ProcessDefinition;
-import org.jbpm.api.service.ProcessDefinitionService;
-import org.jbpm.api.service.ProcessService;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * Test the ProcessDefinition
- * 
- * @author thomas.diesler at jboss.com
- * @since 24-Sep-2008
- */
-public class ProcessDefinitionTest extends CTSTestCase
-{
-  public void testBasicProcess() throws Exception
-  {
-    ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
-    ProcessCatalog.validateDefaultProcess(procDef);
-    
-    ProcessEngine engine = procDef.getProcessEngine();
-    assertNotNull("Process engine not null", engine);
-    
-    ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
-    ProcessService procService = engine.getService(ProcessService.class);
-    
-    Set<ObjectName> procDefs = procDefService.getProcessDefinitions();
-    assertEquals("ProcessDefinition not automatically registered", 0, procDefs.size());
-    
-    try
-    {
-      Process proc = procDef.newInstance();
-      assertNotNull("Process not null", proc);
-      
-      assertNotNull("Process registered", procService.getProcess(proc.getKey()));
-      assertNotNull("ProcessDefinition registered", procDefService.getProcessDefinition(procDef.getKey()));
-    }
-    finally
-    {
-      procDefService.unregisterProcessDefinition(procDef.getKey());
-    }
-  }
-}

Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -23,6 +23,8 @@
 
 // $Id$
 
+import javax.management.ObjectName;
+
 import org.jbpm.api.client.SignalListener;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.ProcessDefinition;
@@ -30,6 +32,7 @@
 import org.jbpm.api.model.Signal.SignalType;
 import org.jbpm.api.model.builder.ProcessBuilder;
 import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessDefinitionService;
 import org.jbpm.api.service.ProcessService;
 import org.jbpm.api.service.SignalService;
 import org.jbpm.api.test.CTSTestCase;
@@ -42,11 +45,39 @@
  */
 public class ProcessServiceTest extends CTSTestCase
 {
+  public void testRegisterProcess() throws Exception
+  {
+    ProcessDefinitionService procDefService = ProcessDefinitionService.locateProcessDefinitionService();
+    ProcessService procService = ProcessService.locateProcessService();
+    
+    ProcessDefinition procDef = getProcessDefinition();
+    Process proc = procDef.newInstance();
+
+    assertNull("ProcessDefinition not registered automatically", procDefService.getProcessDefinition(procDef.getKey()));
+    assertNull("Process not registered automatically", procService.getProcess(proc.getKey()));
+
+    // Register the process
+    ObjectName procID = procService.registerProcess(proc);
+    assertEquals("Proc ID equals", proc.getKey(), procID);
+    assertNotNull("ProcessDefinition registered", procDefService.getProcessDefinition(procDef.getKey()));
+    assertNotNull("Process registered", procService.getProcess(proc.getKey()));
+
+    // Unregister the process
+    procService.unregisterProcess(procID);
+    assertNull("Process unregistered", procService.getProcess(procID));
+    assertNotNull("ProcessDefinition still registered", procDefService.getProcessDefinition(procDef.getKey()));
+    
+    procDefService.unregisterProcessDefinition(procDef.getKey());
+    assertNull("ProcessDefinition unregistered", procDefService.getProcessDefinition(procDef.getKey()));
+  }
+  
   public void testStartProcess() throws Exception
   {
-    ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+    final ProcessDefinitionService procDefService = ProcessDefinitionService.locateProcessDefinitionService();
+    final ProcessService procService = ProcessService.locateProcessService();
+    
+    final ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
     final Process proc = procDef.newInstance();
-    final ProcessService procService = ProcessService.locateProcessService();
     assertNull("Process not registered automatically", procService.getProcess(proc.getKey()));
 
     SignalListener sigListener = new SignalListener()
@@ -58,6 +89,7 @@
 
       public void catchSignal(Signal signal)
       {
+        assertNotNull(procDefService.getProcessDefinition(procDef.getKey()));
         assertNotNull(procService.getProcess(proc.getKey()));
       }
     };
@@ -66,7 +98,7 @@
 
     try
     {
-      // Start the process, which automatically adds it to the registery
+      // Start the process, which automatically adds it to the registry
       proc.startProcess();
       proc.waitForEnd();
     }
@@ -81,7 +113,7 @@
   private ProcessDefinition getProcessDefinition()
   {
     ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
-    builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA");
-    return builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcessDefinition();
+    builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Task");
+    return builder.addTask("Task").addSequenceFlow("End").addEndEvent("End").getProcessDefinition();
   }
 }

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -24,11 +24,9 @@
 //$Id$
 
 import javax.management.ObjectName;
-import javax.persistence.CascadeType;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.ManyToOne;
 import javax.persistence.Transient;
 
@@ -52,19 +50,19 @@
 public class ProcessImpl extends StructureDelegateImpl implements Process
 {
   private static final long serialVersionUID = 1L;
-  
+
   // provide logging
   final static Logger log = LoggerFactory.getLogger(ProcessImpl.class);
 
   @Enumerated(EnumType.STRING)
   private ProcessStatus status = ProcessStatus.None;
-  
-  @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = ProcessDefinitionImpl.class)
+
+  @ManyToOne(targetEntity = ProcessDefinitionImpl.class)
   private ProcessDefinition procDef;
-  
-  @Transient 
-  private transient RuntimeException runtimeException; 
 
+  @Transient
+  private transient RuntimeException runtimeException;
+
   public ProcessImpl(ProcessEngine engine, ProcessDefinitionImpl procDef, ProcessStructureImpl procStruct)
   {
     super(engine, procStruct);
@@ -154,6 +152,20 @@
     return exService.waitForEnd(this, timeout);
   }
 
+  @Override
+  public void register(Process proc)
+  {
+    super.register(proc);
+    procStruct.register(proc);
+  }
+
+  @Override
+  public void unregister(Process proc)
+  {
+    super.unregister(proc);
+    procStruct.unregister(proc);
+  }
+
   public String toString()
   {
     return "Process[" + getName() + ",status=" + getProcessStatus() + "]";

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -55,9 +55,9 @@
   final static Logger log = LoggerFactory.getLogger(StructureDelegateImpl.class);
 
   @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = ProcessStructureImpl.class)
-  protected ProcessStructure procStruct;
+  protected ProcessStructureImpl procStruct;
   
-  public StructureDelegateImpl(ProcessEngine engine, ProcessStructure procStruct)
+  public StructureDelegateImpl(ProcessEngine engine, ProcessStructureImpl procStruct)
   {
     super(engine);
     this.procStruct = procStruct;

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -160,9 +160,9 @@
 
   private void startProcessPrepare(Process proc)
   {
-    // Reset the process if already terminated
+    // Veriy the process state
     ProcessStatus procStatus = proc.getProcessStatus();
-    if (procStatus != ProcessStatus.Ready)
+    if (procStatus != ProcessStatus.None && procStatus != ProcessStatus.Ready)
       throw new IllegalStateException("Cannot start process in state: " + procStatus);
 
     // Register the process if needed

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java	2008-10-04 10:07:07 UTC (rev 2475)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java	2008-10-04 12:30:21 UTC (rev 2476)
@@ -23,8 +23,13 @@
 
 // $Id$
 
+import javax.management.ObjectName;
+
 import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.Process.ProcessStatus;
 import org.jbpm.api.service.ProcessService;
+import org.jbpm.ri.model.ProcessImpl;
 
 /**
  * The ProcessService is the entry point to create, find and otherwise manage processes.
@@ -39,4 +44,24 @@
   {
     super.setProcessEngine(engine);
   }
+
+  @Override
+  public ObjectName registerProcess(Process proc)
+  {
+    ObjectName procID = super.registerProcess(proc);
+    
+    ProcessImpl procImpl = (ProcessImpl)proc;
+    procImpl.register(proc);
+    
+    procImpl.setProcessStatus(ProcessStatus.Ready);
+    return procID;
+  }
+
+  @Override
+  public boolean unregisterProcess(ObjectName procID)
+  {
+    ProcessImpl procImpl = (ProcessImpl)getProcess(procID);
+    procImpl.unregister(procImpl);
+    return super.unregisterProcess(procID);
+  }
 }
\ No newline at end of file




More information about the jbpm-commits mailing list