JBoss JBPM SVN: r6729 - in jbpm4/trunk/modules: test-db/src/test/java/org/jbpm/test/execution and 1 other directory.
by do-not-reply@jboss.org
Author: rebody
Date: 2010-10-03 09:56:44 -0400 (Sun, 03 Oct 2010)
New Revision: 6729
Added:
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrencyGraphBasedTest.java
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrentEndTest.java
Log:
JBPM-2932 fix NullPointerException when invoking endProcessInstance() on a process with end eventListener.
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java 2010-10-03 00:53:36 UTC (rev 6728)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java 2010-10-03 13:56:44 UTC (rev 6729)
@@ -382,8 +382,11 @@
}
public static ClassLoader installDeploymentClassLoader(ProcessDefinitionImpl processDefinition) {
+ if (processDefinition == null) {
+ return null;
+ }
String deploymentId = processDefinition.getDeploymentId();
- if (deploymentId==null) {
+ if (deploymentId == null) {
return null;
}
@@ -392,7 +395,7 @@
RepositoryCache repositoryCache = EnvironmentImpl.getFromCurrent(RepositoryCache.class);
DeploymentClassLoader deploymentClassLoader = repositoryCache.getDeploymentClassLoader(deploymentId, original);
- if (deploymentClassLoader==null) {
+ if (deploymentClassLoader == null) {
deploymentClassLoader = new DeploymentClassLoader(original, deploymentId);
repositoryCache.setDeploymentClassLoader(deploymentId, original, deploymentClassLoader);
}
Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrencyGraphBasedTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrencyGraphBasedTest.java (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrencyGraphBasedTest.java 2010-10-03 13:56:44 UTC (rev 6729)
@@ -0,0 +1,154 @@
+/*
+ * 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.test.execution;
+
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.listener.EventListener;
+import org.jbpm.api.listener.EventListenerExecution;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.test.JbpmTestCase;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class ConcurrencyGraphBasedTest extends JbpmTestCase {
+
+ public void testConcurrencyGraphBased() {
+ deployJpdlXmlString("<?xml version='1.0' encoding='UTF-8'?>"
+
+ +"<process name='ConcurrencyGraphBased'>"
+
+ +"<on event='start'>"
+ +"<event-listener class='" + TestEventListener.class.getName() + "'>"
+ +"</event-listener>"
+ +"</on>"
+
+ +"<on event='end'>"
+ +"<event-listener class='" + TestEventListener.class.getName() + "'>"
+ +"</event-listener>"
+ +"</on>"
+
+ +"<start g='16,102,48,48'>"
+ +"<transition to='fork'/>"
+ +"</start>"
+
+ +"<fork name='fork' g='96,102,48,48'>"
+ +"<transition to='send invoice' g='120,41:'/>"
+ +"<transition to='load truck'/>"
+ +"<transition to='print shipping documents' g='120,213:'/>"
+ +"</fork>"
+
+ +"<state name='send invoice' g='176,16,149,52'>"
+ +"<transition to='final join' g='606,41:'/>"
+ +"</state>"
+
+ +"<state name='load truck' g='176,100,149,52'>"
+ +"<transition to='shipping join' g='377,126:'/>"
+ +"</state>"
+
+ +"<state name='print shipping documents' g='176,184,149,58'>"
+ +"<transition to='shipping join' g='378,213:'/>"
+ +"</state>"
+
+ +"<join name='shipping join' g='353,145,48,48'>"
+ +"<transition to='drive truck to destination'/>"
+ +"</join>"
+
+ +"<state name='drive truck to destination' g='431,140,148,52'>"
+ +"<transition to='final join' g='607,165:'/>"
+ +"</state>"
+
+ +"<join name='final join' g='583,73,48,48'>"
+ +"<transition to='end'/>"
+ +"</join>"
+
+ +"<end name='end' g='666,74,48,48'/>"
+
+ +"</process>");
+
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("ConcurrencyGraphBased");
+ String pid = processInstance.getId();
+
+ Set<String> expectedActivityNames = new HashSet<String>();
+ expectedActivityNames.add("send invoice");
+ expectedActivityNames.add("load truck");
+ expectedActivityNames.add("print shipping documents");
+
+ assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+ assertNotNull(processInstance.findActiveExecutionIn("send invoice"));
+ assertNotNull(processInstance.findActiveExecutionIn("load truck"));
+ assertNotNull(processInstance.findActiveExecutionIn("print shipping documents"));
+
+ String sendInvoiceExecutionId = processInstance.findActiveExecutionIn("send invoice").getId();
+ processInstance = executionService.signalExecutionById(sendInvoiceExecutionId);
+
+ expectedActivityNames.remove("send invoice");
+ assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+ assertNotNull(processInstance.findActiveExecutionIn("load truck"));
+ assertNotNull(processInstance.findActiveExecutionIn("print shipping documents"));
+
+ String loadTruckExecutionId = processInstance.findActiveExecutionIn("load truck").getId();
+ processInstance = executionService.signalExecutionById(loadTruckExecutionId);
+
+ expectedActivityNames.remove("load truck");
+ assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+ assertNotNull(processInstance.findActiveExecutionIn("print shipping documents"));
+
+ String printShippingDocumentsId = processInstance.findActiveExecutionIn("print shipping documents").getId();
+ processInstance = executionService.signalExecutionById(printShippingDocumentsId);
+
+ expectedActivityNames.remove("print shipping documents");
+ expectedActivityNames.add("drive truck to destination");
+ assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+ assertNotNull(processInstance.findActiveExecutionIn("drive truck to destination"));
+
+ String driveTruckExecutionId = processInstance.findActiveExecutionIn("drive truck to destination").getId();
+
+
+ processInstance = executionService.signalExecutionById(driveTruckExecutionId, "ERROR"); // KM specify an ERROR transition, not the default
+ assertNotNull("execution "+pid+" should exist", executionService.findExecutionById(pid)); // ProcessInstance is still execution
+
+// Would like to force the Process Instance to end in this scenario, but I am not sure how to do it ?
+
+// ExecutionImpl execution = (ExecutionImpl) executionService.findExecutionById(pid);
+// execution.end(); // throws org.jbpm.api.JbpmException: no environment to get org.jbpm.pvm.internal.session.RepositorySession
+
+ processEngine.getExecutionService().endProcessInstance(pid,ProcessInstance.STATE_ENDED);
+ assertNull("execution "+pid+" should not exist", executionService.findExecutionById(pid)); // ProcessInstance is still execution
+
+
+ }
+
+ public static class TestEventListener implements EventListener {
+ public void notify(EventListenerExecution execution) {
+ }
+ }
+}
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrentEndTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrentEndTest.java 2010-10-03 00:53:36 UTC (rev 6728)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ConcurrentEndTest.java 2010-10-03 13:56:44 UTC (rev 6729)
@@ -46,7 +46,7 @@
" <end name='end' />" +
"</process>"
);
-
+
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ConcurrentEnd");
assertEquals(Execution.STATE_ENDED, processInstance.getState());
}
@@ -65,11 +65,11 @@
" <end name='end' />" +
"</process>"
);
-
+
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ConcurrentEnd");
assertEquals(Execution.STATE_ENDED, processInstance.getState());
}
-
+
public void testConcurrentEndScenario3() {
deployJpdlXmlString(
"<process name='ConcurrentEnd'>" +
@@ -95,5 +95,5 @@
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ConcurrentEnd");
assertEquals(Execution.STATE_ENDED, processInstance.getState());
- }
+ }
}
13 years, 7 months
JBoss JBPM SVN: r6728 - in jbpm4/trunk/modules: jpdl/src/main/java/org/jbpm/jpdl/internal/activity and 4 other directories.
by do-not-reply@jboss.org
Author: rebody
Date: 2010-10-02 20:53:36 -0400 (Sat, 02 Oct 2010)
New Revision: 6728
Modified:
jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskActivity.java
jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskPropertiesTest.java
Log:
JBPM-2935 let form attribute of task support EL.
Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskActivity.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskActivity.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskActivity.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -75,7 +75,9 @@
}
task.setPriority(taskDefinition.getPriority());
- task.setFormResourceName(taskDefinition.getFormResourceName());
+ if (taskDefinition.getFormResourceName() != null) {
+ task.setFormResourceName((String) taskDefinition.getFormResourceName().evaluate(execution));
+ }
// save task so that TaskDbSession.findTaskByExecution works for assign
// event listeners
@@ -107,7 +109,7 @@
execution.setVariable("jbpm_outcome", signalName);
proceed(execution, findOutgoingSequenceFlow(execution, CONDITIONS_CHECKED));
-
+
}
public TaskDefinitionImpl getTaskDefinition() {
Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -22,6 +22,7 @@
package org.jbpm.bpmn.flownodes;
import org.jbpm.bpmn.parser.BpmnParser;
+import org.jbpm.pvm.internal.el.Expression;
import org.jbpm.pvm.internal.model.ScopeElementImpl;
import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
import org.jbpm.pvm.internal.util.XmlUtil;
@@ -39,19 +40,21 @@
public UserTaskBinding() {
super(TAG);
}
-
+
public Object parse(Element element, Parse parse, BpmnParser bpmnParser) {
UserTaskActivity taskActivity = new UserTaskActivity();
ScopeElementImpl scopeElement = parse.contextStackFind(ScopeElementImpl.class);
TaskDefinitionImpl taskDefinition = bpmnParser.parseTaskDefinition(element, parse, scopeElement);
-
+
addActivityResources(taskDefinition, taskActivity, element, parse);
Element rendering = XmlUtil.element(element, "rendering");
if (rendering != null) {
Element jBPMForm = XmlUtil.element(rendering, "form");
- taskDefinition.setFormResourceName(jBPMForm != null ? jBPMForm.getTextContent().trim() : null);
+ if (jBPMForm != null) {
+ taskDefinition.setFormResourceName(Expression.create(jBPMForm.getTextContent().trim()));
+ }
}
taskActivity.setTaskDefinition(taskDefinition);
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -52,9 +52,9 @@
public class TaskActivity extends JpdlExternalActivity {
private static final long serialVersionUID = 1L;
-
+
protected TaskDefinitionImpl taskDefinition;
-
+
public void execute(ActivityExecution execution) {
execute((ExecutionImpl)execution);
}
@@ -66,7 +66,7 @@
task.setExecution(execution);
task.setProcessInstance(execution.getProcessInstance());
task.setSignalling(true);
-
+
// initialize the name
if (taskDefinition.getName()!=null) {
task.setName(taskDefinition.getName());
@@ -81,7 +81,9 @@
task.setDescription(description);
}
task.setPriority(taskDefinition.getPriority());
- task.setFormResourceName(taskDefinition.getFormResourceName());
+ if (taskDefinition.getFormResourceName() != null) {
+ task.setFormResourceName((String) taskDefinition.getFormResourceName().evaluate(execution));
+ }
// calculate the due date of the task based on the due date duration
String dueDateDescription = taskDefinition.getDueDateDescription();
@@ -96,7 +98,7 @@
if (swimlaneDefinition!=null) {
SwimlaneImpl swimlane = execution.getInitializedSwimlane(swimlaneDefinition);
task.setSwimlane(swimlane);
-
+
// copy the swimlane assignments to the task
task.setAssignee(swimlane.getAssignee());
for (ParticipationImpl participant : swimlane.getParticipations()) {
@@ -106,14 +108,14 @@
}
execution.initializeAssignments(taskDefinition, task);
-
+
execution.fire(Event.TASK_CREATED, execution.getActivity());
-
+
HistoryEvent.fire(new TaskActivityStart(task), execution);
execution.waitForSignal();
}
-
+
public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters)
throws Exception {
signal((ExecutionImpl)execution, signalName, parameters);
@@ -122,11 +124,11 @@
public void signal(ExecutionImpl execution, String signalName, Map<String, ?> parameters)
throws Exception {
ActivityImpl activity = execution.getActivity();
-
+
if (parameters!=null) {
execution.setVariables(parameters);
}
-
+
execution.fire(signalName, activity);
DbSession taskDbSession = EnvironmentImpl.getFromCurrent(DbSession.class);
@@ -134,10 +136,10 @@
if (task!=null) {
task.setSignalling(false);
}
-
+
Transition transition = null;
List<? extends Transition> outgoingTransitions = activity.getOutgoingTransitions();
-
+
if (outgoingTransitions!=null && !outgoingTransitions.isEmpty()) {
// Lookup the outgoing transition
boolean noOutcomeSpecified = TaskConstants.NO_TASK_OUTCOME_SPECIFIED.equals(signalName);
@@ -152,7 +154,7 @@
else {
transition = activity.findOutgoingTransition(signalName);
}
-
+
// If no transition has been found, we check if we have a special case
// in which we can still deduce the outgoing transition
if (transition==null) {
@@ -177,18 +179,18 @@
throw new JbpmException("No transition named '" + signalName + "' was found.");
}
}
-
+
if (task != null && !task.isCompleted()) {
// task should be skipped since it is not completed yet !!!
task.skip(transition.getName());
}
-
+
if (transition!=null) {
execution.take(transition);
}
}
}
-
+
public TaskDefinitionImpl getTaskDefinition() {
return taskDefinition;
}
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -564,7 +564,9 @@
taskDefinition.setName(taskName);
String form = XmlUtil.attribute(element, "form");
- taskDefinition.setFormResourceName(form);
+ if (form != null) {
+ taskDefinition.setFormResourceName(Expression.create(form));
+ }
String duedate = XmlUtil.attribute(element, "duedate");
taskDefinition.setDueDateDescription(duedate);
Modified: jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/TaskParsingTest.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -38,7 +38,7 @@
Expression descriptionExpression = taskDefinition.getDescription();
assertEquals("first task", descriptionExpression.getExpressionString());
assertEquals(3, taskDefinition.getPriority());
- assertEquals("aForm", taskDefinition.getFormResourceName());
+ assertEquals("aForm", taskDefinition.getFormResourceName().getExpressionString());
assertEquals("1 day", taskDefinition.getDueDateDescription());
}
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -24,17 +24,18 @@
import java.util.ArrayList;
import java.util.List;
+import org.jbpm.pvm.internal.el.Expression;
import org.jbpm.pvm.internal.util.Priority;
/**
* defines a task and how the actor(s) must be calculated at runtime.
*/
public class TaskDefinitionImpl extends AssignableDefinitionImpl {
-
+
private static final long serialVersionUID = 1L;
protected String dueDateDescription;
- protected String formResourceName;
+ protected Expression formResourceName;
protected List<TaskDefinitionImpl> subTaskDefinitions = new ArrayList<TaskDefinitionImpl>();
protected int priority = Priority.NORMAL;
protected SwimlaneDefinitionImpl swimlaneDefinition;
@@ -63,10 +64,10 @@
public void setDueDateDescription(String dueDateDescription) {
this.dueDateDescription = dueDateDescription;
}
- public String getFormResourceName() {
+ public Expression getFormResourceName() {
return formResourceName;
}
- public void setFormResourceName(String form) {
+ public void setFormResourceName(Expression form) {
this.formResourceName = form;
}
}
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskPropertiesTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskPropertiesTest.java 2010-10-03 00:13:00 UTC (rev 6727)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskPropertiesTest.java 2010-10-03 00:53:36 UTC (rev 6728)
@@ -20,7 +20,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
/**
- *
+ *
*/
package org.jbpm.test.task;
@@ -34,16 +34,16 @@
/**
* Testcase to check if properties can be resolved through a {@link Task}.
- *
+ *
* @author Joram Barrez
* @author Ronald van Kuijk
*/
public class TaskPropertiesTest extends JbpmTestCase {
-
+
private static final String ACTOR = "johnDoe";
-
+
private static final String ACTOR2 = "johnSmoe";
-
+
private static final String PROCESS =
"<process name='VacationTrip'>" +
" <start>" +
@@ -62,34 +62,54 @@
" </task>" +
" <state name='wait'/>" +
"</process>";
-
+
public void testGetActivityName() {
Task task = startProcessInstanceAndReturnTaskFor(ACTOR);
- assertEquals("select destination", task.getActivityName());
+ assertEquals("select destination", task.getActivityName());
}
-
+
public void testGetDescription() {
Task task = startProcessInstanceAndReturnTaskFor(ACTOR);
assertEquals("Description for 'select destination' with Springbreak", task.getDescription());
}
-
+
public void testGetProcessDefinitionThroughTask() {
Task task = startProcessInstanceAndReturnTaskFor(ACTOR);
-
+
String pdId = executionService.findExecutionById(task.getExecutionId()).getProcessDefinitionId();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(pdId)
.uniqueResult();
- assertEquals("VacationTrip", processDefinition.getName());
+ assertEquals("VacationTrip", processDefinition.getName());
}
-
+
private Task startProcessInstanceAndReturnTaskFor(String actor) {
deployJpdlXmlString(PROCESS);
Map<String, String> vars = new HashMap<String, String>();
vars.put("timeframe", "Springbreak");
executionService.startProcessInstanceByKey("VacationTrip", vars);
-
+
return taskService.findPersonalTasks(actor).get(0);
}
+ public void testFormNameWithEl() {
+ String xml =
+ "<process name='VacationTrip'>" +
+ " <start>" +
+ " <transition to='select destination' />" +
+ " </start>" +
+ " <task name='select destination' assignee='johndoe' form='#{formName}'>" +
+ " <transition to='wait' />" +
+ " </task>" +
+ " <state name='wait'/>" +
+ "</process>";
+ deployJpdlXmlString(xml);
+ Map<String, String> vars = new HashMap<String, String>();
+ vars.put("formName", "Springbreak.ftl");
+ executionService.startProcessInstanceByKey("VacationTrip", vars);
+
+ Task task = taskService.findPersonalTasks("johndoe").get(0);
+ assertEquals("Springbreak.ftl", task.getFormResourceName());
+ }
+
}
13 years, 7 months
JBoss JBPM SVN: r6727 - jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr.
by do-not-reply@jboss.org
Author: rebody
Date: 2010-10-02 20:13:00 -0400 (Sat, 02 Oct 2010)
New Revision: 6727
Modified:
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/UelExpressionTest.java
Log:
add testcase for return type is boolean,
related forum post is here: http://community.jboss.org/thread/157117?tstart=0
Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/UelExpressionTest.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/UelExpressionTest.java 2010-10-02 03:18:25 UTC (rev 6726)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/UelExpressionTest.java 2010-10-03 00:13:00 UTC (rev 6727)
@@ -21,6 +21,10 @@
*/
package org.jbpm.pvm.internal.expr;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import org.jbpm.pvm.activities.WaitState;
import org.jbpm.pvm.internal.builder.ProcessDefinitionBuilder;
@@ -34,7 +38,7 @@
* @author Tom Baeyens
*/
public class UelExpressionTest extends JbpmTestCase {
-
+
public void testUelExpression() {
ExecutionImpl execution = (ExecutionImpl) ProcessDefinitionBuilder
.startProcess()
@@ -43,12 +47,54 @@
.endActivity()
.endProcess()
.startProcessInstance();
-
+
Expression expression = Expression.create("#{pv}", Expression.LANGUAGE_UEL_VALUE);
UelValueExpression uve = ((UelValueExpression) expression);
-
- execution.setVariable("pv", null);
-
+
+ execution.setVariable("pv", null);
+
assertEquals(null, uve.evaluate(execution));
- }
+ }
+
+ public void testBooleanResult() {
+ ExecutionImpl execution = (ExecutionImpl) ProcessDefinitionBuilder
+ .startProcess()
+ .startActivity("initial", new WaitState())
+ .initial()
+ .endActivity()
+ .endProcess()
+ .startProcessInstance();
+
+ Expression expression = Expression.create("#{pv}", Expression.LANGUAGE_UEL_VALUE);
+ UelValueExpression uve = ((UelValueExpression) expression);
+
+ execution.setVariable("pv", Boolean.TRUE);
+
+ assertEquals(Boolean.TRUE, uve.evaluate(execution));
+ }
+
+ public void testBooleanResultWithComplexCondition() {
+ ExecutionImpl execution = (ExecutionImpl) ProcessDefinitionBuilder
+ .startProcess()
+ .startActivity("initial", new WaitState())
+ .initial()
+ .endActivity()
+ .endProcess()
+ .startProcessInstance();
+
+ Expression expression = Expression.create("#{response['resultSet'] != null && response['resultSet'][0][3] > 0}",
+ Expression.LANGUAGE_UEL_VALUE);
+ UelValueExpression uve = ((UelValueExpression) expression);
+
+ Map response = new HashMap();
+ List resultSet = new ArrayList();
+ int[] array = new int[]{0, 1, 2, 3};
+
+ response.put("resultSet", resultSet);
+ resultSet.add(array);
+ execution.setVariable("response", response);
+
+ assertEquals(Boolean.TRUE, uve.evaluate(execution));
+ }
+
}
13 years, 7 months
JBoss JBPM SVN: r6726 - in jbpm3/branches/jbpm-3.2-soa: distribution and 7 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2010-10-01 23:18:25 -0400 (Fri, 01 Oct 2010)
New Revision: 6726
Modified:
jbpm3/branches/jbpm-3.2-soa/distribution/pom.xml
jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-jbm-service.xml
jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-mq-service.xml
jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/installer/install-definition.xml
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/etc/jbpm.cfg.xml
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/CommandServiceBean.java
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/ejb-jar.xml
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/jboss.xml
jbpm3/branches/jbpm-3.2-soa/enterprise/pom.xml
jbpm3/branches/jbpm-3.2-soa/pom.xml
Log:
JBPM-2945 provide an enterprise-jee5 configuration that works with jboss as 5.x and the jbpm3-jboss5xx hudson jobs;
please mind the effects of any change on these jobs!
Modified: jbpm3/branches/jbpm-3.2-soa/distribution/pom.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/distribution/pom.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/distribution/pom.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -175,6 +175,10 @@
<artifactId>ant</artifactId>
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.jboss.cluster</groupId>
<artifactId>hibernate-jbc-cacheprovider</artifactId>
</dependency>
Modified: jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-jbm-service.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-jbm-service.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-jbm-service.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -1,30 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ This file defines the default queues that jBPM ships with.
+ The default queues are used by the Command Listener Bean
+ and the producer-consumer pair formed by the JMS Connector Service and
+ the Job/Timer Listener Bean.
+
+ You can add other destinations to this file, or you can create other
+ *-service.xml files to contain your application's destinations.
+-->
+
<server>
+ <mbean code="org.jboss.jms.server.destination.QueueService"
+ name="jboss.esb.destination:service=Queue,name=JbpmDLQ"
+ xmbean-dd="xmdesc/Queue-xmbean.xml">
+ <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ </mbean>
- <mbean code="org.jboss.jms.server.destination.QueueService"
- name="jboss.esb.destination:service=Queue,name=JbpmDLQ"
- xmbean-dd="xmdesc/Queue-xmbean.xml">
- <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
- <depends>jboss.messaging:service=PostOffice</depends>
- </mbean>
-
- <mbean code="org.jboss.jms.server.destination.QueueService"
- name="jboss.esb.destination:service=Queue,name=JbpmCommandQueue"
- xmbean-dd="xmdesc/Queue-xmbean.xml">
- <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
- <depends>jboss.messaging:service=PostOffice</depends>
- <attribute name="RedeliveryDelay">60000</attribute>
- <attribute name="DLQ">jboss.esb.destination:service=Queue,name=JbpmDLQ</attribute>
- </mbean>
-
- <mbean code="org.jboss.jms.server.destination.QueueService"
- name="jboss.esb.destination:service=Queue,name=JbpmJobQueue"
- xmbean-dd="xmdesc/Queue-xmbean.xml">
- <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
- <depends>jboss.messaging:service=PostOffice</depends>
- <attribute name="RedeliveryDelay">60000</attribute>
- <attribute name="DLQ">jboss.esb.destination:service=Queue,name=JbpmDLQ</attribute>
- </mbean>
-
+ <mbean code="org.jboss.jms.server.destination.QueueService"
+ name="jboss.esb.destination:service=Queue,name=JbpmJobQueue"
+ xmbean-dd="xmdesc/Queue-xmbean.xml">
+ <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ <!-- JBPM-1952 a small redelivery delay goes a long way towards mitigating
+ stale state exceptions and deadlocks under heavy concurrency conditions -->
+ <attribute name="RedeliveryDelay">5000</attribute>
+ <attribute name="DLQ">jboss.esb.destination:service=Queue,name=JbpmDLQ</attribute>
+ </mbean>
+ <mbean code="org.jboss.jms.server.destination.QueueService"
+ name="jboss.esb.destination:service=Queue,name=JbpmCommandQueue"
+ xmbean-dd="xmdesc/Queue-xmbean.xml">
+ <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ <attribute name="RedeliveryDelay">5000</attribute>
+ <attribute name="DLQ">jboss.esb.destination:service=Queue,name=JbpmDLQ</attribute>
+ </mbean>
</server>
\ No newline at end of file
Modified: jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-mq-service.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-mq-service.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/destination/jbpm-mq-service.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -11,7 +11,6 @@
-->
<server>
-
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.mq.destination:service=Queue,name=JbpmJobQueue">
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
@@ -25,5 +24,4 @@
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
<attribute name="RedeliveryDelay">1000</attribute>
</mbean>
-
</server>
Modified: jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/installer/install-definition.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/installer/install-definition.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/distribution/src/main/resources/installer/install-definition.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -236,6 +236,12 @@
<file condition="isJBoss423"
src="@{assemblyDirectory}/lib/hibernate-jbc-cacheprovider.jar"
targetdir="${jbossInstallPath}/server/${jbossTargetServer}/deploy/jbpm/jbpm-service.sar" />
+ <file condition="isJBoss501"
+ src="@{assemblyDirectory}/lib/commons-lang.jar"
+ targetdir="${jbossInstallPath}/server/${jbossTargetServer}/deploy/jbpm/jbpm-service.sar" />
+ <file condition="isJBoss510"
+ src="@{assemblyDirectory}/lib/commons-lang.jar"
+ targetdir="${jbossInstallPath}/server/${jbossTargetServer}/deploy/jbpm/jbpm-service.sar" />
<!-- jbpm/jbpm-enterprise.jar -->
<file src="@{assemblyDirectory}/lib/jbpm-enterprise.jar"
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise/pom.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise/pom.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise/pom.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -10,7 +10,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
- <name>jBPM3 - Enterprise</name>
+ <name>jBPM3 - Enterprise Beans</name>
<groupId>org.jbpm.jbpm3</groupId>
<artifactId>jbpm-enterprise</artifactId>
<packaging>ejb</packaging>
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -1,7 +1,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <name>jBPM3 - Enterprise JEE5</name>
+ <name>jBPM3 - JEE5 Enterprise Beans</name>
<groupId>org.jbpm.jbpm3</groupId>
<artifactId>jbpm-enterprise-jee5</artifactId>
<packaging>ejb</packaging>
@@ -77,8 +77,6 @@
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
- <version>2.4</version>
- <type>jar</type>
<scope>provided</scope>
</dependency>
</dependencies>
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/etc/jbpm.cfg.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/etc/jbpm.cfg.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/etc/jbpm.cfg.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -4,39 +4,26 @@
<service name="persistence" factory="org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory" />
<service name="message">
<factory>
- <bean class="org.jbpm.jms.JmsConnectorServiceFactory" singleton="true">
- <field name="jbpmConfiguration">
- <ref bean="jbpm.configuration" />
- </field>
- </bean>
+ <ref bean="jbpm.jms.connector.service" />
</factory>
</service>
- <service name="message">
- <factory>
- <ref bean="jbpm.jms.connector.command.service" />
- </factory>
- </service>
- <service name="scheduler">
- <factory>
- <ref bean="jbpm.jms.connector.job.service" />
- </factory>
- </service>
+ <service name="scheduler">
+ <factory>
+ <ref bean="jbpm.jms.connector.service" />
+ </factory>
+ </service>
<service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
</jbpm-context>
-
- <bean name="jbpm.jms.connector.command.service" class="org.jbpm.jms.JmsConnectorServiceFactory">
- <property name="connectionFactoryJndiName"><string value="java:JmsXA"/></property>
- <property name="destinationJndiName"><string value="queue/JbpmJobQueue"/></property>
+ <bean name="jbpm.jms.connector.service" class="org.jbpm.jms.JmsConnectorServiceFactory"
+ singleton="true">
+ <field name="jbpmConfiguration">
+ <ref bean="jbpm.configuration" />
+ </field>
</bean>
-
- <bean name="jbpm.jms.connector.job.service" class="org.jbpm.jms.JmsConnectorServiceFactory">
- <property name="connectionFactoryJndiName"><string value="java:JmsXA"/></property>
- <property name="destinationJndiName"><string value="queue/JbpmJobQueue"/></property>
- </bean>
-
+
<!-- employ the context class loader -->
<string name="jbpm.class.loader" value="context" />
@@ -46,8 +33,8 @@
<!--
There should be no job executor in the enterprise configuration.
- The message and scheduler services are both bound to JMS.
- -->
+ The message and scheduler services are both bound to JMS.
+ -->
<null name="jbpm.job.executor" />
</jbpm-configuration>
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/CommandServiceBean.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/CommandServiceBean.java 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/CommandServiceBean.java 2010-10-02 03:18:25 UTC (rev 6726)
@@ -83,13 +83,6 @@
* the same queue from which the {@linkplain JobListenerBean job listener bean} receives
* messages.</td>
* </tr>
- * <tr>
- * <td><code>jms/TimerQueue</code></td>
- * <td>Message Destination Reference</td>
- * <td>The scheduler service sends timer messages to the queue referenced here. Must be the
- * same queue from which the {@linkplain TimerListenerBean timer listener bean} receives
- * messages.</td>
- * </tr>
* </table>
*
* @author Alejandro Guizar
@@ -99,7 +92,6 @@
@Resource(name = "jdbc/JbpmDataSource", type = DataSource.class, shareable = true),
@Resource(name = "jms/JbpmConnectionFactory", type = ConnectionFactory.class, shareable = true),
@Resource(name = "jms/JobQueue", type = Queue.class),
- @Resource(name = "jms/TimerQueue", type = Queue.class)
})
public class CommandServiceBean implements LocalCommandService {
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java 2010-10-02 03:18:25 UTC (rev 6726)
@@ -1,7 +1,10 @@
package org.jbpm.ejb;
+import javax.ejb.ActivationConfigProperty;
+import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
+import javax.jms.MessageListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -24,6 +27,9 @@
*
* @author Alejandro Guizar
*/
+@MessageDriven(messageListenerInterface = MessageListener.class, activationConfig = {
+ @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
+})
public class JobListenerBean extends CommandListenerBean {
private static final long serialVersionUID = 1L;
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/ejb-jar.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/ejb-jar.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/ejb-jar.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
@@ -35,16 +36,6 @@
<message-destination-usage>Produces</message-destination-usage>
<mapped-name>queue/JbpmJobQueue</mapped-name>
</message-destination-ref>
-
- <message-destination-ref>
- <description>
- The scheduler service sends timer messages to the queue referenced here.
- Must be the same queue from which the TimerListenerBean receives messages.
- </description>
- <message-destination-ref-name>jms/TimerQueue</message-destination-ref-name>
- <message-destination-usage>Produces</message-destination-usage>
- <mapped-name>queue/JbpmTimerQueue</mapped-name>
- </message-destination-ref>
</session>
<message-driven>
@@ -54,21 +45,13 @@
<display-name>jBPM Command Listener</display-name>
<ejb-name>CommandListenerBean</ejb-name>
<mapped-name>queue/JbpmCommandQueue</mapped-name>
- <ejb-class>org.jbpm.ejb.CommandListenerBean</ejb-class>
+ <ejb-class>org.jbpm.ejb.CommandListenerBean</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
- <activation-config>
- <activation-config-property>
- <activation-config-property-name>destination</activation-config-property-name>
- <activation-config-property-value>queue/JbpmCommandQueue</activation-config-property-value>
- </activation-config-property>
- <activation-config-property>
- <activation-config-property-name>dLQJNDIName</activation-config-property-name>
- <activation-config-property-value>queue/JbpmDLQ</activation-config-property-value>
- </activation-config-property>
- <activation-config-property>
- <activation-config-property-name>maxSession</activation-config-property-name>
- <activation-config-property-value>150</activation-config-property-value>
- </activation-config-property>
+ <activation-config>
+ <activation-config-property>
+ <activation-config-property-name>maxSession</activation-config-property-name>
+ <activation-config-property-value>150</activation-config-property-value>
+ </activation-config-property>
</activation-config>
<resource-ref>
<description>
@@ -82,27 +65,16 @@
<message-driven>
<description>
- Listens for async job references and runs the jobs through the command service.
+ Listens for job references and runs the jobs through the command service.
</description>
- <display-name>jBPM Async Job Listener</display-name>
- <ejb-name>AsyncJobListenerBean</ejb-name>
+ <display-name>jBPM Job Listener</display-name>
+ <ejb-name>JobListenerBean</ejb-name>
<mapped-name>queue/JbpmJobQueue</mapped-name>
- <ejb-class>org.jbpm.ejb.JobListenerBean</ejb-class>
- <messaging-type>javax.jms.MessageListener</messaging-type>
- <message-destination-type>javax.jms.Queue</message-destination-type>
- <activation-config>
- <activation-config-property>
- <activation-config-property-name>destination</activation-config-property-name>
- <activation-config-property-value>queue/JbpmJobQueue</activation-config-property-value>
- </activation-config-property>
- <activation-config-property>
- <activation-config-property-name>dLQJNDIName</activation-config-property-name>
- <activation-config-property-value>queue/JbpmDLQ</activation-config-property-value>
- </activation-config-property>
- <activation-config-property>
- <activation-config-property-name>maxSession</activation-config-property-name>
- <activation-config-property-value>150</activation-config-property-value>
- </activation-config-property>
+ <activation-config>
+ <activation-config-property>
+ <activation-config-property-name>maxSession</activation-config-property-name>
+ <activation-config-property-value>150</activation-config-property-value>
+ </activation-config-property>
</activation-config>
<resource-ref>
<description>
@@ -113,6 +85,5 @@
<mapped-name>java:JmsXA</mapped-name>
</resource-ref>
</message-driven>
-
</enterprise-beans>
</ejb-jar>
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/jboss.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/jboss.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/resources/META-INF/jboss.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
- <enterprise-beans>
- <message-driven>
- <ejb-name>CommandListenerBean</ejb-name>
- <depends>jboss.esb.destination:service=Queue,name=JbpmCommandQueue</depends>
- <depends>jboss.esb.destination:service=Queue,name=JbpmDLQ</depends>
- <aop-domain-name>AsyncRequestListenerBean MDB</aop-domain-name>
- </message-driven>
- <message-driven>
- <ejb-name>JobListenerBean</ejb-name>
- <depends>jboss.esb.destination:service=Queue,name=JbpmJobQueue</depends>
- <depends>jboss.esb.destination:service=Queue,name=JbpmDLQ</depends>
- <aop-domain-name>AsyncRequestListenerBean MDB</aop-domain-name>
- </message-driven>
- <session>
- <ejb-name>CommandServiceBean</ejb-name>
- <local-jndi-name>java:jbpm/CommandServiceBean</local-jndi-name>
- </session>
- </enterprise-beans>
+ <enterprise-beans>
+ <message-driven>
+ <ejb-name>CommandListenerBean</ejb-name>
+ <depends>jboss.esb.destination:service=Queue,name=JbpmCommandQueue</depends>
+ <depends>jboss.esb.destination:service=Queue,name=JbpmDLQ</depends>
+ </message-driven>
+
+ <message-driven>
+ <ejb-name>JobListenerBean</ejb-name>
+ <depends>jboss.esb.destination:service=Queue,name=JbpmJobQueue</depends>
+ <depends>jboss.esb.destination:service=Queue,name=JbpmDLQ</depends>
+ </message-driven>
+
+ <session>
+ <ejb-name>CommandServiceBean</ejb-name>
+ <local-jndi-name>java:jbpm/CommandServiceBean</local-jndi-name>
+ </session>
+ </enterprise-beans>
</jboss>
Modified: jbpm3/branches/jbpm-3.2-soa/pom.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/pom.xml 2010-10-02 00:41:56 UTC (rev 6725)
+++ jbpm3/branches/jbpm-3.2-soa/pom.xml 2010-10-02 03:18:25 UTC (rev 6726)
@@ -132,6 +132,11 @@
<version>1.4</version>
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.5</version>
+ </dependency>
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
13 years, 7 months
JBoss JBPM SVN: r6725 - in jbpm3/branches/jbpm-3.2-soa/core: src/test/java/org/jbpm/jbpm2908 and 1 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2010-10-01 20:41:56 -0400 (Fri, 01 Oct 2010)
New Revision: 6725
Added:
jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm-no-auto.cfg.xml
jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm.cfg.xml
Removed:
jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm1.cfg.xml
jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm2.cfg.xml
Modified:
jbpm3/branches/jbpm-3.2-soa/core/scripts/antrun-config.xml
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/ChangeJbpmConfigurationAction.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/JBPM2908Test.java
Log:
SOA-2367 change JBPM2908Test to read different configuration files depending on the target database, and no longer modifies the configuration
Modified: jbpm3/branches/jbpm-3.2-soa/core/scripts/antrun-config.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/scripts/antrun-config.xml 2010-10-01 22:45:35 UTC (rev 6724)
+++ jbpm3/branches/jbpm-3.2-soa/core/scripts/antrun-config.xml 2010-10-02 00:41:56 UTC (rev 6725)
@@ -97,7 +97,5 @@
tofile="${project.test.output.dir}/hibernate-no-auto.cfg.xml" />
<macro-disable file="${project.test.output.dir}/hibernate-no-auto.cfg.xml"
section="Automatic schema creation" />
- <macro-enable file="${project.test.output.dir}/org/jbpm/jbpm2908/jbpm2.cfg.xml"
- section="No automatic schema creation"/>
</target>
</project>
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/ChangeJbpmConfigurationAction.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/ChangeJbpmConfigurationAction.java 2010-10-01 22:45:35 UTC (rev 6724)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/ChangeJbpmConfigurationAction.java 2010-10-02 00:41:56 UTC (rev 6725)
@@ -10,9 +10,11 @@
private static final long serialVersionUID = 1L;
- public void execute(ExecutionContext context) throws Exception {
+ public void execute(ExecutionContext exeContext) throws Exception {
// load another configuration
- JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseResource("org/jbpm/jbpm2908/jbpm2.cfg.xml");
+ String dialect = (String) exeContext.getVariable("dialect");
+ JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseResource(dialect.indexOf("HSQL") != -1 ?
+ "org/jbpm/jbpm2908/jbpm-no-auto.cfg.xml" : "org/jbpm/jbpm2908/jbpm.cfg.xml");
try {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/JBPM2908Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/JBPM2908Test.java 2010-10-01 22:45:35 UTC (rev 6724)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2908/JBPM2908Test.java 2010-10-02 00:41:56 UTC (rev 6725)
@@ -35,15 +35,6 @@
*/
public class JBPM2908Test extends AbstractDbTestCase {
- protected String getJbpmTestConfig() {
- return "org/jbpm/jbpm2908/jbpm1.cfg.xml";
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- jbpmConfiguration.close();
- }
-
public void testChangingJbpmConfigurationInActionHandler() throws Exception {
// deploy definition
ProcessDefinition processDefinition1 = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2908/processdefinition1.xml");
@@ -52,7 +43,8 @@
deployProcessDefinition(processDefinition2);
// start instance
- ProcessInstance processInstance = jbpmContext.newProcessInstance("process1");
+ ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("process1");
+ processInstance.getContextInstance().setVariable("dialect", getHibernateDialect());
processInstance.signal();
assert processInstance.hasEnded() : processInstance;
}
Copied: jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm-no-auto.cfg.xml (from rev 6720, jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm2.cfg.xml)
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm-no-auto.cfg.xml (rev 0)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm-no-auto.cfg.xml 2010-10-02 00:41:56 UTC (rev 6725)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jbpm-configuration>
+ <string name="resource.hibernate.cfg.xml" value="hibernate-no-auto.cfg.xml" />
+</jbpm-configuration>
Copied: jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm.cfg.xml (from rev 6720, jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm1.cfg.xml)
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm.cfg.xml (rev 0)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm.cfg.xml 2010-10-02 00:41:56 UTC (rev 6725)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jbpm-configuration />
Deleted: jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm1.cfg.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm1.cfg.xml 2010-10-01 22:45:35 UTC (rev 6724)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm1.cfg.xml 2010-10-02 00:41:56 UTC (rev 6725)
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jbpm-configuration />
Deleted: jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm2.cfg.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm2.cfg.xml 2010-10-01 22:45:35 UTC (rev 6724)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/resources/org/jbpm/jbpm2908/jbpm2.cfg.xml 2010-10-02 00:41:56 UTC (rev 6725)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jbpm-configuration>
- <!-- No automatic schema creation (begin) ===
- <string name="resource.hibernate.cfg.xml" value="hibernate-no-auto.cfg.xml" />
- ==== No automatic schema creation (end) -->
-</jbpm-configuration>
13 years, 7 months
JBoss JBPM SVN: r6724 - in jbpm3/branches/jbpm-3.2-soa/core/src: test/java/org/jbpm/jbpm1755 and 8 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2010-10-01 18:45:35 -0400 (Fri, 01 Oct 2010)
New Revision: 6724
Modified:
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/perf/PerformanceTest.java
Log:
SOA-2368 increase job timeout back to one minute (or multiples thereof)
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -61,7 +61,7 @@
private List processDefinitionIds;
- protected static final long JOB_TIMEOUT = 30 * 1000;
+ protected static final long JOB_TIMEOUT = 60 * 1000;
protected void setUp() throws Exception {
super.setUp();
@@ -210,6 +210,11 @@
jobExecutor.start();
}
+ /**
+ * Waits until all jobs are processed or a specified amount of time has elapsed. Unlike
+ * {@link #processJobs(long)}, this method does not concern itself with the job executor or
+ * the jBPM context.
+ */
protected void waitForJobs(final long timeout) {
final long startTime = System.currentTimeMillis();
long previousTime = 0;
@@ -286,15 +291,25 @@
return timerCount.intValue();
}
+ /**
+ * Starts the job executor and waits until all jobs are processed or a predefined amount of
+ * time has elapsed. The current jBPM context is closed before waiting and a new one is opened
+ * after processing the jobs.
+ */
protected void processJobs() {
processJobs(JOB_TIMEOUT);
}
- protected void processJobs(long maxWait) {
+ /**
+ * Starts the job executor and waits until all jobs are processed or a specified amount of
+ * time has elapsed. The current jBPM context is closed before waiting and a new one is opened
+ * after processing the jobs.
+ */
+ protected void processJobs(long timeout) {
closeJbpmContext();
try {
startJobExecutor();
- waitForJobs(maxWait);
+ waitForJobs(timeout);
}
finally {
stopJobExecutor();
@@ -310,6 +325,9 @@
catch (InterruptedException e) {
fail("wait for job executor to stop got interrupted");
}
+ finally {
+ jobExecutor = null;
+ }
}
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -19,7 +19,7 @@
private ProcessDefinition processDefinition;
- private static final int processInstanceCount = 5;
+ private static final int INSTANCE_COUNT = 5;
protected void setUp() throws Exception {
super.setUp();
@@ -48,8 +48,8 @@
join.setParentLockMode(lockMode.toString());
deployProcessDefinition(processDefinition);
- long[] processInstanceIds = new long[processInstanceCount];
- for (int i = 0; i < processInstanceCount; i++) {
+ long[] processInstanceIds = new long[INSTANCE_COUNT];
+ for (int i = 0; i < INSTANCE_COUNT; i++) {
ProcessInstance processInstance = new ProcessInstance(processDefinition);
processInstanceIds[i] = processInstance.getId();
processInstance.getContextInstance().setVariable("eventCallback", new EventCallback());
@@ -59,7 +59,7 @@
processJobs();
- for (int i = 0; i < processInstanceCount; i++) {
+ for (int i = 0; i < INSTANCE_COUNT; i++) {
long processInstanceId = processInstanceIds[i];
assertTrue("expected process instance " + processInstanceId + " to have ended",
jbpmContext.loadProcessInstance(processInstanceId).hasEnded());
@@ -67,7 +67,7 @@
}
protected void waitForJobs(long timeout) {
- EventCallback.waitForEvent(processInstanceCount, Event.EVENTTYPE_PROCESS_END);
+ EventCallback.waitForEvent(INSTANCE_COUNT, Event.EVENTTYPE_PROCESS_END);
}
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -33,7 +33,6 @@
*/
public class JBPM2094Test extends AbstractDbTestCase {
- private static final int TIMEOUT = 60 * 1000;
private static final int INSTANCE_COUNT = 10;
protected void setUp() throws Exception {
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -16,7 +16,6 @@
*/
public class JBPM2375Test extends AbstractDbTestCase {
- private static final int TEST_TIMEOUT = 60 * 1000;
static boolean throwError;
// a process definition with two timers moving the token forward
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -34,8 +34,6 @@
*/
public class JBPM2489Test extends AbstractDbTestCase {
- private static final int TIMEOUT = 60 * 1000;
-
protected void setUp() throws Exception {
super.setUp();
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -33,7 +33,6 @@
*/
public class JBPM2787Test extends AbstractDbTestCase {
- private static final int TIMEOUT = 60 * 1000;
private static final int INSTANCE_COUNT = 10;
protected void setUp() throws Exception {
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -93,20 +93,20 @@
+ "</end-state>"
+ "</process-definition>";
- static final int PROCESS_COUNT = 10;
+ static final int INSTANCE_COUNT = 10;
public void testConcurrentJobs() throws Exception {
- long[] processInstanceIds = new long[PROCESS_COUNT];
- for (int i = 0; i < PROCESS_COUNT; i++) {
+ long[] processInstanceIds = new long[INSTANCE_COUNT];
+ for (int i = 0; i < INSTANCE_COUNT; i++) {
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
processInstance.getContextInstance().setVariable("test", "true");
processInstance.signal();
processInstanceIds[i] = processInstance.getId();
}
- processJobs(5 * 60 * 1000);
+ processJobs(5 * JOB_TIMEOUT);
- for (int i = 0; i < PROCESS_COUNT; i++) {
+ for (int i = 0; i < INSTANCE_COUNT; i++) {
long piId = processInstanceIds[i];
ProcessInstance pi = jbpmContext.loadProcessInstance(piId);
assertEquals("end-state-success", pi.getRootToken().getNode().getName());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -17,8 +17,7 @@
public class JobExecutorDbTest extends AbstractDbTestCase {
- static final int nbrOfConcurrentProcessExecutions = 20;
- static final int timeout = 5 * 60 * 1000;
+ private static final int INSTANCE_COUNT = 20;
static Set collectedResults = Collections.synchronizedSet(new TreeSet());
static List allocatedProcessIds = new Vector();
@@ -41,7 +40,7 @@
public void testJobExecutor() {
deployProcessDefinition();
startProcessInstances();
- processJobs(timeout);
+ processJobs(5 * JOB_TIMEOUT);
assertEquals(createExpectedResults(), collectedResults);
}
@@ -100,7 +99,7 @@
}
void startProcessInstances() {
- for (int i = 0; i < nbrOfConcurrentProcessExecutions; i++) {
+ for (int i = 0; i < INSTANCE_COUNT; i++) {
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("bulk messages");
processInstance.signal();
}
@@ -112,12 +111,11 @@
Set expectedResults = new TreeSet();
NumberFormat formatter = NumberFormat.getIntegerInstance();
- formatter.setMinimumIntegerDigits(Integer.toString(nbrOfConcurrentProcessExecutions)
- .length());
+ formatter.setMinimumIntegerDigits(Integer.toString(INSTANCE_COUNT).length());
StringBuffer text = new StringBuffer();
FieldPosition position = new FieldPosition(NumberFormat.INTEGER_FIELD);
- for (int e = 0; e < nbrOfConcurrentProcessExecutions; e++) {
+ for (int e = 0; e < INSTANCE_COUNT; e++) {
text.setLength(0);
formatter.format(e, text, position);
text.append('\0');
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -30,8 +30,6 @@
public class AsyncExecutionDbTest extends AbstractDbTestCase {
- private static int TIMEOUT = 60 * 1000;
-
public static class RecordNode implements ActionHandler {
private static final long serialVersionUID = 1L;
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/perf/PerformanceTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/perf/PerformanceTest.java 2010-10-01 19:00:32 UTC (rev 6723)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/perf/PerformanceTest.java 2010-10-01 22:45:35 UTC (rev 6724)
@@ -39,7 +39,6 @@
private static final int WARMUP_INSTANCES = 100;
private static final int MEASURED_INSTANCES = 1000;
- private static final long TIMEOUT = 2 * 60 * 1000;
protected void setUp() throws Exception {
super.setUp();
@@ -59,7 +58,7 @@
public void testPerformance() {
long firstTime = System.currentTimeMillis();
launchProcessInstances(WARMUP_INSTANCES);
- processJobs(TIMEOUT);
+ processJobs(2 * JOB_TIMEOUT);
long secondTime = System.currentTimeMillis();
launchProcessInstances(MEASURED_INSTANCES);
13 years, 7 months
JBoss JBPM SVN: r6723 - jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2010-10-01 15:00:32 -0400 (Fri, 01 Oct 2010)
New Revision: 6723
Modified:
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
Log:
Moved JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext() higher; otherwise, you potentially have to fetch it twice, which is just more work.
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java 2010-10-01 16:41:04 UTC (rev 6722)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java 2010-10-01 19:00:32 UTC (rev 6723)
@@ -340,10 +340,13 @@
// add the process instance end log
rootToken.addLog(new ProcessInstanceEndLog());
+
+ //Fetch this higher, rather than doing the work twice.
+ JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
+
// is this a sub-process?
if (superProcessToken != null && !superProcessToken.hasEnded()) {
// is message service available?
- JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
MessageService messageService;
if (jbpmContext != null
&& (messageService = jbpmContext.getServices().getMessageService()) != null) {
@@ -365,7 +368,7 @@
}
// cancel jobs associated to this process instance
- JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
+
// is there an active context?
if (jbpmContext != null) {
Services services = jbpmContext.getServices();
13 years, 7 months
JBoss JBPM SVN: r6722 - in jbpm4/trunk/modules: pvm/src/main/java/org/jbpm/pvm/internal/email/impl and 1 other directories.
by do-not-reply@jboss.org
Author: rebody
Date: 2010-10-01 12:41:04 -0400 (Fri, 01 Oct 2010)
New Revision: 6722
Modified:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java
Log:
JBPM-2940 throw meaningful exception when there is no valid assignee for notification.
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java 2010-10-01 09:26:04 UTC (rev 6721)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java 2010-10-01 16:41:04 UTC (rev 6722)
@@ -49,6 +49,9 @@
EnvironmentImpl environment = EnvironmentImpl.getCurrent();
DbSession dbSession = environment.get(DbSession.class);
TaskImpl task = dbSession.findTaskByExecution(execution);
+ if (task.getAssignee() == null) {
+ return;
+ }
// make task available to mail templates through task context
TaskContext taskContext = new TaskContext(task);
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java 2010-10-01 09:26:04 UTC (rev 6721)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java 2010-10-01 16:41:04 UTC (rev 6722)
@@ -145,7 +145,11 @@
}
private String[] tokenizeActors(String recipients, Execution execution) {
- String[] actors = evaluateExpression(recipients).split("[,;\\s]+");
+ String value = evaluateExpression(recipients);
+ if (value == null) {
+ throw new JbpmException("cannot find recipients [" + recipients + "] from execution [" + execution + "]");
+ }
+ String[] actors = value.split("[,;\\s]+");
if (actors.length == 0) throw new JbpmException("recipient list is empty: " + recipients);
return actors;
}
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java 2010-10-01 09:26:04 UTC (rev 6721)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java 2010-10-01 16:41:04 UTC (rev 6722)
@@ -4,22 +4,36 @@
import java.util.*;
import javax.mail.Message;
+import junit.framework.Test;
+
import org.jbpm.api.*;
import org.jbpm.api.job.*;
import org.jbpm.api.task.*;
import org.jbpm.pvm.internal.email.spi.*;
import org.jbpm.test.*;
+import org.jbpm.test.mail.MailTestSetup;
+import org.subethamail.wiser.Wiser;
+import org.subethamail.wiser.WiserMessage;
+
/**
* @author Huisheng Xu
*/
public class NotificationTest extends JbpmTestCase {
+
+ private static Wiser wiser = new Wiser();
+
+ public static Test suite() {
+ return new MailTestSetup(NotificationTest.class, wiser);
+ }
+
protected void setUp() throws Exception {
super.setUp();
identityService.createUser("johnsmith", "johnsmith", "johnsmith");
}
protected void tearDown() throws Exception {
+ wiser.getMessages().clear();
identityService.deleteUser("johnsmith");
super.tearDown();
}
@@ -72,7 +86,7 @@
public void testSupportExpr() {
deployJpdlXmlString(
- "<process name='NotificationTaskTest' xmlns='http://jbpm.org/4.3/jpdl'>"
+ "<process name='NotificationTaskTest'>"
+ " <start name='start1' g='93,78,48,48'>"
+ " <transition name='to Test Task' to='Test Task' g='1,-20'/>"
+ " </start>"
@@ -91,6 +105,31 @@
String processInstanceId = processInstance.getId();
}
+ public void testNullAssigneeNotification() {
+ deployJpdlXmlString(
+ "<process name='NullAssigneeNotification'>"
+ + " <start name='start1' g='93,78,48,48'>"
+ + " <transition name='to Test Task' to='Test Task' g='1,-20'/>"
+ + " </start>"
+ + " <end name='end1' g='315,236,48,48'/>"
+ + " <task name='Test Task' g='178,159,92,52' assignee='johnsmith'>"
+ + " <notification/>"
+ + " <transition name='to end1' to='end1' g='-6,-22'/>"
+ + " </task>"
+ + "</process>");
+
+ ProcessInstance processInstance = executionService
+ .startProcessInstanceByKey("NullAssigneeNotification");
+ String processInstanceId = processInstance.getId();
+
+ Task task = taskService.createTaskQuery().uniqueResult();
+ try {
+ taskService.assignTask(task.getId(), null);
+ } catch(JbpmException ex) {
+ assertEquals("cannot find recipients [${task.assignee}] from execution [execution[" + processInstanceId + "]]", ex.getMessage());
+ }
+ }
+
public static class JbpmCustomMailProducer implements MailProducer, Serializable {
private String templateName;
public Collection<Message> produce(Execution execution) {
13 years, 7 months
JBoss JBPM SVN: r6721 - in jbpm3/branches/jbpm-3.2-soa: core/src/main/java/org/jbpm/db and 21 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2010-10-01 05:26:04 -0400 (Fri, 01 Oct 2010)
New Revision: 6721
Removed:
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/impl/
Modified:
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/context/def/Access.java
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/node/ProcessState.java
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/CleanUpProcessJob.java
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/SignalTokenJob.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/UnsafeSessionUsageTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java
jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml
jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java
Log:
JBPM-2948 do not assume an active context is available before submitting signal token jobs;
adapt tests involving process states to job processing
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/context/def/Access.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/context/def/Access.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/context/def/Access.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -64,23 +64,31 @@
* verifies if the given accessLiteral is included in the access text.
*/
public boolean hasAccess(String accessLiteral) {
- return access == null ? false : access.indexOf(accessLiteral.toLowerCase()) != -1;
+ return access != null ? access.indexOf(accessLiteral.toLowerCase()) != -1 : false;
}
+ public boolean equals(Object object) {
+ if (object == this) return true;
+ if (!(object instanceof Access)) return false;
+
+ Access other = (Access) object;
+ return isReadable() == other.isReadable() && isWritable() == other.isWritable()
+ && isRequired() == other.isRequired() && isLock() == other.isLock();
+ }
+
+ public int hashCode() {
+ int result = 265979407 + hashCode(isReadable());
+ result = 752346139 * result + hashCode(isWritable());
+ result = 376739687 * result + hashCode(isRequired());
+ result = 750974239 * result + hashCode(isLock());
+ return result;
+ }
+
+ private static int hashCode(boolean value) {
+ return value ? 1231 : 1237;
+ }
+
public String toString() {
return access;
}
-
- public boolean equals(Object object) {
- if (object instanceof Access) {
- Access other = (Access) object;
- return isReadable() == other.isReadable()
- && isWritable() == other.isWritable()
- && isRequired() == other.isRequired()
- && isLock() == other.isLock();
- }
- else {
- return false;
- }
- }
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -61,6 +61,8 @@
private List processDefinitionIds;
+ protected static final long JOB_TIMEOUT = 30 * 1000;
+
protected void setUp() throws Exception {
super.setUp();
createJbpmContext();
@@ -209,14 +211,11 @@
}
protected void waitForJobs(final long timeout) {
- long startTime = System.currentTimeMillis();
-
- int previousCount = 0;
- long previousTime = 0L;
-
+ final long startTime = System.currentTimeMillis();
+ long previousTime = 0;
long waitPeriod = 500;
- for (int currentCount; (currentCount = getNbrOfJobsAvailable()) > 0;) {
+ for (int currentCount, previousCount = 0; (currentCount = getNbrOfJobsAvailable()) > 0;) {
long currentTime = System.currentTimeMillis();
long elapsedTime = currentTime - startTime;
@@ -242,13 +241,13 @@
}
if (log.isDebugEnabled()) {
- log.debug("waiting " + waitPeriod + " ms for " + currentCount + " jobs to execute");
+ log.debug("waiting " + waitPeriod + " ms for " + currentCount + " jobs");
}
try {
Thread.sleep(waitPeriod);
}
catch (InterruptedException e) {
- fail("wait for jobs to execute got interrupted");
+ fail("wait for jobs got interrupted");
}
previousCount = currentCount;
@@ -287,6 +286,10 @@
return timerCount.intValue();
}
+ protected void processJobs() {
+ processJobs(JOB_TIMEOUT);
+ }
+
protected void processJobs(long maxWait) {
closeJbpmContext();
try {
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -30,8 +30,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jbpm.JbpmContext;
import org.jbpm.JbpmException;
import org.jbpm.context.exe.ContextInstance;
@@ -60,8 +58,7 @@
* execution of a process definition, just use the {@link #ProcessInstance(ProcessDefinition)}.
*/
public class ProcessInstance implements Identifiable, Serializable {
-
- private static final Log log = LogFactory.getLog(ProcessInstance.class);
+
private static final long serialVersionUID = 1L;
long id;
@@ -338,54 +335,64 @@
rootToken.end();
// fire the process-end event
- ExecutionContext executionContext = new ExecutionContext(rootToken);
- processDefinition.fireEvent(Event.EVENTTYPE_PROCESS_END, executionContext);
+ processDefinition.fireEvent(Event.EVENTTYPE_PROCESS_END, new ExecutionContext(rootToken));
// add the process instance end log
rootToken.addLog(new ProcessInstanceEndLog());
- JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
- // check if this process was started as a subprocess of a super process
+ // is this a sub-process?
if (superProcessToken != null && !superProcessToken.hasEnded()) {
- Services services = jbpmContext.getServices();
- if(services.getMessageService()!=null)
- {
- if(log.isDebugEnabled())
- {
- log.debug("Scheduling signal token for parent process: "+superProcessToken);
- }
- MessageService messageService = services.getMessageService();
- SignalTokenJob job = new SignalTokenJob(superProcessToken);
- job.setExclusive(true);
- messageService.send(job);
- }
- else
- {
- addCascadeProcessInstance(superProcessToken.getProcessInstance());
- ExecutionContext superExecutionContext = new ExecutionContext(superProcessToken);
- superExecutionContext.setSubProcessInstance(this);
- superProcessToken.signal(superExecutionContext);
- }
+ // is message service available?
+ JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
+ MessageService messageService;
+ if (jbpmContext != null
+ && (messageService = jbpmContext.getServices().getMessageService()) != null) {
+ // signal super-process token asynchronously to avoid stale state exceptions
+ // due to concurrent signals to the super-process
+ // https://jira.jboss.org/browse/JBPM-2948
+ SignalTokenJob job = new SignalTokenJob(superProcessToken);
+ job.setDueDate(new Date());
+ job.setExclusive(true);
+ messageService.send(job);
+ }
+ else {
+ addCascadeProcessInstance(superProcessToken.getProcessInstance());
+ // message service unavailable, signal super-process token synchronously
+ ExecutionContext executionContext = new ExecutionContext(superProcessToken);
+ executionContext.setSubProcessInstance(this);
+ superProcessToken.signal(executionContext);
+ }
}
- // make sure jobs for this process instance are canceled
- // after the process end updates are posted to the database
+ // cancel jobs associated to this process instance
+ JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
+ // is there an active context?
if (jbpmContext != null) {
Services services = jbpmContext.getServices();
PersistenceService persistenceService = services.getPersistenceService();
+ // is persistence service available? if so, are there jobs to delete?
if (persistenceService != null
&& persistenceService.getJobSession().countDeletableJobsForProcessInstance(this) > 0) {
+ // is message service available?
MessageService messageService = services.getMessageService();
if (messageService != null) {
+ // cancel jobs asynchronously to avoid stale state exceptions due to job acquisition
+ // https://jira.jboss.org/browse/JBPM-1709
CleanUpProcessJob job = new CleanUpProcessJob(rootToken);
job.setDueDate(new Date());
messageService.send(job);
}
else {
+ // is scheduler service available?
SchedulerService schedulerService = services.getSchedulerService();
if (schedulerService != null) {
+ // give scheduler a chance to cancel timers
schedulerService.deleteTimersByProcessInstance(this);
}
+ else {
+ // just delete jobs straight from the database
+ persistenceService.getJobSession().deleteJobsForProcessInstance(this);
+ }
}
}
}
@@ -424,8 +431,7 @@
if (runtimeAction == null) {
throw new IllegalArgumentException("runtime action is null");
}
- if (runtimeActions == null)
- runtimeActions = new ArrayList();
+ if (runtimeActions == null) runtimeActions = new ArrayList();
runtimeActions.add(runtimeAction);
runtimeAction.processInstance = this;
return runtimeAction;
@@ -511,22 +517,18 @@
// equals ///////////////////////////////////////////////////////////////////
public boolean equals(Object o) {
- if (o == this)
- return true;
- if (!(o instanceof ProcessInstance))
- return false;
+ if (o == this) return true;
+ if (!(o instanceof ProcessInstance)) return false;
ProcessInstance other = (ProcessInstance) o;
- if (id != 0 && id == other.getId())
- return true;
+ if (id != 0 && id == other.getId()) return true;
return key != null && key.equals(other.getKey())
&& processDefinition.equals(other.getProcessDefinition());
}
public int hashCode() {
- if (key == null)
- return super.hashCode();
+ if (key == null) return super.hashCode();
int result = 295436291 + key.hashCode();
result = 1367411281 * result + processDefinition.hashCode();
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/node/ProcessState.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/node/ProcessState.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/graph/node/ProcessState.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -21,6 +21,7 @@
*/
package org.jbpm.graph.node;
+import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@@ -46,7 +47,6 @@
import org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator;
import org.jbpm.jpdl.xml.JpdlXmlReader;
import org.jbpm.msg.MessageService;
-import org.jbpm.svc.Services;
import org.jbpm.util.Clock;
public class ProcessState extends Node {
@@ -192,21 +192,19 @@
// send the signal to start the subprocess
JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
- Services services = jbpmContext.getServices();
- if(services.getMessageService()!=null)
- {
- if(log.isDebugEnabled())
- {
- log.debug("Scheduling signal token for subprocess: "+superProcessToken);
- }
- MessageService messageService = services.getMessageService();
- SignalTokenJob job = new SignalTokenJob(subProcessInstance.getRootToken());
- messageService.send(job);
- }
- else
- {
- subProcessInstance.signal();
- }
+ MessageService messageService;
+ if (jbpmContext != null
+ && (messageService = jbpmContext.getServices().getMessageService()) != null) {
+ // signal sub-process token asynchronously to clearly denote transactional boundaries
+ // https://jira.jboss.org/browse/JBPM-2948
+ SignalTokenJob job = new SignalTokenJob(subProcessInstance.getRootToken());
+ job.setDueDate(new Date());
+ messageService.send(job);
+ }
+ else {
+ // message service unavailable, signal sub-process synchronously
+ subProcessInstance.signal();
+ }
}
public void leave(ExecutionContext executionContext, Transition transition) {
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/CleanUpProcessJob.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/CleanUpProcessJob.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/CleanUpProcessJob.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -26,6 +26,9 @@
import org.jbpm.scheduler.SchedulerService;
/**
+ * Cancels jobs associated to a process instance.
+ *
+ * @see <a href="https://jira.jboss.org/browse/JBPM-1709">JBPM-1709</a>
* @author Alejandro Guizar
*/
public class CleanUpProcessJob extends Job {
@@ -41,10 +44,16 @@
}
public boolean execute(JbpmContext jbpmContext) throws Exception {
+ // is scheduler service available?
SchedulerService schedulerService = jbpmContext.getServices().getSchedulerService();
if (schedulerService != null) {
+ // give scheduler a chance to cancel timers
schedulerService.deleteTimersByProcessInstance(getProcessInstance());
}
+ else {
+ // just delete jobs straight from the database
+ jbpmContext.getJobSession().deleteJobsForProcessInstance(getProcessInstance());
+ }
return true;
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/SignalTokenJob.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/SignalTokenJob.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/job/SignalTokenJob.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -3,10 +3,18 @@
import org.jbpm.JbpmContext;
import org.jbpm.graph.exe.Token;
+/**
+ * Signals a token asynchronously.
+ *
+ * @see <a href="https://jira.jboss.org/browse/JBPM-2948">JBPM-2948</a>
+ * @author Brad Davis
+ */
public class SignalTokenJob extends Job {
- public SignalTokenJob() {
+ private static final long serialVersionUID = 1L;
+ public SignalTokenJob() {
+ // default constructor
}
public SignalTokenJob(Token token) {
@@ -14,9 +22,7 @@
}
public boolean execute(JbpmContext jbpmContext) throws Exception {
- Token token = getToken();
- token.unlock(toString());
- token.signal();
+ getToken().signal();
return true;
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -38,10 +38,11 @@
ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
pi.signal();
+ processJobs();
+ pi = jbpmContext.loadProcessInstance(pi.getId());
ProcessInstance subPi = pi.getRootToken().getSubProcessInstance();
assertEquals("wait", subPi.getRootToken().getNode().getName());
- pi = saveAndReload(pi);
pi.end();
pi.getTaskMgmtInstance().endAll();
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -94,15 +94,18 @@
public void testWithSubProcess() {
ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
pi.signal("with subprocess");
+ long pid = pi.getId();
+ processJobs();
+ pi = jbpmContext.loadProcessInstance(pid);
ProcessInstance subPi = pi.getRootToken().getSubProcessInstance();
assertEquals("wait", subPi.getRootToken().getNode().getName());
- newTransaction();
subPi = jbpmContext.loadProcessInstanceForUpdate(subPi.getId());
subPi.signal();
- pi = subPi.getSuperProcessToken().getProcessInstance();
+ processJobs();
+ pi = jbpmContext.loadProcessInstance(pid);
assertEquals("s", pi.getRootToken().getNode().getName());
assertEquals(new Integer(1), pi.getContextInstance().getVariable("invocationCount"));
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -59,30 +59,31 @@
+ "</process-definition>");
deployProcessDefinition(processDefinition);
- ProcessInstance superProcessInstance = jbpmContext.newProcessInstance("recursive process");
+ ProcessInstance superProcessInstance = jbpmContext.newProcessInstanceForUpdate("recursive process");
superProcessInstance.signal();
superProcessInstance.signal();
- superProcessInstance = saveAndReload(superProcessInstance);
+ processJobs();
+ superProcessInstance = jbpmContext.loadProcessInstance(superProcessInstance.getId());
Token superToken = superProcessInstance.getRootToken();
assertEquals("subprocessnode", superToken.getNode().getName());
ProcessInstance subProcessInstance = superToken.getSubProcessInstance();
- assertNotNull(subProcessInstance);
assertEquals("recursive process", subProcessInstance.getProcessDefinition().getName());
Token subToken = subProcessInstance.getRootToken();
assertEquals("first wait", subToken.getNode().getName());
subProcessInstance.signal("done");
+ jbpmContext.save(subProcessInstance);
- subProcessInstance = saveAndReload(subProcessInstance);
+ processJobs();
superProcessInstance = graphSession.loadProcessInstance(superProcessInstance.getId());
assertTrue(subProcessInstance.hasEnded());
assertTrue(superProcessInstance.hasEnded());
}
public void testMultipleRecursiveProcessDefinitions() {
- for (int i = 0; i < 30; i++) {
+ for (int i = 0; i < 10; i++) {
testRecursiveProcessDefinition();
newTransaction();
}
@@ -174,7 +175,7 @@
contextInstance.setVariable("c", "1");
processInstance.signal();
- newTransaction();
+ processJobs();
long processInstanceId = processInstance.getId();
long subProcessInstanceId = processInstance.getRootToken().getSubProcessInstance().getId();
@@ -199,7 +200,7 @@
subProcessInstance.signal();
jbpmContext.save(subProcessInstance);
- newTransaction();
+ processJobs();
assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId).hasEnded());
processInstance = jbpmContext.loadProcessInstance(processInstanceId);
@@ -253,7 +254,7 @@
ProcessInstance superProcessInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
superProcessInstance.signal();
- newTransaction();
+ processJobs();
long subProcessInstanceId = superProcessInstance.getRootToken()
.getSubProcessInstance()
.getId();
@@ -261,7 +262,7 @@
subProcessInstance.signal();
jbpmContext.save(subProcessInstance);
- newTransaction();
+ processJobs();
ProcessStateLog processStateLog = (ProcessStateLog) session.createCriteria(ProcessStateLog.class)
.addOrder(Order.desc("enter"))
.setMaxResults(1)
@@ -308,19 +309,17 @@
deployProcessDefinition(processDefinitionThree);
ProcessInstance processInstance1 = jbpmContext.newProcessInstanceForUpdate("superprocess");
- ContextInstance contextInstance = processInstance1.getContextInstance();
- contextInstance.setVariable("mySubProcess", "subprocess1");
+ processInstance1.getContextInstance().setVariable("mySubProcess", "subprocess1");
processInstance1.signal();
- newTransaction();
+ processJobs();
long processInstanceId = processInstance1.getId();
long subProcessInstanceId = processInstance1.getRootToken().getSubProcessInstance().getId();
processInstance1 = jbpmContext.loadProcessInstance(processInstanceId);
assertNotNull(processInstance1.getRootToken().getSubProcessInstance());
assertEquals("sub process state", processInstance1.getRootToken().getNode().getName());
- contextInstance = processInstance1.getContextInstance();
- assertEquals("subprocess1", contextInstance.getVariable("mySubProcess"));
+ assertEquals("subprocess1", processInstance1.getContextInstance().getVariable("mySubProcess"));
ProcessInstance subProcessInstance1 = jbpmContext.loadProcessInstance(subProcessInstanceId);
assertEquals("subprocess1", subProcessInstance1.getProcessDefinition().getName());
@@ -328,19 +327,16 @@
subProcessInstance1.signal();
jbpmContext.save(subProcessInstance1);
- newTransaction();
+ processJobs();
assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId).hasEnded());
-
processInstance1 = jbpmContext.loadProcessInstance(processInstanceId);
assertEquals("wait", processInstance1.getRootToken().getNode().getName());
- newTransaction();
ProcessInstance processInstance2 = jbpmContext.newProcessInstanceForUpdate("superprocess");
- ContextInstance contextInstance2 = processInstance2.getContextInstance();
- contextInstance2.setVariable("mySubProcess", "subprocess2");
+ processInstance2.getContextInstance().setVariable("mySubProcess", "subprocess2");
processInstance2.signal();
- newTransaction();
+ processJobs();
long processInstanceId2 = processInstance2.getId();
long subProcessInstanceId2 = processInstance2.getRootToken()
.getSubProcessInstance()
@@ -349,8 +345,7 @@
processInstance2 = jbpmContext.loadProcessInstance(processInstanceId2);
assertNotNull(processInstance2.getRootToken().getSubProcessInstance());
assertEquals("sub process state", processInstance2.getRootToken().getNode().getName());
- contextInstance2 = processInstance2.getContextInstance();
- assertEquals("subprocess2", contextInstance2.getVariable("mySubProcess"));
+ assertEquals("subprocess2", processInstance2.getContextInstance().getVariable("mySubProcess"));
ProcessInstance subProcessInstance2 = jbpmContext.loadProcessInstance(subProcessInstanceId2);
assertEquals("subprocess2", subProcessInstance2.getProcessDefinition().getName());
@@ -358,7 +353,7 @@
subProcessInstance2.signal();
jbpmContext.save(subProcessInstance2);
- newTransaction();
+ processJobs();
assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId2).hasEnded());
processInstance2 = jbpmContext.loadProcessInstance(processInstanceId2);
assertEquals("wait", processInstance2.getRootToken().getNode().getName());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -57,15 +57,7 @@
jbpmContext.save(processInstance);
}
- closeJbpmContext();
- try {
- startJobExecutor();
- EventCallback.waitForEvent(processInstanceCount, Event.EVENTTYPE_PROCESS_END);
- }
- finally {
- stopJobExecutor();
- createJbpmContext();
- }
+ processJobs();
for (int i = 0; i < processInstanceCount; i++) {
long processInstanceId = processInstanceIds[i];
@@ -74,4 +66,8 @@
}
}
+ protected void waitForJobs(long timeout) {
+ EventCallback.waitForEvent(processInstanceCount, Event.EVENTTYPE_PROCESS_END);
+ }
+
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -24,7 +24,7 @@
processInstance.signal();
jbpmContext.save(processInstance);
- processJobs(30000);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -65,7 +65,7 @@
processInstanceIds[i] = processInstance.getId();
}
- processJobs(TIMEOUT);
+ processJobs();
for (int i = 0; i < INSTANCE_COUNT; i++) {
ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceIds[i]);
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -44,7 +44,7 @@
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("multiple timers");
processInstance.signal();
- processJobs(60 * 1000);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -67,7 +67,7 @@
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2375");
processInstance.signal();
- processJobs(TEST_TIMEOUT);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assert processInstance.hasEnded() : processInstance;
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -49,7 +49,7 @@
processInstance.signal();
jbpmContext.save(processInstance);
- processJobs(TIMEOUT);
+ processJobs();
processInstance = jbpmContext.getProcessInstance(processInstance.getId());
assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -62,7 +62,7 @@
ProcessInstance processInstance = jbpmContext.newProcessInstance("jobex");
processInstance.signal();
- processJobs(60 * 1000);
+ processJobs();
processInstance = jbpmContext.getProcessInstance(processInstance.getId());
Token rootToken = processInstance.getRootToken();
List jobs = jobSession.findJobsByToken(rootToken);
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -64,7 +64,7 @@
processInstanceIds[i] = processInstance.getId();
}
- processJobs(TIMEOUT);
+ processJobs();
for (int i = 0; i < INSTANCE_COUNT; i++) {
ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceIds[i]);
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -57,7 +57,7 @@
processInstance.signal();
assertEquals("state1", processInstance.getRootToken().getNode().getName());
- processJobs(60 * 1000);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
assertEquals("timed-out-end", processInstance.getRootToken().getNode().getName());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -78,7 +78,7 @@
assertEquals("one", processInstance.getRootToken().getNode().getName());
assertEquals(1, getNbrOfJobsAvailable());
- processJobs(TIMEOUT);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertTrue(processInstance.hasEnded());
@@ -141,7 +141,7 @@
assertEquals("end", processInstance.getRootToken().getNode().getName());
assertEquals(6, getNbrOfJobsAvailable());
- processJobs(TIMEOUT);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -81,7 +81,7 @@
superContext.setVariable("b", "value b");
superInstance.signal();
- processJobs(60 * 1000);
+ processJobs();
superInstance = jbpmContext.loadProcessInstance(superInstance.getId());
assertEquals("subprocess", superInstance.getRootToken().getNode().getName());
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -2,7 +2,8 @@
import java.util.List;
-import org.hibernate.Query;
+import org.hibernate.criterion.Restrictions;
+
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
@@ -38,17 +39,17 @@
processInstance.signal();
jbpmContext.save(processInstance);
- newTransaction();
- Query query = session.createQuery("from org.jbpm.graph.exe.ProcessInstance pi "
- + "where pi.processDefinition.name = 'super'");
- List superInstances = query.list();
- assertEquals(1, superInstances.size());
- ProcessInstance superInstance = (ProcessInstance) superInstances.get(0);
+ processJobs();
+ ProcessInstance superInstance = (ProcessInstance) session.createCriteria(ProcessInstance.class)
+ .createAlias("processDefinition", "pd")
+ .add(Restrictions.eq("pd.name", "super"))
+ .uniqueResult();
assertEquals("wait", superInstance.getRootToken().getNode().getName());
- query = session.createQuery("from org.jbpm.graph.exe.ProcessInstance pi "
- + "where pi.processDefinition.name = 'sub'");
- List subInstances = query.list();
+ List subInstances = session.createCriteria(ProcessInstance.class)
+ .createAlias("processDefinition", "pd")
+ .add(Restrictions.eq("pd.name", "sub"))
+ .list();
assertEquals(2, subInstances.size());
ProcessInstance subInstance = (ProcessInstance) subInstances.get(0);
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -228,7 +228,7 @@
newTransaction();
assertEquals(1, getTimerCount());
- processJobs(20000);
+ processJobs();
assertEquals(0, getTimerCount());
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/UnsafeSessionUsageTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/UnsafeSessionUsageTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/scheduler/exe/UnsafeSessionUsageTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -28,7 +28,7 @@
processInstance.signal();
jbpmContext.save(processInstance);
- processJobs(60 * 1000);
+ processJobs();
processInstance = graphSession.loadProcessInstance(processInstance.getId());
assertEquals("a", processInstance.getRootToken().getNode().getName());
}
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -31,7 +31,7 @@
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("custom job exec");
processInstance.signal();
- processJobs(60 * 1000);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertEquals(Boolean.TRUE, processInstance.getContextInstance().getVariable("custom"));
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/test/java/org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -134,7 +134,7 @@
processInstance.signal();
jbpmContext.save(processInstance);
- processJobs(60 * 1000);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertEquals(new Integer(1), processInstance.getContextInstance().getVariable("count"));
}
@@ -161,7 +161,7 @@
processInstance.signal();
jbpmContext.save(processInstance);
- processJobs(60 * 1000);
+ processJobs();
processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
assertEquals(new Integer(1), processInstance.getContextInstance().getVariable("count"));
}
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/pom.xml 2010-10-01 09:26:04 UTC (rev 6721)
@@ -1,7 +1,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <name>jBPM3 - EJB3</name>
+ <name>jBPM3 - Enterprise JEE5</name>
<groupId>org.jbpm.jbpm3</groupId>
<artifactId>jbpm-enterprise-jee5</artifactId>
<packaging>ejb</packaging>
Modified: jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java 2010-09-30 20:15:46 UTC (rev 6720)
+++ jbpm3/branches/jbpm-3.2-soa/enterprise-jee5/src/main/java/org/jbpm/ejb/JobListenerBean.java 2010-10-01 09:26:04 UTC (rev 6721)
@@ -1,13 +1,11 @@
package org.jbpm.ejb;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
import javax.jms.JMSException;
import javax.jms.Message;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.jbpm.command.Command;
import org.jbpm.jms.ExecuteJobCommand;
@@ -28,23 +26,25 @@
*/
public class JobListenerBean extends CommandListenerBean {
- private static final DateFormat sdf = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
private static final long serialVersionUID = 1L;
private static final Log log = LogFactory.getLog(JobListenerBean.class);
@Override
protected Command extractCommand(Message message) throws JMSException {
- // checking for jobId property
+ // check for jobId property
if (message.propertyExists("jobId")) {
long jobId = message.getLongProperty("jobId");
return new ExecuteJobCommand(jobId);
}
- else if(super.extractCommand(message)!=null)
- {
- return super.extractCommand(message);
- }
else {
- log.warn("property jobId not found and command not found.");
+ // check for command object
+ Command command = super.extractCommand(message);
+ if (command != null) {
+ return command;
+ }
+ else {
+ log.warn("neither property jobId nor command found");
+ }
}
return null;
}
13 years, 7 months