[jbpm-commits] JBoss JBPM SVN: r4897 - in jbpm4/trunk: modules/enterprise/src/main/java/org/jbpm/enterprise/internal/jta and 10 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue May 26 08:57:41 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-05-26 08:57:40 -0400 (Tue, 26 May 2009)
New Revision: 4897

Added:
   jbpm4/trunk/modules/pvm/src/main/resources/jbpm.mail.templates.xml
   jbpm4/trunk/qa/jboss/
   jbpm4/trunk/qa/jboss/jboss-log4j.xml
Removed:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ProcessInstanceEndedSynchronization.java
Modified:
   jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.cfg.xml
   jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.mail.templates.examples.xml
   jbpm4/trunk/modules/enterprise/src/main/java/org/jbpm/enterprise/internal/jta/JtaTransactionInterceptor.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/AsyncActivityTest.java
   jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml
   jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/SpringContext.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernatePvmDbSession.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml
   jbpm4/trunk/modules/pvm/src/main/resources/jbpm.tx.jta.cfg.xml
   jbpm4/trunk/qa/build.xml
   jbpm4/trunk/qa/hudson-jbpm4-jboss.bat
Log:
fixed integration test suite: removed use of synchronization for process instance end deletion and refactored example email templates

Modified: jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.cfg.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.cfg.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.cfg.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -6,11 +6,8 @@
   <import resource="jbpm.tx.jta.cfg.xml" />
   <import resource="jbpm.jpdl.cfg.xml" />
   <import resource="jbpm.identity.cfg.xml" />
+  <import resource="jbpm.mail.templates.xml" />
 
   <import resource="jbpm.mail.templates.examples.xml" />
 
-  <!-- Job executor is excluded for running the example test cases.
-       To enable timers and messages in production use, this should be included.
-  import resource="jbpm.jobexecutor.cfg.xml" / -->
-
 </jbpm-configuration>

Modified: jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.mail.templates.examples.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.mail.templates.examples.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/distro/src/main/files/jboss/jbpm.cfg.integration.tests/jbpm.mail.templates.examples.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -4,7 +4,7 @@
 
   <process-engine-context>
 
-    <mail-template name="rectify template">
+    <mail-template name="rectify-template">
       <to addresses="${addressee}" />
       <cc users="bb" groups="innerparty" />
       <bcc groups="thinkpol" />

Modified: jbpm4/trunk/modules/enterprise/src/main/java/org/jbpm/enterprise/internal/jta/JtaTransactionInterceptor.java
===================================================================
--- jbpm4/trunk/modules/enterprise/src/main/java/org/jbpm/enterprise/internal/jta/JtaTransactionInterceptor.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/enterprise/src/main/java/org/jbpm/enterprise/internal/jta/JtaTransactionInterceptor.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -28,10 +28,13 @@
 import javax.naming.NamingException;
 import javax.transaction.HeuristicMixedException;
 import javax.transaction.HeuristicRollbackException;
+import javax.transaction.InvalidTransactionException;
 import javax.transaction.NotSupportedException;
 import javax.transaction.RollbackException;
 import javax.transaction.Status;
 import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
 import javax.transaction.UserTransaction;
 
 import org.hibernate.StaleStateException;
@@ -45,20 +48,25 @@
  */
 public class JtaTransactionInterceptor extends Interceptor {
 
-  protected String userTransactionName = "UserTransaction";
+  protected String userTransactionJndiName = "UserTransaction";
+  protected String transactionManagerJndiName = "java:/TransactionManager";
+  
   protected Properties jndiProperties;
   int retries = 3;
   long delay = 50;
   long delayFactor = 4;
 
-  private UserTransaction userTransaction;
   private static Log log = Log.getLog(JtaTransactionInterceptor.class.getName());
 
   public <T> T execute(Command<T> command) {
     UserTransaction userTransaction = getUserTransaction();
     try {
       T result;
-      if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
+      int status = userTransaction.getStatus();
+      if ( (status == Status.STATUS_NO_TRANSACTION)
+           || (status == Status.STATUS_COMMITTED)
+           || (status == Status.STATUS_ROLLEDBACK)
+         ) {
         result = executeCmdInNewJtaTx(command, userTransaction);
       } else {
         // transaction already underway, just call next interceptor
@@ -71,68 +79,92 @@
   }
 
   protected UserTransaction getUserTransaction() {
-    if (userTransaction == null) {
-      try {
-        Context initialContext = new InitialContext(jndiProperties);
-        userTransaction = (UserTransaction) initialContext.lookup(userTransactionName);
-        initialContext.close();
-      } catch (NamingException e) {
-        throw new JbpmException("failed to retrieve user transaction: " + userTransactionName);
-      }
+    try {
+      Context initialContext = new InitialContext(jndiProperties);
+      return (UserTransaction) initialContext.lookup(userTransactionJndiName);
+    } catch (NamingException e) {
+      throw new JbpmException("failed to retrieve user transaction: " + userTransactionJndiName, e);
     }
-    return userTransaction;
   }
 
+  protected TransactionManager getTransactionManager() {
+    try {
+      Context initialContext = new InitialContext(jndiProperties);
+      return (TransactionManager) initialContext.lookup(transactionManagerJndiName);
+    } catch (NamingException e) {
+      throw new JbpmException("failed to retrieve transaction manager: "+transactionManagerJndiName, e);
+    }
+  }
+
   protected <T> T executeCmdInNewJtaTx(Command<T> command, UserTransaction userTransaction) throws SystemException {
 
-    // TODO JBPM-2196 unify the retry code with the RetryInterceptor
-    
     int attempt = 1;
     long sleepTime = delay;
 
-    while (attempt<=retries) {
-      if (attempt>1) {
-        log.trace("retrying...");
+    int status = userTransaction.getStatus();
+    boolean suspend = (status == Status.STATUS_COMMITTED) || (status == Status.STATUS_ROLLEDBACK);
+    TransactionManager transactionManager = null;
+    Transaction suspendedTransaction = null;
+    if (suspend) {
+      transactionManager = getTransactionManager();
+      suspendedTransaction = transactionManager.suspend();
+    }
+    
+    try {
+      // TODO JBPM-2196 unify the retry code with the RetryInterceptor
+      
+      while (attempt<=retries) {
+        if (attempt>1) {
+          log.trace("retrying...");
+        }
+        try {
+          userTransaction.begin();
+          T result = getNext().execute(command);
+          userTransaction.commit();
+          return result;
+          
+        } catch (StaleStateException e) {
+          rollback(userTransaction);
+          attempt++;
+          log.trace("optimistic locking failed: "+e);
+          log.trace("waiting "+sleepTime+" millis");
+          try {
+            Thread.sleep(sleepTime);
+          } catch (InterruptedException e1) {
+            log.trace("retry sleeping got interrupted");
+          }
+          sleepTime *= delayFactor;
+          
+        } catch (RuntimeException e) {
+          // attempt rollback
+          rollback(userTransaction);
+          // rethrow original exception
+          throw e;
+          
+        } catch (NotSupportedException e) {
+          // thrown by begin() call
+          // no need to rollback since transaction has not begun
+          throw new JbpmException("cannot begin transaction at this point", e);
+          
+        } catch (RollbackException e) {
+          // transaction rolled back already, no need to rollback again
+          throw new JbpmException("transaction has been rolled back", e);
+          
+        } catch (HeuristicRollbackException e) {
+          // transaction rolled back already, no need to rollback again
+          throw new JbpmException("transaction rolled back by heuristic decision", e);
+          
+        } catch (HeuristicMixedException e) {
+          throw new JbpmException("transaction had mixed outcome, possible data inconsistency", e);
+        }
       }
-      try {
-        userTransaction.begin();
-        T result = getNext().execute(command);
-        userTransaction.commit();
-        return result;
-        
-      } catch (StaleStateException e) {
-        rollback(userTransaction);
-        attempt++;
-        log.trace("optimistic locking failed: "+e);
-        log.trace("waiting "+sleepTime+" millis");
+    } finally {
+      if (suspendedTransaction!=null) {
         try {
-          Thread.sleep(sleepTime);
-        } catch (InterruptedException e1) {
-          log.trace("retry sleeping got interrupted");
+          transactionManager.resume(suspendedTransaction);
+        } catch (Exception e) {
+          throw new JbpmException("couldn't resume suspended transaction "+suspendedTransaction, e);
         }
-        sleepTime *= delayFactor;
-        
-      } catch (RuntimeException e) {
-        // attempt rollback
-        rollback(userTransaction);
-        // rethrow original exception
-        throw e;
-        
-      } catch (NotSupportedException e) {
-        // thrown by begin() call
-        // no need to rollback since transaction has not begun
-        throw new JbpmException("cannot begin transaction at this point", e);
-        
-      } catch (RollbackException e) {
-        // transaction rolled back already, no need to rollback again
-        throw new JbpmException("transaction has been rolled back", e);
-        
-      } catch (HeuristicRollbackException e) {
-        // transaction rolled back already, no need to rollback again
-        throw new JbpmException("transaction rolled back by heuristic decision", e);
-        
-      } catch (HeuristicMixedException e) {
-        throw new JbpmException("transaction had mixed outcome, possible data inconsistency", e);
       }
     }
     throw new JbpmException("gave up after "+attempt+" attempts");

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/AsyncActivityTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/AsyncActivityTest.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/AsyncActivityTest.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -48,7 +48,7 @@
     super.tearDown();
   }
 
-  public void testJavaInstantiate() {
+  public void testAsyncActivity() {
     ProcessInstance processInstance = executionService.startProcessInstanceByKey("AsyncActivity");
     String processInstanceId = processInstance.getId();
     

Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -6,6 +6,7 @@
   <import resource="jbpm.tx.hibernate.cfg.xml" />
   <import resource="jbpm.jpdl.cfg.xml" />
   <import resource="jbpm.identity.cfg.xml" />
+  <import resource="jbpm.mail.templates.cfg.xml" />
 
   <!-- Job executor is excluded for running the example test cases. -->
   <!-- To enable timers and messages in production use, this should be included. -->

Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -4,28 +4,6 @@
 
   <process-engine-context>
 
-    <mail-template name='task-notification'>
-      <to users="${task.assignee}"/>
-      <subject>${task.name}</subject>
-      <text><![CDATA[Hi ${task.assignee},
-Task "${task.name}" has been assigned to you.
-${task.description}
-
-Sent by JBoss jBPM
-]]></text>
-    </mail-template>
-  
-    <mail-template name='task-reminder'>
-      <to users="${task.assignee}"/>
-      <subject>${task.name}</subject>
-      <text><![CDATA[Hey ${task.assignee},
-Do not forget about task "${task.name}".
-${task.description}
-
-Sent by JBoss jBPM
-]]></text>
-    </mail-template>
-
     <mail-template name="rectify-template">
       <to addresses="${addressee}" />
       <cc users="bb" groups="innerparty" />

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -30,6 +30,7 @@
 import org.jbpm.api.env.Transaction;
 import org.jbpm.api.job.Job;
 import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.env.JobContext;
 import org.jbpm.pvm.internal.job.JobImpl;
 import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
 import org.jbpm.pvm.internal.jobexecutor.JobExceptionHandler;
@@ -61,6 +62,8 @@
   	// in case of decision jobs, the job might have been deleted
   	// before we execute it (they are in a list)
   	if (job != null) {
+  	    JobContext jobContext = new JobContext(job);
+        environment.addContext(jobContext);
 	    try {
 	      log.debug("executing job "+job+"...");
 	      job.execute(environment);
@@ -80,6 +83,8 @@
 	    } catch (Throwable exception) {
 	      log.error("exception while executing '"+job+"'", exception);
 	      handleJobExecutionException(environment, job, exception);
+	    } finally {
+	      environment.removeContext(jobContext);
 	    }
 
   	} else {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -59,10 +59,12 @@
     ClientProcessInstance processInstance = processDefinition.createProcessInstance(executionKey);
     processInstance.setVariables(variables);
     processInstance.start();
-    
-    Session session = Environment.getFromCurrent(Session.class);
-    session.save(processInstance);
 
+    if (!processInstance.isEnded()) {
+      Session session = Environment.getFromCurrent(Session.class);
+      session.save(processInstance);
+    }
+
     return processInstance;
   }
 

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -63,8 +63,11 @@
     processInstance.setVariables(variables);
     processInstance.start();
     
-    Session session = Environment.getFromCurrent(Session.class);
-    session.save(processInstance);
+    if (!processInstance.isEnded()) {
+      Session session = Environment.getFromCurrent(Session.class);
+      session.save(processInstance);
+    }
+
     return processInstance;
   }
 

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -26,32 +26,35 @@
 import java.util.Set;
 
 import org.jbpm.api.env.Context;
+import org.jbpm.api.job.Job;
 import org.jbpm.pvm.internal.job.JobImpl;
 
 public class JobContext implements Context {
   
+  private static final String KEY_JOB = "job";
+  
   static final Set<String> keys = Collections.unmodifiableSet(getKeys());
   static Set<String> getKeys() {
     Set<String> keys = new HashSet<String>();
-    keys.add("jobImpl");
+    keys.add(KEY_JOB);
     return keys;
   }
 
-  JobImpl<?> jobImpl;
+  JobImpl<?> job;
 
   public JobContext(JobImpl<?> job) {
-    this.jobImpl = job;
+    this.job = job;
   }
 
   public Object get(String key) {
-    if ("jobImpl".equals(key)) {
-      return jobImpl;
+    if (KEY_JOB.equals(key)) {
+      return job;
     }
     return null;
   }
 
   public boolean has(String key) {
-    return "jobImpl".equals(key);
+    return KEY_JOB.equals(key);
   }
 
   public Set<String> keys() {
@@ -63,10 +66,13 @@
   }
   
   public <T> T get(Class<T> type) {
+    if (Job.class.isAssignableFrom(type)) {
+      return (T) job;
+    }
     return null;
   }
 
   public String getName() {
-    return null;
+    return "job";
   }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/SpringContext.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/SpringContext.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/SpringContext.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -67,7 +67,7 @@
 	 * @see org.jbpm.api.env.Context#getName()
 	 */
 	public String getName() {
-		return "SpringContext";
+		return "spring";
 	}
 
 	/*

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernatePvmDbSession.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernatePvmDbSession.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernatePvmDbSession.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -258,7 +258,6 @@
       }
 
       // delete remaining jobs for this process instance
-      // TODO JBPM-
       List<JobImpl> jobs = findJobs(processInstanceId);
       for (JobImpl job: jobs) {
         session.delete(job);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -102,24 +102,17 @@
       throw new JbpmException("environment is null");
     }
     
-    JobContext jobContext = new JobContext(this);
-    environment.addContext(jobContext);
-    try {
-      if (signalName!=null) {
-        if (log.isDebugEnabled()) log.debug("feeding timer signal "+signalName+" into "+execution);
-        execution.signal(signalName);
-      }
-      
-      if (eventName!=null) {
-        ObservableElement eventSource = execution.getActivity();
-        if (log.isDebugEnabled()) log.debug("firing event "+signalName+" into "+eventSource);
-        execution.fire(eventName, eventSource);
-      }
-      
-    } finally {
-      environment.removeContext(jobContext);
+    if (signalName!=null) {
+      if (log.isDebugEnabled()) log.debug("feeding timer signal "+signalName+" into "+execution);
+      execution.signal(signalName);
     }
     
+    if (eventName!=null) {
+      ObservableElement eventSource = execution.getActivity();
+      if (log.isDebugEnabled()) log.debug("firing event "+signalName+" into "+eventSource);
+      execution.fire(eventName, eventSource);
+    }
+    
     boolean deleteThisJob = true;
     // if there is no repeat on this timer
     if (repeat==null) {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -52,9 +52,11 @@
 import org.jbpm.api.model.OpenExecution;
 import org.jbpm.api.model.Transition;
 import org.jbpm.api.session.MessageSession;
+import org.jbpm.api.session.PvmDbSession;
 import org.jbpm.api.session.RepositorySession;
 import org.jbpm.api.session.TimerSession;
 import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.env.PvmEnvironment;
 import org.jbpm.pvm.internal.hibernate.HibernatePvmDbSession;
 import org.jbpm.pvm.internal.history.HistoryEvent;
 import org.jbpm.pvm.internal.history.HistorySession;
@@ -364,15 +366,9 @@
         superProcessExecution.signal();
       }
       
-      Environment environment = Environment.getCurrent();
-      if (environment!=null) {
-        Transaction transaction = environment.get(Transaction.class);
-        CommandService commandService = environment.get(CommandService.class);
-        if ( (transaction!=null)
-             && (commandService!=null)
-           ) {
-          transaction.registerSynchronization(new ProcessInstanceEndedSynchronization(this.getId(), commandService));
-        }
+      PvmDbSession pvmDbSession = Environment.getFromCurrent(PvmDbSession.class, false);
+      if (pvmDbSession!=null) {
+        pvmDbSession.deleteProcessInstance(id, false);
       }
     }
   }

Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ProcessInstanceEndedSynchronization.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ProcessInstanceEndedSynchronization.java	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ProcessInstanceEndedSynchronization.java	2009-05-26 12:57:40 UTC (rev 4897)
@@ -1,72 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.pvm.internal.model;
-
-import java.io.ObjectStreamException;
-
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-
-import org.hibernate.Session;
-import org.jbpm.api.ExecutionService;
-import org.jbpm.api.cmd.Command;
-import org.jbpm.api.cmd.CommandService;
-import org.jbpm.api.env.Environment;
-import org.jbpm.api.session.PvmDbSession;
-
-
-/**
- * @author Tom Baeyens
- */
-public class ProcessInstanceEndedSynchronization implements Synchronization, Command<Void> {
-  
-  private static final long serialVersionUID = 1L;
-
-  String processInstanceId;
-  CommandService commandService;
-
-  public ProcessInstanceEndedSynchronization(String processInstanceId, CommandService commandService) {
-    this.processInstanceId = processInstanceId;
-    this.commandService = commandService;
-  }
-
-  public void afterCompletion(int status) {
-    if (status==Status.STATUS_COMMITTED) {
-      commandService.execute(this);
-    }
-  }
-
-  public void beforeCompletion() {
-  }
-
-  public Void execute(Environment environment) {
-    PvmDbSession pvmDbSession = environment.get(PvmDbSession.class);
-    pvmDbSession.deleteProcessInstance(processInstanceId, false);
-    return null;
-  }
-  
-  protected Object writeReplace() throws ObjectStreamException {
-    this.commandService = null;
-    return this;
-  }
-
-}

Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.execution.hbm.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -214,14 +214,14 @@
                  class="org.jbpm.pvm.internal.model.ExecutionImpl"   
                  column="PROCESSINSTANCE_" 
                  cascade="none"
-                 foreign-key="FK_JOB_PRINST"
+                 foreign-key="none"
                  index="IDX_JOB_PRINST"/>
 
     <many-to-one name="execution"
                  class="org.jbpm.pvm.internal.model.ExecutionImpl"   
                  column="EXECUTION_" 
                  cascade="none"
-                 foreign-key="FK_JOB_EXE"
+                 foreign-key="none"
                  index="IDX_JOB_EXE"/>
 
     <many-to-one name="configurationBytes"

Added: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.mail.templates.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.mail.templates.xml	                        (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.mail.templates.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jbpm-configuration>
+
+  <process-engine-context>
+
+    <mail-template name='task-notification'>
+      <to users="${task.assignee}"/>
+      <subject>${task.name}</subject>
+      <text><![CDATA[Hi ${task.assignee},
+Task "${task.name}" has been assigned to you.
+${task.description}
+
+Sent by JBoss jBPM
+]]></text>
+    </mail-template>
+  
+    <mail-template name='task-reminder'>
+      <to users="${task.assignee}"/>
+      <subject>${task.name}</subject>
+      <text><![CDATA[Hey ${task.assignee},
+Do not forget about task "${task.name}".
+${task.description}
+
+Sent by JBoss jBPM
+]]></text>
+    </mail-template>
+
+  </process-engine-context>
+
+</jbpm-configuration>


Property changes on: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.mail.templates.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.tx.jta.cfg.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.tx.jta.cfg.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.tx.jta.cfg.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -11,7 +11,7 @@
   </process-engine-context>
 
   <transaction-context>
-    <transaction />
+    <transaction type="jta" />
     <hibernate-session current="true" />
   </transaction-context>
 

Modified: jbpm4/trunk/qa/build.xml
===================================================================
--- jbpm4/trunk/qa/build.xml	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/qa/build.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -14,6 +14,9 @@
   <property name="jboss.version" value="5.0.0.GA" />
   <property name="jboss.distro.dir" value="${jbpm.home}/downloads" />
   <property name="jboss.parent.dir" value="${jbpm.home}" />
+  <property name="jboss.home" value="${jboss.parent.dir}/jboss-${jboss.version}" />
+  <property name="jboss.server.configuration" value="default" />
+  <property name="jboss.server.config.dir" value="${jboss.home}/server/${jboss.server.configuration}" />
 
   <!-- DERIVED PROPERTIES -->
   <property name="jbpm.filename" value="jbpm-distro-${jbpm.version}.zip" />
@@ -50,10 +53,18 @@
     <ant antfile="${jbpm.home}/jboss/build.xml" target="reinstall.jboss" />
     <ant antfile="${jbpm.home}/jboss/build.xml" target="install.jbpm.into.jboss" />
     <ant antfile="${jbpm.home}/jboss/build.xml" target="internal.install.jbpm.into.jboss.integrationtestspecifics" />
+    <antcall target="enable.jboss.debug" />
     <ant antfile="${jbpm.home}/jboss/build.xml" target="start.jboss" />
     <ant antfile="${jbpm.home}/db/build.xml" target="create.jbpm.schema" />
 	</target>
-	
+
+  <target name="enable.jboss.debug" unless="jbpm.debug">
+    <replace file="${jboss.home}/bin/run.bat" 
+    	       token="rem set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y" 
+    	       value="set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"/>
+  	<copy file="jboss/jboss-log4j.xml" todir="${jboss.server.config.dir}/conf" overwrite="true" />
+  </target>
+
 	<target name="post.install">
 		<!-- overwrite the default jdbc properties in the distro with those specified in the qa jdbc directory -->
     <copy file="jdbc/${database}.properties" 

Modified: jbpm4/trunk/qa/hudson-jbpm4-jboss.bat
===================================================================
--- jbpm4/trunk/qa/hudson-jbpm4-jboss.bat	2009-05-26 12:51:01 UTC (rev 4896)
+++ jbpm4/trunk/qa/hudson-jbpm4-jboss.bat	2009-05-26 12:57:40 UTC (rev 4897)
@@ -3,7 +3,7 @@
 
 cmd /C mvn -U -Pdistro -Pschemadocs clean install
 
-cmd /C ant -f qa/build.xml integration.testrun.setup
+cmd /C ant -f qa/build.xml -Djbpm.debug=true integration.testrun.setup
 
 cmd /C mvn -U -Djboss.bind.address=localhost test
 

Added: jbpm4/trunk/qa/jboss/jboss-log4j.xml
===================================================================
--- jbpm4/trunk/qa/jboss/jboss-log4j.xml	                        (rev 0)
+++ jbpm4/trunk/qa/jboss/jboss-log4j.xml	2009-05-26 12:57:40 UTC (rev 4897)
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!--                                                                       -->
+<!--  Log4j Configuration                                                  -->
+<!--                                                                       -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml 64096 2007-07-17 14:36:23Z stan.silvert at jboss.com $ -->
+
+<!--
+   | For more configuration information and examples see the Jakarta Log4j
+   | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+   <!-- ================================= -->
+   <!-- Preserve messages in a local file -->
+   <!-- ================================= -->
+
+   <!-- A time/date based rolling appender -->
+   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
+      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+      <param name="File" value="${jboss.server.log.dir}/server.log"/>
+      <param name="Append" value="false"/>
+      <!-- 
+         Set the threshold via a system property. Note this is parsed by log4j,
+         so the full JBoss system property format is not supported; e.g.
+         setting a default via ${jboss.server.log.threshold:WARN} will not work.         
+       -->
+      <param name="Threshold" value="${jboss.server.log.threshold}"/>
+
+      <!-- Rollover at midnight each day -->
+      <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+
+      <!-- Rollover at the top of each hour
+      <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
+      -->
+
+      <layout class="org.apache.log4j.PatternLayout">
+         <!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
+         <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
+
+         <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+         <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
+          -->
+      </layout>
+   </appender>
+
+   <!-- ============================== -->
+   <!-- Append messages to the console -->
+   <!-- ============================== -->
+
+   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+      <param name="Target" value="System.out"/>
+      <param name="Threshold" value="DEBUG"/>
+
+      <layout class="org.apache.log4j.PatternLayout">
+         <!-- The default pattern: Date Priority [Category] Message\n -->
+         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
+      </layout>
+   </appender>
+
+   <!-- ================ -->
+   <!-- Limit categories -->
+   <!-- ================ -->
+
+   <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
+   <category name="org.apache">
+      <priority value="INFO"/>
+   </category>
+   
+   <!-- Limit the jacorb category to WARN as its INFO is verbose -->
+   <category name="jacorb">
+      <priority value="WARN"/>
+   </category>
+   
+   <!-- Set the logging level of the JSF implementation -->
+   <category name="javax.enterprise.resource.webcontainer.jsf">
+     <priority value="INFO" />
+   </category>
+   
+   <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
+   <category name="org.jgroups">
+      <priority value="WARN"/>
+   </category>
+   
+   <!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->
+   <category name="org.quartz">
+      <priority value="INFO"/>
+   </category>
+   
+   <!-- Limit JBoss categories -->
+   <category name="org.jboss">
+      <priority value="INFO"/>
+   </category>
+
+   <category name="org.hibernate">
+      <priority value="INFO"/>
+   </category>
+
+   <!-- category name="org.hibernate.SQL">
+      <priority value="DEBUG"/>
+   </category -->
+
+   <!-- ======================= -->
+   <!-- Setup the Root category -->
+   <!-- ======================= -->
+
+   <root>
+      <appender-ref ref="CONSOLE"/>
+   </root>
+
+</log4j:configuration>


Property changes on: jbpm4/trunk/qa/jboss/jboss-log4j.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the jbpm-commits mailing list