[jbpm-commits] JBoss JBPM SVN: r6204 - in jbpm4/trunk/modules: test-db/src/test/java/org/jbpm/test/activity/subprocess and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Feb 27 17:46:38 EST 2010
Author: kukeltje
Date: 2010-02-27 17:46:37 -0500 (Sat, 27 Feb 2010)
New Revision: 6204
Modified:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/subprocess/SubProcessTest.java
Log:
EL for subprocess keys JBPM-2444
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java 2010-02-27 18:48:14 UTC (rev 6203)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java 2010-02-27 22:46:37 UTC (rev 6204)
@@ -24,6 +24,9 @@
import java.util.List;
import java.util.Map;
+import javax.el.PropertyNotFoundException;
+
+import org.jbpm.api.JbpmException;
import org.jbpm.api.activity.ActivityExecution;
import org.jbpm.api.model.Activity;
import org.jbpm.pvm.internal.client.ClientProcessDefinition;
@@ -64,7 +67,22 @@
if (subProcessId!=null) {
processDefinition = repositorySession.findProcessDefinitionById(subProcessId);
} else {
- processDefinition = repositorySession.findProcessDefinitionByKey(subProcessKey);
+ String subProcessKeyEval = null;
+ try {
+ Expression subProcessKeyExpression = Expression.create(subProcessKey, Expression.LANGUAGE_UEL_VALUE);
+ subProcessKeyEval = (String) subProcessKeyExpression.evaluate(execution);
+ if (subProcessKeyEval == null) {
+ throw new JbpmException("Subprocess key '" + subProcessKey +"' resolved to null.");
+ }
+ } catch (PropertyNotFoundException e) {
+ throw new JbpmException("Subprocess key '" + subProcessKey +"' could not be resolved.");
+ }
+
+ processDefinition = repositorySession.findProcessDefinitionByKey(subProcessKeyEval);
+ if (processDefinition == null) {
+ throw new JbpmException("Subprocess '" + subProcessKeyEval + "' could not be found.");
+ }
+
}
ExecutionImpl subProcessInstance = (ExecutionImpl) processDefinition.createProcessInstance(null, execution);
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/subprocess/SubProcessTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/subprocess/SubProcessTest.java 2010-02-27 18:48:14 UTC (rev 6203)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/subprocess/SubProcessTest.java 2010-02-27 22:46:37 UTC (rev 6204)
@@ -24,6 +24,11 @@
*/
package org.jbpm.test.activity.subprocess;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.internal.compiler.ast.AssertStatement;
+import org.jbpm.api.JbpmException;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.task.Task;
import org.jbpm.test.JbpmTestCase;
@@ -85,6 +90,21 @@
" <end name='theEnd' />" +
"</process>";
+ private static final String MAIN_PROCESS_SUB_EL =
+ "<process name='mainProcess'>" +
+ " <start>" +
+ " <transition to='review' />" +
+ " </start>" +
+ " <sub-process name='review' sub-process-key='#{dynamic_subprocess}'>" +
+ " <transition name='ok' to='next step'/>" +
+ " <transition name='nok' to='update'/>" +
+ " <transition name='reject' to='close'/>" +
+ " </sub-process>" +
+ " <state name='next step'/>" +
+ " <state name='update'/>" +
+ " <end name='close'/>" +
+ "</process>";
+
public void testSubProcessOutcomeToState() {
deployJpdlXmlString(SUB_PROCESS);
deployJpdlXmlString(MAIN_PROCESS);
@@ -96,6 +116,48 @@
}
+ public void testDynamicSubProcess() {
+ deployJpdlXmlString(SUB_PROCESS);
+ deployJpdlXmlString(MAIN_PROCESS_SUB_EL);
+
+ Map<String, String> vars = new HashMap<String, String>();
+ vars.put("dynamic_subprocess", "SubProcessReview");
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("mainProcess",vars);
+ Task task = taskService.findPersonalTasks("johndoe").get(0);
+ taskService.completeTask(task.getId(), "reject");
+ assertProcessInstanceEnded(processInstance);
+ }
+
+ public void testDynamicSubProcessNotFound() {
+ String expectedError = "Subprocess 'DOES_NOT_EXIST' could not be found.";
+ deployJpdlXmlString(SUB_PROCESS);
+ deployJpdlXmlString(MAIN_PROCESS_SUB_EL);
+
+ Map<String, String> vars = new HashMap<String, String>();
+ vars.put("dynamic_subprocess", "DOES_NOT_EXIST");
+ try {
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("mainProcess",vars);
+ fail("Should not happen, error expected: " + expectedError);
+ } catch (JbpmException je) {
+ assertEquals(expectedError, je.getMessage());
+ }
+ }
+
+ public void testDynamicSubProcessWrongProperty() {
+ String expectedError = "Subprocess key '#{dynamic_subprocess}' could not be resolved.";
+ deployJpdlXmlString(SUB_PROCESS);
+ deployJpdlXmlString(MAIN_PROCESS_SUB_EL);
+
+ Map<String, String> vars = new HashMap<String, String>();
+ vars.put("WRONG_PROPERTY", "VALUE_DOES_NOT_MATTER");
+ try {
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("mainProcess",vars);
+ fail("Should not happen, error expected: " + expectedError);
+ } catch (JbpmException je) {
+ assertEquals(expectedError, je.getMessage());
+ }
+ }
+
public void testSubProcessOutcomeToEnd() {
deployJpdlXmlString(SUB_PROCESS);
deployJpdlXmlString(MAIN_PROCESS);
@@ -105,8 +167,8 @@
taskService.completeTask(task.getId(), "reject");
assertProcessInstanceEnded(processInstance);
}
+
-
// Test for JBPM-2651
public void testSubProcessNoWaitStates() {
deployJpdlXmlString(SUB_PROCESS_NO_WAIT_STATE);
More information about the jbpm-commits
mailing list