Index: src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java =================================================================== --- src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java (revision 5711) +++ src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java (working copy) @@ -529,6 +529,20 @@ String form = XmlUtil.attribute(element, "form"); taskDefinition.setFormResourceName(form); + + String duedate = XmlUtil.attribute(element, "duedate"); + taskDefinition.setDueDateDuration(duedate); + + Integer priority = XmlUtil.attributeInteger(element, "priority", false, parse); + if (priority != null) { + taskDefinition.setPriority(priority); + } + + Element descriptionElement = XmlUtil.element(element, "description"); + if (descriptionElement!=null) { + String description = XmlUtil.getContentText(descriptionElement); + taskDefinition.setDescription(description); + } ProcessDefinitionImpl processDefinition = parse.contextStackFind(ProcessDefinitionImpl.class); if (processDefinition.getTaskDefinition(taskName)!=null) { Index: src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java =================================================================== --- src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java (revision 5711) +++ src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java (working copy) @@ -28,6 +28,7 @@ import org.jbpm.api.activity.ActivityExecution; import org.jbpm.api.task.Task; import org.jbpm.internal.log.Log; +import org.jbpm.pvm.internal.cal.BusinessCalendar; import org.jbpm.pvm.internal.env.EnvironmentImpl; import org.jbpm.pvm.internal.history.HistoryEvent; import org.jbpm.pvm.internal.history.events.TaskActivityStart; @@ -76,6 +77,12 @@ task.setPriority(taskDefinition.getPriority()); task.setFormResourceName(taskDefinition.getFormResourceName()); + // calculate the due date of the task based on the due date duration + if (taskDefinition.getDueDateDuration() != null) { + BusinessCalendar businessCalendar = EnvironmentImpl.getFromCurrent(BusinessCalendar.class); + task.setDuedate(businessCalendar.add(task.getCreateTime(), taskDefinition.getDueDateDuration())); + } + // save task so that TaskDbSession.findTaskByExecution works for assign event listeners dbSession.save(task); Index: src/test/java/org/jbpm/jpdl/parsing/TaskParsingTestCase.java =================================================================== --- src/test/java/org/jbpm/jpdl/parsing/TaskParsingTestCase.java (revision 0) +++ src/test/java/org/jbpm/jpdl/parsing/TaskParsingTestCase.java (revision 0) @@ -0,0 +1,49 @@ +package org.jbpm.jpdl.parsing; + +import org.jbpm.api.activity.ActivityBehaviour; +import org.jbpm.jpdl.internal.activity.TaskActivity; +import org.jbpm.pvm.internal.client.ClientProcessDefinition; +import org.jbpm.pvm.internal.model.Activity; +import org.jbpm.pvm.internal.model.ActivityImpl; +import org.jbpm.pvm.internal.task.TaskDefinitionImpl; + +public class TaskParsingTestCase extends JpdlParseTestCase { + + public static final String PROCESS = "" + + " " + + " " + + " " + + " " + + " This is a test description" + + " " + + " " + + " " + + ""; + + public void testTaskParse() { + + ClientProcessDefinition definition = parse(PROCESS); + + Activity activity = definition.findActivity("t1"); + assertTrue(activity instanceof ActivityImpl); + ActivityImpl activityImpl = (ActivityImpl) activity; + + ActivityBehaviour behaviour = activityImpl.getActivityBehaviour(); + assertTrue(behaviour instanceof TaskActivity); + + TaskActivity taskActivity = (TaskActivity) behaviour; + + TaskDefinitionImpl taskDefinition = taskActivity.getTaskDefinition(); + + // test definition is correct + // priority, duedate, form, description + assertEquals(3, taskDefinition.getPriority()); + assertEquals("aForm", taskDefinition.getFormResourceName()); + assertEquals("1 day", taskDefinition.getDueDateDuration()); + assertEquals("This is a test description", taskDefinition.getDescription()); + + + + } + +}