Author: thomas.diesler(a)jboss.com
Date: 2008-10-31 09:42:21 -0400 (Fri, 31 Oct 2008)
New Revision: 2703
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/NodeNotFoundException.java
Removed:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/ProcessNotFoundException.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java
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/startevent/StartEventSignalTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskCallbackTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
projects/spec/trunk/modules/cts/src/test/resources/log4j.xml
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/MutableToken.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
Log:
Associate persistence session with token
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/NodeNotFoundException.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/NodeNotFoundException.java
(rev 0)
+++
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/NodeNotFoundException.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -0,0 +1,45 @@
+/*
+ * 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.api;
+
+
+// $Id$
+
+/**
+ * A RuntimeException that is when a node cannot be found in persistent storage.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Sep-2008
+ */
+@SuppressWarnings("serial")
+public class NodeNotFoundException extends BPMException
+{
+ public NodeNotFoundException(String message)
+ {
+ super(message);
+ }
+
+ public NodeNotFoundException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+}
Property changes on:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/NodeNotFoundException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/ProcessNotFoundException.java
===================================================================
---
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/ProcessNotFoundException.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/ProcessNotFoundException.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -33,13 +33,13 @@
@SuppressWarnings("serial")
public class ProcessNotFoundException extends BPMException
{
- public ProcessNotFoundException()
- {
- super();
- }
-
public ProcessNotFoundException(String message)
{
super(message);
}
+
+ public ProcessNotFoundException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
}
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java
===================================================================
---
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -23,6 +23,7 @@
// $Id$
+import org.hibernate.Session;
import org.jbpm.api.model.SequenceFlow;
/**
@@ -62,5 +63,10 @@
/**
* Get the current {@link SequenceFlow}
*/
- SequenceFlow getFlow();
+ SequenceFlow getSequenceFlow();
+
+ /**
+ * Get the associated persistence session
+ */
+ Session getSession();
}
\ No newline at end of file
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -54,7 +54,7 @@
proc.startProcess(att);
// Wait for the process to end
- proc.waitForEnd();
+ proc.waitForEnd(5000);
// Verify the result
Message endMessage = getMessages().get(0);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -53,7 +53,7 @@
proc.startProcess();
// Wait for the process to end
- proc.waitForEnd();
+ proc.waitForEnd(5000);
// Verify the result
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -54,7 +54,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "5");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
@@ -69,7 +69,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "15");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
@@ -86,7 +86,7 @@
proc.startProcess(att);
try
{
- proc.waitForEnd();
+ proc.waitForEnd(5000);
fail("No gate defined for foo==10");
}
catch (RuntimeException rte)
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -52,7 +52,7 @@
proc.startProcess();
// Wait for the process to end
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(2, endSignals.size());
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -54,7 +54,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "5");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(2, endSignals.size());
@@ -68,7 +68,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "15");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -56,7 +56,7 @@
proc.startProcess();
// Wait for the process to end
- proc.waitForEnd();
+ proc.waitForEnd(5000);
// Verify the result
Message endMessage = getMessages().get(0);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -52,7 +52,7 @@
Process proc = procDef.newInstance();
proc.startProcess();
- proc.waitForEnd();
+ proc.waitForEnd(5000);
// Validate received signals
List<Signal> signals = getSignals(SignalType.SYSTEM_END_EVENT_ENTER);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -56,7 +56,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("frog", "kermit");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
Message endMessage = getMessages().get(0);
assertNotNull("EndMessage expected", endMessage);
@@ -74,7 +74,7 @@
try
{
- proc.waitForEnd();
+ proc.waitForEnd(5000);
}
catch (RuntimeException ex)
{
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -54,7 +54,7 @@
Process proc = procDef.newInstance();
proc.startProcess();
- proc.waitForEnd();
+ proc.waitForEnd(5000);
Message endMessage = getMessages().get(0);
assertNotNull("EndMessage expected", endMessage);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -55,7 +55,7 @@
Process proc = procDef.newInstance();
proc.startProcess();
- proc.waitForEnd();
+ proc.waitForEnd(5000);
Message endMessage = getMessages().get(0);
assertNotNull("EndMessage expected", endMessage);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -60,7 +60,7 @@
Process proc = procDef.newInstance();
proc.startProcess();
- proc.waitForEnd();
+ proc.waitForEnd(5000);
Message endMessage = getMessages().get(0);
assertNotNull("EndMessage expected", endMessage);
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-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -100,7 +100,7 @@
{
// Start the process, which automatically adds it to the registry
proc.startProcess();
- proc.waitForEnd();
+ proc.waitForEnd(5000);
}
finally
{
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -85,7 +85,7 @@
// Wait for the process to end
if (proc != null)
- proc.waitForEnd();
+ proc.waitForEnd(5000);
// Verify the result
Message endMessage = getMessages().get(0);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -104,7 +104,7 @@
msgService.sendMessage(procID, "TaskA", getMessage());
proc.startProcess();
- proc.waitForEnd(1000);
+ proc.waitForEnd(5000);
}
finally
{
@@ -146,7 +146,7 @@
try
{
proc.startProcess();
- proc.waitForEnd(1000);
+ proc.waitForEnd(5000);
}
finally
{
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -53,7 +53,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "bar");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Message> messages = getMessages();
assertEquals(1, messages.size());
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -52,7 +52,7 @@
Process proc = procDef.newInstance();
proc.startProcess();
- proc.waitForEnd();
+ proc.waitForEnd(5000);
assertEquals("kermit", TaskExecutionHandler.procProp);
assertEquals("piggy", TaskExecutionHandler.taskProp);
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskCallbackTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskCallbackTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskCallbackTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -59,7 +59,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "xxx");
proc.startProcess(att);
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Message> messages = getMessages();
assertEquals(1, messages.size());
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -73,7 +73,7 @@
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "xxx");
proc.startProcess(att);
- proc.waitForEnd(1000);
+ proc.waitForEnd(5000);
List<Message> messages = getMessages();
assertEquals(1, messages.size());
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -61,7 +61,7 @@
Process proc = procDef.newInstance();
proc.startProcess();
- proc.waitForEnd(1000);
+ proc.waitForEnd(5000);
}
protected ProcessDefinition getProcessDefinition() throws IOException
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -52,10 +52,10 @@
proc.startProcess();
// Wait for the process to end
- proc.waitForEnd();
+ proc.waitForEnd(5000);
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
- assertEquals(2, endSignals.size());
+ assertEquals("Two end signals expected", 2, endSignals.size());
}
public ProcessDefinition getProcessDefinition() throws IOException
Modified: projects/spec/trunk/modules/cts/src/test/resources/log4j.xml
===================================================================
--- projects/spec/trunk/modules/cts/src/test/resources/log4j.xml 2008-10-31 10:49:02 UTC
(rev 2702)
+++ projects/spec/trunk/modules/cts/src/test/resources/log4j.xml 2008-10-31 13:42:21 UTC
(rev 2703)
@@ -35,9 +35,6 @@
<category name="org.hibernate">
<priority value="INFO" />
</category>
- <category name="org.hibernate.persister">
- <priority value="DEBUG" />
- </category>
<!-- ======================= -->
<!-- Setup the Root category -->
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -97,7 +97,7 @@
if (outstandingFlows == null)
outstandingFlows = new HashSet<SequenceFlow>(inFlows);
- SequenceFlow flow = token.getFlow();
+ SequenceFlow flow = token.getSequenceFlow();
outstandingFlows.remove(flow);
}
@@ -124,7 +124,7 @@
public void execute(TokenExecutor tokenExecutor, Token token)
{
- Node sourceRef = token.getFlow().getSourceRef();
+ Node sourceRef = token.getSequenceFlow().getSourceRef();
// Schedule the first token that arrives
if (token == receivedTokens.get(0))
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -172,7 +172,7 @@
}
// Check that token from flow is valid
- SequenceFlow flow = token.getFlow();
+ SequenceFlow flow = token.getSequenceFlow();
if (expectedFlows.contains(flow) == false)
throw new IllegalStateException("Unexpected token from: " + flow);
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -84,7 +84,7 @@
public void execute(TokenExecutor tokenExecutor, Token token)
{
MutableToken mutableToken = (MutableToken)token;
- Node sourceRef = token.getFlow().getSourceRef();
+ Node sourceRef = token.getSequenceFlow().getSourceRef();
log.debug("Propagate token comming from: " + sourceRef);
// Get the applicable gates
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -97,7 +97,7 @@
mergeTokens = new HashSet<Token>();
}
- SequenceFlow flow = token.getFlow();
+ SequenceFlow flow = token.getSequenceFlow();
outstandingFlows.remove(flow);
mergeTokens.add(token);
}
@@ -156,7 +156,7 @@
for(SequenceFlow auxGate : getGates())
{
SequenceFlow outFlow = auxGate;
- outToken = (MutableToken)outToken.copyToken();
+ outToken = outToken.copyToken();
tokenExecutor.create(outToken, outFlow);
outTokens.add(outToken);
}
@@ -199,7 +199,7 @@
private TokenImpl getMergedTokens()
{
- TokenImpl mergedToken = new TokenImpl(null);
+ TokenImpl mergedToken = new TokenImpl(getProcessEngine(), null);
for (Token auxToken : mergeTokens)
{
log.debug("mergeToken: " + auxToken);
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -23,6 +23,7 @@
//$Id$
+import org.hibernate.Session;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.runtime.ExecutionContext;
@@ -43,7 +44,7 @@
{
this.delegateToken = token;
- Node targetRef = token.getFlow().getTargetRef();
+ Node targetRef = token.getSequenceFlow().getTargetRef();
ExecutionContext exContext = token.getExecutionContext();
this.delegateContext = new DelegatingExecutionContext(targetRef, exContext);
}
@@ -55,15 +56,15 @@
}
@Override
- public Token copyToken()
+ public MutableToken copyToken()
{
return delegateToken.copyToken();
}
@Override
- public SequenceFlow getFlow()
+ public SequenceFlow getSequenceFlow()
{
- return delegateToken.getFlow();
+ return delegateToken.getSequenceFlow();
}
@Override
@@ -85,9 +86,9 @@
}
@Override
- public void setFlow(SequenceFlow flow)
+ public void setSequenceFlow(SequenceFlow flow)
{
- delegateToken.setFlow(flow);
+ delegateToken.setSequenceFlow(flow);
}
@Override
@@ -96,9 +97,20 @@
delegateToken.setTokenStatus(status);
}
+ @Override
+ public Session getSession()
+ {
+ return delegateToken.getSession();
+ }
+
+ @Override
+ public void closeSession()
+ {
+ delegateToken.closeSession();
+ }
+
public String toString()
{
- Node node = getFlow().getTargetRef();
- return "[fo=" + node + ",ctx=" + getExecutionContext() +
"]";
+ return delegateToken.toString();
}
}
\ No newline at end of file
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/MutableToken.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/MutableToken.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/MutableToken.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -27,25 +27,36 @@
import org.jbpm.api.runtime.Token;
/**
- * A Token is a descriptive construct used to describe how the flow of a Process will
proceed at runtime.
+ * A mutable extension to the Token.
*
* @author Thomas.Diesler(a)jboss.com
* @since 20-Apr-2007
*/
public interface MutableToken extends Token
{
+ /**
+ * Set the token status
+ */
void setTokenStatus(TokenStatus status);
- void setFlow(SequenceFlow flow);
+ /**
+ * Set the current SequenceFlow
+ */
+ void setSequenceFlow(SequenceFlow flow);
/**
* Create a schallow copy of this Token.
* The content in the ExecutionContext will be copied by reference.
*/
- Token copyToken();
+ MutableToken copyToken();
/**
* Merge this Token with another token.
*/
void mergeToken(Token token);
+
+ /**
+ * Close the current session
+ */
+ void closeSession();
}
\ No newline at end of file
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -72,14 +72,14 @@
Process proc = rtProc.getProcess();
try
{
- SequenceFlow flow = token.getFlow();
+ SequenceFlow flow = token.getSequenceFlow();
if (flow == null)
throw new IllegalStateException("Cannot obtain initial flow");
while (continueTokenThread())
{
// Get the target node
- Node node = token.getFlow().getTargetRef();
+ Node node = token.getSequenceFlow().getTargetRef();
// Synchronize on the target Node
synchronized (node)
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -57,7 +57,7 @@
public Node getNode()
{
- return token.getFlow().getTargetRef();
+ return token.getSequenceFlow().getTargetRef();
}
public Token getToken()
Deleted:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -1,70 +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.ri.runtime;
-
-//$Id$
-
-import org.hibernate.Session;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Associates the Hibernate session with the current thread
- *
- * @author thomas.diesler(a)jboss.com
- * @since 10-Oct-2008
- */
-public abstract class SessionAssociation
-{
- final static Logger log = LoggerFactory.getLogger(SessionAssociation.class);
-
- private static ThreadLocal<Session> sessionAssociation = new
ThreadLocal<Session>();
-
- public static Session getSession()
- {
- return sessionAssociation.get();
- }
-
- public static Session setSession(Session session)
- {
- sessionAssociation.set(session);
- return session;
- }
-
- public static void closeSession(Session session)
- {
- if (session != getSession())
- throw new IllegalArgumentException("Not the associated session");
-
- // Close the session
- try
- {
- session.close();
- }
- catch (RuntimeException rte)
- {
- log.error("Cannot close the associated session", rte);
- }
-
- sessionAssociation.remove();
- }
-}
\ No newline at end of file
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -87,7 +87,7 @@
{
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Created);
- mutableToken.setFlow(initialFlow);
+ mutableToken.setSequenceFlow(initialFlow);
log.debug("Create Token: " + token);
@@ -124,7 +124,7 @@
throw new IllegalStateException("Cannot move token in state: " +
token.getTokenStatus());
MutableToken mutableToken = (MutableToken)token;
- mutableToken.setFlow(flow);
+ mutableToken.setSequenceFlow(flow);
}
}
@@ -145,6 +145,7 @@
log.debug("Destroy Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Destroyed);
+ mutableToken.closeSession();
runnableTokens.remove(token.getTokenID());
}
}
@@ -160,6 +161,7 @@
log.debug("Suspend Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Suspended);
+ mutableToken.closeSession();
// Release the thread for a suspended token
rtToken.releaseThread();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -23,13 +23,16 @@
//$Id$
+import org.hibernate.Session;
import org.jboss.util.id.UID;
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.runtime.Attachments;
import org.jbpm.api.runtime.BasicExecutionContext;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.Attachments.Key;
+import org.jbpm.api.service.PersistenceService;
/**
* A Token is a descriptive construct used to describe how the flow of a Process will
proceed at runtime.
@@ -49,60 +52,84 @@
private SequenceFlow flow;
private ExecutionContext context;
private TokenStatus status;
+ private ProcessEngine engine;
+ private Session session;
/**
* Construct a Token with given {@link Attachments}
*/
- public TokenImpl(Attachments att)
+ public TokenImpl(ProcessEngine engine, Attachments att)
{
this.context = new BasicExecutionContext(att);
this.id = new UID().toString();
this.status = TokenStatus.Created;
+ this.engine = engine;
}
+ @Override
public String getTokenID()
{
return id;
}
+ @Override
public TokenStatus getTokenStatus()
{
return status;
}
+ @Override
public void setTokenStatus(TokenStatus status)
{
this.status = status;
}
+ @Override
public ExecutionContext getExecutionContext()
{
return context;
}
- public SequenceFlow getFlow()
+ @Override
+ public SequenceFlow getSequenceFlow()
{
return flow;
}
- public void setFlow(SequenceFlow flow)
+ @Override
+ public void setSequenceFlow(SequenceFlow flow)
{
this.flow = flow;
}
- /**
- * Create a schallow copy of this Token.
- * <p/>
- * The content in the {@link ExecutionContext} will be copied by reference.
- */
- public Token copyToken()
+ @Override
+ public Session getSession()
{
- return new TokenImpl(context);
+ if (session == null)
+ {
+ PersistenceService service = engine.getService(PersistenceService.class);
+ session = service.createSession();
+ }
+ return session;
}
- /**
- * Merge this Token with another token.
- */
+ @Override
+ public void closeSession()
+ {
+ if (session != null)
+ {
+ session.close();
+ session = null;
+ }
+ }
+
+ @Override
+ public MutableToken copyToken()
+ {
+ return new TokenImpl(engine, context);
+ }
+
+ @Override
public void mergeToken(Token token)
{
ExecutionContext mergeContext = token.getExecutionContext();
@@ -119,6 +146,6 @@
public String toString()
{
- return "[sf=" + getFlow() + ",status=" + getTokenStatus() +
",ctx=" + getExecutionContext() + "]";
+ return "[sf=" + getSequenceFlow() + ",status=" + getTokenStatus()
+ ",ctx=" + getExecutionContext() + ",id=" + id + "]";
}
}
\ No newline at end of file
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -27,6 +27,7 @@
import org.hibernate.Transaction;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
+import org.jbpm.api.runtime.Token;
import org.jbpm.api.service.PersistenceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,32 +48,34 @@
public void execute(RuntimeContext rtContext)
{
Node node = rtContext.getNode();
+ Token token = rtContext.getToken();
- PersistenceService service = getPersistenceService(node.getProcessEngine());
- Session session = SessionAssociation.setSession(service.createSession());
-
// Begin the Tx
+ Session session = token.getSession();
Transaction tx = session.beginTransaction();
try
{
// Load the node
+ PersistenceService service = getPersistenceService(node.getProcessEngine());
node = service.loadNode(session, node.getClass(), node.getKey());
// Call the next interceptor in the chain
rtContext.next();
- // Save the node
- service.saveNode(session, node);
-
- // Commit the Tx
- tx.commit();
+ // Save the node and commit the Tx
+ if (session.isOpen())
+ {
+ service.saveNode(session, node);
+ tx.commit();
+ }
}
catch (RuntimeException rte)
{
try
{
// Rollback the Tx
- tx.rollback();
+ if (session.isOpen())
+ tx.rollback();
}
catch (RuntimeException rbex)
{
@@ -80,12 +83,8 @@
}
throw rte;
}
- finally
- {
- SessionAssociation.closeSession(session);
- }
}
-
+
private PersistenceService getPersistenceService(ProcessEngine engine)
{
if (service == null)
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -122,9 +122,9 @@
boolean startProcessThread = (rtProc == null);
// Create initial Token
- TokenImpl initialToken = new TokenImpl(att);
+ TokenImpl initialToken = new TokenImpl(getProcessEngine(), att);
InitialFlow initialFlow = new InitialFlow(start);
- initialToken.setFlow(initialFlow);
+ initialToken.setSequenceFlow(initialFlow);
// Register the initial Token
rtProc = getRuntimeProcess(proc, true);
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
===================================================================
---
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java 2008-10-31
10:49:02 UTC (rev 2702)
+++
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java 2008-10-31
13:42:21 UTC (rev 2703)
@@ -35,6 +35,7 @@
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
+import org.jbpm.api.NodeNotFoundException;
import org.jbpm.api.ProcessNotFoundException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
@@ -178,7 +179,7 @@
}
catch (ObjectNotFoundException ex)
{
- throw new ProcessNotFoundException("Cannot find process: " + procID);
+ throw new ProcessNotFoundException("Cannot find process: " + procID,
ex);
}
finally
{
@@ -219,19 +220,19 @@
@Override
@SuppressWarnings("unchecked")
- public <T extends Node> T loadNode(Session session, Class<T> nodeImpl,
ObjectName nodeID)
+ public <T extends Node> T loadNode(Session session, Class<T> nodeClass,
ObjectName nodeID)
{
log.debug("START loadNode: " + nodeID);
T node = null;
try
{
Integer id = Integer.valueOf(nodeID.getKeyProperty("id"));
- node = (T)session.load(nodeImpl, id);
+ node = (T)session.load(nodeClass, id);
Hibernate.initialize(node);
}
catch (ObjectNotFoundException ex)
{
- throw new ProcessNotFoundException("Cannot find node: " + nodeID);
+ throw new NodeNotFoundException("Cannot find node: " + nodeID, ex);
}
log.debug("END loadNode: " + nodeID);
return node;