[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