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/26 12:14:15 UTC
svn commit: r903192 [1/2] - in /incubator/hise/trunk:
hise-services/src/main/java/org/apache/hise/engine/
hise-services/src/main/java/org/apache/hise/engine/jaxws/
hise-services/src/main/java/org/apache/hise/engine/store/
hise-services/src/main/java/or...
Author: rr
Date: Tue Jan 26 12:14:14 2010
New Revision: 903192
URL: http://svn.apache.org/viewvc?rev=903192&view=rev
Log:
HISE-19: Implemented notifications + added integration test scenario
Modified:
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngine.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.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/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/utils/DOMUtils.java
incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java
incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java
incubator/hise/trunk/hise-services/src/test/resources/testHtd1.xml
incubator/hise/trunk/hise-test-example/src/main/resources/ExampleTasks.wsdl
incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1-hise-dd.xml
incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1.xml
incubator/hise/trunk/hise-web/soapui-tests/hise-soapui-project.xml
incubator/hise/trunk/hise-web/src/test/java/org/apache/hise/SampleUsers.java
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngine.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngine.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngine.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngine.java Tue Jan 26 12:14:14 2010
@@ -129,7 +129,13 @@
QName taskName = getTaskName(portType, operation);
assert(taskName != null);
log.debug("routed " + portType + " " + operation + " -> " + taskName);
- Task t = Task.create(this, getTaskDefinition(taskName), createdBy, DOMUtils.getFirstElement(body), requestHeader);
+ TaskDefinition def = getTaskDefinition(taskName);
+ Task t;
+ if (def.isNotification()) {
+ t = Task.createNotification(this, getTaskDefinition(taskName), createdBy, DOMUtils.getFirstElement(body), requestHeader);
+ } else {
+ t = Task.create(this, getTaskDefinition(taskName), createdBy, DOMUtils.getFirstElement(body), requestHeader);
+ }
return t.getTaskEvaluator().evaluateApproveResponseHeader();
}
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java Tue Jan 26 12:14:14 2010
@@ -100,7 +100,9 @@
SOAPMessage m = messageFactory.createMessage();
Document doc = m.getSOAPHeader().getOwnerDocument();
- m.getSOAPHeader().appendChild(doc.importNode(approveResponseHeader, true));
+ if (approveResponseHeader != null) {
+ m.getSOAPHeader().appendChild(doc.importNode(approveResponseHeader, true));
+ }
return m;
} catch (Exception e) {
throw new RuntimeException("Error during receiving message ", e);
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java Tue Jan 26 12:14:14 2010
@@ -380,8 +380,8 @@
}
public void remove(String identifier) throws IllegalAccessFault, IllegalArgumentFault {
- // TODO Auto-generated method stub
-
+ Task t = Task.load(hiseEngine, Long.parseLong(identifier));
+ t.remove();
}
public void resume(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java Tue Jan 26 12:14:14 2010
@@ -42,7 +42,7 @@
TaskInfo ti = new HISEEngine.TaskInfo();
ti.dd = t;
ti.parent = di;
- ti.taskKey = HISEEngine.tasksKey(d.getInterface().getPortType(), d.getInterface().getOperation());
+ ti.taskKey = HISEEngine.tasksKey(d.getTaskInterface().getPortType(), d.getTaskInterface().getOperation());
ti.taskDefinition = d;
hiseEngine.registerTask(ti);
}
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java Tue Jan 26 12:14:14 2010
@@ -35,7 +35,9 @@
import org.apache.hise.lang.TaskDefinition;
import org.apache.hise.lang.xsd.htd.TGenericHumanRole;
import org.apache.hise.lang.xsd.htd.THumanInteractions;
+import org.apache.hise.lang.xsd.htd.TNotification;
import org.apache.hise.lang.xsd.htd.TTask;
+import org.apache.hise.lang.xsd.htd.TTaskInterface;
import org.apache.hise.utils.DOMUtils;
import org.springframework.core.io.Resource;
import org.w3c.dom.Document;
@@ -76,26 +78,38 @@
HumanInteractions humanInteractions = new HumanInteractions();
- for (TTask tTask : hiDoc.getTasks().getTask()) {
- TaskDefinition taskDefinition = new TaskDefinition(tTask, this.xmlNamespaces, hiDoc.getTargetNamespace());
- compileTaskDef(taskDefinition);
-
- QName name = taskDefinition.getTaskName();
- if (humanInteractions.getTaskDefinitions().containsKey(name)) {
- throw new RuntimeException("Duplicate task found, name: " + name + " resource: " + resource);
+ if (hiDoc.getTasks() != null) {
+ for (TTask tTask : hiDoc.getTasks().getTask()) {
+ TaskDefinition taskDefinition = new TaskDefinition(tTask, this.xmlNamespaces, hiDoc.getTargetNamespace());
+ taskDefinition.setTaskInterface(tTask.getInterface());
+
+ QName name = taskDefinition.getTaskName();
+ if (humanInteractions.getTaskDefinitions().containsKey(name)) {
+ throw new RuntimeException("Duplicate task found, name: " + name + " resource: " + resource);
+ }
+ humanInteractions.getTaskDefinitions().put(name, taskDefinition);
+ }
+ }
+
+ if (hiDoc.getNotifications() != null) {
+ for (TNotification tnote : hiDoc.getNotifications().getNotification()) {
+ TaskDefinition taskDefinition = new TaskDefinition(tnote, this.xmlNamespaces, hiDoc.getTargetNamespace());
+ TTaskInterface x = new TTaskInterface();
+ x.setOperation(tnote.getInterface().getOperation());
+ x.setPortType(tnote.getInterface().getPortType());
+ taskDefinition.setTaskInterface(x);
+
+ QName name = taskDefinition.getTaskName();
+ if (humanInteractions.getTaskDefinitions().containsKey(name)) {
+ throw new RuntimeException("Duplicate task found, name: " + name + " resource: " + resource);
+ }
+ humanInteractions.getTaskDefinitions().put(name, taskDefinition);
}
- humanInteractions.getTaskDefinitions().put(name, taskDefinition);
}
return humanInteractions;
}
- void compileTaskDef(TaskDefinition t) {
- for (JAXBElement<TGenericHumanRole> e: t.gettTask().getPeopleAssignments().getGenericHumanRole()) {
- log.debug(e);
- }
- }
-
// /**
// * Creates HumanInteractions instance, passing DOM Document instance to its constructor.
// *
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java Tue Jan 26 12:14:14 2010
@@ -26,8 +26,12 @@
import org.apache.commons.lang.Validate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hise.lang.xsd.htd.TDeadlines;
import org.apache.hise.lang.xsd.htd.TFrom;
import org.apache.hise.lang.xsd.htd.TLiteral;
+import org.apache.hise.lang.xsd.htd.TNotification;
+import org.apache.hise.lang.xsd.htd.TPeopleAssignments;
+import org.apache.hise.lang.xsd.htd.TPriority;
import org.apache.hise.lang.xsd.htd.TTask;
import org.apache.hise.lang.xsd.htd.TTaskInterface;
import org.apache.hise.utils.DOMUtils;
@@ -49,7 +53,11 @@
private final TTask tTask;
- private String targetNamespace;
+ private final TNotification tNote;
+
+ private String targetNamespace;
+
+ private TTaskInterface taskInterface;
/**
* XML namespaces supported in human task definitions.
@@ -64,17 +72,25 @@
Validate.notNull(taskDefinition);
+ this.tNote = null;
this.tTask = taskDefinition;
this.xmlNamespaces = xmlNamespaces;
this.targetNamespace = targetNamespace;
}
-
- public TTaskInterface getInterface() {
- return tTask.getInterface();
+ public TaskDefinition(TNotification taskDefinition, Map<String, String> xmlNamespaces, String targetNamespace) {
+
+ super();
+
+ Validate.notNull(taskDefinition);
+
+ this.tNote = taskDefinition;
+ this.tTask = null;
+ this.xmlNamespaces = xmlNamespaces;
+ this.targetNamespace = targetNamespace;
}
-
-
+
+
// /**
// * Returns description of the Task.
@@ -281,12 +297,28 @@
// return this.templateEngine.merge(subjectTemplate, presentationParameterValues).trim();
// }
+ public TTaskInterface getTaskInterface() {
+ return taskInterface;
+ }
+
+ public void setTaskInterface(TTaskInterface taskInterface) {
+ this.taskInterface = taskInterface;
+ }
+
+ private String getName() {
+ return isNotification() ? tNote.getName() : tTask.getName();
+ }
+
public QName getTaskName() {
- return DOMUtils.uniqueQName(new QName(targetNamespace, this.tTask.getName()));
+ return DOMUtils.uniqueQName(new QName(targetNamespace, getName()));
}
- public TTask gettTask() {
- return tTask;
+// public TTask gettTask() {
+// return tTask;
+// }
+
+ public TPeopleAssignments getPeopleAssignments() {
+ return isNotification() ? tNote.getPeopleAssignments() : tTask.getPeopleAssignments();
}
public String getOutcomeExpression() {
@@ -301,4 +333,17 @@
public String getNamespaceURI(String prefix) {
return this.xmlNamespaces == null ? null : this.xmlNamespaces.get(prefix);
}
+
+
+ public boolean isNotification() {
+ return tNote != null;
+ }
+
+ public TPriority getPriority() {
+ return isNotification() ? tNote.getPriority() : tTask.getPriority();
+ }
+
+ public TDeadlines getDeadlines() {
+ return tTask.getDeadlines();
+ }
}
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=903192&r1=903191&r2=903192&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 Tue Jan 26 12:14:14 2010
@@ -50,7 +50,7 @@
public void stateChanged(Status oldStatus, Status newStatus) {
__log.debug(task + " " + oldStatus + " " + newStatus);
- TDeadlines deadlines = task.getTaskDefinition().gettTask().getDeadlines();
+ TDeadlines deadlines = task.getTaskDefinition().getDeadlines();
if (deadlines == null) {
deadlines = new TDeadlines();
}
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=903192&r1=903191&r2=903192&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 Tue Jan 26 12:14:14 2010
@@ -22,24 +22,10 @@
import java.util.ArrayList;
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;
-
-import net.sf.saxon.Configuration;
-import net.sf.saxon.dom.NodeOverNodeInfo;
-import net.sf.saxon.dom.NodeWrapper;
-import net.sf.saxon.om.NodeInfo;
-import net.sf.saxon.query.DynamicQueryContext;
-import net.sf.saxon.query.StaticQueryContext;
-import net.sf.saxon.query.XQueryExpression;
-import net.sf.saxon.trans.XPathException;
-
import org.apache.commons.lang.Validate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -47,21 +33,16 @@
import org.apache.hise.dao.HISEDao;
import org.apache.hise.dao.Job;
import org.apache.hise.dao.Message;
-import org.apache.hise.dao.OrgEntity;
-import org.apache.hise.dao.PresentationParameter;
import org.apache.hise.dao.TaskOrgEntity;
import org.apache.hise.dao.Task.Status;
import org.apache.hise.dao.TaskOrgEntity.OrgEntityType;
import org.apache.hise.engine.HISEEngine;
-import org.apache.hise.engine.HISEScheduler;
import org.apache.hise.lang.TaskDefinition;
-import org.apache.hise.lang.xsd.htd.TExpression;
import org.apache.hise.lang.xsd.htd.TGrouplist;
import org.apache.hise.lang.xsd.htd.TOrganizationalEntity;
import org.apache.hise.lang.xsd.htd.TUserlist;
import org.apache.hise.utils.DOMUtils;
import org.apache.hise.utils.XmlUtils;
-import org.w3c.dom.Document;
import org.w3c.dom.Node;
/**
@@ -122,14 +103,16 @@
return hiseEngine;
}
- private Task(HISEEngine engine) {
+ private Task(HISEEngine engine, boolean notification) {
this.hiseEngine = engine;
Validate.notNull(hiseEngine);
taskStateListeners = new ArrayList<TaskStateListener>();
- taskStateListeners.add(new TaskLifecycle(this));
- deadlineController = new DeadlineController(this);
- taskStateListeners.add(deadlineController);
+ if (!notification) {
+ taskStateListeners.add(new TaskLifecycle(this));
+ deadlineController = new DeadlineController(this);
+ taskStateListeners.add(deadlineController);
+ }
taskEvaluator = new TaskEvaluator(this);
}
@@ -151,10 +134,10 @@
}
public static Task load(HISEEngine engine, Long id) {
- Task t = new Task(engine);
HISEDao dao = engine.getHiseDao();
- t.taskDto = dao.find(org.apache.hise.dao.Task.class, id);
- // t.setTaskDto(em.find(Task.class, , arg1)engine.taskDao.fetch(id));
+ org.apache.hise.dao.Task dto = dao.find(org.apache.hise.dao.Task.class, id);
+ Task t = new Task(engine, dto.isNotification());
+ t.taskDto = dto;
t.taskDefinition = engine.getTaskDefinition(t.taskDto.getTaskDefinitionName());
return t;
}
@@ -180,8 +163,9 @@
}
public static Task create(HISEEngine engine, TaskDefinition taskDefinition, String createdBy, Node requestXml, Node requestHeader) {
- Task t = new Task(engine);
+ Task t = new Task(engine, false);
Validate.notNull(taskDefinition);
+ Validate.isTrue(!taskDefinition.isNotification());
t.taskDefinition = taskDefinition;
org.apache.hise.dao.Task u = new org.apache.hise.dao.Task();
u.setTaskDefinitionKey(taskDefinition.getTaskName().toString());
@@ -247,6 +231,33 @@
//
// recalculatePriority();
}
+
+ public static Task createNotification(HISEEngine engine, TaskDefinition taskDefinition, String createdBy, Node requestXml, Node requestHeader) {
+ Task t = new Task(engine, true);
+ Validate.notNull(taskDefinition);
+ Validate.isTrue(taskDefinition.isNotification());
+ t.taskDefinition = taskDefinition;
+ org.apache.hise.dao.Task u = new org.apache.hise.dao.Task();
+ u.setTaskDefinitionKey(taskDefinition.getTaskName().toString());
+ u.setCreatedBy(createdBy);
+ u.setStatus(null);
+ u.getInput().put("request", new Message("request", DOMUtils.domToString(requestXml)));
+ u.getInput().put("requestHeader", new Message("requestHeader", DOMUtils.domToString(requestHeader)));
+ u.setCreatedOn(new Date());
+ u.setActivationTime(new Date());
+ u.setEscalated(false);
+ u.setNotification(true);
+ t.taskDto = u;
+ t.setStatus(Status.CREATED);
+
+ u.setPeopleAssignments(t.getTaskEvaluator().evaluatePeopleAssignments());
+
+ t.setStatus(Status.READY);
+ engine.getHiseDao().persist(u);
+
+ return t;
+ }
+
public void setActualOwner(String user) {
taskDto.setActualOwner(user);
@@ -1088,4 +1099,9 @@
public Date calculateWakeupTime() {
return null;
}
+
+ public void remove() {
+ Validate.isTrue(taskDto.isNotification());
+ hiseEngine.getHiseDao().remove(taskDto);
+ }
}
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=903192&r1=903191&r2=903192&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 Tue Jan 26 12:14:14 2010
@@ -79,7 +79,7 @@
}
public Integer evaluatePriority() {
- return Integer.parseInt("" + evaluateExpression(task.getTaskDefinition().gettTask().getPriority()));
+ return Integer.parseInt("" + evaluateExpression(task.getTaskDefinition().getPriority()));
}
private List evaluateExpression(TExpression expr) {
@@ -92,7 +92,7 @@
public Set<TaskOrgEntity> evaluatePeopleAssignments() {
Set<TaskOrgEntity> result = new HashSet<TaskOrgEntity>();
- TPeopleAssignments p = task.getTaskDefinition().gettTask().getPeopleAssignments();
+ TPeopleAssignments p = task.getTaskDefinition().getPeopleAssignments();
for (JAXBElement<TGenericHumanRole> r : p.getGenericHumanRole()) {
GenericHumanRole assignmentRole = GenericHumanRole.valueOf(r.getName().getLocalPart().toUpperCase());
@@ -176,7 +176,7 @@
public EscalationResult findEscalation(String name) {
EscalationResult r = null;
- TDeadlines d = task.getTaskDefinition().gettTask().getDeadlines();
+ TDeadlines d = task.getTaskDefinition().getDeadlines();
for (TDeadline u : d.getStartDeadline()) {
for (TEscalation e : u.getEscalation()) {
if (getEscalationKey(e, false).equals(name)) {
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/DOMUtils.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/DOMUtils.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/DOMUtils.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/DOMUtils.java Tue Jan 26 12:14:14 2010
@@ -172,7 +172,11 @@
return d;
}
- public static Document parse(String in) throws Exception {
- return parse(new ByteArrayInputStream(in.getBytes()));
+ public static Document parse(String in) {
+ try {
+ return parse(new ByteArrayInputStream(in.getBytes()));
+ } catch (Exception e) {
+ throw new RuntimeException("", e);
+ }
}
}
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java Tue Jan 26 12:14:14 2010
@@ -75,10 +75,16 @@
this.contextObject = contextObject;
}
- public static ValueRepresentation convertJavaToSaxon(Object obj) {
+ public ValueRepresentation convertJavaToSaxon(Object obj) {
try {
if (obj == null) obj = "";
- return JPConverter.allocate(obj.getClass(), null).convert(obj, null);
+
+ if (obj instanceof Node) {
+ NodeInfo v = new DocumentWrapper((Node) obj, "", config).getRoot();
+ return v;
+ } else {
+ return JPConverter.allocate(obj.getClass(), null).convert(obj, null);
+ }
} catch (XPathException e) {
throw new RuntimeException("", e);
}
@@ -126,6 +132,7 @@
throw new RuntimeException("Error converting result", e1);
}
}
+// o2 = JavaDOMWrapper.unwrap(o2);
value2.add(o2);
}
__log.debug("result for expression " + expr + " " + value2 + " value class " + (value2 == null ? null : value2.getClass()));
Modified: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java (original)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java Tue Jan 26 12:14:14 2010
@@ -43,7 +43,10 @@
Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Task1")));
Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Task2")));
Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Task3")));
+ Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Notify2")));
Assert.assertEquals("someOutput", hi.getTaskDefinitions().get(QName.valueOf("{http://www.insurance.example.com/claims}Task1")).getOutcomeExpression());
+ Assert.assertEquals("approve", hi.getTaskDefinitions().get(QName.valueOf("{http://www.insurance.example.com/claims}Task1")).getTaskInterface().getOperation());
+ Assert.assertEquals("notify", hi.getTaskDefinitions().get(QName.valueOf("{http://www.insurance.example.com/claims}Notify2")).getTaskInterface().getOperation());
}
@Test
Modified: incubator/hise/trunk/hise-services/src/test/resources/testHtd1.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/testHtd1.xml?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/testHtd1.xml (original)
+++ incubator/hise/trunk/hise-services/src/test/resources/testHtd1.xml Tue Jan 26 12:14:14 2010
@@ -362,5 +362,29 @@
</htd:completionDeadline>
</htd:deadlines>
</htd:task>
- </htd:tasks>
+ </htd:tasks>
+
+ <htd:notifications>
+ <htd:notification name="Notify2">
+ <htd:interface portType="tns:ClaimApprovalReminderPT" operation="notify"></htd:interface>
+ <htd:peopleAssignments>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user5</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+ </htd:peopleAssignments>
+ <htd:presentationElements>
+ <htd:name>Notify2Name</htd:name>
+ <htd:subject>Name2Subject</htd:subject>
+ </htd:presentationElements>
+ </htd:notification>
+ </htd:notifications>
+
</htd:humanInteractions>
Modified: incubator/hise/trunk/hise-test-example/src/main/resources/ExampleTasks.wsdl
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example/src/main/resources/ExampleTasks.wsdl?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-test-example/src/main/resources/ExampleTasks.wsdl (original)
+++ incubator/hise/trunk/hise-test-example/src/main/resources/ExampleTasks.wsdl Tue Jan 26 12:14:14 2010
@@ -72,14 +72,12 @@
<wsdl:output message="tns:ClaimResolveResponse" />
</wsdl:operation>
</wsdl:portType>
- <!--
<wsdl:portType name="ClaimApprovalReminderPT">
<wsdl:operation name="notify">
<wsdl:input message="tns:notifyRequest" />
<wsdl:output message="tns:notifyResponse" />
</wsdl:operation>
</wsdl:portType>
- -->
<wsdl:binding name="ClaimsHandlingBinding" type="tns:ClaimsHandlingPT">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
@@ -125,4 +123,22 @@
<soap:address location="http://localhost:9999"/> <!--some non existing destination, since it has to be initialized from callback EPR -->
</wsdl:port>
</wsdl:service>
+
+ <wsdl:binding name="ClaimApprovalReminderBinding" type="tns:ClaimApprovalReminderPT">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="notify">
+ <soap:operation/>
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://www.insurance.example.com/claims" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://www.insurance.example.com/claims" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="ClaimApprovalReminderService">
+ <wsdl:port name="ClaimApprovalReminderPort" binding="tns:ClaimApprovalReminderBinding">
+ <soap:address location="http://localhost:8090"/> <!--some non existing destination, since it has to be initialized from callback EPR -->
+ </wsdl:port>
+ </wsdl:service>
</wsdl:definitions>
Modified: incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1-hise-dd.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1-hise-dd.xml?rev=903192&r1=903191&r2=903192&view=diff
==============================================================================
--- incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1-hise-dd.xml (original)
+++ incubator/hise/trunk/hise-test-example/src/main/resources/testHtd1-hise-dd.xml Tue Jan 26 12:14:14 2010
@@ -23,6 +23,15 @@
<property name="handler" ref="hiseJaxWSService1"/>
<property name="sender" ref="hiseJaxWSSender1"/>
</bean>
+
+ <bean class="org.apache.hise.engine.store.TaskDD">
+ <property name="taskName">
+ <bean class="javax.xml.namespace.QName" factory-method="valueOf">
+ <constructor-arg type="java.lang.String" value="{http://www.insurance.example.com/claims}Notify2"></constructor-arg>
+ </bean>
+ </property>
+ <property name="handler" ref="hiseJaxWSService1"/>
+ </bean>
</list>
</property>
</bean>
@@ -67,5 +76,7 @@
<!--
<jaxws:client id="testHtd1Sender" address="http://localhost:9999" wsdlLocation="classpath:ExampleTasks.wsdl"/>
-->
+ <jaxws:endpoint id="testHtd2" address="/ClaimApprovalReminderService/" implementor="#hiseJaxWSService1" serviceName="ins:ClaimApprovalReminderService" endpointName="ins:ClaimApprovalReminderPort" publish="true" wsdlLocation="classpath:ExampleTasks.wsdl"/>
+
</beans>
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=903192&r1=903191&r2=903192&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 Tue Jan 26 12:14:14 2010
@@ -336,7 +336,7 @@
<htd:deadlines>
<htd:startDeadline>
<htd:for>PT5S</htd:for>
- <htd:escalation name="reassignTask3">
+ <htd:escalation name="startDeadline1">
<htd:reassignment>
<htd:potentialOwners>
<htd:from>
@@ -353,6 +353,30 @@
</htd:reassignment>
</htd:escalation>
</htd:startDeadline>
+
+ <htd:startDeadline>
+ <htd:for>PT5S</htd:for>
+ <htd:escalation name="startDeadline2">
+ <htd:localNotification reference="tns:Notify2"/>
+ </htd:escalation>
+ </htd:startDeadline>
+
+ <!--
+ <htd:startDeadline>
+ <htd:for>PT5S</htd:for>
+ <htd:escalation name="startDeadline3">
+ <htd:notification name="NotifyInline">
+ <htd:interface portType="req" operation="notify"></htd:interface>
+ <htd:priority>2</htd:priority>
+ <htd:peopleAssignments>
+ </htd:peopleAssignments>
+ <htd:presentationElements>
+ </htd:presentationElements>
+ </htd:notification>
+ </htd:escalation>
+ </htd:startDeadline>
+ -->
+
<htd:completionDeadline>
<htd:for>PT10S</htd:for>
<htd:escalation name="reassignTask3Completion">
@@ -374,4 +398,27 @@
</htd:deadlines>
</htd:task>
</htd:tasks>
+
+ <htd:notifications>
+ <htd:notification name="Notify2">
+ <htd:interface portType="tns:ClaimApprovalReminderPT" operation="notify"></htd:interface>
+ <htd:peopleAssignments>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user5</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+ </htd:peopleAssignments>
+ <htd:presentationElements>
+ <htd:name>Notify2Name</htd:name>
+ <htd:subject>Name2Subject</htd:subject>
+ </htd:presentationElements>
+ </htd:notification>
+ </htd:notifications>
</htd:humanInteractions>