[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