You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hise-commits@incubator.apache.org by rr...@apache.org on 2010/01/22 15:29:57 UTC
svn commit: r902119 - in /incubator/hise/trunk:
hise-services/src/main/java/org/apache/hise/dao/
hise-services/src/main/java/org/apache/hise/runtime/
hise-services/src/main/resources/org/apache/hise/
hise-services/src/test/java/org/apache/hise/ hise-te...
Author: rr
Date: Fri Jan 22 15:29:56 2010
New Revision: 902119
URL: http://svn.apache.org/viewvc?rev=902119&view=rev
Log:
HISE-2: Implemented deadlines handling
Removed:
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Deadline.java
Modified:
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Job.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/ResponseHandler.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java
incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml
incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java
incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1.xml
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Job.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Job.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Job.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Job.java Fri Jan 22 15:29:56 2010
@@ -20,6 +20,8 @@
package org.apache.hise.dao;
import java.util.Date;
+import java.util.Map;
+import java.util.TreeMap;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@@ -85,6 +87,16 @@
public void setDetails(String details) {
this.details = details;
}
+
+ @Override
+ public String toString() {
+ Map m = new TreeMap();
+ m.put("id", id);
+ m.put("task", getTask().getId());
+ m.put("action", getAction());
+ m.put("details", getDetails());
+ return m.toString();
+ }
@Override
public Object[] getKeys() {
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java Fri Jan 22 15:29:56 2010
@@ -21,8 +21,10 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -265,8 +267,12 @@
@OneToMany(mappedBy = "task", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private List<Attachment> attachments = new ArrayList<Attachment>();
- @OneToMany(mappedBy = "task", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
- private List<Deadline> deadlines = new ArrayList<Deadline>();
+// @OneToMany(mappedBy = "task", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
+// private List<Deadline> deadlines = new ArrayList<Deadline>();
+
+ @OneToMany(cascade = {CascadeType.ALL})
+ @JoinTable(name="DEADLINE")
+ private Set<Job> deadlines = new HashSet<Job>();
/**
* Fault information. Set when task fail method is called.
@@ -283,14 +289,22 @@
private Map<String, PresentationParameter> presentationParameters = new HashMap<String, PresentationParameter>();
- public List<Deadline> getDeadlines() {
+// public List<Deadline> getDeadlines() {
+// return deadlines;
+// }
+//
+// public void setDeadlines(List<Deadline> deadlines) {
+// this.deadlines = deadlines;
+// }
+
+ public Set<Job> getDeadlines() {
return deadlines;
}
- public void setDeadlines(List<Deadline> deadlines) {
+ public void setDeadlines(Set<Job> deadlines) {
this.deadlines = deadlines;
}
-
+
public String getTaskDefinitionKey() {
return taskDefinitionKey;
}
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java Fri Jan 22 15:29:56 2010
@@ -19,20 +19,35 @@
package org.apache.hise.runtime;
+import java.util.Date;
import java.util.List;
+import java.util.Set;
+import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hise.dao.GenericHumanRole;
+import org.apache.hise.dao.Job;
+import org.apache.hise.dao.TaskOrgEntity;
import org.apache.hise.dao.Task.Status;
import org.apache.hise.lang.xsd.htd.TDeadline;
import org.apache.hise.lang.xsd.htd.TDeadlines;
-import org.apache.hise.lang.xsd.htd.TExpression;
+import org.apache.hise.lang.xsd.htd.TEscalation;
+import org.apache.hise.runtime.TaskEvaluator.EscalationResult;
public class DeadlineController implements TaskStateListener {
- private Log __log = LogFactory.getLog(DeadlineController.class);
+ private static Log __log = LogFactory.getLog(DeadlineController.class);
+
+ private Task task;
+
+
+ public DeadlineController(Task task) {
+ super();
+ this.task = task;
+ }
- public void stateChanged(Task task, Status oldStatus, Status newStatus) {
+ public void stateChanged(Status oldStatus, Status newStatus) {
__log.debug(task + " " + oldStatus + " " + newStatus);
TDeadlines deadlines = task.getTaskDefinition().gettTask().getDeadlines();
@@ -40,22 +55,56 @@
deadlines = new TDeadlines();
}
- if (newStatus.equals(Status.CREATED)) {
- //compute start deadlines
- computeDeadlines(task, deadlines.getStartDeadline(), false);
- } else if (newStatus.equals(Status.IN_PROGRESS)) {
- //delete start deadlines
- //compute completion deadlines
- } else if (newStatus.equals(Status.COMPLETED)) {
- //delete completion deadlines
+ if (newStatus == Status.CREATED) {
+ computeDeadlines(deadlines.getStartDeadline(), false);
+ } else if (newStatus == Status.IN_PROGRESS) {
+ deleteDeadlines();
+ computeDeadlines(deadlines.getCompletionDeadline(), true);
+ } else if (newStatus == Status.COMPLETED || newStatus == Status.FAILED) {
+ deleteDeadlines();
}
}
- private void computeDeadlines(Task task, List<TDeadline> deadlines, boolean isCompletion) {
+ private void deleteDeadlines() {
+ __log.debug("clearing deadlines " + task.getTaskDto().getDeadlines());
+ while (!task.getTaskDto().getDeadlines().isEmpty()) {
+ Job j = task.getTaskDto().getDeadlines().iterator().next();
+ task.getTaskDto().getDeadlines().remove(j);
+ task.getHiseEngine().getHiseDao().remove(j);
+ }
+ }
+
+ private void computeDeadlines(List<TDeadline> deadlines, boolean isCompletion) {
for (TDeadline deadline : deadlines) {
- TExpression expr = deadline.getFor();
- Object v = task.getTaskEvaluator().evaluateExpression(expr);
- __log.debug("deadline " + v);
+ Date fire = task.getTaskEvaluator().evaluateDeadline(deadline);
+ __log.debug("deadline fire date " + fire);
+
+ for (TEscalation escalation : deadline.getEscalation()) {
+ Job job = new Job();
+ job.setAction("deadline");
+ job.setTask(task.getTaskDto());
+ job.setFire(fire);
+ job.setDetails(TaskEvaluator.getEscalationKey(escalation, isCompletion));
+
+ __log.debug("registering deadline " + job);
+ task.getTaskDto().getDeadlines().add(job);
+ }
+ }
+ }
+
+ public void deadlineCrossed(Job deadline) {
+ __log.debug("deadline crossed" + deadline);
+
+ EscalationResult e = task.getTaskEvaluator().findEscalation(deadline.getDetails());
+ if (e == null) {
+ __log.warn("Can't find escalation " + deadline.getDetails() + " in task definition " + task);
+ } else {
+ if (e.escalation.getReassignment() != null) {
+ Set<TaskOrgEntity> result = task.getTaskEvaluator().evaluateGenericHumanRole(e.escalation.getReassignment().getPotentialOwners(), GenericHumanRole.POTENTIALOWNERS);
+ task.forward(result);
+ } else {
+ throw new NotImplementedException();
+ }
}
}
}
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/ResponseHandler.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/ResponseHandler.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/ResponseHandler.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/ResponseHandler.java Fri Jan 22 15:29:56 2010
@@ -22,8 +22,14 @@
import org.apache.hise.dao.Task.Status;
public class ResponseHandler implements TaskStateListener {
+ private Task task;
- public void stateChanged(Task task, Status oldStatus, Status newStatus) {
+ public ResponseHandler(Task task) {
+ super();
+ this.task = task;
+ }
+
+ public void stateChanged(Status oldStatus, Status newStatus) {
boolean result = false;
if (newStatus.equals(Status.COMPLETED)) {
result = true;
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java Fri Jan 22 15:29:56 2010
@@ -23,8 +23,10 @@
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.persistence.EntityManager;
import javax.xml.namespace.QName;
@@ -84,10 +86,12 @@
private List<TaskStateListener> taskStateListeners;
private Job currentJob;
-// private Date currentEventDateTime = Calendar.getInstance().getTime();
+ private Date currentEventDateTime = Calendar.getInstance().getTime();
private String currentUser;
+ private DeadlineController deadlineController;
+
protected Task() {}
public Job getCurrentJob() {
@@ -97,6 +101,14 @@
public void setCurrentJob(Job currentJob) {
this.currentJob = currentJob;
}
+
+ public Date getCurrentEventDateTime() {
+ return currentEventDateTime;
+ }
+
+ public void setCurrentEventDateTime(Date currentEventDateTime) {
+ this.currentEventDateTime = currentEventDateTime;
+ }
public String getCurrentUser() {
return currentUser;
@@ -106,13 +118,18 @@
this.currentUser = currentUser;
}
+ public HISEEngine getHiseEngine() {
+ return hiseEngine;
+ }
+
private Task(HISEEngine engine) {
this.hiseEngine = engine;
Validate.notNull(hiseEngine);
taskStateListeners = new ArrayList<TaskStateListener>();
- taskStateListeners.add(new TaskLifecycle());
- taskStateListeners.add(new DeadlineController());
+ taskStateListeners.add(new TaskLifecycle(this));
+ deadlineController = new DeadlineController(this);
+ taskStateListeners.add(deadlineController);
taskEvaluator = new TaskEvaluator(this);
}
@@ -367,7 +384,7 @@
public void setStatus(Status newStatus) {
for (TaskStateListener l : taskStateListeners) {
- l.stateChanged(this, taskDto.getStatus(), newStatus);
+ l.stateChanged(taskDto.getStatus(), newStatus);
}
taskDto.setStatus(newStatus);
}
@@ -535,6 +552,13 @@
taskDto.setSuspendUntil(null);
resume();
}
+
+ public void deadlineJobAction() {
+ taskDto.getDeadlines().remove(getCurrentJob());
+ deadlineController.deadlineCrossed(getCurrentJob());
+ }
+
+
public void resume() {
setStatus(taskDto.getStatusBeforeSuspend());
@@ -567,13 +591,7 @@
}
public void forward(TOrganizationalEntity target) {
- releaseOwner();
-
- for (TaskOrgEntity x : taskDto.getPeopleAssignments()) {
- x.setTask(null);
- hiseEngine.getHiseDao().remove(x);
- }
- taskDto.getPeopleAssignments().clear();
+ Set<TaskOrgEntity> e = new HashSet<TaskOrgEntity>();
for (String user : XmlUtils.notNull(target.getUsers(), new TUserlist()).getUser()) {
TaskOrgEntity x = new TaskOrgEntity();
@@ -581,7 +599,7 @@
x.setName(user);
x.setType(OrgEntityType.USER);
x.setTask(taskDto);
- taskDto.getPeopleAssignments().add(x);
+ e.add(x);
}
for (String group : XmlUtils.notNull(target.getGroups(), new TGrouplist()).getGroup()) {
@@ -590,11 +608,26 @@
x.setName(group);
x.setType(OrgEntityType.GROUP);
x.setTask(taskDto);
- taskDto.getPeopleAssignments().add(x);
+ e.add(x);
+ }
+
+ forward(e);
+ }
+
+ public void forward(Set<TaskOrgEntity> targets) {
+ __log.debug("forwarding to " + targets);
+ releaseOwner();
+
+ for (TaskOrgEntity x : taskDto.getPeopleAssignments()) {
+ x.setTask(null);
+ hiseEngine.getHiseDao().remove(x);
}
+ taskDto.getPeopleAssignments().clear();
+ taskDto.getPeopleAssignments().addAll(targets);
tryNominateOwner();
}
+
//
// /**
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java Fri Jan 22 15:29:56 2010
@@ -19,6 +19,7 @@
package org.apache.hise.runtime;
+import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -26,11 +27,17 @@
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
+import net.sf.saxon.value.DurationValue;
+
+import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hise.dao.GenericHumanRole;
import org.apache.hise.dao.TaskOrgEntity;
import org.apache.hise.dao.TaskOrgEntity.OrgEntityType;
+import org.apache.hise.lang.xsd.htd.TDeadline;
+import org.apache.hise.lang.xsd.htd.TDeadlines;
+import org.apache.hise.lang.xsd.htd.TEscalation;
import org.apache.hise.lang.xsd.htd.TExpression;
import org.apache.hise.lang.xsd.htd.TFrom;
import org.apache.hise.lang.xsd.htd.TGenericHumanRole;
@@ -67,6 +74,7 @@
evaluator.setContextObject(this);
evaluator.declareJavaClass("http://www.example.org/WS-HT", HtdFunctions.class);
evaluator.bindVariable(QName.valueOf("taskId"), task.getTaskDto().getId());
+ evaluator.bindVariable(QName.valueOf("currentEventDateTime"), task.getCurrentEventDateTime());
return evaluator;
}
@@ -74,41 +82,22 @@
return Integer.parseInt("" + evaluateExpression(task.getTaskDefinition().gettTask().getPriority()));
}
- public List evaluateExpression(TExpression expr) {
+ private List evaluateExpression(TExpression expr) {
return buildQueryEvaluator().evaluateExpression(XmlUtils.getStringContent(expr.getContent()), null);
}
+ public Date evaluateDeadline(TDeadline deadline) {
+ return (Date) buildQueryEvaluator().evaluateExpression("$currentEventDateTime + xs:dayTimeDuration(" + XmlUtils.getStringContent(deadline.getFor().getContent()) + ")", null).get(0);
+ }
+
public Set<TaskOrgEntity> evaluatePeopleAssignments() {
Set<TaskOrgEntity> result = new HashSet<TaskOrgEntity>();
TPeopleAssignments p = task.getTaskDefinition().gettTask().getPeopleAssignments();
for (JAXBElement<TGenericHumanRole> r : p.getGenericHumanRole()) {
GenericHumanRole assignmentRole = GenericHumanRole.valueOf(r.getName().getLocalPart().toUpperCase());
- TGenericHumanRole role = r.getValue();
- TFrom f = role.getFrom();
- if (f.getLogicalPeopleGroup() != null) {
- // TODO
- } else {
- Element e = DOMUtils.findElement(QName.valueOf("{http://www.example.org/WS-HT}literal"), f.getContent());
- if (e != null) {
- for (String user : (List<String>) buildQueryEvaluator().evaluateExpression("declare namespace htd='http://www.example.org/WS-HT'; for $i in htd:literal/htd:organizationalEntity/htd:users/htd:user return string($i)", e)) {
- TaskOrgEntity x = new TaskOrgEntity();
- x.setGenericHumanRole(assignmentRole);
- x.setName(user);
- x.setType(OrgEntityType.USER);
- x.setTask(task.getTaskDto());
- result.add(x);
- }
- for (String group : (List<String>) buildQueryEvaluator().evaluateExpression("declare namespace htd='http://www.example.org/WS-HT'; for $i in htd:literal/htd:organizationalEntity/htd:groups/htd:group return string($i)", e)) {
- TaskOrgEntity x = new TaskOrgEntity();
- x.setGenericHumanRole(assignmentRole);
- x.setName(group);
- x.setType(OrgEntityType.GROUP);
- x.setTask(task.getTaskDto());
- result.add(x);
- }
- }
- }
+ Set<TaskOrgEntity> result2 = evaluateGenericHumanRole(r.getValue(), assignmentRole);
+ result.addAll(result2);
}
if (__log.isDebugEnabled()) {
__log.debug("evaluated people assignments " + task.getTaskDefinition().getTaskName() + " " + result);
@@ -116,6 +105,36 @@
return result;
}
+ public Set<TaskOrgEntity> evaluateGenericHumanRole(TGenericHumanRole role, GenericHumanRole assignmentRole) {
+ Set<TaskOrgEntity> result = new HashSet<TaskOrgEntity>();
+
+ TFrom f = role.getFrom();
+ if (f.getLogicalPeopleGroup() != null) {
+ throw new NotImplementedException();
+ } else {
+ Element e = DOMUtils.findElement(QName.valueOf("{http://www.example.org/WS-HT}literal"), f.getContent());
+ if (e != null) {
+ for (String user : (List<String>) buildQueryEvaluator().evaluateExpression("declare namespace htd='http://www.example.org/WS-HT'; for $i in htd:literal/htd:organizationalEntity/htd:users/htd:user return string($i)", e)) {
+ TaskOrgEntity x = new TaskOrgEntity();
+ x.setGenericHumanRole(assignmentRole);
+ x.setName(user);
+ x.setType(OrgEntityType.USER);
+ x.setTask(task.getTaskDto());
+ result.add(x);
+ }
+ for (String group : (List<String>) buildQueryEvaluator().evaluateExpression("declare namespace htd='http://www.example.org/WS-HT'; for $i in htd:literal/htd:organizationalEntity/htd:groups/htd:group return string($i)", e)) {
+ TaskOrgEntity x = new TaskOrgEntity();
+ x.setGenericHumanRole(assignmentRole);
+ x.setName(group);
+ x.setType(OrgEntityType.GROUP);
+ x.setTask(task.getTaskDto());
+ result.add(x);
+ }
+ }
+ }
+ return result;
+ }
+
public Node createEprFromHeader(Node header) {
return (Node) buildQueryEvaluator().evaluateExpression("<wsa:EndpointReference xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">{ */wsa:ReplyTo/* }</wsa:EndpointReference>", header).get(0);
}
@@ -140,4 +159,40 @@
return (Node) evaluator.evaluateExpression("<htd:taskId xmlns:htd=\"xmlns:htd=http://www.example.org/WS-HT\">{$taskId}</htd:taskId>", null).get(0);
}
+
+ public static String getEscalationKey(TEscalation e, boolean isCompletion) {
+ return e.getName() + ";" + (isCompletion ? "COMPLETION" : "START");
+ }
+
+ public static class EscalationResult {
+ public final TEscalation escalation;
+ public final boolean isCompletion;
+ public EscalationResult(TEscalation escalation, boolean isCompletion) {
+ super();
+ this.escalation = escalation;
+ this.isCompletion = isCompletion;
+ }
+ }
+
+ public EscalationResult findEscalation(String name) {
+ EscalationResult r = null;
+ TDeadlines d = task.getTaskDefinition().gettTask().getDeadlines();
+ for (TDeadline u : d.getStartDeadline()) {
+ for (TEscalation e : u.getEscalation()) {
+ if (getEscalationKey(e, false).equals(name)) {
+ return new EscalationResult(e, false);
+ }
+ }
+ }
+
+ for (TDeadline u : d.getCompletionDeadline()) {
+ for (TEscalation e : u.getEscalation()) {
+ if (getEscalationKey(e, true).equals(name)) {
+ return new EscalationResult(e, true);
+ }
+ }
+ }
+
+ return null;
+ }
}
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java Fri Jan 22 15:29:56 2010
@@ -26,9 +26,16 @@
public class TaskLifecycle implements TaskStateListener {
- private Log __log = LogFactory.getLog(TaskLifecycle.class);
+ private static Log __log = LogFactory.getLog(TaskLifecycle.class);
- public void stateChanged(Task task, Status oldStatus, Status newStatus) {
+ private Task task;
+
+ public TaskLifecycle(Task task) {
+ super();
+ this.task = task;
+ }
+
+ public void stateChanged(Status oldStatus, Status newStatus) {
boolean isOk = false;
// check if change is valid for current state
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java Fri Jan 22 15:29:56 2010
@@ -20,5 +20,5 @@
package org.apache.hise.runtime;
public interface TaskStateListener {
- void stateChanged(Task task, org.apache.hise.dao.Task.Status oldStatus, org.apache.hise.dao.Task.Status newStatus);
+ void stateChanged(org.apache.hise.dao.Task.Status oldStatus, org.apache.hise.dao.Task.Status newStatus);
}
Modified: incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml (original)
+++ incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml Fri Jan 22 15:29:56 2010
@@ -21,7 +21,6 @@
<persistence-unit name="org.apache.hise">
<class>org.apache.hise.dao.Attachment</class>
<class>org.apache.hise.dao.Comment</class>
- <class>org.apache.hise.dao.Deadline</class>
<class>org.apache.hise.dao.Fault</class>
<class>org.apache.hise.dao.JpaBase</class>
<class>org.apache.hise.dao.Message</class>
Modified: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java (original)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java Fri Jan 22 15:29:56 2010
@@ -1,5 +1,6 @@
package org.apache.hise;
+import java.util.Date;
import java.util.List;
import javax.xml.namespace.QName;
@@ -9,6 +10,8 @@
import net.sf.saxon.dom.NodeOverNodeInfo;
import net.sf.saxon.om.NodeInfo;
+import org.apache.hise.lang.xsd.htd.TDeadline;
+import org.apache.hise.lang.xsd.htd.TDurationExpr;
import org.apache.hise.runtime.Task;
import org.apache.hise.runtime.TaskEvaluator;
import org.apache.hise.utils.DOMUtils;
@@ -17,6 +20,17 @@
import org.w3c.dom.Node;
public class TaskEvaluatorTest {
+
+ private TaskEvaluator buildTaskEvaluator() {
+ Task t = new MockTask();
+ t.setCurrentEventDateTime(new Date(1234L));
+ org.apache.hise.dao.Task t2 = new org.apache.hise.dao.Task();
+ t2.setId(1234L);
+ t.setTaskDto(t2);
+
+ return new TaskEvaluator(t);
+ }
+
@Test
public void testEval() throws Exception {
XQueryEvaluator e = new XQueryEvaluator();
@@ -48,14 +62,22 @@
@Test
public void testEvaluateApproveResponseHeader() throws Exception {
- Task t = new MockTask();
- org.apache.hise.dao.Task t2 = new org.apache.hise.dao.Task();
- t2.setId(1234L);
- t.setTaskDto(t2);
-
- TaskEvaluator te = new TaskEvaluator(t);
+ TaskEvaluator te = buildTaskEvaluator();
Node n = te.evaluateApproveResponseHeader();
Assert.assertTrue(DOMUtils.domToString(n).contains(">1234<"));
}
+
+ @Test
+ public void testDeadline() throws Exception {
+ TaskEvaluator e = buildTaskEvaluator();
+
+ TDeadline deadline = new TDeadline();
+ TDurationExpr d = new TDurationExpr();
+ deadline.setFor(d);
+ d.getContent().add(new String("'PT5S'"));
+ Date r = e.evaluateDeadline(deadline);
+ Assert.assertEquals(6234L, r.getTime());
+ }
+
}
Modified: incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1.xml?rev=902119&r1=902118&r2=902119&view=diff
==============================================================================
--- incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1.xml (original)
+++ incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1.xml Fri Jan 22 15:29:56 2010
@@ -83,12 +83,13 @@
</htd:literal>
</htd:from>
</htd:businessAdministrators>
-
+<!--
<htd:businessAdministrators>
<htd:from logicalPeopleGroup="lpg1">
<htd:argument name="region"> htd:getInput("ClahimApprovalRequest")/region </htd:argument>
</htd:from>
</htd:businessAdministrators>
+ -->
<htd:taskStakeholders>
<htd:from>
@@ -227,11 +228,13 @@
</htd:from>
</htd:businessAdministrators>
+<!--
<htd:businessAdministrators>
<htd:from logicalPeopleGroup="lpg1">
<htd:argument name="region"> htd:getInput("ClahimApprovalRequest")/region </htd:argument>
</htd:from>
</htd:businessAdministrators>
+ -->
<htd:taskStakeholders>
<htd:from>