From hise-commits-return-23-apmail-incubator-hise-commits-archive=incubator.apache.org@incubator.apache.org Fri Jan 22 15:30:23 2010 Return-Path: Delivered-To: apmail-incubator-hise-commits-archive@minotaur.apache.org Received: (qmail 39067 invoked from network); 22 Jan 2010 15:30:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 22 Jan 2010 15:30:23 -0000 Received: (qmail 65425 invoked by uid 500); 22 Jan 2010 15:30:23 -0000 Delivered-To: apmail-incubator-hise-commits-archive@incubator.apache.org Received: (qmail 65411 invoked by uid 500); 22 Jan 2010 15:30:23 -0000 Mailing-List: contact hise-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hise-dev@incubator.apache.org Delivered-To: mailing list hise-commits@incubator.apache.org Received: (qmail 65401 invoked by uid 99); 22 Jan 2010 15:30:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jan 2010 15:30:23 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jan 2010 15:30:19 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id AEF5623889ED; Fri, 22 Jan 2010 15:29:57 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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... Date: Fri, 22 Jan 2010 15:29:57 -0000 To: hise-commits@incubator.apache.org From: rr@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100122152957.AEF5623889ED@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 attachments = new ArrayList(); - @OneToMany(mappedBy = "task", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - private List deadlines = new ArrayList(); +// @OneToMany(mappedBy = "task", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) +// private List deadlines = new ArrayList(); + + @OneToMany(cascade = {CascadeType.ALL}) + @JoinTable(name="DEADLINE") + private Set deadlines = new HashSet(); /** * Fault information. Set when task fail method is called. @@ -283,14 +289,22 @@ private Map presentationParameters = new HashMap(); - public List getDeadlines() { +// public List getDeadlines() { +// return deadlines; +// } +// +// public void setDeadlines(List deadlines) { +// this.deadlines = deadlines; +// } + + public Set getDeadlines() { return deadlines; } - public void setDeadlines(List deadlines) { + public void setDeadlines(Set 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 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 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 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 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(); - 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 e = new HashSet(); 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 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 evaluatePeopleAssignments() { Set result = new HashSet(); TPeopleAssignments p = task.getTaskDefinition().gettTask().getPeopleAssignments(); for (JAXBElement 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) 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) 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 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 evaluateGenericHumanRole(TGenericHumanRole role, GenericHumanRole assignmentRole) { + Set result = new HashSet(); + + 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) 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) 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:ReplyTo/* }", header).get(0); } @@ -140,4 +159,40 @@ return (Node) evaluator.evaluateExpression("{$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 @@ org.apache.hise.dao.Attachment org.apache.hise.dao.Comment - org.apache.hise.dao.Deadline org.apache.hise.dao.Fault org.apache.hise.dao.JpaBase org.apache.hise.dao.Message 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 @@ - + @@ -227,11 +228,13 @@ +