[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