[jboss-svn-commits] JBL Code SVN: r32063 - in labs/jbossrules/branches/salaboy_ServiceAPIs: drools-services-task and 21 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 12 14:53:39 EST 2010
Author: salaboy21
Date: 2010-03-12 14:53:36 -0500 (Fri, 12 Mar 2010)
New Revision: 32063
Added:
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/pom.xml
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/GenericEventTransport.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskFactoryService.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskService.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceImpl.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceProviderRemoteClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskClientMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskServerMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/eventmessaging/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/eventmessaging/EventMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddAttachmentMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddCommentMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddTaskMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteAttachmentMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteCommentMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingEventMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetContentMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetTaskMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingSetContentMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskOperationMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskSummaryMessageResponseHandler.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/resources/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/BaseTaskServiceTest.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandlerTest.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/drools.email.conf
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/orm.xml
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/persistence.xml
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadGroups.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadUsers.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/QueryData_UnescalatedDeadlines.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithNotification.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithReassignment.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryData_TasksOwned.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel
Log:
JBRULES-2446: Drools Services API
- drools-services-task initial commit of the task module, a little more refactoring needed
Property changes on: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task
___________________________________________________________________
Name: svn:ignore
+ target
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/pom.xml (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/pom.xml 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0.SNAPSHOT</version>
+ </parent>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-services-task</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ <url>http://maven.apache.org</url>
+ <name>Drools :: Services :: Task</name>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.6</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Drools Runtime -->
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+
+ <!-- Apache Mina for default Service Remote Implementation -->
+ <dependency>
+ <groupId>org.apache.mina</groupId>
+ <artifactId>mina-core</artifactId>
+ <version>2.0.0-M6</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-process-task</artifactId>
+
+
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-services</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+
+ </dependency>
+
+
+ <!-- DB H2 -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.2.128</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,375 @@
+package org.drools.services.task;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
+import org.drools.eventmessaging.EventKey;
+import org.drools.eventmessaging.Payload;
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemHandler;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.services.generic.GenericConnector;
+import org.drools.services.generic.Message;
+import org.drools.services.remote.mina.MinaConnector;
+import org.drools.services.remote.mina.MinaIoHandler;
+import org.drools.task.AccessType;
+import org.drools.task.Content;
+import org.drools.task.Group;
+import org.drools.task.I18NText;
+import org.drools.task.OrganizationalEntity;
+import org.drools.task.PeopleAssignments;
+import org.drools.task.SubTasksStrategy;
+import org.drools.task.SubTasksStrategyFactory;
+import org.drools.task.Task;
+import org.drools.task.TaskData;
+import org.drools.task.User;
+import org.drools.task.event.TaskCompletedEvent;
+import org.drools.task.event.TaskEvent;
+import org.drools.task.event.TaskEventKey;
+import org.drools.task.event.TaskFailedEvent;
+import org.drools.task.event.TaskSkippedEvent;
+import org.drools.task.service.Command;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.responsehandlers.AbstractBaseResponseHandler;
+
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
+import org.drools.services.task.eventmessaging.EventMessageResponseHandler;
+
+/**
+ * @author salaboy
+ * @author Lucas Amador
+ *
+ */
+
+public class CommandBasedServicesWSHumanTaskHandler implements WorkItemHandler {
+
+ private String ipAddress = "127.0.0.1";
+ private int port = 9124;
+ private SocketAddress address;
+ private GenericConnector connector;
+ private HumanTaskServiceImpl client;
+ private KnowledgeRuntime session;
+ private Map<Long, Long> idMapping = new HashMap<Long, Long>();
+ private Map<Long, WorkItemManager> managers = new HashMap<Long, WorkItemManager>();
+
+ public CommandBasedServicesWSHumanTaskHandler(KnowledgeRuntime session) {
+ this.session = session;
+ this.address = new InetSocketAddress(ipAddress, port);
+ }
+
+ public void connect() {
+ if (connector == null) {
+ NioSocketConnector htclientConnector = new NioSocketConnector();
+ htclientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ connector = new MinaConnector("client ht",
+ htclientConnector,
+ this.address,
+ SystemEventListenerFactory.getSystemEventListener());
+ boolean connected = connector.connect();
+ if (!connected) {
+ throw new IllegalArgumentException("Could not connect task client");
+ }
+ int id = ((StatefulKnowledgeSession) session).getId();
+ client = new HumanTaskServiceImpl(connector, id);
+ }
+ }
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ connect();
+ Task task = new Task();
+ String taskName = (String) workItem.getParameter("TaskName");
+ if (taskName != null) {
+ List<I18NText> names = new ArrayList<I18NText>();
+ names.add(new I18NText("en-UK", taskName));
+ task.setNames(names);
+ }
+ String comment = (String) workItem.getParameter("Comment");
+ if (comment != null) {
+ List<I18NText> descriptions = new ArrayList<I18NText>();
+ descriptions.add(new I18NText("en-UK", comment));
+ task.setDescriptions(descriptions);
+ List<I18NText> subjects = new ArrayList<I18NText>();
+ subjects.add(new I18NText("en-UK", comment));
+ task.setSubjects(subjects);
+ }
+ String priorityString = (String) workItem.getParameter("Priority");
+ int priority = 0;
+ if (priorityString != null) {
+ try {
+ priority = new Integer(priorityString);
+ } catch (NumberFormatException e) {
+ // do nothing
+ }
+ }
+ task.setPriority(priority);
+
+ TaskData taskData = new TaskData();
+ taskData.setWorkItemId(workItem.getId());
+ taskData.setSkipable(!"false".equals(workItem.getParameter("Skippable")));
+ //Sub Task Data
+ Long parentId = (Long) workItem.getParameter("ParentId");
+ if (parentId != null) {
+ taskData.setParentId(parentId);
+ }
+
+ String subTaskStrategiesCommaSeparated = (String) workItem.getParameter("SubTaskStrategies");
+ if (subTaskStrategiesCommaSeparated != null && !subTaskStrategiesCommaSeparated.equals("")) {
+ String[] subTaskStrategies = subTaskStrategiesCommaSeparated.split(",");
+ List<SubTasksStrategy> strategies = new ArrayList<SubTasksStrategy>();
+ for (String subTaskStrategyString : subTaskStrategies) {
+ SubTasksStrategy subTaskStrategy = SubTasksStrategyFactory.newStrategy(subTaskStrategyString);
+ strategies.add(subTaskStrategy);
+ }
+ task.setSubTaskStrategies(strategies);
+ }
+
+ PeopleAssignments assignments = new PeopleAssignments();
+ List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
+
+ String actorId = (String) workItem.getParameter("ActorId");
+ if (actorId != null) {
+
+ String[] actorIds = actorId.split(",");
+ for (String id : actorIds) {
+ User user = new User();
+ user.setId(id.trim());
+ potentialOwners.add(user);
+ }
+ //Set the first user as creator ID??? hmmm might be wrong
+ if (potentialOwners.size() > 0) {
+ taskData.setCreatedBy((User) potentialOwners.get(0));
+ }
+ }
+ String groupId = (String) workItem.getParameter("GroupId");
+ if (groupId != null) {
+
+ String[] groupIds = groupId.split(",");
+ for (String id : groupIds) {
+
+ potentialOwners.add(new Group(id));
+ }
+
+ }
+
+ assignments.setPotentialOwners(potentialOwners);
+ List<OrganizationalEntity> businessAdministrators = new ArrayList<OrganizationalEntity>();
+ businessAdministrators.add(new User("Administrator"));
+ assignments.setBusinessAdministrators(businessAdministrators);
+ task.setPeopleAssignments(assignments);
+
+ task.setTaskData(taskData);
+
+ ContentData content = null;
+ Object contentObject = workItem.getParameter("Content");
+ if (contentObject != null) {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream out;
+ try {
+ out = new ObjectOutputStream(bos);
+ out.writeObject(contentObject);
+ out.close();
+ content = new ContentData();
+ content.setContent(bos.toByteArray());
+ content.setAccessType(AccessType.Inline);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ TaskWorkItemAddTaskMessageResponseHandler taskResponseHandler =
+ new TaskWorkItemAddTaskMessageResponseHandler(workItem.getId(), this.managers, idMapping, manager);
+ client.addTask(task, content, taskResponseHandler);
+ }
+
+ public void dispose() {
+ if (connector != null) {
+ connector.disconnect();
+ }
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ Long taskId = idMapping.get(workItem.getId());
+ if (taskId != null) {
+ synchronized (idMapping) {
+ idMapping.remove(taskId);
+ }
+ synchronized (managers) {
+ managers.remove(taskId);
+ }
+ client.skip(taskId, "Administrator", null);
+ }
+ }
+
+ public class TaskWorkItemAddTaskMessageResponseHandler extends AbstractBaseResponseHandler implements AddTaskMessageResponseHandler {
+
+ private Map<Long, WorkItemManager> managers;
+ private Map<Long, Long> idMapping;
+ private WorkItemManager manager;
+ private long workItemId;
+
+ public TaskWorkItemAddTaskMessageResponseHandler(long workItemId,
+ Map<Long, WorkItemManager> managers, Map<Long, Long> idMapping,
+ WorkItemManager manager) {
+ this.workItemId = workItemId;
+ this.managers = managers;
+ this.idMapping = idMapping;
+ this.manager = manager;
+ }
+
+ public void execute(long taskId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void receive(Message message) {
+ Command command = (Command) message.getPayload();
+ Long taskId = (Long) command.getArguments().get(0);
+
+ synchronized (managers) {
+ managers.put(taskId, this.manager);
+ }
+ synchronized (idMapping) {
+ idMapping.put(workItemId, taskId);
+ }
+ System.out.println("Created task " + taskId + " for work item " + workItemId);
+
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId);
+ TaskCompletedMessageHandler eventResponseHandler = new TaskCompletedMessageHandler(workItemId, taskId, managers);
+ client.registerForEvent(key, true, eventResponseHandler);
+ key = new TaskEventKey(TaskFailedEvent.class, taskId);
+ client.registerForEvent(key, true, eventResponseHandler);
+ key = new TaskEventKey(TaskSkippedEvent.class, taskId);
+ client.registerForEvent(key, true, eventResponseHandler);
+ }
+ }
+
+ private class TaskCompletedMessageHandler extends AbstractBaseResponseHandler implements EventMessageResponseHandler {
+
+ private long workItemId;
+ private long taskId;
+ private final Map<Long, WorkItemManager> managers;
+
+ public TaskCompletedMessageHandler(long workItemId, long taskId, Map<Long, WorkItemManager> managers) {
+ this.workItemId = workItemId;
+ this.taskId = taskId;
+ this.managers = managers;
+ }
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Payload payload = (Payload) cmd.getArguments().get(0);
+ TaskEvent event = (TaskEvent) payload.get();
+ if (event.getTaskId() != taskId) {
+ // defensive check that should never happen, just here for testing
+ setError(new IllegalStateException("Expected task id and arrived task id do not march"));
+ return;
+ }
+ if (event instanceof TaskCompletedEvent) {
+ synchronized (this.managers) {
+ WorkItemManager manager = this.managers.get(taskId);
+ if (manager != null) {
+ GetCompletedTaskMessageResponseHandler getTaskResponseHandler = new GetCompletedTaskMessageResponseHandler(manager);
+ client.getTask(taskId, getTaskResponseHandler);
+ }
+ }
+ } else {
+ synchronized (this.managers) {
+ WorkItemManager manager = this.managers.get(taskId);
+ if (manager != null) {
+ manager.abortWorkItem(workItemId);
+ }
+ }
+ }
+ }
+
+ public void execute(Payload payload) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ }
+
+ private class GetCompletedTaskMessageResponseHandler extends AbstractBaseResponseHandler implements GetTaskMessageResponseHandler {
+
+ private WorkItemManager manager;
+
+ public GetCompletedTaskMessageResponseHandler(WorkItemManager manager) {
+ this.manager = manager;
+ }
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Task task = (Task) cmd.getArguments().get(0);
+ long workItemId = task.getTaskData().getWorkItemId();
+ String userId = task.getTaskData().getActualOwner().getId();
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put("ActorId", userId);
+ long contentId = task.getTaskData().getOutputContentId();
+ if (contentId != -1) {
+ GetResultContentMessageResponseHandler getContentResponseHandler =
+ new GetResultContentMessageResponseHandler(manager, task, results);
+ client.getContent(contentId, getContentResponseHandler);
+ } else {
+ manager.completeWorkItem(workItemId, results);
+ }
+ }
+
+ public void execute(Task task) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ }
+
+ private class GetResultContentMessageResponseHandler extends AbstractBaseResponseHandler implements GetContentMessageResponseHandler {
+
+ private Task task;
+ private final WorkItemManager manager;
+ private Map<String, Object> results;
+
+ public GetResultContentMessageResponseHandler(WorkItemManager manager, Task task, Map<String, Object> results) {
+ this.manager = manager;
+ this.task = task;
+ this.results = results;
+ }
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Content content = (Content) cmd.getArguments().get(0);
+ ByteArrayInputStream bis = new ByteArrayInputStream(content.getContent());
+ ObjectInputStream in;
+ try {
+ in = new ObjectInputStream(bis);
+ Object result = in.readObject();
+ in.close();
+ results.put("Result", result);
+ if (result instanceof Map) {
+ Map<?, ?> map = (Map) result;
+ for (Map.Entry<?, ?> entry : map.entrySet()) {
+ if (entry.getKey() instanceof String) {
+ results.put((String) entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ manager.completeWorkItem(task.getTaskData().getWorkItemId(), results);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void execute(Content content) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ }
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/GenericEventTransport.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/GenericEventTransport.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/GenericEventTransport.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,42 @@
+package org.drools.services.task;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+import org.drools.eventmessaging.EventTriggerTransport;
+import org.drools.eventmessaging.Payload;
+import org.drools.services.generic.GenericIoWriter;
+import org.drools.services.generic.Message;
+import org.drools.task.service.Command;
+import org.drools.task.service.CommandName;
+
+public class GenericEventTransport implements EventTriggerTransport {
+ private String uuid;
+ private Map<String, GenericIoWriter> sessions;
+ private int responseId;
+ private boolean remove;
+
+ GenericEventTransport(String uuid, int responseId, Map<String, GenericIoWriter> sessions, boolean remove) {
+ this.uuid = uuid;
+ this.responseId = responseId;
+ this.sessions = sessions;
+ this.remove = remove;
+ }
+
+ public void trigger(Payload payload) {
+ GenericIoWriter session = sessions.get( uuid );
+ List args = new ArrayList( 1 );
+ args.add( payload );
+ Command resultsCmnd = new Command( responseId, CommandName.EventTriggerResponse, args);
+ session.write(new Message(Integer.parseInt(uuid),
+ responseId,
+ false,
+ resultsCmnd ), null);
+ }
+
+ public boolean isRemove() {
+ return this.remove;
+ }
+}
Copied: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskFactoryService.java (from rev 31896, labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/vsm/HumanTaskServiceProvider.java)
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskFactoryService.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskFactoryService.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,14 @@
+package org.drools.services.task;
+
+import org.drools.Service;
+import org.drools.services.generic.GenericConnector;
+
+
+
+
+public interface HumanTaskFactoryService extends Service {
+ public HumanTaskService newHumanTaskService();
+
+
+
+}
Copied: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskService.java (from rev 31896, labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/vsm/HumanTaskService.java)
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskService.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskService.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,59 @@
+package org.drools.services.task;
+
+import java.util.List;
+
+import org.drools.eventmessaging.EventKey;
+
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddAttachmentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddCommentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.DeleteAttachmentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.DeleteCommentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.SetDocumentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.TaskOperationMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.TaskSummaryMessageResponseHandler;
+import org.drools.services.task.eventmessaging.EventMessageResponseHandler;
+import org.drools.task.Attachment;
+import org.drools.task.Comment;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.FaultData;
+
+
+public interface HumanTaskService {
+ public void addTask(Task task, ContentData content, AddTaskMessageResponseHandler responseHandler);
+ public Task getTask(long taskId, GetTaskMessageResponseHandler responseHandler);
+ public void addComment(long taskId, Comment comment, AddCommentMessageResponseHandler responseHandler);
+ public void deleteComment(long taskId, long commentId, DeleteCommentMessageResponseHandler responseHandler);
+ public void addAttachment(long taskId, Attachment attachment, Content content, AddAttachmentMessageResponseHandler responseHandler);
+ public void deleteAttachment(long taskId, long attachmentId, long contentId, DeleteAttachmentMessageResponseHandler responseHandler );
+ public void setDocumentContent(long taskId, Content content, SetDocumentMessageResponseHandler responseHandler);
+ public void getContent(long contentId, GetContentMessageResponseHandler responseHandler);
+ public void claim(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void start(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void stop(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void release(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void suspend(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void resume(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void skip(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler);
+ public void delegate(long taskId, String userId, String targetUserId, TaskOperationMessageResponseHandler responseHandler);
+ public void forward(long taskId, String userId, String targetEntityId, TaskOperationMessageResponseHandler responseHandler) ;
+ public void complete(long taskId, String userId, ContentData outputData, TaskOperationMessageResponseHandler responseHandler) ;
+ public void fail(long taskId, String userId, FaultData faultData, TaskOperationMessageResponseHandler responseHandler);
+ public void getTasksOwned(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsBusinessAdministrator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsExcludedOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsPotentialOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsPotentialOwner(String userId, List<String> groupIds, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getSubTasksAssignedAsPotentialOwner(long parentId, String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getSubTasksByParent(long parentId, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsRecipient(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsTaskInitiator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void getTasksAssignedAsTaskStakeholder(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
+ public void registerForEvent(EventKey key, boolean remove, EventMessageResponseHandler responseHandler);
+ public boolean connect();
+ public void disconnect();
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceImpl.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceImpl.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,409 @@
+package org.drools.services.task;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.drools.eventmessaging.EventKey;
+import org.drools.services.generic.GenericConnector;
+import org.drools.services.generic.Message;
+import org.drools.task.Attachment;
+import org.drools.task.Comment;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.service.Command;
+import org.drools.task.service.CommandName;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.FaultData;
+import org.drools.task.service.Operation;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddAttachmentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddCommentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.DeleteAttachmentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.DeleteCommentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.SetDocumentMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.TaskOperationMessageResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.TaskSummaryMessageResponseHandler;
+import org.drools.services.task.eventmessaging.EventMessageResponseHandler;
+
+
+/**
+ * @author salaboy
+ * @author Lucas Amador
+ *
+ */
+public class HumanTaskServiceImpl implements HumanTaskService {
+
+ private final GenericConnector client;
+ private final AtomicInteger counter;
+ private int sessionId;
+ private String clientName;
+
+ public HumanTaskServiceImpl(GenericConnector client, int sessionId) {
+ this.client = client;
+ this.counter = new AtomicInteger();
+ this.clientName = String.valueOf(sessionId);
+ this.sessionId = sessionId;
+
+ }
+
+ public boolean connect(){
+ return this.client.connect();
+ }
+
+ public void disconnect(){
+ this.client.disconnect();
+ }
+
+ public void addTask(Task task, ContentData content, AddTaskMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( task );
+ args.add( content );
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.AddTaskRequest, args );
+
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public Task getTask(long taskId, GetTaskMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 1 );
+ args.add( taskId );
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.GetTaskRequest, args );
+
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+ client.write(msg, responseHandler);
+ return null;
+ }
+
+ public void addComment(long taskId, Comment comment, AddCommentMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( taskId );
+ args.add( comment );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.AddCommentRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void deleteComment(long taskId, long commentId, DeleteCommentMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( taskId );
+ args.add( commentId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.DeleteCommentRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void addAttachment(long taskId, Attachment attachment, Content content, AddAttachmentMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( taskId );
+ args.add( attachment );
+ args.add( content );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.AddAttachmentRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void deleteAttachment(long taskId, long attachmentId, long contentId, DeleteAttachmentMessageResponseHandler responseHandler ) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( taskId );
+ args.add( attachmentId );
+ args.add( contentId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.DeleteAttachmentRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void setDocumentContent(long taskId, Content content, SetDocumentMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( taskId );
+ args.add( content );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.SetDocumentContentRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getContent(long contentId, GetContentMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 1 );
+ args.add( contentId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.GetContentRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void claim(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Claim );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void start(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Start );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void stop(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Stop );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void release(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Release );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void suspend(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Suspend );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void resume(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Resume );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void skip(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( Operation.Skip );
+ args.add( taskId );
+ args.add( userId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void delegate(long taskId, String userId, String targetUserId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 4 );
+ args.add( Operation.Delegate );
+ args.add( taskId );
+ args.add( userId );
+ args.add( targetUserId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void forward(long taskId, String userId, String targetEntityId, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 4 );
+ args.add( Operation.Forward );
+ args.add( taskId );
+ args.add( userId );
+ args.add( targetEntityId );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void complete(long taskId, String userId, ContentData outputData, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 5 );
+ args.add( Operation.Complete );
+ args.add( taskId );
+ args.add( userId );
+ args.add( null );
+ args.add( outputData );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void fail(long taskId, String userId, FaultData faultData, TaskOperationMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 5 );
+ args.add( Operation.Fail );
+ args.add( taskId );
+ args.add( userId );
+ args.add( null );
+ args.add( faultData );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.OperationRequest, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getTasksOwned(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksOwned, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getTasksAssignedAsBusinessAdministrator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsBusinessAdministrator, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getTasksAssignedAsExcludedOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsExcludedOwner, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getTasksAssignedAsPotentialOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsPotentialOwner, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+ public void getTasksAssignedAsPotentialOwner(String userId, List<String> groupIds, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( groupIds );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsPotentialOwnerWithGroup, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getSubTasksAssignedAsPotentialOwner(long parentId, String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( parentId );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QuerySubTasksAssignedAsPotentialOwner, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+ public void getSubTasksByParent(long parentId, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( parentId );
+ //@TODO: un hard code this
+ args.add( "en-UK" );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryGetSubTasksByParentTaskId, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+ public void getTasksAssignedAsRecipient(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsRecipient, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getTasksAssignedAsTaskInitiator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsTaskInitiator, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void getTasksAssignedAsTaskStakeholder(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+ List<Object> args = new ArrayList<Object>( 2 );
+ args.add( userId );
+ args.add( language );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.QueryTasksAssignedAsTaskStakeholder, args );
+ Message msg = new Message( sessionId, counter.incrementAndGet(), false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+ public void registerForEvent(EventKey key, boolean remove, EventMessageResponseHandler responseHandler) { //@TODO: look for the event stuff
+ List<Object> args = new ArrayList<Object>( 3 );
+ args.add( key );
+ args.add( remove );
+ args.add( clientName );
+
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.RegisterForEventRequest, args );
+ int responseId = counter.incrementAndGet();
+ Message msg = new Message( sessionId, responseId, false, cmd );
+
+ client.write(msg, responseHandler);
+ }
+
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceProviderRemoteClient.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/HumanTaskServiceProviderRemoteClient.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.services.task;
+
+import org.drools.services.generic.GenericConnector;
+
+/**
+ *
+ * @author salaboy
+ */
+public class HumanTaskServiceProviderRemoteClient implements HumanTaskFactoryService {
+
+ private GenericConnector connector;
+ private int id;
+
+ public HumanTaskServiceProviderRemoteClient() {
+ }
+
+ public HumanTaskServiceProviderRemoteClient(GenericConnector connector, int id) {
+ this.connector = connector;
+ this.id = id;
+ }
+
+ public GenericConnector getConnector() {
+ return connector;
+ }
+
+ public void setConnector(GenericConnector connector) {
+ this.connector = connector;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+
+ @Override
+ public HumanTaskService newHumanTaskService() {
+
+
+ return new HumanTaskServiceImpl(this.connector, this.id);
+
+ }
+
+
+
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskClientMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskClientMessageHandlerImpl.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskClientMessageHandlerImpl.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,249 @@
+package org.drools.services.task;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.SystemEventListener;
+import org.drools.eventmessaging.Payload;
+import org.drools.services.generic.GenericIoWriter;
+import org.drools.services.generic.GenericMessageHandler;
+import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageResponseHandler;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.Command;
+
+import org.drools.services.task.eventmessaging.EventMessageResponseHandler;
+import org.drools.services.task.responseHandlers.BlockingTaskSummaryMessageResponseHandler;
+
+public class TaskClientMessageHandlerImpl implements GenericMessageHandler {
+
+ /**
+ * Listener used for logging
+ */
+ private SystemEventListener systemEventListener;
+ protected Map<Integer, MessageResponseHandler> responseHandlers;
+
+ public TaskClientMessageHandlerImpl(SystemEventListener systemEventListener) {
+ this.systemEventListener = systemEventListener;
+ this.responseHandlers = new ConcurrentHashMap<Integer, MessageResponseHandler>();;
+ }
+
+
+ public void exceptionCaught(GenericIoWriter session,
+ Throwable cause) throws Exception {
+ systemEventListener.exception("Uncaught exception on client", cause);
+ }
+
+ public void messageReceived(GenericIoWriter session, Message msg) throws Exception {
+ Command cmd = (Command) msg.getPayload();
+ systemEventListener.debug("Message receieved redirected to the client 1111111111: " + cmd.getName());
+ systemEventListener.debug("Arguments : " + Arrays.toString(cmd.getArguments().toArray()));
+
+ switch (cmd.getName()) {
+ case OperationResponse: {
+ TaskOperationMessageResponseHandler responseHandler = (TaskOperationMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ responseHandler.setIsDone(true);
+ System.out.println("IS DONDEEEE");
+ }
+ }
+ break;
+ }
+ case GetTaskResponse: {
+ GetTaskMessageResponseHandler responseHandler = (GetTaskMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ Task task = (Task) cmd.getArguments().get(0);
+ responseHandler.execute(task);
+ }
+ }
+ break;
+ }
+ case AddTaskResponse: {
+ AddTaskMessageResponseHandler responseHandler = (AddTaskMessageResponseHandler) responseHandlers.remove(msg.getResponseId());
+ System.out.println("response id searched: " + msg.getResponseId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ long taskId = (Long) cmd.getArguments().get(0);
+ responseHandler.execute(taskId);
+ }
+ }
+ break;
+ }
+ case AddCommentResponse: {
+ AddCommentMessageResponseHandler responseHandler = (AddCommentMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ long commentId = (Long) cmd.getArguments().get(0);
+ responseHandler.execute(commentId);
+ }
+ }
+ break;
+ }
+ case DeleteCommentResponse: {
+ DeleteCommentMessageResponseHandler responseHandler = (DeleteCommentMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ responseHandler.setIsDone(true);
+ }
+ }
+ break;
+ }
+ case AddAttachmentResponse: {
+ AddAttachmentMessageResponseHandler responseHandler = (AddAttachmentMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ long attachmentId = (Long) cmd.getArguments().get(0);
+ long contentId = (Long) cmd.getArguments().get(1);
+ responseHandler.execute(attachmentId,
+ contentId);
+ }
+ }
+ break;
+ }
+ case DeleteAttachmentResponse: {
+ DeleteAttachmentMessageResponseHandler responseHandler = (DeleteAttachmentMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ responseHandler.setIsDone(true);
+ }
+ }
+ break;
+ }
+ case GetContentResponse: {
+ GetContentMessageResponseHandler responseHandler = (GetContentMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ Content content = (Content) cmd.getArguments().get(0);
+ responseHandler.execute(content);
+ }
+ }
+ break;
+ }
+ case SetDocumentContentResponse: {
+ SetDocumentMessageResponseHandler responseHandler = (SetDocumentMessageResponseHandler) responseHandlers.remove(cmd.getId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ long contentId = (Long) cmd.getArguments().get(0);
+ responseHandler.execute(contentId);
+ }
+ }
+ break;
+ }
+ case QueryTaskSummaryResponse: {
+ BlockingTaskSummaryMessageResponseHandler responseHandler = (BlockingTaskSummaryMessageResponseHandler) responseHandlers.remove(msg.getResponseId());
+ System.out.println("responseHandler: " + responseHandler + " id searched: " + msg.getResponseId());
+ if (responseHandler != null) {
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ } else {
+ List<TaskSummary> results = (List<TaskSummary>) cmd.getArguments().get(0);
+ responseHandler.execute(results);
+ }
+ }
+ break;
+ }
+ case EventTriggerResponse: {
+ EventMessageResponseHandler responseHandler = (EventMessageResponseHandler) responseHandlers.remove(cmd.getId()); //@TODO view messaging stuff
+ System.out.println("EVENT TRIGGER RESPONSE " + responseHandler + " size " + responseHandlers.size() + " id " + cmd.getId());
+ if (responseHandler != null) {
+ System.out.println("responseHandler---: " + responseHandler);
+ if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+ responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
+ System.out.println("EEerror");
+ } else {
+ Payload payload = (Payload) cmd.getArguments().get(0);
+ System.out.println("EExecute ");
+ responseHandler.execute(payload);
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ public static interface GetTaskMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(Task task);
+ }
+
+ public static interface AddTaskMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(long taskId);
+ }
+
+ public static interface TaskOperationMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void setIsDone(boolean done);
+ }
+
+ public static interface AddCommentMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(long commentId);
+ }
+
+ public static interface DeleteCommentMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void setIsDone(boolean done);
+ }
+
+ public static interface AddAttachmentMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(long attachmentId,
+ long contentId);
+ }
+
+ public static interface DeleteAttachmentMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void setIsDone(boolean done);
+ }
+
+ public static interface SetDocumentMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(long contentId);
+ }
+
+ public static interface GetContentMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(Content content);
+ }
+
+ public static interface TaskSummaryMessageResponseHandler
+ extends
+ MessageResponseHandler {
+ public void execute(List<TaskSummary> results);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskServerMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskServerMessageHandlerImpl.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/TaskServerMessageHandlerImpl.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,437 @@
+package org.drools.services.task;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.core.session.IoSession;
+import org.drools.SystemEventListener;
+import org.drools.eventmessaging.EventKey;
+import org.drools.services.generic.GenericIoWriter;
+import org.drools.services.generic.GenericMessageHandler;
+import org.drools.services.generic.Message;
+import org.drools.task.Attachment;
+import org.drools.task.Comment;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.Command;
+import org.drools.task.service.CommandName;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.Operation;
+import org.drools.task.service.TaskService;
+import org.drools.task.service.TaskServiceSession;
+
+
+public class TaskServerMessageHandlerImpl implements GenericMessageHandler {
+ private final TaskService service;
+ private final Map<String, GenericIoWriter> clients;
+
+ /**
+ * Listener used for logging
+ */
+ private final SystemEventListener systemEventListener;
+
+ public TaskServerMessageHandlerImpl(TaskService service, SystemEventListener systemEventListener) {
+ this.service = service;
+ this.clients = new HashMap<String, GenericIoWriter>();
+ this.systemEventListener = systemEventListener;
+ }
+
+
+ public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
+ systemEventListener.exception("Uncaught exception on Server", cause);
+ }
+
+
+ public void messageReceived(GenericIoWriter session, Message msg) throws Exception {
+ Command cmd = (Command) ((Message)msg).getPayload();
+ TaskServiceSession taskSession = service.createSession();
+ CommandName response = null;
+ try {
+ systemEventListener.debug("Message received on server : " + cmd.getName());
+ systemEventListener.debug("Arguments : " + Arrays.toString(cmd.getArguments().toArray()));
+ switch (cmd.getName()) {
+ case OperationRequest: {
+ response = CommandName.OperationResponse;
+ Operation operation = (Operation) cmd.getArguments().get(0);
+
+ systemEventListener.debug("Command receieved on server was operation of type: " + operation);
+
+ long taskId = (Long) cmd.getArguments().get(1);
+ String userId = (String) cmd.getArguments().get(2);
+ String targetEntityId = null;
+ if (cmd.getArguments().size() > 3) {
+ targetEntityId = (String) cmd.getArguments().get(3);
+ }
+ ContentData data = null;
+ if (cmd.getArguments().size() > 4) {
+ data = (ContentData) cmd.getArguments().get(4);
+ }
+ taskSession.taskOperation(operation, taskId, userId, targetEntityId, data);
+
+ List args = Collections.emptyList();
+
+ Command resultsCmnd = new Command(cmd.getId(), CommandName.OperationResponse, args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case GetTaskRequest: {
+ response = CommandName.GetTaskResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+
+ Task task = taskSession.getTask(taskId);
+
+ List args = new ArrayList(1);
+ args.add(task);
+ Command resultsCmnd = new Command(cmd.getId(), CommandName.GetTaskResponse, args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+
+ break;
+ }
+ case AddTaskRequest: {
+ response = CommandName.AddTaskResponse;
+ Task task = (Task) cmd.getArguments().get(0);
+ ContentData content = (ContentData) cmd.getArguments().get(1);
+ taskSession.addTask(task, content);
+
+ List args = new ArrayList(1);
+ args.add(task.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.AddTaskResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case AddCommentRequest: {
+ response = CommandName.AddCommentResponse;
+ Comment comment = (Comment) cmd.getArguments().get(1);
+ taskSession.addComment((Long) cmd.getArguments().get(0),
+ comment);
+
+ List args = new ArrayList(1);
+ args.add(comment.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.AddCommentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case DeleteCommentRequest: {
+ response = CommandName.DeleteCommentResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+ long commentId = (Long) cmd.getArguments().get(1);
+ taskSession.deleteComment(taskId,
+ commentId);
+
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.DeleteCommentResponse,
+ Collections.emptyList());
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case AddAttachmentRequest: {
+ response = CommandName.AddAttachmentResponse;
+ Attachment attachment = (Attachment) cmd.getArguments().get(1);
+ Content content = (Content) cmd.getArguments().get(2);
+ taskSession.addAttachment((Long) cmd.getArguments().get(0),
+ attachment,
+ content);
+
+ List args = new ArrayList(2);
+ args.add(attachment.getId());
+ args.add(content.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.AddAttachmentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case DeleteAttachmentRequest: {
+ response = CommandName.DeleteAttachmentResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+ long attachmentId = (Long) cmd.getArguments().get(1);
+ long contentId = (Long) cmd.getArguments().get(2);
+ taskSession.deleteAttachment(taskId,
+ attachmentId,
+ contentId);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.DeleteAttachmentResponse,
+ Collections.emptyList());
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case SetDocumentContentRequest: {
+ response = CommandName.SetDocumentContentResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+ Content content = (Content) cmd.getArguments().get(1);
+ taskSession.setDocumentContent(taskId,
+ content);
+
+ List args = new ArrayList(1);
+ args.add(content.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.SetDocumentContentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case GetContentRequest: {
+ response = CommandName.GetContentResponse;
+ long contentId = (Long) cmd.getArguments().get(0);
+ Content content = taskSession.getContent(contentId);
+ List args = new ArrayList(1);
+ args.add(content);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.GetContentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksOwned: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksOwned((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsBusinessAdministrator: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsBusinessAdministrator((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsPotentialOwner: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwner((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsPotentialOwnerWithGroup: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwner(
+ (String) cmd.getArguments().get(0),
+ (List<String>) cmd.getArguments().get(1),
+ (String) cmd.getArguments().get(2));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsPotentialOwnerByGroup: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwnerByGroup((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QuerySubTasksAssignedAsPotentialOwner: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getSubTasksAssignedAsPotentialOwner((Long) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1),
+ (String) cmd.getArguments().get(2));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryGetSubTasksByParentTaskId: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getSubTasksByParent((Long) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+
+
+ case QueryTasksAssignedAsTaskInitiator: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsTaskInitiator((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsExcludedOwner: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsExcludedOwner((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsRecipient: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsRecipient((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsTaskStakeholder: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsTaskStakeholder((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case RegisterForEventRequest: {
+ response = CommandName.EventTriggerResponse;
+ EventKey key = (EventKey) cmd.getArguments().get(0);
+ boolean remove = (Boolean) cmd.getArguments().get(1);
+ String uuid = (String) cmd.getArguments().get(2);
+ clients.put(uuid,
+ session);
+ GenericEventTransport transport = new GenericEventTransport(String.valueOf(msg.getSessionId()), //this is wrong
+ msg.getResponseId(), //this is wrong
+ clients,
+ remove);
+ service.getEventKeys().register(key,
+ transport);
+ break;
+ }
+ case RegisterClient: {
+ String uuid = (String) cmd.getArguments().get(0);
+ clients.put(uuid, session);
+ break;
+ }
+ default: {
+ systemEventListener.debug("Unknown command recieved on server");
+ }
+ }
+ } catch (RuntimeException e) {
+ systemEventListener.exception(e.getMessage(),e);
+ e.printStackTrace(System.err);
+ List<Object> list = new ArrayList<Object>(1);
+ list.add(e);
+ Command resultsCmnd = new Command(cmd.getId(), response, list);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ } finally {
+ taskSession.dispose();
+ }
+ }
+
+
+ public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
+ systemEventListener.debug("Server IDLE " + session.getIdleCount(status));
+ }
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/eventmessaging/EventMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/eventmessaging/EventMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/eventmessaging/EventMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,10 @@
+package org.drools.services.task.eventmessaging;
+
+import org.drools.eventmessaging.Payload;
+import org.drools.services.generic.MessageResponseHandler;
+
+
+
+public interface EventMessageResponseHandler extends MessageResponseHandler {
+ public void execute(Payload payload);
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddAttachmentMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddAttachmentMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddAttachmentMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,17 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingAddAttachmentResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddAttachmentMessageResponseHandler;
+
+public class BlockingAddAttachmentMessageResponseHandler extends BlockingAddAttachmentResponseHandler implements AddAttachmentMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Long attachmentId = (Long) cmd.getArguments().get(0);
+ Long contentId = (Long) cmd.getArguments().get(1);
+ execute(attachmentId, contentId);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddCommentMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddCommentMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddCommentMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,16 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingAddCommentResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddCommentMessageResponseHandler;
+
+public class BlockingAddCommentMessageResponseHandler extends BlockingAddCommentResponseHandler implements AddCommentMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Long commentId = (Long) cmd.getArguments().get(0);
+ execute(commentId);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddTaskMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddTaskMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingAddTaskMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,16 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingAddTaskResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
+
+public class BlockingAddTaskMessageResponseHandler extends BlockingAddTaskResponseHandler implements AddTaskMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Long taskId = (Long) cmd.getArguments().get(0);
+ execute(taskId);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteAttachmentMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteAttachmentMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteAttachmentMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,13 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.responsehandlers.BlockingDeleteAttachmentResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.DeleteAttachmentMessageResponseHandler;
+
+public class BlockingDeleteAttachmentMessageResponseHandler extends BlockingDeleteAttachmentResponseHandler implements DeleteAttachmentMessageResponseHandler {
+
+ public void receive(Message message) {
+ setDone(true);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteCommentMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteCommentMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingDeleteCommentMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,13 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.responsehandlers.BlockingDeleteCommentResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.DeleteCommentMessageResponseHandler;
+
+public class BlockingDeleteCommentMessageResponseHandler extends BlockingDeleteCommentResponseHandler implements DeleteCommentMessageResponseHandler {
+
+ public void receive(Message message) {
+ setIsDone(true);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingEventMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingEventMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingEventMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,17 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.eventmessaging.Payload;
+import org.drools.services.generic.Message;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingEventResponseHandler;
+import org.drools.services.task.eventmessaging.EventMessageResponseHandler;
+
+public class BlockingEventMessageResponseHandler extends BlockingEventResponseHandler implements EventMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Payload payload = (Payload) cmd.getArguments().get(0);
+ execute(payload);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetContentMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetContentMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetContentMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,17 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.Content;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingGetContentResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
+
+public class BlockingGetContentMessageResponseHandler extends BlockingGetContentResponseHandler implements GetContentMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Content content = (Content) cmd.getArguments().get(0);
+ execute(content);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetTaskMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetTaskMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingGetTaskMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,17 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.Task;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingGetTaskResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
+
+public class BlockingGetTaskMessageResponseHandler extends BlockingGetTaskResponseHandler implements GetTaskMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ Task task = (Task) cmd.getArguments().get(0);
+ execute(task);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingSetContentMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingSetContentMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingSetContentMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,16 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingSetContentResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.SetDocumentMessageResponseHandler;
+
+public class BlockingSetContentMessageResponseHandler extends BlockingSetContentResponseHandler implements SetDocumentMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ long contentId = (Long) cmd.getArguments().get(0);
+ execute(contentId);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskOperationMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskOperationMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskOperationMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,13 @@
+package org.drools.services.task.responseHandlers;
+
+import org.drools.services.generic.Message;
+import org.drools.task.service.responsehandlers.BlockingTaskOperationResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.TaskOperationMessageResponseHandler;
+
+public class BlockingTaskOperationMessageResponseHandler extends BlockingTaskOperationResponseHandler implements TaskOperationMessageResponseHandler {
+
+ public void receive(Message message) {
+ setDone(true);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskSummaryMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskSummaryMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/main/java/org/drools/services/task/responseHandlers/BlockingTaskSummaryMessageResponseHandler.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,20 @@
+package org.drools.services.task.responseHandlers;
+
+import java.util.List;
+import org.drools.services.generic.Message;
+
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.Command;
+import org.drools.task.service.responsehandlers.BlockingTaskSummaryResponseHandler;
+import org.drools.services.task.TaskClientMessageHandlerImpl.TaskSummaryMessageResponseHandler;
+
+public class BlockingTaskSummaryMessageResponseHandler extends BlockingTaskSummaryResponseHandler implements TaskSummaryMessageResponseHandler {
+
+ public void receive(Message message) {
+ Command cmd = (Command) message.getPayload();
+ List<TaskSummary> results = (List<TaskSummary>) cmd.getArguments().get(0);
+ execute(results);
+ }
+
+}
+
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/BaseTaskServiceTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/BaseTaskServiceTest.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/BaseTaskServiceTest.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,774 @@
+package org.drools.services.task;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import junit.framework.Assert;
+
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.process.instance.WorkItemManager;
+import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.services.ExecutionNode;
+import org.drools.services.task.responseHandlers.BlockingGetContentMessageResponseHandler;
+import org.drools.services.task.responseHandlers.BlockingGetTaskMessageResponseHandler;
+import org.drools.services.task.responseHandlers.BlockingTaskOperationMessageResponseHandler;
+import org.drools.services.task.responseHandlers.BlockingTaskSummaryMessageResponseHandler;
+import org.drools.task.AccessType;
+import org.drools.task.Group;
+import org.drools.task.Status;
+import org.drools.task.Task;
+import org.drools.task.User;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.PermissionDeniedException;
+import org.junit.Test;
+
+
+
+
+public abstract class BaseTaskServiceTest {
+
+ protected CommandBasedServicesWSHumanTaskHandler handler;
+ protected HumanTaskService humanTaskClient;
+ protected static final int DEFAULT_WAIT_TIME = 5000;
+ protected static final int MANAGER_COMPLETION_WAIT_TIME = DEFAULT_WAIT_TIME;
+ protected static final int MANAGER_ABORT_WAIT_TIME = DEFAULT_WAIT_TIME;
+ protected Map<String, User> users;
+ protected Map<String, Group> groups;
+ protected ExecutionNode node;
+
+
+ @Test
+ public void testTask() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary task = tasks.get(0);
+ Assert.assertEquals("TaskName", task.getName());
+ Assert.assertEquals(10, task.getPriority());
+ Assert.assertEquals("Comment", task.getDescription());
+ Assert.assertEquals(Status.Reserved, task.getStatus());
+ Assert.assertEquals("Darth Vader", task.getActualOwner().getId());
+
+ System.out.println("Starting task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started task " + task.getId());
+
+ System.out.println("Completing task " + task.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
+ operationResponseHandler.waitTillDone(15000);
+ System.out.println("Completed task " + task.getId());
+ Assert.assertTrue(manager.waitTillCompleted(DEFAULT_WAIT_TIME));
+ Thread.sleep(500);
+ }
+ @Test
+ public void testTaskMultipleActors() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader, Dalai Lama");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary task = tasks.get(0);
+ Assert.assertEquals("TaskName", task.getName());
+ Assert.assertEquals(10, task.getPriority());
+ Assert.assertEquals("Comment", task.getDescription());
+ Assert.assertEquals(Status.Ready, task.getStatus());
+
+ System.out.println("Claiming task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.claim(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Claimed task " + task.getId());
+
+ System.out.println("Starting task " + task.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started task " + task.getId());
+
+ System.out.println("Completing task " + task.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Completed task " + task.getId());
+
+ Assert.assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+
+ Thread.sleep(500);
+ }
+ @Test
+ public void testTaskGroupActors() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("GroupId", "Crusaders");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ List<String> groupIds = new ArrayList<String>();
+ groupIds.add("Crusaders");
+ humanTaskClient.getTasksAssignedAsPotentialOwner(null, groupIds, "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary taskSummary = tasks.get(0);
+ Assert.assertEquals("TaskName", taskSummary.getName());
+ Assert.assertEquals(10, taskSummary.getPriority());
+ Assert.assertEquals("Comment", taskSummary.getDescription());
+ Assert.assertEquals(Status.Ready, taskSummary.getStatus());
+
+ System.out.println("Claiming task " + taskSummary.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.claim(taskSummary.getId(), "Darth Vader", operationResponseHandler);
+ PermissionDeniedException denied = null;
+ System.out.println("1");
+ try {
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("2");
+ } catch (PermissionDeniedException e) {
+ System.out.println("EXCEPTION: " + e);
+ denied = e;
+ }
+
+ Assert.assertNotNull("Should get permissed denied exception", denied);
+ System.out.println("Claimed task " + taskSummary.getId());
+
+ //Check if the parent task is InProgress
+ BlockingGetTaskMessageResponseHandler getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(taskSummary.getId(), getTaskResponseHandler);
+ Task task = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.Ready, task.getTaskData().getStatus());
+
+ Thread.sleep(500);
+ }
+ @Test
+ public void testTaskSingleAndGroupActors() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task One");
+ workItem.setParameter("TaskName", "TaskNameOne");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("GroupId", "Crusaders");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ workItem = new WorkItemImpl();
+ workItem.setName("Human Task Two");
+ workItem.setParameter("TaskName", "TaskNameTwo");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ List<String> groupIds = new ArrayList<String>();
+ groupIds.add("Crusaders");
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", groupIds, "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(2, tasks.size());
+
+ Thread.sleep(500);
+ }
+ @Test
+ public void testTaskFail() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary task = tasks.get(0);
+ Assert.assertEquals("TaskName", task.getName());
+ Assert.assertEquals(10, task.getPriority());
+ Assert.assertEquals("Comment", task.getDescription());
+ Assert.assertEquals(Status.Reserved, task.getStatus());
+ Assert.assertEquals("Darth Vader", task.getActualOwner().getId());
+
+ System.out.println("Starting task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started task " + task.getId());
+
+ System.out.println("Failing task " + task.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.fail(task.getId(), "Darth Vader", null, operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Failed task " + task.getId());
+
+ Assert.assertTrue(manager.waitTillAborted(MANAGER_ABORT_WAIT_TIME));
+
+ Thread.sleep(500);
+ }
+ @Test
+ public void testTaskSkip() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary task = tasks.get(0);
+ Assert.assertEquals("TaskName", task.getName());
+ Assert.assertEquals(10, task.getPriority());
+ Assert.assertEquals("Comment", task.getDescription());
+ Assert.assertEquals(Status.Reserved, task.getStatus());
+ Assert.assertEquals("Darth Vader", task.getActualOwner().getId());
+
+ System.out.println("Skipping task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.skip(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Skipped task " + task.getId());
+
+ Assert.assertTrue(manager.waitTillAborted(MANAGER_ABORT_WAIT_TIME));
+ }
+ @Test
+ public void testTaskAbortSkippable() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ handler.abortWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(0, tasks.size());
+ }
+ @Test
+ public void testTaskAbortNotSkippable() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ workItem.setParameter("Skippable", "false");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+
+ handler.abortWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ }
+ @Test
+ public void testTaskData() throws Exception {
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskName");
+ workItem.setParameter("Comment", "Comment");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ workItem.setParameter("Content", "This is the content");
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary taskSummary = tasks.get(0);
+ Assert.assertEquals("TaskName", taskSummary.getName());
+ Assert.assertEquals(10, taskSummary.getPriority());
+ Assert.assertEquals("Comment", taskSummary.getDescription());
+ Assert.assertEquals(Status.Reserved, taskSummary.getStatus());
+ Assert.assertEquals("Darth Vader", taskSummary.getActualOwner().getId());
+
+ BlockingGetTaskMessageResponseHandler getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(taskSummary.getId(), getTaskResponseHandler);
+ Task task = getTaskResponseHandler.getTask();
+ Assert.assertEquals(AccessType.Inline, task.getTaskData().getDocumentAccessType());
+ long contentId = task.getTaskData().getDocumentContentId();
+ Assert.assertTrue(contentId != -1);
+ BlockingGetContentMessageResponseHandler getContentResponseHandler = new BlockingGetContentMessageResponseHandler();
+ humanTaskClient.getContent(contentId, getContentResponseHandler);
+ ByteArrayInputStream bis = new ByteArrayInputStream(getContentResponseHandler.getContent().getContent());
+ ObjectInputStream in = new ObjectInputStream(bis);
+ Object data = in.readObject();
+ in.close();
+ Assert.assertEquals("This is the content", data);
+
+ System.out.println("Starting task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started task " + task.getId());
+
+ System.out.println("Completing task " + task.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ ContentData result = new ContentData();
+ result.setAccessType(AccessType.Inline);
+ result.setType("java.lang.String");
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(bos);
+ out.writeObject("This is the result");
+ out.close();
+ result.setContent(bos.toByteArray());
+ humanTaskClient.complete(task.getId(), "Darth Vader", result, operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Completed task " + task.getId());
+
+ Assert.assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+ Map<String, Object> results = manager.getResults();
+ Assert.assertNotNull(results);
+ Assert.assertEquals("Darth Vader", results.get("ActorId"));
+ Assert.assertEquals("This is the result", results.get("Result"));
+ }
+ @Test
+ public void testOnAllSubTasksEndParentEndStrategy() throws Exception {
+
+ TestWorkItemManager manager = new TestWorkItemManager();
+ //Create the parent task
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskNameParent");
+ workItem.setParameter("Comment", "CommentParent");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ //Set the subtask policy
+ workItem.setParameter("SubTaskStrategies", "OnAllSubTasksEndParentEnd");
+ handler.executeWorkItem(workItem, manager);
+
+
+ Thread.sleep(500);
+
+ //Test if the task is succesfully created
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary task = tasks.get(0);
+ Assert.assertEquals("TaskNameParent", task.getName());
+ Assert.assertEquals(10, task.getPriority());
+ Assert.assertEquals("CommentParent", task.getDescription());
+ Assert.assertEquals(Status.Reserved, task.getStatus());
+ Assert.assertEquals("Darth Vader", task.getActualOwner().getId());
+
+ //Create the child task
+ workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskNameChild1");
+ workItem.setParameter("Comment", "CommentChild1");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ workItem.setParameter("ParentId", task.getId());
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ //Create the child task2
+ workItem = new WorkItemImpl();
+ workItem.setName("Human Task2");
+ workItem.setParameter("TaskName", "TaskNameChild2");
+ workItem.setParameter("Comment", "CommentChild2");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ workItem.setParameter("ParentId", task.getId());
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ //Start the parent task
+ System.out.println("Starting task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started task " + task.getId());
+
+ //Check if the parent task is InProgress
+ BlockingGetTaskMessageResponseHandler getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(task.getId(), getTaskResponseHandler);
+ Task parentTask = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.InProgress, parentTask.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
+
+ //Get all the subtask created for the parent task based on the potential owner
+ responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getSubTasksAssignedAsPotentialOwner(parentTask.getId(), "Darth Vader", "en-UK", responseHandler);
+ List<TaskSummary> subTasks = responseHandler.getResults();
+ Assert.assertEquals(2, subTasks.size());
+ TaskSummary subTaskSummary1 = subTasks.get(0);
+ TaskSummary subTaskSummary2 = subTasks.get(1);
+ Assert.assertNotNull(subTaskSummary1);
+ Assert.assertNotNull(subTaskSummary2);
+
+ //Starting the sub task 1
+ System.out.println("Starting sub task " + subTaskSummary1.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started sub task " + subTaskSummary1.getId());
+
+ //Starting the sub task 2
+ System.out.println("Starting sub task " + subTaskSummary2.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started sub task " + subTaskSummary2.getId());
+
+ //Check if the child task 1 is InProgress
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
+ Task subTask1 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.InProgress, subTask1.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
+
+ //Check if the child task 2 is InProgress
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
+ Task subTask2 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.InProgress, subTask2.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
+
+ // Complete the child task 1
+ System.out.println("Completing sub task " + subTask1.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.complete(subTask1.getId(), "Darth Vader", null, operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Completed sub task " + subTask1.getId());
+
+ // Complete the child task 2
+ System.out.println("Completing sub task " + subTask2.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.complete(subTask2.getId(), "Darth Vader", null, operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Completed sub task " + subTask2.getId());
+
+ //Check if the child task 1 is Completed
+
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTask1.getId(), getTaskResponseHandler);
+ subTask1 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.Completed, subTask1.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
+
+ //Check if the child task 2 is Completed
+
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTask2.getId(), getTaskResponseHandler);
+ subTask2 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.Completed, subTask2.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
+
+ // Check is the parent task is Complete
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(parentTask.getId(), getTaskResponseHandler);
+ parentTask = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.Completed, parentTask.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
+
+ Assert.assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+ }
+ @Test
+ public void testOnParentAbortAllSubTasksEndStrategy() throws Exception {
+
+ TestWorkItemManager manager = new TestWorkItemManager();
+ //Create the parent task
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskNameParent");
+ workItem.setParameter("Comment", "CommentParent");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ //Set the subtask policy
+ workItem.setParameter("SubTaskStrategies", "OnParentAbortAllSubTasksEnd");
+ handler.executeWorkItem(workItem, manager);
+
+
+ Thread.sleep(500);
+
+ //Test if the task is succesfully created
+ BlockingTaskSummaryMessageResponseHandler responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+ responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ Assert.assertEquals(1, tasks.size());
+ TaskSummary task = tasks.get(0);
+ Assert.assertEquals("TaskNameParent", task.getName());
+ Assert.assertEquals(10, task.getPriority());
+ Assert.assertEquals("CommentParent", task.getDescription());
+ Assert.assertEquals(Status.Reserved, task.getStatus());
+ Assert.assertEquals("Darth Vader", task.getActualOwner().getId());
+
+ //Create the child task
+ workItem = new WorkItemImpl();
+ workItem.setName("Human Task");
+ workItem.setParameter("TaskName", "TaskNameChild1");
+ workItem.setParameter("Comment", "CommentChild1");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ workItem.setParameter("ParentId", task.getId());
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ //Create the child task2
+ workItem = new WorkItemImpl();
+ workItem.setName("Human Task2");
+ workItem.setParameter("TaskName", "TaskNameChild2");
+ workItem.setParameter("Comment", "CommentChild2");
+ workItem.setParameter("Priority", "10");
+ workItem.setParameter("ActorId", "Darth Vader");
+ workItem.setParameter("ParentId", task.getId());
+ handler.executeWorkItem(workItem, manager);
+
+ Thread.sleep(500);
+
+ //Start the parent task
+ System.out.println("Starting task " + task.getId());
+ BlockingTaskOperationMessageResponseHandler operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(task.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started task " + task.getId());
+
+ //Check if the parent task is InProgress
+ BlockingGetTaskMessageResponseHandler getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(task.getId(), getTaskResponseHandler);
+ Task parentTask = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.InProgress, parentTask.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
+
+ //Get all the subtask created for the parent task based on the potential owner
+ responseHandler = new BlockingTaskSummaryMessageResponseHandler();
+ humanTaskClient.getSubTasksAssignedAsPotentialOwner(parentTask.getId(), "Darth Vader", "en-UK", responseHandler);
+ List<TaskSummary> subTasks = responseHandler.getResults();
+ Assert.assertEquals(2, subTasks.size());
+ TaskSummary subTaskSummary1 = subTasks.get(0);
+ TaskSummary subTaskSummary2 = subTasks.get(1);
+ Assert.assertNotNull(subTaskSummary1);
+ Assert.assertNotNull(subTaskSummary2);
+
+ //Starting the sub task 1
+ System.out.println("Starting sub task " + subTaskSummary1.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started sub task " + subTaskSummary1.getId());
+
+ //Starting the sub task 2
+ System.out.println("Starting sub task " + subTaskSummary2.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Started sub task " + subTaskSummary2.getId());
+
+ //Check if the child task 1 is InProgress
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
+ Task subTask1 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.InProgress, subTask1.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
+
+ //Check if the child task 2 is InProgress
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
+ Task subTask2 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.InProgress, subTask2.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
+
+ // Complete the parent task
+ System.out.println("Completing parent task " + parentTask.getId());
+ operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
+ humanTaskClient.skip(parentTask.getId(), "Darth Vader", operationResponseHandler);
+ operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+ System.out.println("Completed parent task " + parentTask.getId());
+
+ //Check if the child task 1 is Completed
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
+ subTask1 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.Completed, subTask1.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
+
+ //Check if the child task 2 is Completed
+ getTaskResponseHandler = new BlockingGetTaskMessageResponseHandler();
+ humanTaskClient.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
+ subTask2 = getTaskResponseHandler.getTask();
+ Assert.assertEquals(Status.Completed, subTask2.getTaskData().getStatus());
+ Assert.assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
+
+ Assert.assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+ }
+
+ private class TestWorkItemManager implements WorkItemManager {
+
+ private volatile boolean completed;
+ private volatile boolean aborted;
+ private volatile Map<String, Object> results;
+
+ public synchronized boolean waitTillCompleted(long time) {
+ if (!isCompleted()) {
+ try {
+ wait(time);
+ } catch (InterruptedException e) {
+ // swallow and return state of completed
+ }
+ }
+
+ return isCompleted();
+ }
+
+ public synchronized boolean waitTillAborted(long time) {
+ if (!isAborted()) {
+ try {
+ wait(time);
+ } catch (InterruptedException e) {
+ // swallow and return state of aborted
+ }
+ }
+
+ return isAborted();
+ }
+
+ public void abortWorkItem(long id) {
+ setAborted(true);
+ }
+
+ public synchronized boolean isAborted() {
+ return aborted;
+ }
+
+ private synchronized void setAborted(boolean aborted) {
+ this.aborted = aborted;
+ notifyAll();
+ }
+
+ public void completeWorkItem(long id, Map<String, Object> results) {
+ this.results = results;
+ setCompleted(true);
+ }
+
+ private synchronized void setCompleted(boolean completed) {
+ this.completed = completed;
+ notifyAll();
+ }
+
+ public synchronized boolean isCompleted() {
+ return completed;
+ }
+
+ public WorkItem getWorkItem(long id) {
+ return null;
+ }
+
+ public Set<WorkItem> getWorkItems() {
+ return null;
+ }
+
+ public Map<String, Object> getResults() {
+ return results;
+ }
+
+ public void internalAbortWorkItem(long id) {
+ }
+
+ public void internalAddWorkItem(WorkItem workItem) {
+ }
+
+ public void internalExecuteWorkItem(WorkItem workItem) {
+ }
+
+ public void registerWorkItemHandler(String workItemName, WorkItemHandler handler) {
+ }
+
+ @Override
+ public void registerWorkItemHandler(String workItemName, org.drools.runtime.process.WorkItemHandler handler) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ }
+
+
+
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandlerTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandlerTest.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/java/org/drools/services/task/CommandBasedServicesWSHumanTaskHandlerTest.java 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,218 @@
+package org.drools.services.task;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import org.apache.commons.collections.map.HashedMap;
+
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.ExecutionNodeConnection;
+import org.drools.services.RemoteExecutionNodeConnection;
+import org.drools.services.generic.ExecutionNodeData;
+import org.drools.services.generic.GenericConnector;
+import org.drools.services.generic.GenericMessageHandlerImpl;
+import org.drools.services.remote.mina.MinaAcceptor;
+import org.drools.services.remote.mina.MinaConnector;
+import org.drools.services.remote.mina.MinaIoHandler;
+import org.drools.task.Group;
+import org.drools.task.User;
+import org.drools.task.service.SendIcal;
+import org.drools.task.service.TaskService;
+import org.drools.task.service.TaskServiceSession;
+import org.junit.After;
+import org.junit.Before;
+import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+import org.mvel2.compiler.ExpressionCompiler;
+
+public class CommandBasedServicesWSHumanTaskHandlerTest extends BaseTaskServiceTest {
+
+
+
+ private MinaAcceptor server;
+ private MinaAcceptor humanTaskServer;
+ private ExecutionNodeConnection nodeConnection;
+
+ protected EntityManagerFactory emf;
+
+ protected static TaskService taskService;
+ protected TaskServiceSession taskSession;
+ protected GenericConnector htMinaClient;
+ protected GenericConnector minaClient;
+ @Before
+ public void setUpTaskService() throws Exception {
+ Properties conf = new Properties();
+ conf.setProperty("mail.smtp.host", "localhost");
+ conf.setProperty("mail.smtp.port", "2345");
+ conf.setProperty("from", "from at domain.com");
+ conf.setProperty("replyTo", "replyTo at domain.com");
+ conf.setProperty("defaultLanguage", "en-UK");
+ SendIcal.initInstance(conf);
+
+ // Use persistence.xml configuration
+ emf = Persistence.createEntityManagerFactory("org.drools.task");
+
+ taskService = new TaskService(emf, SystemEventListenerFactory.getSystemEventListener());
+ taskSession = taskService.createSession();
+// MockUserInfo userInfo = new MockUserInfo();
+// taskService.setUserinfo(userInfo);
+ Map vars = new HashedMap();
+
+ Reader reader = null;
+
+ try {
+ reader = new InputStreamReader(new ClassPathResource("org/drools/task/LoadUsers.mvel").getInputStream());
+ users = (Map<String, User>) eval(reader, vars);
+ for (User user : users.values()) {
+ taskSession.addUser(user);
+ }
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ reader = null;
+ }
+
+ try {
+ reader = new InputStreamReader(new ClassPathResource("org/drools/task/LoadGroups.mvel").getInputStream());
+ groups = (Map<String, Group>) eval(reader, vars);
+ for (Group group : groups.values()) {
+ taskSession.addGroup(group);
+ }
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+
+
+ SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+ ExecutionNodeData nodeData = new ExecutionNodeData();
+ // Setup Execution Node Server
+ SocketAcceptor acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ this.server = new MinaAcceptor(acceptor, address);
+ this.server.start();
+ Thread.sleep(5000);
+ // End Execution Server
+
+ // Human task Server configuration
+ SocketAddress htAddress = new InetSocketAddress("127.0.0.1", 9124);
+ SocketAcceptor htAcceptor = new NioSocketAcceptor();
+
+ htAcceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new TaskServerMessageHandlerImpl(taskService,
+ SystemEventListenerFactory.getSystemEventListener())));
+ this.humanTaskServer = new MinaAcceptor(htAcceptor, htAddress);
+ this.humanTaskServer.start();
+ Thread.sleep(5000);
+ // End Human task Server configuration
+
+ // setup the ht client
+ NioSocketConnector htclientConnector = new NioSocketConnector();
+ htclientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ htMinaClient = new MinaConnector("client ht",
+ htclientConnector,
+ htAddress,
+ SystemEventListenerFactory.getSystemEventListener());
+
+ boolean connected = htMinaClient.connect();
+ if (!connected) {
+ throw new IllegalArgumentException("Could not connect task client");
+ }
+
+ // setup RemoteService client
+ NioSocketConnector clientConnector = new NioSocketConnector();
+ clientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ minaClient = new MinaConnector("client SM",
+ clientConnector,
+ address,
+ SystemEventListenerFactory.getSystemEventListener());
+
+
+ this.nodeConnection = new RemoteExecutionNodeConnection("client Execution Node", minaClient); //new ServiceManagerRemoteClient("client SM", minaClient, services);
+ node = this.nodeConnection.connect();
+
+
+
+
+
+ KnowledgeBase kbase = this.node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ int sessionId = ksession.getId();
+
+ node.set(HumanTaskFactoryService.class, new HumanTaskServiceProviderRemoteClient(htMinaClient, sessionId));
+
+ this.humanTaskClient = this.node.get(HumanTaskFactoryService.class).newHumanTaskService();
+
+
+ this.handler = new CommandBasedServicesWSHumanTaskHandler(ksession);
+
+
+ }
+ @After
+ public void tearDown() throws Exception {
+ this.humanTaskClient.disconnect();
+ this.nodeConnection.disconnect();
+ this.handler.dispose();
+ this.server.stop();
+ this.humanTaskServer.stop();
+
+ taskSession.dispose();
+ emf.close();
+
+
+ }
+
+ public Object eval(Reader reader,
+ Map vars) {
+ try {
+ return eval(toString(reader),
+ vars);
+ } catch (IOException e) {
+ throw new RuntimeException("Exception Thrown",
+ e);
+ }
+ }
+
+ public String toString(Reader reader) throws IOException {
+ StringBuilder sb = new StringBuilder(1024);
+ int charValue;
+
+ while ((charValue = reader.read()) != -1) {
+ sb.append((char) charValue);
+ }
+ return sb.toString();
+ }
+
+ public Object eval(String str, Map vars) {
+ ExpressionCompiler compiler = new ExpressionCompiler(str.trim());
+
+ ParserContext context = new ParserContext();
+ context.addPackageImport("org.drools.task");
+ context.addPackageImport("org.drools.task.service");
+ context.addPackageImport("org.drools.task.query");
+ context.addPackageImport("java.util");
+
+ vars.put("now", new Date());
+ return MVEL.executeExpression(compiler.compile(context), vars);
+ }
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/drools.email.conf
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/drools.email.conf (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/drools.email.conf 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,5 @@
+from = from at domain.com
+replyTo = replyTo at domain.com
+mail.smtp.host = localhost
+mail.smtp.port = 25
+defaultLanguage = en-UK
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/orm.xml (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/orm.xml 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
+ version="1.0">
+ <named-query name="TasksAssignedAsBusinessAdministrator">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity businessAdministrator
+where
+ businessAdministrator.id = :userId and
+ businessAdministrator in elements ( t.peopleAssignments.businessAdministrators ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="TasksAssignedAsExcludedOwner">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity excludedOwners
+where
+ excludedOwners.id = :userId and
+ excludedOwners in elements ( t.peopleAssignments.excludedOwners ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="TasksAssignedAsPotentialOwner">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subject.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t
+ left join t.taskData.createdBy
+ left join t.taskData.actualOwner
+ left join t.subjects as subject,
+ I18NText names,
+ I18NText descriptions,
+ OrganizationalEntity potentialOwners
+where
+ potentialOwners.id = :userId and
+ potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subject.language = :language
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+
+
+
+ t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="TasksAssignedAsPotentialOwnerWithGroups">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity potentialOwners
+where
+ ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and
+ potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+
+ <named-query name="TasksAssignedAsPotentialOwnerByGroup">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity potentialOwners
+where
+ potentialOwners.id = :groupId and
+ potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+
+ <named-query name="SubTasksAssignedAsPotentialOwner">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity potentialOwners
+where
+ t.taskData.parentId = :parentId and
+ potentialOwners.id = :userId and
+ potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+
+<named-query name="GetSubTasksByParentTaskId">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions
+
+where
+ t.taskData.parentId = :parentId and
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+
+
+ <named-query name="TasksAssignedAsRecipient">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity recipients
+where
+ recipients.id = :userId and
+ recipients in elements ( t.peopleAssignments.recipients ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="TasksAssignedAsTaskInitiator">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity taskInitiator
+where
+ taskInitiator.id = :userId and
+ taskInitiator = t.peopleAssignments.taskInitiator and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="TasksAssignedAsTaskStakeholder">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions,
+ OrganizationalEntity taskStakeholder
+where
+ taskStakeholder.id = :userId and
+ taskStakeholder in elements ( t.peopleAssignments.taskStakeholders ) and
+
+ names.language = :language and
+ names in elements( t.names) and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="TasksOwned">
+ <query>
+select
+ new org.drools.task.query.TaskSummary(
+ t.id,
+ names.text,
+ subjects.text,
+ descriptions.text,
+ t.taskData.status,
+ t.priority,
+ t.taskData.skipable,
+ t.taskData.actualOwner,
+ t.taskData.createdBy,
+ t.taskData.createdOn,
+ t.taskData.activationTime,
+ t.taskData.expirationTime)
+from
+ Task t left join t.taskData.createdBy,
+ I18NText names,
+ I18NText subjects,
+ I18NText descriptions
+where
+ t.taskData.actualOwner.id = :userId and
+ names in elements( t.names) and
+ names.language = :language and
+
+ (
+ subjects.language = :language and
+ subjects in elements( t.subjects)
+ or t.subjects.size = 0
+ ) and
+
+ (
+ descriptions.language = :language and
+ descriptions in elements( t.descriptions)
+ or t.descriptions.size = 0
+ ) and
+
+ t.taskData.expirationTime is null
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+ <named-query name="UnescalatedDeadlines">
+ <query>
+select
+ new org.drools.task.query.DeadlineSummary(
+ t.id,
+ d.id,
+ d.date)
+from
+ Task t,
+ Deadline d
+where
+ (d in elements( t.deadlines.startDeadlines ) or d in elements( t.deadlines.endDeadlines ) ) and
+ d.escalated = false
+order by
+ d.date
+ </query>
+ <!-- hint name="org.hibernate.timeout" value="200"/ -->
+ </named-query>
+</entity-mappings>
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/persistence.xml (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/META-INF/persistence.xml 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<persistence version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
+http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence">
+ <persistence-unit name="org.drools.task">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <class>org.drools.task.Attachment</class>
+ <class>org.drools.task.Content</class>
+ <class>org.drools.task.BooleanExpression</class>
+ <class>org.drools.task.Comment</class>
+ <class>org.drools.task.Deadline</class>
+ <class>org.drools.task.Comment</class>
+ <class>org.drools.task.Deadline</class>
+ <class>org.drools.task.Delegation</class>
+ <class>org.drools.task.Escalation</class>
+ <class>org.drools.task.Group</class>
+ <class>org.drools.task.I18NText</class>
+ <class>org.drools.task.Notification</class>
+ <class>org.drools.task.EmailNotification</class>
+ <class>org.drools.task.EmailNotificationHeader</class>
+ <class>org.drools.task.PeopleAssignments</class>
+ <class>org.drools.task.Reassignment</class>
+ <class>org.drools.task.Status</class>
+ <class>org.drools.task.Task</class>
+ <class>org.drools.task.TaskData</class>
+ <class>org.drools.task.SubTasksStrategy</class>
+ <class>org.drools.task.OnParentAbortAllSubTasksEndStrategy</class>
+ <class>org.drools.task.OnAllSubTasksEndParentEndStrategy</class>
+
+ <class>org.drools.task.User</class>
+
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
+ <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
+ <property name="hibernate.connection.url" value="jdbc:h2:mem:mydb" />
+ <!-- property name="hibernate.connection.url" value="jdbc:h2:file:\dev\drools\trunk7\drools-process\drools-process-task\mydb"/ -->
+
+<!-- <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>-->
+<!-- <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> -->
+<!-- <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/postgres"/>-->
+
+
+ <property name="hibernate.connection.username" value="sa"/>
+ <property name="hibernate.connection.password" value="sasa"/>
+ <property name="hibernate.connection.autocommit" value="false" />
+ <property name="hibernate.max_fetch_depth" value="3"/>
+ <property name="hibernate.hbm2ddl.auto" value="create" />
+ <property name="hibernate.show_sql" value="true" />
+ </properties>
+ </persistence-unit>
+
+</persistence>
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,138 @@
+with ( new Task() ) {
+ priority = 100,
+ peopleAssignments = (with ( new PeopleAssignments() ) {
+ taskInitiator = users['darth' ],
+ potentialOwners = [users['bobba' ], users['jabba' ]],
+ excludedOwners = [users['dalai' ], users['christoper' ]],
+ taskStakeholders = [users['stuart' ], users['jane' ]],
+ businessAdministrators = [users['peter' ], users['steve' ]],
+ recipients = [users['sly' ], users['liz' ]]
+ }),
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'liz' ],
+ createdBy = users[ 'sly' ],
+ activationTime = new Date( 10000000 ),
+ createdOn = new Date( 10000000 ),
+ expirationTime = new Date( 10000000 ),
+ status = Status.Ready,
+ documentAccessType = AccessType.Inline,
+ documentType = "mvel",
+ documentContentId = 20,
+ attachments = [
+ (with ( new Attachment() ) {
+ accessType = AccessType.Inline,
+ attachedAt = new Date( 10000000 ),
+ attachedBy = users['liz' ],
+ contentType = "text",
+ name = "file.txt",
+ size = 5000,
+ attachmentContentId = 5
+ }),
+ (with ( new Attachment() ) {
+ accessType = AccessType.Url,
+ attachedAt = new Date( 10000000 ),
+ attachedBy = users['liz' ],
+ contentType = "text",
+ name = "file2.txt",
+ size = 500,
+ attachmentContentId = 3
+ })
+ ],
+ comments = [
+ (with ( new Comment ) {
+ addedBy = users['peter' ],
+ addedAt = new Date( 10000000 ),
+ text = "this is a short comment"
+ }),
+ (with ( new Comment ) {
+ addedBy = users['steve' ],
+ addedAt = new Date( 10000000 ),
+ text = "this is a loooooooooooooooooooooooooooooooooooooooooooooooong comment"
+ })
+ ]
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name" ),
+ new I18NText( "en-DK", "Dies ist mein task Name" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject" ),
+ new I18NText( "en-DK", "Das ist mein task Thema" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung" ) ],
+ delegation = ( with( new Delegation() ) {
+ allowed = AllowedToDelegate.PotentialOwners,
+ delegates = [ groups['crusaders' ], groups['knightsTempler' ] ]
+ }),
+ deadlines = ( with ( new Deadlines() ) {
+ startDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( 10000000 ),
+ escalated = true,
+ documentation = [ new I18NText( "en-UK", "Start Deadline documentation" ),
+ new I18NText( "en-DK", "Start Termin Dokumentation" ) ],
+ escalations = [
+ (with (new Escalation()) {
+ name = "My Start Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new Notification()) {
+ documentation = [ new I18NText( "en-UK", "Start Notification documentation" ),
+ new I18NText( "en-DK", "Start Anmeldung Dokumentation" ) ],
+ businessAdministrators = [ users['bruce' ], users['peter' ] ],
+ recipients = [ users['tony' ], users['darth' ] ],
+ names = [ new I18NText( "en-UK", "This is my start notification name" ),
+ new I18NText( "en-DK", "Dies ist mein start anmeldung Name" ) ],
+ subjects = [ new I18NText( "en-UK", "This is my start notification subject" ),
+ new I18NText( "en-DK", "Das ist mein start anmeldung Thema" ) ],
+ descriptions = [new I18NText( "en-UK", "This is my start notification description" ),
+ new I18NText( "en-DK", "Das ist mein start anmeldung Beschreibung" ) ]
+ })
+ ],
+ reassignments = [
+ (with (new Reassignment()) {
+ documentation = [ new I18NText( "en-UK", "Start Reassignment documentation" ),
+ new I18NText( "en-DK", "Start Neuzuweisung Dokumentation" ) ],
+ potentialOwners = [ users['bobba' ], users['luke' ] ]
+ })
+ ]
+
+ })
+ ]
+ })
+ ],
+ endDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( 10000000 ),
+ escalated = true,
+ documentation = [ new I18NText( "en-UK", "End Deadline documentation" ),
+ new I18NText( "en-DK", "Ende Termin Dokumentation" ) ],
+ escalations = [
+ (with (new Escalation()) {
+ name = "My End Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new Notification()) {
+ documentation = [ new I18NText( "en-UK", "End Notification documentation" ),
+ new I18NText( "en-DK", "Ende Anmeldung Dokumentation" ) ],
+ businessAdministrators = [ users['bobba' ], users['darth' ] ],
+ recipients = [ users['liz' ], users['jane' ] ],
+ names = [ new I18NText( "en-UK", "This is my end notification name" ),
+ new I18NText( "en-DK", "Dies ist mein ende anmeldung Name" ) ],
+ subjects = [ new I18NText( "en-UK", "This is my end notification subject" ),
+ new I18NText( "en-DK", "Das ist mein ende anmeldung Thema" ) ],
+ descriptions = [new I18NText( "en-UK", "This is my end notification description" ),
+ new I18NText( "en-DK", "Das ist mein ende anmeldung Beschreibung" ) ]
+ })
+ ],
+ reassignments = [
+ (with (new Reassignment()) {
+ documentation = [ new I18NText( "en-UK", "End Reassignment documentation" ),
+ new I18NText( "en-DK", "Ende Neuzuweisung Dokumentation" ) ],
+ potentialOwners = [ users['stuart' ], users['dalai' ] ]
+ })
+ ]
+
+ })
+ ]
+ })
+ ]
+ })
+};
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadGroups.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadGroups.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadGroups.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,6 @@
+groups = [ 'knightsTempler' : new Group( "Knights Templer" ),
+ 'crusaders' : new Group( "Crusaders" )
+ ];
+
+return groups;
+
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadUsers.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadUsers.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/LoadUsers.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,12 @@
+users = [ 'darth' : new User('Darth Vader'),
+ 'bobba' : new User( 'Bobba Fet'), 'jabba' : new User('Jabba Hutt'),
+ 'dalai' : new User('Dalai Lama'), 'christoper' : new User('Christoper Columbus'),
+ 'stuart' : new User('Stuart Little'), 'jane' : new User('Jane Austin'),
+ 'peter' : new User('Peter Parker'), 'steve' : new User('Steve Rogers'),
+ 'sly' : new User('Sly Stalone'), 'liz' : new User('Elizabeth Windsor'),
+ 'bruce' : new User('Bruce Wayne' ), 'tony' : new User('Tony Stark'),
+ 'luke' : new User('Luke Cage'), 'admin' : new User('Administrator')
+ ];
+
+return users;
+
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/QueryData_UnescalatedDeadlines.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/QueryData_UnescalatedDeadlines.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/QueryData_UnescalatedDeadlines.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,121 @@
+format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
+
+tasks = [
+ (with ( new Task() ) {
+ priority = 20,
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'peter' ],
+ createdBy = users[ 'sly' ],
+ createdOn = format.parse( "15/Jan/2008" ),
+ activationTime = format.parse( "20/Jan/2008" ),
+ status = Status.Created,
+ }),
+ deadlines = ( with ( new Deadlines() ) {
+ startDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( now.getTime() + 20000 ),
+ escalated = false,
+ escalations = [
+ (with (new Escalation()) {
+ name = "My Start Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new Notification()) {
+ recipients = [ users['tony' ], users['darth' ] ],
+ })
+ ],
+ reassignments = [
+ (with (new Reassignment()) {
+ potentialOwners = [ users['bobba' ], users['luke' ] ]
+ })
+ ]
+
+ })
+ ]
+ })
+ ],
+ endDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( now.getTime() + 22000 ),
+ escalated = false,
+ escalations = [
+ (with (new Escalation()) {
+ name = "My End Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new Notification()) {
+ recipients = [ users['liz' ], users['jane' ] ],
+ })
+ ],
+ reassignments = [
+ (with (new Reassignment()) {
+ potentialOwners = [ users['stuart' ], users['dalai' ] ]
+ })
+ ]
+
+ })
+ ]
+ })
+ ]
+ })
+ }),
+ (with ( new Task() ) {
+ priority = 150,
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'steve' ],
+ createdBy = users[ 'tony' ],
+ createdOn = format.parse( "15/Feb/2008" ),
+ activationTime = format.parse( "20/Feb/2008" ),
+ status = Status.Created,
+ }),
+ deadlines = ( with ( new Deadlines() ) {
+ startDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( now.getTime() - 1000 ),
+ escalated = true,
+ escalations = [
+ (with (new Escalation()) {
+ name = "My Start Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new Notification()) {
+ recipients = [ users['tony' ], users['darth' ] ],
+ })
+ ],
+ reassignments = [
+ (with (new Reassignment()) {
+ potentialOwners = [ users['bobba' ], users['luke' ] ]
+ })
+ ]
+
+ })
+ ]
+ })
+ ],
+ endDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( now.getTime() + 24000 ),
+ escalations = [
+ (with (new Escalation()) {
+ name = "My End Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new Notification()) {
+ recipients = [ users['liz' ], users['jane' ] ],
+ })
+ ],
+ reassignments = [
+ (with (new Reassignment()) {
+ potentialOwners = [ users['stuart' ], users['dalai' ] ]
+ })
+ ]
+
+ })
+ ]
+ })
+ ]
+ })
+ })
+]
+
+return tasks;
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithNotification.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithNotification.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithNotification.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,29 @@
+with ( new Task() ) {
+ taskData = (with ( new TaskData() ) {
+ documentAccessType = AccessType.Inline,
+ documentType = "MVEL"
+ }),
+ deadlines = ( with ( new Deadlines() ) {
+ startDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( now.time + 5000 ),
+ escalations = [
+ (with (new Escalation()) {
+ name = "My Start Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ notifications = [
+ (with (new EmailNotification()) {
+ recipients = [ users['tony' ], users['darth' ] ],
+ emailHeaders = [ 'en-UK' : (with (new EmailNotificationHeader()) {
+ language = 'en-UK',
+ subject = "@{doc.subject}",
+ body = "@{doc.body}"
+ }) ]
+ })
+ ]
+ })
+ ]
+ })
+ ]
+ })
+};
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithReassignment.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithReassignment.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/DeadlineWithReassignment.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,25 @@
+with ( new Task() ) {
+ peopleAssignments = (with ( new PeopleAssignments() ) {
+ potentialOwners = [users['luke' ], users['tony']],
+ }),
+ taskData = (with ( new TaskData() ) {
+ documentAccessType = AccessType.Inline,
+ documentType = "MVEL"
+ }),
+ deadlines = ( with ( new Deadlines() ) {
+ startDeadlines = [
+ (with (new Deadline()) {
+ date = new Date( now.time + 5000 ),
+ escalations = [
+ (with (new Escalation()) {
+ name = "My Start Escalation",
+ constraints = [new BooleanExpression( "mvel", "true" )],
+ reassignments = [(with ( new Reassignment() ) {
+ potentialOwners = [users['bobba' ], users['jabba' ]]
+ })]
+ })
+ ]
+ })
+ ]
+ })
+};
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryData_TasksOwned.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryData_TasksOwned.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryData_TasksOwned.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,117 @@
+format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
+
+tasks = [
+ (with ( new Task() ) {
+ priority = 20,
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'peter' ],
+ createdOn = format.parse( "15/Jan/2008" ),
+ activationTime = format.parse( "20/Jan/2008" ),
+ status = Status.Created,
+ }),
+ peopleAssignments = (with ( new PeopleAssignments() ) {
+ taskInitiator = users['darth' ],
+ potentialOwners = [users['bobba' ], users['jabba' ]],
+ excludedOwners = [users['liz' ], users['dalai' ], users['christoper' ]]
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name Jan" ),
+ new I18NText( "en-DK", "Dies ist mein task Name Jan" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject Jan" ),
+ new I18NText( "en-DK", "Das ist mein task Thema Jan" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description Jan" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung Jan" ) ]
+ }),
+ (with ( new Task() ) {
+ priority = 150,
+ peopleAssignments = (with ( new PeopleAssignments() ) {
+ excludedOwners = [users['liz' ], users['dalai' ], users['christoper' ]],
+ potentialOwners = [users['bobba' ], users['jabba' ]],
+ taskStakeholders = [users['liz' ], users['stuart' ], users['jane' ]],
+ businessAdministrators = [users['peter' ], users['steve' ]],
+ recipients = [users['sly' ], users['bobba' ], users['liz' ]]
+ }),
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'steve' ],
+ createdBy = users[ 'tony' ],
+ createdOn = format.parse( "15/Feb/2008" ),
+ activationTime = format.parse( "20/Feb/2008" ),
+ status = Status.Created,
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name Feb" ),
+ new I18NText( "en-DK", "Dies ist mein task Name Feb" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject Feb" ),
+ new I18NText( "en-DK", "Das ist mein task Thema Feb" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description Feb" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung Feb" ) ]
+ }),
+ (with ( new Task() ) {
+ priority = 90,
+ peopleAssignments = (with ( new PeopleAssignments() ) {
+ businessAdministrators = [users['liz' ], users['darth' ]],
+ potentialOwners = [users['bobba' ], users['jabba' ]],
+ }),
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'peter' ],
+ createdBy = users[ 'steve' ],
+ createdOn = format.parse( "15/Mar/2008" ),
+ activationTime = format.parse( "20/Mar/2008" ),
+ status = Status.Created,
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name Mar" ),
+ new I18NText( "en-DK", "Dies ist mein task Name Mar" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject Mar" ),
+ new I18NText( "en-DK", "Das ist mein task Thema Mar" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description Mar" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung Mar" ) ]
+ }),
+ (with ( new Task() ) {
+ priority = 20,
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'darth' ],
+ createdBy = users[ 'bobba' ],
+ createdOn = format.parse( "15/Apr/2008" ),
+ activationTime = format.parse( "20/Apr/2008" ),
+ status = Status.Created,
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name Apr" ),
+ new I18NText( "en-DK", "Dies ist mein task Name Apr" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject Apr" ),
+ new I18NText( "en-DK", "Das ist mein task Thema Apr" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description Apr" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung Apr" ) ]
+ }),
+ (with ( new Task() ) {
+ priority = 20,
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'peter' ],
+ createdBy = users[ 'steve' ],
+ createdOn = format.parse( "15/May/2008" ),
+ activationTime = format.parse( "20/May/2008" ),
+ status = Status.Created,
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name May" ),
+ new I18NText( "en-DK", "Dies ist mein task Name May" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject May" ),
+ new I18NText( "en-DK", "Das ist mein task Thema May" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description May" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung May" ) ]
+ }),
+ (with ( new Task() ) {
+ priority = 15,
+ taskData = (with ( new TaskData() ) {
+ actualOwner = users[ 'steve' ],
+ createdBy = users[ 'steve' ],
+ createdOn = format.parse( "15/Jun/2008" ),
+ activationTime = format.parse( "20/Jun/2008" ),
+ status = Status.Created,
+ }),
+ names = [ new I18NText( "en-UK", "This is my task name Jun" ),
+ new I18NText( "en-DK", "Dies ist mein task Name Jun" )],
+ subjects = [ new I18NText( "en-UK", "This is my task subject Jun" ),
+ new I18NText( "en-DK", "Das ist mein task Thema Jun" ) ],
+ descriptions = [ new I18NText( "en-UK", "This is my task description Jun" ),
+ new I18NText( "en-DK", "Das ist mein task Beschreibung Jun" ) ]
+ })
+]
+
+return tasks;
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,27 @@
+format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
+
+[ 'darth' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
+ Status.Ready, 20, false, users[ 'peter' ], null,
+ format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ) ],
+ 'bobba' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
+ Status.Ready, 20, false, users[ 'peter' ], null,
+ format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
+ new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
+ format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ),
+ new TaskSummary( 1, 'This is my task name Mar', 'This is my task subject Mar', 'This is my task description Mar',
+ Status.Ready, 90, false, users[ 'peter' ], users[ 'steve' ],
+ format.parse( "15/Mar/2008" ), format.parse( "20/Mar/2008" ), null ) ],
+ 'steve' : [ new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
+ format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ) ],
+ 'liz' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
+ Status.Ready, 20, false, users[ 'peter' ], null,
+ format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
+ new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
+ format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ) ],
+ 'sly' : [ new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
+ format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ) ]
+]
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,21 @@
+format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
+
+[ 'peter' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
+ Status.Ready, 20, false, users[ 'peter' ], null,
+ format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
+ new TaskSummary( 1, 'This is my task name May', 'This is my task subject May', 'This is my task description May',
+ Status.Created, 20, false, users[ 'peter' ], users[ 'steve' ],
+ format.parse( "15/May/2008" ), format.parse( "20/May/2008" ), null ),
+ new TaskSummary( 1, 'This is my task name Mar', 'This is my task subject Mar', 'This is my task description Mar',
+ Status.Ready, 90, false, users[ 'peter' ], users[ 'steve' ],
+ format.parse( "15/Mar/2008" ), format.parse( "20/Mar/2008" ), null ) ],
+ 'steve' : [new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
+ format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ),
+ new TaskSummary( 1, 'This is my task name Jun', 'This is my task subject Jun', 'This is my task description Jun',
+ Status.Created, 15, false, users[ 'steve' ], users[ 'steve' ],
+ format.parse( "15/Jun/2008" ), format.parse( "20/Jun/2008" ), null ) ]
+ 'darth' : [ new TaskSummary( 1, 'This is my task name Apr', 'This is my task subject Apr', 'This is my task description Apr',
+ Status.Created, 20, false, users[ 'darth' ], users[ 'bobba' ],
+ format.parse( "15/Apr/2008" ), format.parse( "20/Apr/2008" ), null ) ]
+]
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel 2010-03-12 19:53:36 UTC (rev 32063)
@@ -0,0 +1,21 @@
+format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
+
+[ 'peter' : [ new TaskSummary( 1, 'Dies ist mein task Name Jan', 'Das ist mein task Thema Jan', 'Das ist mein task Beschreibung Jan',
+ Status.Ready, 20, false, users[ 'peter' ], null,
+ format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
+ new TaskSummary( 1, 'Dies ist mein task Name May', 'Das ist mein task Thema May', 'Das ist mein task Beschreibung May',
+ Status.Created, 20, false, users[ 'peter' ], users[ 'steve' ],
+ format.parse( "15/May/2008" ), format.parse( "20/May/2008" ),null ),
+ new TaskSummary( 1, 'Dies ist mein task Name Mar', 'Das ist mein task Thema Mar', 'Das ist mein task Beschreibung Mar',
+ Status.Ready, 90, false, users[ 'peter' ], users[ 'steve' ],
+ format.parse( "15/Mar/2008" ), format.parse( "20/Mar/2008" ), null ) ],
+ 'steve' : [ new TaskSummary( 1, 'Dies ist mein task Name Feb', 'Das ist mein task Thema Feb', 'Das ist mein task Beschreibung Feb',
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
+ format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ),
+ new TaskSummary( 1, 'Dies ist mein task Name Jun', 'Das ist mein task Thema Jun', 'Das ist mein task Beschreibung Jun',
+ Status.Created, 15, false, users[ 'steve' ], users[ 'steve' ],
+ format.parse( "15/Jun/2008" ), format.parse( "20/Jun/2008" ), null ) ]
+ 'darth' : [ new TaskSummary( 1, 'Dies ist mein task Name Apr', 'Das ist mein task Thema Apr', 'Das ist mein task Beschreibung Apr',
+ Status.Created, 20, false, users[ 'darth' ], users[ 'bobba' ],
+ format.parse( "15/Apr/2008" ), format.parse( "20/Apr/2008" ), null ) ]
+]
\ No newline at end of file
More information about the jboss-svn-commits
mailing list