JBoss JBPM SVN: r1595 - jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/job/executor.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2008-07-11 13:24:48 -0400 (Fri, 11 Jul 2008)
New Revision: 1595
Modified:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/job/executor/JobExecutorThread.java
Log:
refined jbpm persistence exception handling in job executor
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/job/executor/JobExecutorThread.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/job/executor/JobExecutorThread.java 2008-07-11 16:11:52 UTC (rev 1594)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/job/executor/JobExecutorThread.java 2008-07-11 17:24:48 UTC (rev 1595)
@@ -10,14 +10,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.hibernate.Hibernate;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.JobSession;
import org.jbpm.job.Job;
-import org.jbpm.job.Timer;
import org.jbpm.persistence.JbpmPersistenceException;
-import org.jbpm.persistence.db.StaleObjectLogConfigurer;
import org.jbpm.svc.Services;
public class JobExecutorThread extends Thread {
@@ -104,12 +101,13 @@
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
JobSession jobSession = jbpmContext.getJobSession();
+ String lockOwner = getName();
log.debug("querying for acquirable job...");
- Job job = jobSession.getFirstAcquirableJob(getName());
+ Job job = jobSession.getFirstAcquirableJob(lockOwner);
if (job!=null) {
if (job.isExclusive()) {
log.debug("exclusive acquirable job found ("+job+"). querying for other exclusive jobs to lock them all in one tx...");
- List otherExclusiveJobs = jobSession.findExclusiveJobs(getName(), job.getProcessInstance());
+ List otherExclusiveJobs = jobSession.findExclusiveJobs(lockOwner, job.getProcessInstance());
jobsToLock = otherExclusiveJobs;
log.debug("trying to obtain a process-instance exclusive locks for '"+otherExclusiveJobs+"'");
} else {
@@ -117,18 +115,19 @@
jobsToLock = Collections.singletonList(job);
}
- Iterator iter = jobsToLock.iterator();
- while (iter.hasNext()) {
+ Date lockTime = new Date();
+ for (Iterator iter = jobsToLock.iterator(); iter.hasNext();) {
job = (Job) iter.next();
- job.setLockOwner(getName());
- job.setLockTime(new Date());
+ job.setLockOwner(lockOwner);
+ job.setLockTime(lockTime);
// jbpmContext.getSession().update(job);
}
// HACKY HACK : this is a workaround for a hibernate problem that is fixed in hibernate 3.2.1
- if (job instanceof Timer) {
- Hibernate.initialize(((Timer)job).getGraphElement());
- }
+ // TODO is this still needed?
+ // if (job instanceof Timer) {
+ // Hibernate.initialize(((Timer)job).getGraphElement());
+ // }
} else {
log.debug("no acquirable jobs in job table");
}
@@ -141,7 +140,7 @@
catch (JbpmPersistenceException e) {
// if this is a stale object exception, keep it quiet
if (Services.isCausedByStaleState(e)) {
- log.debug("optimistic locking failed, couldn't obtain lock on jobs: "+jobsToLock);
+ log.debug("optimistic locking failed, couldn't obtain lock on jobs "+jobsToLock);
acquiredJobs = Collections.EMPTY_LIST;
} else {
throw e;
@@ -180,13 +179,10 @@
try {
jbpmContext.close();
} catch (JbpmPersistenceException e) {
- // if this is a stale object exception, the jbpm configuration has control over the logging
- if ("org.hibernate.StaleObjectStateException".equals(e.getCause().getClass().getName())) {
- log.info("problem committing job execution transaction: optimistic locking failed");
- StaleObjectLogConfigurer.staleObjectExceptionsLog.error("problem committing job execution transaction: optimistic locking failed", e);
+ // if this is a stale object exception, keep it quiet
+ if (Services.isCausedByStaleState(e)) {
+ log.debug("optimistic locking failed, couldn't complete job "+job);
} else {
- // TODO run() will log this exception, log it here too?
- log.error("problem committing job execution transaction", e);
throw e;
}
}
17 years, 9 months
JBoss JBPM SVN: r1594 - jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 12:11:52 -0400 (Fri, 11 Jul 2008)
New Revision: 1594
Modified:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessAdapter.java
Log:
Init transitions
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessAdapter.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessAdapter.java 2008-07-11 16:11:46 UTC (rev 1593)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessAdapter.java 2008-07-11 16:11:52 UTC (rev 1594)
@@ -23,15 +23,20 @@
// $Id$
+import java.util.Iterator;
import java.util.List;
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.MultipleOutFlowSupport;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.model.SingleOutFlowSupport;
import org.jboss.bpm.model.Task;
import org.jbpm.graph.def.Action;
import org.jbpm.graph.def.Event;
import org.jbpm.graph.def.Node;
+import org.jbpm.graph.def.Transition;
import org.jbpm.graph.node.EndState;
import org.jbpm.graph.node.StartState;
import org.jbpm.graph.node.State;
@@ -65,10 +70,12 @@
if (oldNode instanceof StartState)
{
flowObject = new StartEventImpl(apiProc, oldNode);
+ initTranstions(flowObject, oldNode);
}
else if (oldNode instanceof EndState)
{
flowObject = new EndEventImpl(apiProc, oldNode);
+ initTranstions(flowObject, oldNode);
}
else if (oldNode instanceof State)
{
@@ -90,6 +97,7 @@
delegate = (Task)obj;
}
flowObject = new TaskImpl(apiProc, oldNode, delegate);
+ initTranstions(flowObject, oldNode);
}
else
{
@@ -97,5 +105,35 @@
}
return flowObject;
}
+
+ private static void initTranstions(FlowObject flowObject, Node oldNode)
+ {
+ if (flowObject instanceof SingleOutFlowSupport)
+ {
+ SingleOutFlowSupport sof = (SingleOutFlowSupport)flowObject;
+ List outTrans = oldNode.getLeavingTransitions();
+ if (outTrans != null && outTrans.size() > 0)
+ {
+ Transition trans = (Transition)outTrans.get(0);
+ SequenceFlow flow = new SequenceFlow(trans.getTo().getName());
+ sof.setOutFlow(flow);
+ }
+ }
+ if (flowObject instanceof MultipleOutFlowSupport)
+ {
+ MultipleOutFlowSupport mof = (MultipleOutFlowSupport)flowObject;
+ List outTrans = oldNode.getLeavingTransitions();
+ if (outTrans != null && outTrans.size() > 0)
+ {
+ Iterator it = outTrans.iterator();
+ while (it.hasNext())
+ {
+ Transition trans = (Transition)it.next();
+ SequenceFlow flow = new SequenceFlow(trans.getTo().getName());
+ mof.addOutFlow(flow);
+ }
+ }
+ }
+ }
}
}
17 years, 9 months
JBoss JBPM SVN: r1593 - api/trunk/modules/api/src/main/java/org/jboss/bpm/model.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 12:11:46 -0400 (Fri, 11 Jul 2008)
New Revision: 1593
Modified:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
Log:
Init transitions
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 16:01:41 UTC (rev 1592)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 16:11:46 UTC (rev 1593)
@@ -91,8 +91,8 @@
}
}
- //if (inFlow == null && outFlow == null)
- // throw new InvalidProcessException("Unconnected flow object: " + this);
+ if (inFlow == null && outFlow == null)
+ throw new InvalidProcessException("Unconnected flow object: " + this);
}
private void initFlow(Process proc, Flow flow)
17 years, 9 months
JBoss JBPM SVN: r1592 - in jbpm3/trunk/modules/jpdl/core/src/main: java/org/jbpm/integration/client and 2 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 12:01:41 -0400 (Fri, 11 Jul 2008)
New Revision: 1592
Added:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ExecutionManagerImpl.java
Removed:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ProcessEngineImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/SignalManagerImpl.java
Modified:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/resources/jbpm-beans.xml
Log:
Delegate to ExecutionManager
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -32,6 +32,7 @@
import java.util.Set;
import org.dom4j.Element;
+import org.jboss.bpm.model.ExecutableFlowObject;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
import org.jbpm.JbpmException;
@@ -421,7 +422,7 @@
throw new IllegalStateException("Cannot find flow object: " + getName());
TokenImpl token = new TokenImpl(proc, ctxInst);
- fo.execute(token);
+ ((ExecutableFlowObject)fo).execute(token);
}
}
Added: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ExecutionManagerImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ExecutionManagerImpl.java (rev 0)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ExecutionManagerImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -0,0 +1,81 @@
+/*
+ * 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.client;
+
+// $Id$
+
+import java.util.concurrent.Future;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.client.ExecutionManager;
+import org.jboss.bpm.client.ProcessEngine;
+import org.jboss.bpm.client.internal.InitialToken;
+import org.jboss.bpm.model.ExecutableFlowObject;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Result;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.Token;
+import org.jbpm.graph.exe.Execution;
+import org.jbpm.integration.model.StartEventImpl;
+
+/**
+ * The process manager is the entry point to create, find and otherwise manage processes.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public class ExecutionManagerImpl extends ExecutionManager
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(ExecutionManagerImpl.class);
+
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ this.engine = engine;
+ }
+
+ public Future<Result> startProcess(Process proc, Attachments att)
+ {
+ throwSignal(new Signal(proc, Signal.Type.ENTER_PROCESS));
+ try
+ {
+ // Repeatetly signal the Execution until we reach the end
+ StartEventImpl start = (StartEventImpl)proc.getStartEvent();
+
+ Token token = new InitialToken(proc, att);
+ start.execute(token);
+
+ Execution oldEx = start.getExecution();
+ while (oldEx.getRootToken().hasEnded() == false)
+ {
+ oldEx.signal();
+ }
+ }
+ finally
+ {
+ throwSignal(new Signal(proc, Signal.Type.EXIT_PROCESS));
+ }
+ return new ResultFuture(proc);
+ }
+}
\ No newline at end of file
Property changes on: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ExecutionManagerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ProcessEngineImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ProcessEngineImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/ProcessEngineImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -1,47 +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.client;
-
-//$Id$
-
-import org.jboss.bpm.client.ProcessEngine;
-import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.client.SignalManager;
-
-/**
- * A process engine with public access
- *
- * @author thomas.diesler(a)jboss.com
- * @since 18-Jun-2008
- */
-public class ProcessEngineImpl extends ProcessEngine
-{
- public void setProcessManager(ProcessManager processManager)
- {
- this.processManager = processManager;
- }
-
- public void setSignalManager(SignalManager signalManager)
- {
- this.signalManager = signalManager;
- }
-}
Deleted: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/SignalManagerImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/SignalManagerImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/client/SignalManagerImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -1,48 +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.client;
-
-// $Id$
-
-import org.jboss.bpm.client.ProcessEngine;
-import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.Signal;
-
-/**
- * An implementation of a signal manager
- *
- * @author thomas.diesler(a)jboss.com
- * @since 18-Jun-2008
- */
-public class SignalManagerImpl extends SignalManager
-{
- public void setProcessEngine(ProcessEngine engine)
- {
- this.engine = engine;
- }
-
- @Override
- public void throwSignal(Signal signal)
- {
- super.throwSignal(signal);
- }
-}
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -23,8 +23,10 @@
//$Id$
+import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.runtime.Token;
import org.jbpm.graph.def.Node;
/**
@@ -51,4 +53,19 @@
{
oldNode.setName(name);
}
+
+ @Override
+ public void execute(Token token)
+ {
+ SignalManager sm = SignalManager.locateSignalManager();
+ sm.throwSignal(getEnterSignal());
+ try
+ {
+ super.execute(token);
+ }
+ finally
+ {
+ sm.throwSignal(getExitSignal());
+ }
+ }
}
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -26,12 +26,10 @@
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.runtime.Token;
import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.graph.exe.Execution;
/**
- * A jBPM3 implementation of a process definition
+ * An implementation of a Process
*
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
@@ -71,18 +69,4 @@
{
oldPD.setName(name);
}
-
- public void executeOverwrite(Token token)
- {
- Process proc = token.getProcess();
- StartEventImpl start = (StartEventImpl)proc.getStartEvent();
- start.execute(token);
-
- // Repeatetly signal the Execution until we reach the end
- Execution oldEx = start.getExecution();
- while (oldEx.getRootToken().hasEnded() == false)
- {
- oldEx.signal();
- }
- }
}
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.StartEvent;
import org.jboss.bpm.runtime.Token;
@@ -41,31 +42,31 @@
{
private Node oldNode;
private Execution oldEx;
-
+
StartEventImpl(Process proc, Node oldNode)
{
this.oldNode = oldNode;
}
- @Override
- public void execute(Token token)
+ public Execution getExecution()
{
- super.execute(token);
- oldEx.signal();
+ return oldEx;
}
- @Override
- protected void executeOverwrite(Token token)
+ public void execute(Token token)
{
- // Create a new Execution and copy the attachments
- oldEx = new Execution(oldNode.getProcessDefinition());
- ContextInstance ctxInst = oldEx.getContextInstance();
- new ExecutionContextImpl(ctxInst).copyAttachments(token.getExecutionContext());
- ctxInst.setTransientVariable(Process.class.getName(), getProcess());
+ SignalManager sm = SignalManager.locateSignalManager();
+ sm.throwSignal(getEnterSignal());
+ try
+ {
+ this.oldEx = new Execution(oldNode.getProcessDefinition());
+ ContextInstance ctxInst = oldEx.getContextInstance();
+ new ExecutionContextImpl(ctxInst).copyAttachments(token.getExecutionContext());
+ ctxInst.setTransientVariable(Process.class.getName(), getProcess());
+ }
+ finally
+ {
+ sm.throwSignal(getExitSignal());
+ }
}
-
- public Execution getExecution()
- {
- return oldEx;
- }
}
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java 2008-07-11 16:01:41 UTC (rev 1592)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.Token;
@@ -65,16 +66,20 @@
oldNode.setName(name);
}
- @Override
public void execute(Token token)
{
- if (delegate != null)
+ SignalManager sm = SignalManager.locateSignalManager();
+ sm.throwSignal(getEnterSignal());
+ try
{
- delegate.execute(token);
+ if (delegate != null)
+ {
+ delegate.execute(token);
+ }
}
- else
+ finally
{
- super.execute(token);
+ sm.throwSignal(getExitSignal());
}
}
}
Modified: jbpm3/trunk/modules/jpdl/core/src/main/resources/jbpm-beans.xml
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/resources/jbpm-beans.xml 2008-07-11 16:01:29 UTC (rev 1591)
+++ jbpm3/trunk/modules/jpdl/core/src/main/resources/jbpm-beans.xml 2008-07-11 16:01:41 UTC (rev 1592)
@@ -5,19 +5,25 @@
<bean name="KernelLocator" class="org.jboss.kernel.plugins.util.KernelLocator"/>
<!-- The process engine -->
- <bean name="jBPMProcessEngine" class="org.jbpm.integration.client.ProcessEngineImpl">
+ <bean name="jBPMProcessEngine" class="org.jboss.bpm.client.internal.ProcessEngineImpl">
<property name="processManager"><inject bean="jBPMProcessManager"/></property>
+ <property name="executionManager"><inject bean="jBPMExecutionManager"/></property>
<property name="signalManager"><inject bean="jBPMSignalManager"/></property>
</bean>
- <!-- The process definition manager -->
+ <!-- The process manager -->
<bean name="jBPMProcessManager" class="org.jbpm.integration.client.ProcessManagerImpl">
<property name="processEngine"><inject bean="jBPMProcessEngine" state="Instantiated"/></property>
</bean>
<!-- The execution manager -->
- <bean name="jBPMSignalManager" class="org.jbpm.integration.client.SignalManagerImpl">
+ <bean name="jBPMExecutionManager" class="org.jbpm.integration.client.ExecutionManagerImpl">
<property name="processEngine"><inject bean="jBPMProcessEngine" state="Instantiated"/></property>
</bean>
+ <!-- The execution manager -->
+ <bean name="jBPMSignalManager" class="org.jboss.bpm.client.internal.SignalManagerImpl">
+ <property name="processEngine"><inject bean="jBPMProcessEngine" state="Instantiated"/></property>
+ </bean>
+
</deployment>
\ No newline at end of file
17 years, 9 months
JBoss JBPM SVN: r1591 - in api/trunk/modules: api/src/main/java/org/jboss/bpm/client/internal and 3 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 12:01:29 -0400 (Fri, 11 Jul 2008)
New Revision: 1591
Added:
api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/InitialToken.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessEngineImpl.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/SignalManagerImpl.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExecutableFlowObject.java
Removed:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java
Modified:
api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java
api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
Log:
Delegate to ExecutionManager
Added: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -0,0 +1,168 @@
+/*
+ * 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.jboss.bpm.client;
+
+// $Id$
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.client.internal.InitialToken;
+import org.jboss.bpm.model.EndEvent;
+import org.jboss.bpm.model.ExecutableFlowObject;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Result;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * The process manager is the entry point to create, find and otherwise manage processes.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public abstract class ExecutionManager
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(ExecutionManager.class);
+
+ // Injected through the MC
+ protected ProcessEngine engine;
+
+ // Hide public constructor
+ protected ExecutionManager()
+ {
+ }
+
+ /**
+ * Locate the signal manager
+ */
+ public static ExecutionManager locateExecutionManager()
+ {
+ ProcessEngine engine = ProcessEngineLocator.locateProcessEngine();
+ return engine.getExecutionManager();
+ }
+
+ public Future<Result> startProcess(Process proc, Attachments att)
+ {
+ throwSignal(new Signal(proc, Signal.Type.ENTER_PROCESS));
+ try
+ {
+ FlowObject fo = proc.getStartEvent();
+ ExecutableFlowObject exfo = getExecutable(fo);
+ Token token = new InitialToken(proc, att);
+
+ boolean hasEnded = false;
+ while(hasEnded == false)
+ {
+ try
+ {
+ throwSignal(exfo.getEnterSignal());
+ exfo.execute(token);
+ }
+ finally
+ {
+ throwSignal(exfo.getExitSignal());
+ }
+ }
+ }
+ finally
+ {
+ throwSignal(new Signal(proc, Signal.Type.EXIT_PROCESS));
+ }
+ return new ResultFuture(proc);
+ }
+
+ protected ExecutableFlowObject getExecutable(FlowObject fo)
+ {
+ if (fo instanceof ExecutableFlowObject == false)
+ throw new IllegalStateException("Flow object is not executable: " + fo);
+
+ return (ExecutableFlowObject)fo;
+ }
+
+ protected void throwSignal(Signal signal)
+ {
+ SignalManager sm = SignalManager.locateSignalManager();
+ sm.throwSignal(signal);
+ }
+
+ public class ResultFuture implements Future<Result>
+ {
+ private Result result;
+ private Process proc;
+
+ public ResultFuture(Process proc)
+ {
+ this.proc = proc;
+ }
+
+ public boolean cancel(boolean mayInterruptIfRunning)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Result get() throws InterruptedException, ExecutionException
+ {
+ return getResult();
+ }
+
+ public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
+ {
+ throw new NotImplementedException();
+ }
+
+ public boolean isCancelled()
+ {
+ return false;
+ }
+
+ public boolean isDone()
+ {
+ boolean isDone = getResult() != null;
+ return isDone;
+ }
+
+ private Result getResult()
+ {
+ if (result == null)
+ {
+ for (EndEvent aux : proc.getEndEvents())
+ {
+ result = aux.getResult();
+ if (result != null)
+ {
+ break;
+ }
+ }
+ }
+ return result;
+ }
+ }
+}
\ No newline at end of file
Property changes on: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -36,9 +36,12 @@
/** The default bean config: jbpm-beans.xml */
public static final String JBPM_ENGINE_CONFIG = "jbpm-beans.xml";
+ // Injected through the MC
protected ProcessManager processManager;
// Injected through the MC
protected SignalManager signalManager;
+ // Injected through the MC
+ protected ExecutionManager executionManager;
// Flag to indicate that the Engine is shutting down
private boolean prepareForShutdown;
@@ -72,8 +75,8 @@
}
/**
- * Get the configured instance of the process manager
- * @return The process manager
+ * Get the configured instance of the ProcessManager
+ * @return The ProcessManager
*/
public ProcessManager getProcessManager()
{
@@ -84,8 +87,8 @@
}
/**
- * Get the configured instance of the signal manager
- * @return The signal manager
+ * Get the configured instance of the SignalManager
+ * @return The SignalManager
*/
public SignalManager getSignalManager()
{
@@ -94,4 +97,16 @@
return signalManager;
}
+
+ /**
+ * Get the configured instance of the ExecutionManager
+ * @return The ExecutionManager
+ */
+ public ExecutionManager getExecutionManager()
+ {
+ if (executionManager == null)
+ throw new IllegalStateException("ExecutionManager not available through kernel configuration");
+
+ return executionManager;
+ }
}
\ No newline at end of file
Added: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/InitialToken.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/InitialToken.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/InitialToken.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -0,0 +1,66 @@
+/*
+ * 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.jboss.bpm.client.internal;
+
+// $Id$
+
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.BasicAttachments;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * An initial token
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class InitialToken implements Token
+{
+ private Process proc;
+ private ExecutionContext context;
+
+ public InitialToken(Process proc, Attachments att)
+ {
+ this.proc = proc;
+ this.context = new InitialContext(att);
+ }
+
+ public Process getProcess()
+ {
+ return proc;
+ }
+
+ public ExecutionContext getExecutionContext()
+ {
+ return context;
+ }
+
+ static class InitialContext extends BasicAttachments implements ExecutionContext
+ {
+ InitialContext(Attachments att)
+ {
+ super(att);
+ }
+ }
+}
\ No newline at end of file
Added: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessEngineImpl.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessEngineImpl.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessEngineImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -0,0 +1,53 @@
+/*
+ * 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.jboss.bpm.client.internal;
+
+//$Id$
+
+import org.jboss.bpm.client.ExecutionManager;
+import org.jboss.bpm.client.ProcessEngine;
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.client.SignalManager;
+
+/**
+ * A process engine with public access
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public class ProcessEngineImpl extends ProcessEngine
+{
+ public void setProcessManager(ProcessManager processManager)
+ {
+ this.processManager = processManager;
+ }
+
+ public void setExecutionManager(ExecutionManager executionManager)
+ {
+ this.executionManager = executionManager;
+ }
+
+ public void setSignalManager(SignalManager signalManager)
+ {
+ this.signalManager = signalManager;
+ }
+}
Property changes on: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessEngineImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/SignalManagerImpl.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/SignalManagerImpl.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/SignalManagerImpl.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -0,0 +1,48 @@
+/*
+ * 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.jboss.bpm.client.internal;
+
+// $Id$
+
+import org.jboss.bpm.client.ProcessEngine;
+import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.Signal;
+
+/**
+ * An implementation of a signal manager
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public class SignalManagerImpl extends SignalManager
+{
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ this.engine = engine;
+ }
+
+ @Override
+ public void throwSignal(Signal signal)
+ {
+ super.throwSignal(signal);
+ }
+}
Property changes on: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/internal/SignalManagerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -100,11 +100,8 @@
return new Signal(getProcess(), Signal.Type.EXIT_END_EVENT);
}
- @Override
public void execute(final Token token)
{
- super.execute(token);
-
// Provide the result
result = new Result()
{
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -35,7 +35,7 @@
* @since 08-Jul-2008
*/
@XmlType(name="Event")
-public abstract class Event extends AbstractEvent
+public abstract class Event extends AbstractEvent implements ExecutableFlowObject
{
/**
* Construct an anonymous StartEvent.
Added: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExecutableFlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExecutableFlowObject.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExecutableFlowObject.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -0,0 +1,50 @@
+/*
+ * 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.jboss.bpm.model;
+
+import org.jboss.bpm.runtime.Token;
+
+//$Id$
+
+/**
+ * Implement to make the FlowObject executable
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ExecutableFlowObject
+{
+ /**
+ * Get signal for enter
+ */
+ Signal getEnterSignal();
+
+ /**
+ * Get signal for exit
+ */
+ Signal getExitSignal();
+
+ /**
+ * Execute this flow object
+ */
+ void execute(Token token);
+}
\ No newline at end of file
Property changes on: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExecutableFlowObject.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -21,12 +21,9 @@
*/
package org.jboss.bpm.model;
-import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.runtime.Token;
//$Id$
@@ -134,42 +131,4 @@
{
return super.getProcess();
}
-
- /**
- * Get signal for enter
- */
- @XmlTransient
- public abstract Signal getEnterSignal();
-
- /**
- * Get signal for exit
- */
- @XmlTransient
- public abstract Signal getExitSignal();
-
- /**
- * Execute this flow object
- */
- public void execute(Token token)
- {
- SignalManager sm = SignalManager.locateSignalManager();
- try
- {
- sm.throwSignal(getEnterSignal());
- executeOverwrite(token);
- }
- finally
- {
- sm.throwSignal(getExitSignal());
- }
- }
-
- /**
- * Overwrite to provide an actual implemenation
- * Note, this MUST NOT leak into the public API.
- */
- protected void executeOverwrite(Token token)
- {
- // nothing to do
- }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -38,7 +38,7 @@
* @since 08-Jul-2008
*/
@XmlType(name="Gateway")
-public abstract class Gateway extends AbstractGateway implements NamedFlowObject
+public abstract class Gateway extends AbstractGateway implements NamedFlowObject, ExecutableFlowObject
{
@XmlTransient
protected List<Flow> inFlows = new ArrayList<Flow>();
Deleted: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -1,69 +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.jboss.bpm.model;
-
-// $Id$
-
-import javax.xml.bind.annotation.XmlTransient;
-
-import org.jboss.bpm.runtime.Attachments;
-import org.jboss.bpm.runtime.BasicAttachments;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.Token;
-
-/**
- * An initial token
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlTransient
-class InitialToken implements Token
-{
- private Process proc;
- private ExecutionContext context;
-
- public InitialToken(Process proc, Attachments att)
- {
- this.proc = proc;
- this.context = new InitialContext(att);
- }
-
- public Process getProcess()
- {
- return proc;
- }
-
- public ExecutionContext getExecutionContext()
- {
- return context;
- }
-
- @XmlTransient
- static class InitialContext extends BasicAttachments implements ExecutionContext
- {
- InitialContext(Attachments att)
- {
- super(att);
- }
- }
-}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -26,19 +26,16 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NameNotUniqueException;
-import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.Token;
/**
* A Process is any Activity performed within a company or organization.
@@ -146,8 +143,8 @@
throw new IllegalStateException("Cannot start process in state: " + processState);
processState = ProcessState.STARTED;
- execute(new InitialToken(this, att));
- return new ResultFuture();
+ ExecutionManager exm = ExecutionManager.locateExecutionManager();
+ return exm.startProcess(this, att);
}
/**
@@ -177,24 +174,6 @@
}
/**
- * Get signal for enter
- */
- @Override
- public Signal getEnterSignal()
- {
- return new Signal(this, Signal.Type.ENTER_PROCESS);
- }
-
- /**
- * Get signal for exit
- */
- @Override
- public Signal getExitSignal()
- {
- return new Signal(this, Signal.Type.EXIT_PROCESS);
- }
-
- /**
* Get the process state
*/
public ProcessState getProcessState()
@@ -202,6 +181,12 @@
return processState;
}
+ // Overwrite to prevent execution
+ public void execute(Token token)
+ {
+ throw new IllegalStateException("A Process cannot get executed. Go through startProcess");
+ }
+
/**
* Set the process state
*/
@@ -222,56 +207,4 @@
processState = ProcessState.INITIALIZED;
}
-
- @XmlTransient
- class ResultFuture implements Future<Result>
- {
- private Result result;
-
- public boolean cancel(boolean mayInterruptIfRunning)
- {
- throw new NotImplementedException();
- }
-
- public Result get() throws InterruptedException, ExecutionException
- {
- return getResult();
- }
-
- public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
- {
- throw new NotImplementedException();
- }
-
- public boolean isCancelled()
- {
- return false;
- }
-
- public boolean isDone()
- {
- boolean isDone = getResult() != null;
- if (isDone)
- processState = ProcessState.ENDED;
-
- return isDone;
- }
-
- private Result getResult()
- {
- if (result == null)
- {
- for (EndEvent aux : getEndEvents())
- {
- result = aux.getResult();
- if (result != null)
- {
- processState = ProcessState.ENDED;
- break;
- }
- }
- }
- return result;
- }
- }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -26,6 +26,8 @@
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import org.jboss.bpm.runtime.Token;
+
/**
* A Sub-Process is Process that is included within another Process.
*
@@ -33,7 +35,7 @@
* @since 08-Jul-2008
*/
@XmlType(name="SubProcess")
-public class SubProcess extends AbstractSubProcess implements SingleInFlowSupport
+public class SubProcess extends AbstractSubProcess implements SingleInFlowSupport, ExecutableFlowObject
{
private Flow inFlow;
@@ -70,6 +72,24 @@
{
this.inFlow = inFlow;
}
+
+ /** Get signal for enter */
+ public Signal getEnterSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.ENTER_SUB_PROCESS, getName());
+ }
+
+ /** Get signal for exit */
+ public Signal getExitSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.EXIT_SUB_PROCESS, getName());
+ }
+
+ public void execute(Token token)
+ {
+ startProcess(token.getExecutionContext());
+ }
+
public String toString()
{
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -24,6 +24,8 @@
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import org.jboss.bpm.runtime.Token;
+
//$Id$
/**
@@ -36,7 +38,7 @@
* @since 08-Jul-2008
*/
@XmlType(name = "Task")
-public class Task extends AbstractTask implements SingleInFlowSupport
+public class Task extends AbstractTask implements SingleInFlowSupport, ExecutableFlowObject
{
private Flow inFlow;
@@ -86,6 +88,11 @@
return new Signal(getProcess(), Signal.Type.EXIT_TASK, getName());
}
+ public void execute(Token token)
+ {
+ throw new IllegalStateException("Overwrite to impolement the task");
+ }
+
public String toString()
{
return "Task[" + getName() + "]";
Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -35,7 +35,8 @@
*/
public class TaskA extends Task
{
- protected void executeOverwrite(Token token)
+ @Override
+ public void execute(Token token)
{
ExecutionContext ctx = token.getExecutionContext();
ctx.addAttachment(String.class, "TaskMessage", getName() + " has: " + ctx.getAttachmentKeys());
Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java 2008-07-11 14:21:35 UTC (rev 1590)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java 2008-07-11 16:01:29 UTC (rev 1591)
@@ -35,7 +35,8 @@
*/
public class TaskA extends Task
{
- protected void executeOverwrite(Token token)
+ @Override
+ public void execute(Token token)
{
ExecutionContext ctx = token.getExecutionContext();
ctx.addAttachment(String.class, "Task: " + getName());
17 years, 9 months
JBoss JBPM SVN: r1590 - jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 10:21:35 -0400 (Fri, 11 Jul 2008)
New Revision: 1590
Modified:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java
Log:
Cleanup API
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java 2008-07-11 14:21:28 UTC (rev 1589)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java 2008-07-11 14:21:35 UTC (rev 1590)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.runtime.Token;
@@ -42,9 +43,19 @@
public ProcessImpl(ProcessDefinition oldPD)
{
this.oldPD = oldPD;
- init(oldPD.getName());
+ initName(oldPD.getName());
}
+ private void initName(String name)
+ {
+ if (name == null)
+ {
+ ProcessManager pdm = ProcessManager.locateProcessManager();
+ name = "AnonymousProcess#" + pdm.getProcesses().size();
+ setName(name);
+ }
+ }
+
// Provide public access
public void addFlowObject(FlowObject flowObject)
{
17 years, 9 months
JBoss JBPM SVN: r1589 - api/trunk/modules/api/src/main/java/org/jboss/bpm/model.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 10:21:28 -0400 (Fri, 11 Jul 2008)
New Revision: 1589
Modified:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
Log:
Cleanup API
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-11 14:17:34 UTC (rev 1588)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-11 14:21:28 UTC (rev 1589)
@@ -38,7 +38,6 @@
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NameNotUniqueException;
import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.runtime.Attachments;
/**
@@ -76,20 +75,6 @@
}
/**
- * Call to initialize fully.
- * Note, this MUST NOT leak into the public API.
- */
- protected void init(String name)
- {
- if (name == null)
- {
- ProcessManager pdm = ProcessManager.locateProcessManager();
- name = "AnonymousProcess#" + pdm.getProcesses().size();
- setName(name);
- }
- }
-
- /**
* Add a flow object. Note, this MUST NOT leak into the public API.
*/
protected void addFlowObject(FlowObject flowObject)
17 years, 9 months
JBoss JBPM SVN: r1588 - in jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm: integration/model and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 10:17:34 -0400 (Fri, 11 Jul 2008)
New Revision: 1588
Modified:
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java
jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java
Log:
Remove implObject from API
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java 2008-07-11 14:17:25 UTC (rev 1587)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/graph/def/Node.java 2008-07-11 14:17:34 UTC (rev 1588)
@@ -416,7 +416,7 @@
ProcessImpl proc = (ProcessImpl)ctxInst.getTransientVariable(Process.class.getName());
if (proc != null)
{
- FlowObject fo = proc.findFlowObject(this);
+ FlowObject fo = proc.findFlowObject(getName());
if (fo == null)
throw new IllegalStateException("Cannot find flow object: " + getName());
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java 2008-07-11 14:17:25 UTC (rev 1587)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/EndEventImpl.java 2008-07-11 14:17:34 UTC (rev 1588)
@@ -25,7 +25,6 @@
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Process;
-import org.jbpm.graph.def.GraphElement;
import org.jbpm.graph.def.Node;
/**
@@ -36,20 +35,20 @@
*/
public class EndEventImpl extends EndEvent
{
+ private Node oldNode;
+
EndEventImpl(Process proc, Node oldNode)
{
- setImplObject(oldNode);
+ this.oldNode = oldNode;
}
public String getName()
{
- GraphElement oldEl = (GraphElement)getImplObject();
- return oldEl.getName();
+ return oldNode.getName();
}
public void setName(String name)
{
- GraphElement oldEl = (GraphElement)getImplObject();
- oldEl.setName(name);
+ oldNode.setName(name);
}
}
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java 2008-07-11 14:17:25 UTC (rev 1587)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/ProcessImpl.java 2008-07-11 14:17:34 UTC (rev 1588)
@@ -26,7 +26,6 @@
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.runtime.Token;
-import org.jbpm.graph.def.GraphElement;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.Execution;
@@ -38,9 +37,11 @@
*/
public class ProcessImpl extends Process
{
+ private ProcessDefinition oldPD;
+
public ProcessImpl(ProcessDefinition oldPD)
{
- setImplObject(oldPD);
+ this.oldPD = oldPD;
init(oldPD.getName());
}
@@ -50,30 +51,14 @@
super.addFlowObject(flowObject);
}
- public FlowObject findFlowObject(GraphElement graphElement)
- {
- FlowObject fo = null;
- for (FlowObject aux : getFlowObjects())
- {
- if (((FlowObject)aux).getImplObject() == graphElement)
- {
- fo = aux;
- break;
- }
- }
- return fo;
- }
-
public String getName()
{
- GraphElement oldEl = (GraphElement)getImplObject();
- return oldEl.getName();
+ return oldPD.getName();
}
public void setName(String name)
{
- GraphElement oldEl = (GraphElement)getImplObject();
- oldEl.setName(name);
+ oldPD.setName(name);
}
public void executeOverwrite(Token token)
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java 2008-07-11 14:17:25 UTC (rev 1587)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/StartEventImpl.java 2008-07-11 14:17:34 UTC (rev 1588)
@@ -27,7 +27,6 @@
import org.jboss.bpm.model.StartEvent;
import org.jboss.bpm.runtime.Token;
import org.jbpm.context.exe.ContextInstance;
-import org.jbpm.graph.def.GraphElement;
import org.jbpm.graph.def.Node;
import org.jbpm.graph.exe.Execution;
import org.jbpm.integration.runtime.ExecutionContextImpl;
@@ -40,11 +39,12 @@
*/
public class StartEventImpl extends StartEvent
{
+ private Node oldNode;
private Execution oldEx;
StartEventImpl(Process proc, Node oldNode)
{
- setImplObject(oldNode);
+ this.oldNode = oldNode;
}
@Override
@@ -58,8 +58,7 @@
protected void executeOverwrite(Token token)
{
// Create a new Execution and copy the attachments
- GraphElement oldEl = (GraphElement)getImplObject();
- oldEx = new Execution(oldEl.getProcessDefinition());
+ oldEx = new Execution(oldNode.getProcessDefinition());
ContextInstance ctxInst = oldEx.getContextInstance();
new ExecutionContextImpl(ctxInst).copyAttachments(token.getExecutionContext());
ctxInst.setTransientVariable(Process.class.getName(), getProcess());
Modified: jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java
===================================================================
--- jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java 2008-07-11 14:17:25 UTC (rev 1587)
+++ jbpm3/trunk/modules/jpdl/core/src/main/java/org/jbpm/integration/model/TaskImpl.java 2008-07-11 14:17:34 UTC (rev 1588)
@@ -26,7 +26,6 @@
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.Token;
-import org.jbpm.graph.def.GraphElement;
import org.jbpm.graph.def.Node;
/**
@@ -37,11 +36,12 @@
*/
public class TaskImpl extends Task
{
+ private Node oldNode;
private Task delegate;
TaskImpl(Process proc, Node oldNode, Task task)
{
- setImplObject(oldNode);
+ this.oldNode = oldNode;
this.delegate = task;
}
@@ -57,14 +57,12 @@
public String getName()
{
- GraphElement oldEl = (GraphElement)getImplObject();
- return oldEl.getName();
+ return oldNode.getName();
}
public void setName(String name)
{
- GraphElement oldEl = (GraphElement)getImplObject();
- oldEl.setName(name);
+ oldNode.setName(name);
}
@Override
17 years, 9 months
JBoss JBPM SVN: r1587 - api/trunk/modules/api/src/main/java/org/jboss/bpm/model.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 10:17:25 -0400 (Fri, 11 Jul 2008)
New Revision: 1587
Modified:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
Log:
Remove implObject from API
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 13:34:33 UTC (rev 1586)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 14:17:25 UTC (rev 1587)
@@ -39,9 +39,6 @@
@XmlType(name="FlowObject")
public abstract class FlowObject extends AbstractFlowObject
{
- @XmlTransient
- private Object implObject;
-
/**
* Construct an anonymous StartEvent.
* Note, this MUST NOT leak into the public API.
@@ -151,25 +148,6 @@
public abstract Signal getExitSignal();
/**
- * Set the associated implementation object
- * Note, this MUST NOT leak into the public API.
- */
- // TODO
- public Object getImplObject()
- {
- return implObject;
- }
-
- /**
- * Get the associated implementation object
- * Note, this MUST NOT leak into the public API.
- */
- protected void setImplObject(Object implObject)
- {
- this.implObject = implObject;
- }
-
- /**
* Execute this flow object
*/
public void execute(Token token)
17 years, 9 months
JBoss JBPM SVN: r1586 - in api/trunk/modules/api/src: test/java/org/jboss/bpm/model and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-11 09:34:33 -0400 (Fri, 11 Jul 2008)
New Revision: 1586
Modified:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java
Log:
Add name validation
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java 2008-07-11 13:14:17 UTC (rev 1585)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java 2008-07-11 13:34:33 UTC (rev 1586)
@@ -36,7 +36,7 @@
* @since 08-Jul-2008
*/
@XmlType(name = "AbstractEndEvent")
-abstract class AbstractEndEvent extends Event
+abstract class AbstractEndEvent extends Event implements NamedFlowObject
{
private String name;
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-11 13:14:17 UTC (rev 1585)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-11 13:34:33 UTC (rev 1586)
@@ -40,7 +40,7 @@
* @since 08-Jul-2008
*/
@XmlType(name="EndEvent")
-public class EndEvent extends AbstractEndEvent implements NamedFlowObject, SingleInFlowSupport
+public class EndEvent extends AbstractEndEvent implements SingleInFlowSupport
{
private Result result;
private Flow inFlow;
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 13:14:17 UTC (rev 1585)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-11 13:34:33 UTC (rev 1586)
@@ -56,7 +56,15 @@
protected void initialize(Process proc)
{
setProcess(proc);
-
+
+ if (this instanceof NamedFlowObject)
+ {
+ NamedFlowObject nfo = (NamedFlowObject)this;
+ if (nfo.getName() == null)
+ throw new InvalidProcessException("Name is required for: " + this);
+ }
+
+ // Initialize in/out flows
Flow outFlow = null;
if (this instanceof SingleOutFlowSupport)
{
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-11 13:14:17 UTC (rev 1585)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-11 13:34:33 UTC (rev 1586)
@@ -97,7 +97,7 @@
if (flowObject instanceof NamedFlowObject)
{
NamedFlowObject nfo = (NamedFlowObject)flowObject;
- if (findFlowObject(nfo.getName()) != null)
+ if (nfo.getName() != null && findFlowObject(nfo.getName()) != null)
throw new NameNotUniqueException("NamedFlowObject: " + nfo.getName());
}
@@ -181,7 +181,7 @@
if (aux instanceof NamedFlowObject)
{
NamedFlowObject auxnfo = (NamedFlowObject)aux;
- if (auxnfo.getName().equals(name))
+ if (name.equals(auxnfo.getName()))
{
nfo = aux;
break;
Modified: api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java
===================================================================
--- api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java 2008-07-11 13:14:17 UTC (rev 1585)
+++ api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java 2008-07-11 13:34:33 UTC (rev 1586)
@@ -51,7 +51,7 @@
marshaller.marshallProcess(inProc, strwr);
String xml = strwr.toString();
- System.out.println(xml);
+ //System.out.println(xml);
ProcessUnmarshaller unmarshaller = new ProcessUnmarshaller();
Process outProc = unmarshaller.unmarshallProcess(new StringReader(xml));
17 years, 9 months