提交 19ee0399 编写于 作者: F frederikheremans

Merge pull request #84 from balsarori/actmaster

Relative Due Date for User Task
......@@ -16,6 +16,7 @@ import java.util.Date;
import org.activiti.engine.ActivitiException;
import org.joda.time.DateTime;
import org.joda.time.Period;
public class DueDateBusinessCalendar implements BusinessCalendar {
......@@ -24,6 +25,12 @@ public class DueDateBusinessCalendar implements BusinessCalendar {
public Date resolveDuedate(String duedate) {
try {
// check if due period was specified
if(duedate.startsWith("P")){
return DateTime.now().plus(Period.parse(duedate)).toDate();
}
return DateTime.parse(duedate).toDate();
} catch (Exception e) {
......
......@@ -22,6 +22,7 @@ import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.Deployment;
import org.joda.time.Period;
/**
......@@ -60,4 +61,22 @@ public class TaskDueDateExtensionsTest extends PluggableActivitiTestCase {
Date date = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("06-07-1986 12:10:00");
assertEquals(date, task.getDueDate());
}
@Deployment
public void testRelativeDueDateStringExtension() throws Exception {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("dateVariable", "P2DT5H40M");
// Start process-instance, passing ISO8601 duration formatted String that should be used to calculate dueDate
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("dueDateExtension", variables);
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
assertNotNull(task.getDueDate());
Period period = new Period(task.getCreateTime().getTime(), task.getDueDate().getTime());
assertEquals(period.getDays(), 2);
assertEquals(period.getHours(), 5);
assertEquals(period.getMinutes(), 40);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="taskAssigneeExample"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="dueDateExtension">
<startEvent id="theStart" />
<sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" />
<userTask id="theTask" name="my task" activiti:dueDate="${dateVariable}" />
<sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册