[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