[jbpm-commits] JBoss JBPM SVN: r6358 - 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
Tue May 18 12:33:37 EDT 2010
Author: swiderski.maciej
Date: 2010-05-18 12:33:36 -0400 (Tue, 18 May 2010)
New Revision: 6358
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:
JBPM-2444: added support for EL expression for sub-process-id attribute
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-05-18 03:14:14 UTC (rev 6357)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java 2010-05-18 16:33:36 UTC (rev 6358)
@@ -65,7 +65,9 @@
ClientProcessDefinition processDefinition = null;
if (subProcessId!=null) {
- processDefinition = repositorySession.findProcessDefinitionById(subProcessId);
+ Expression subProcessKeyExpression = Expression.create(subProcessId, Expression.LANGUAGE_UEL_VALUE);
+ String subProcessIdEval = (String) subProcessKeyExpression.evaluate(execution);
+ processDefinition = repositorySession.findProcessDefinitionById(subProcessIdEval);
} else {
String subProcessKeyEval = null;
try {
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-05-18 03:14:14 UTC (rev 6357)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/subprocess/SubProcessTest.java 2010-05-18 16:33:36 UTC (rev 6358)
@@ -105,6 +105,36 @@
" <end name='close'/>" +
"</process>";
+ private static final String MAIN_PROCESS_SUB_EL_ID =
+ "<process name='mainProcess'>" +
+ " <start>" +
+ " <transition to='review' />" +
+ " </start>" +
+ " <sub-process name='review' sub-process-id='#{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>";
+
+ private static final String MAIN_PROCESS_SUB_ID =
+ "<process name='mainProcess'>" +
+ " <start>" +
+ " <transition to='review' />" +
+ " </start>" +
+ " <sub-process name='review' sub-process-id='SubProcessReview-1'>" +
+ " <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);
@@ -177,4 +207,26 @@
executionService.startProcessInstanceByKey("mainProcess");
}
+ public void testDynamicSubProcessWithId() {
+ deployJpdlXmlString(SUB_PROCESS);
+ deployJpdlXmlString(MAIN_PROCESS_SUB_EL_ID);
+
+ Map<String, String> vars = new HashMap<String, String>();
+ vars.put("dynamic_subprocess", "SubProcessReview-1");
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("mainProcess",vars);
+ Task task = taskService.findPersonalTasks("johndoe").get(0);
+ taskService.completeTask(task.getId(), "reject");
+ assertProcessInstanceEnded(processInstance);
+ }
+
+ public void testSubProcessWithId() {
+ deployJpdlXmlString(SUB_PROCESS);
+ deployJpdlXmlString(MAIN_PROCESS_SUB_ID);
+
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("mainProcess");
+ Task task = taskService.findPersonalTasks("johndoe").get(0);
+ taskService.completeTask(task.getId(), "reject");
+ assertProcessInstanceEnded(processInstance);
+ }
+
}
More information about the jbpm-commits
mailing list