[jbpm-commits] JBoss JBPM SVN: r6728 - in jbpm4/trunk/modules: jpdl/src/main/java/org/jbpm/jpdl/internal/activity and 4 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sat Oct 2 20:53:37 EDT 2010


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());
+  }
+
 }



More information about the jbpm-commits mailing list