[jbpm-commits] JBoss JBPM SVN: r2741 - in projects/spec/branches/tdiesler/modules: ri/src/main/java/org/jbpm/ri/runtime and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Nov 1 08:04:29 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-11-01 08:04:29 -0400 (Sat, 01 Nov 2008)
New Revision: 2741
Modified:
projects/spec/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java
projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/MessageSender.java
projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java
projects/spec/branches/tdiesler/modules/ri/src/main/resources/jbpm-cfg-beans.xml
projects/spec/branches/tdiesler/modules/ri/src/test/resources/log4j.xml
projects/spec/branches/tdiesler/modules/samples/airticket/server/src/test/resources/log4j.xml
Log:
wip
Modified: projects/spec/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java
===================================================================
--- projects/spec/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/transaction/TxRequiredTest.java 2008-11-01 12:04:29 UTC (rev 2741)
@@ -32,6 +32,7 @@
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Group.GroupType;
+import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
@@ -69,9 +70,12 @@
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("RequiresTxTest");
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA").addGroupRef("TxRequired").addSequenceFlow("TaskB");
- procBuilder.addTask("TaskB").addGroupRef("TxRequired").addSequenceFlow("End").addEndEvent("End");
+ procBuilder.addTask("TaskA", TaskType.Send).addOutMessageRef("TaskAMessage").addGroupRef("TxRequired").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB", TaskType.Send).addOutMessageRef("TaskBMessage").addGroupRef("TxRequired").addSequenceFlow("End");
procBuilder.addGroup(GroupType.Transaction, "TxRequired").addProperty(Constants.PROP_TX_TYPE, TxType.REQUIRED);
+ procBuilder.addProcessMessage("TaskAMessage").addToRef(getTestID()).addProperty("msgProp", "msgA");
+ procBuilder.addProcessMessage("TaskBMessage").addToRef(getTestID()).addProperty("msgProp", "msgB");;
+ procBuilder.addEndEvent("End");
return procBuilder.getProcessDefinition();
}
}
Modified: projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/MessageSender.java
===================================================================
--- projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/MessageSender.java 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/MessageSender.java 2008-11-01 12:04:29 UTC (rev 2741)
@@ -29,6 +29,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Participant;
+import org.jbpm.api.model.Property;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.Token;
@@ -77,14 +78,17 @@
msgBuilder.newMessage(messageRef.getName());
msgBuilder.addToRef(targetID);
- // Copy the properties from the execution context
- // to the send message
+ // Copy the properties from the execution context to the send message
for (String propName : messageRef.getPropertyNames())
{
- Object value = exContext.getAttachment(propName);
- if (value == null)
- throw new IllegalStateException("Cannot obtain property: " + propName);
-
+ Property prop = messageRef.getProperty(propName);
+ Object value = prop.getValue();
+ if (prop.isCorrelation())
+ {
+ value = exContext.getAttachment(propName);
+ if (value == null)
+ throw new IllegalStateException("Cannot obtain property: " + propName);
+ }
msgBuilder.addProperty(propName, value);
}
MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
Modified: projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
===================================================================
--- projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java 2008-11-01 12:04:29 UTC (rev 2741)
@@ -42,8 +42,6 @@
{
final static Logger log = LoggerFactory.getLogger(TransactionInterceptor.class);
- private PersistenceService service;
-
@Override
public void execute(RuntimeContext rtContext)
{
@@ -53,10 +51,13 @@
// Begin the Tx
Session session = token.getSession();
Transaction tx = session.beginTransaction();
+ TransactionAssociation.setTransaction(tx);
+
try
{
// Load the node
- PersistenceService service = getPersistenceService(node.getProcessEngine());
+ ProcessEngine engine = node.getProcessEngine();
+ PersistenceService service = engine.getService(PersistenceService.class);
node = service.loadNode(session, node.getClass(), node.getKey());
// Call the next interceptor in the chain
@@ -83,13 +84,9 @@
}
throw rte;
}
+ finally
+ {
+ TransactionAssociation.setTransaction(null);
+ }
}
-
- private PersistenceService getPersistenceService(ProcessEngine engine)
- {
- if (service == null)
- service = engine.getService(PersistenceService.class);
-
- return service;
- }
}
\ No newline at end of file
Modified: projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java
===================================================================
--- projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/ri/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java 2008-11-01 12:04:29 UTC (rev 2741)
@@ -23,10 +23,17 @@
// $Id$
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+
+import org.hibernate.Transaction;
import org.jbpm.api.client.MessageListener;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Message;
import org.jbpm.api.service.MessageService;
+import org.jbpm.ri.runtime.TransactionAssociation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The ProcessEngine sends messages through the MessageService.
@@ -39,9 +46,64 @@
*/
public class MessageServiceImpl extends MessageService implements MutableService
{
+ // Provide logging
+ final Logger log = LoggerFactory.getLogger(MessageServiceImpl.class);
+
@Override
public void setProcessEngine(ProcessEngine engine)
{
super.setProcessEngine(engine);
}
+
+ @Override
+ public void sendMessage(Message msg)
+ {
+ Transaction tx = TransactionAssociation.getTransaction();
+ sendMessageTx(msg, null);
+ }
+
+ private void sendMessageTx(Message msg, Transaction tx)
+ {
+ if (tx != null)
+ {
+ tx.registerSynchronization(new MessageWrapper(this, msg));
+ }
+ else
+ {
+ super.sendMessage(msg);
+ }
+ }
+
+ public class MessageWrapper implements Synchronization
+ {
+ private MessageServiceImpl service;
+ private Message msg;
+
+
+ protected MessageWrapper(MessageServiceImpl service, Message msg)
+ {
+ this.service = service;
+ this.msg = msg;
+ }
+
+ @Override
+ public void afterCompletion(int status)
+ {
+ if (status != Status.STATUS_COMMITTED)
+ {
+ log.debug("Ignore message after completion: status=" + status + "," + msg);
+ }
+ else
+ {
+ log.debug("Send message after completion " + msg);
+ service.sendMessageTx(msg, null);
+ }
+ }
+
+ @Override
+ public void beforeCompletion()
+ {
+ // nothing to do
+ }
+ }
}
Modified: projects/spec/branches/tdiesler/modules/ri/src/main/resources/jbpm-cfg-beans.xml
===================================================================
--- projects/spec/branches/tdiesler/modules/ri/src/main/resources/jbpm-cfg-beans.xml 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/ri/src/main/resources/jbpm-cfg-beans.xml 2008-11-01 12:04:29 UTC (rev 2741)
@@ -62,7 +62,7 @@
<bean name="jBPMProcessService" class="org.jbpm.ri.service.ProcessServiceImpl" >
<property name="interceptors">
<list elementClass="java.lang.String">
- <!-- value>org.jbpm.ri.runtime.TransactionInterceptor</value -->
+ <value>org.jbpm.ri.runtime.TransactionInterceptor</value>
<value>org.jbpm.ri.runtime.SignalHandlerInterceptor</value>
<value>org.jbpm.ri.runtime.FlowHandlerInterceptor</value>
<value>org.jbpm.ri.runtime.AssignmentInterceptor</value>
Modified: projects/spec/branches/tdiesler/modules/ri/src/test/resources/log4j.xml
===================================================================
--- projects/spec/branches/tdiesler/modules/ri/src/test/resources/log4j.xml 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/ri/src/test/resources/log4j.xml 2008-11-01 12:04:29 UTC (rev 2741)
@@ -33,7 +33,7 @@
<!-- ================ -->
<category name="org.hibernate">
- <priority value="DEBUG" />
+ <priority value="INFO" />
</category>
<!-- ======================= -->
Modified: projects/spec/branches/tdiesler/modules/samples/airticket/server/src/test/resources/log4j.xml
===================================================================
--- projects/spec/branches/tdiesler/modules/samples/airticket/server/src/test/resources/log4j.xml 2008-11-01 12:03:43 UTC (rev 2740)
+++ projects/spec/branches/tdiesler/modules/samples/airticket/server/src/test/resources/log4j.xml 2008-11-01 12:04:29 UTC (rev 2741)
@@ -40,11 +40,6 @@
<priority value="INFO" />
</category>
- <!-- hide optimistic locking failures -->
- <category name="org.hibernate.event.def.AbstractFlushingEventListener">
- <priority value="FATAL" />
- </category>
-
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
More information about the jbpm-commits
mailing list