[jboss-svn-commits] JBL Code SVN: r33495 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid and 15 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 14 15:23:10 EDT 2010


Author: salaboy21
Date: 2010-06-14 15:23:09 -0400 (Mon, 14 Jun 2010)
New Revision: 33495

Added:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/task/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/task/MockUserInfo.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/drools.email.conf
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/orm.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/persistence.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadGroups.mvel
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadUsers.mvel
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/test/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/test/java/
Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java
Log:
Adding support HumanTask Service Nodes in Drools Grid Services

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml	2010-06-14 19:23:09 UTC (rev 33495)
@@ -0,0 +1,39 @@
+<?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-grid</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.1.0.SNAPSHOT</version>
+    </parent>
+    <groupId>org.drools</groupId>
+    <artifactId>drools-grid-remote-dir-min</artifactId>
+ 
+    <name>Drools :: Grid :: Remote Directory :: Mina</name>
+  
+    <dependencies>
+        
+
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-remote-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </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>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java	2010-06-14 18:29:30 UTC (rev 33494)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java	2010-06-14 19:23:09 UTC (rev 33495)
@@ -75,7 +75,7 @@
     }
 
     /**
-     * @throws IllegalStateException if unnable to connect to node
+     * @throws IllegalStateException if unable to connect to node
      */
     public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
         ExecutionNode node = null;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/pom.xml	2010-06-14 18:29:30 UTC (rev 33494)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/pom.xml	2010-06-14 19:23:09 UTC (rev 33495)
@@ -9,7 +9,7 @@
     </parent>
     <artifactId>drools-grid-remote-mina</artifactId>
     <version>5.1.0.SNAPSHOT</version>
-    <name>Drools :: Grid :: Remote Impl :: Mina</name>
+    <name>Drools :: Grid :: Remote Node :: Mina</name>
 
     <dependencies>
      

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java	2010-06-14 18:29:30 UTC (rev 33494)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java	2010-06-14 19:23:09 UTC (rev 33495)
@@ -15,7 +15,12 @@
 
     public HumanTaskService getTaskClient() {
         GenericConnection connection = getConnector().getConnection();
-        return connection.getTaskService(new ReturnFirstHumanTaskServiceSelectionStrategy(1, getConnector()));
+        org.drools.grid.task.HumanTaskService htService = (org.drools.grid.task.HumanTaskService) connection.getTaskService(new ReturnFirstHumanTaskServiceSelectionStrategy(1, getConnector()));
+        
+        if(htService.connect()){
+            return htService;
+        }
+        return null;
     }
 
     

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java	2010-06-14 18:29:30 UTC (rev 33494)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java	2010-06-14 19:23:09 UTC (rev 33495)
@@ -14,33 +14,88 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.services;
 
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.rmi.RemoteException;
-import org.drools.grid.services.local.LocalDirectoryProvider;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.services.DirectoryInstance;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+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.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
 import org.drools.grid.services.GenericProvider;
+import org.drools.grid.services.GridResource;
 import org.drools.grid.services.GridTopology;
 import org.drools.grid.services.TaskServerInstance;
-import org.drools.grid.services.local.LocalEnvironmentProvider;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
 import org.drools.grid.services.remote.task.MinaTaskEnvironmentProvider;
-import org.drools.grid.services.strategies.DirectoryInstanceByPrioritySelectionStrategy;
-import org.drools.grid.HumanTaskService;
+import org.drools.grid.task.CommandBasedServicesWSHumanTaskHandler;
+import org.drools.grid.task.HumanTaskService;
+import org.drools.grid.task.TaskServerMessageHandlerImpl;
+import org.drools.grid.task.responseHandlers.BlockingTaskOperationMessageResponseHandler;
+import org.drools.grid.task.responseHandlers.BlockingTaskSummaryMessageResponseHandler;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.process.instance.impl.WorkItemImpl;
+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.task.MockUserInfo;
+import org.drools.task.Group;
+import org.drools.task.Status;
+import org.drools.task.User;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.MinaTaskServer;
+import org.drools.task.service.TaskService;
+import org.drools.task.service.TaskServiceSession;
+
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+import org.mvel2.compiler.ExpressionCompiler;
 
 /**
  *
  * @author salaboy
  */
 public class RegisterTaskTest {
-
+    private GridTopology grid;
+    private MinaAcceptor serverTask;
+    private MinaAcceptor serverNode;
+    private HumanTaskService client;
+    private EntityManagerFactory emf;
+    private TaskService taskService;
+    private TaskServiceSession taskSession;
+    protected Map<String, User> users;
+    protected Map<String, Group> groups;
+    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 CommandBasedServicesWSHumanTaskHandler handler;
     public RegisterTaskTest() {
     }
 
@@ -53,69 +108,304 @@
     }
 
     @Before
-    public void setUp() {
+    public void setUp() throws InterruptedException, IOException {
+
+        //Task Related Stuff
+        // 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();
+            }
+        }
+
+
+         // Human task Server configuration
+        SocketAddress htAddress = new InetSocketAddress("127.0.0.1", 9123);
+        SocketAcceptor htAcceptor = new NioSocketAcceptor();
+
+        htAcceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new TaskServerMessageHandlerImpl(taskService,
+                SystemEventListenerFactory.getSystemEventListener())));
+        this.serverTask = new MinaAcceptor(htAcceptor, htAddress);
+        this.serverTask.start();
+        Thread.sleep(5000);
+        // End Execution Server
+
+        //Execution Node related stuff
+
+           System.out.println("Server 1 Starting!");
+        // the servers should be started in a different machine (jvm or physical) or in another thread
+        SocketAddress address = new InetSocketAddress("127.0.0.1", 9124);
+        NodeData nodeData = new NodeData();
+        // setup Server
+        SocketAcceptor acceptor = new NioSocketAcceptor();
+        acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new GenericMessageHandlerImpl(nodeData,
+                SystemEventListenerFactory.getSystemEventListener())));
+        serverNode = new MinaAcceptor(acceptor, address);
+        serverNode.start();
+        System.out.println("Server 1 Started! at = " + address.toString());
+
+        Thread.sleep(5000);
+
     }
 
     @After
-    public void tearDown() {
-    }
+    public void tearDown() throws RemoteException, InterruptedException {
+        client.disconnect();
 
-    
-     @Test
-     public void MinaTaskTest() throws RemoteException {
-        GridTopology grid = new GridTopology("MyBusinessUnit");
-        
-        GenericProvider remoteTaskProvider = new MinaTaskEnvironmentProvider("MyMinaTask","127.0.0.1", 9213 );
+        grid.disconectAllClients();
 
-        grid.registerGridResource("MyMinaTask", remoteTaskProvider);
         
-        TaskServerInstance taskServer = grid.getGridResource("MyMinaTask", TaskServerInstance.class);
         
-        Assert.assertNotNull(taskServer);
+        handler.dispose();
 
-        HumanTaskService client = taskServer.getTaskClient();
-        Assert.assertNotNull(client);
+        serverNode.stop();
+        System.out.println("Execution Server Stopped!");
+
+        serverTask.stop();
+        System.out.println("Task Server Stopped!");
         
+        taskSession.dispose();
+        emf.close();
         
         
 
-     }
 
-     @Test
-     public void multiDirectoryLocalTest() throws RemoteException {
-        GridTopology grid = new GridTopology("MyBusinessUnit");
-        GenericProvider localDirProvider = new LocalDirectoryProvider();
-        GenericProvider localDirProvider2 = new LocalDirectoryProvider();
-        GenericProvider localEnvProvider = new LocalEnvironmentProvider();
-        GenericProvider localEnvProvider2 = new LocalEnvironmentProvider();
 
-        grid.registerGridResource("MyLocalDir", localDirProvider);
-        grid.registerGridResource("MyLocalDir2", localDirProvider2);
-        grid.registerGridResource("MyLocalEnv", localEnvProvider);
-        grid.registerGridResource("MyLocalEnv2", localEnvProvider2);
+    }
 
+    @Test
+    public void MinaTaskTest() throws RemoteException, InterruptedException {
+        grid = new GridTopology("MyBusinessUnit");
 
+        GenericProvider remoteTaskProvider = new MinaTaskEnvironmentProvider("MyMinaTask", "127.0.0.1", 9123);
 
-        //DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
-        DirectoryInstance directory = grid.getGridResource("MyLocalDir", DirectoryInstance.class);
-        Assert.assertNotNull(directory);
+        grid.registerGridResource("MyMinaTask", remoteTaskProvider);
 
-        DirectoryNodeService dir = directory.getDirectoryService();
-        Assert.assertNotNull(dir);
+        TaskServerInstance taskServer = grid.getGridResource("MyMinaTask", TaskServerInstance.class);
+
+        //Create the provider
+        MinaEnvironmentProvider provider = new MinaEnvironmentProvider("Mina1", "127.0.0.1", 9124);
+        //Register the provider into the topology
+        grid.registerGridResource("MyMinaExecutionEnv1", provider);
+
+        Assert.assertNotNull(taskServer);
+
+        client = (HumanTaskService) taskServer.getTaskClient();
+        Assert.assertNotNull(client);
         
-        Assert.assertEquals(3, dir.getDirectoryMap().size());
 
-        DirectoryInstance directory2 = grid.getGridResource("MyLocalDir2", DirectoryInstance.class);
-        Assert.assertNotNull(directory2);
+        //Create a task to test the HT client. For that we need to have a ksession with a workitem that creates it
+        GridResource ee = grid.getGridResource("MyMinaExecutionEnv1");
+        Assert.assertNotNull(ee);
 
-        DirectoryNodeService dir2 = directory2.getDirectoryService();
-        Assert.assertNotNull(dir2);
+        // Give me an ExecutionNode in the selected environment
+        // For the Mina we have just one Execution Node per server instance
+        ExecutionNode node = grid.getExecutionNode(ee);
 
-        Assert.assertEquals(2, dir2.getDirectoryMap().size());
+        Assert.assertNotNull(node);
+         KnowledgeBuilder kbuilder =
+                node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
 
 
+        KnowledgeBase kbase =
+                node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+        Assert.assertNotNull(kbase);
 
-     }
-     
+        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
 
-}
\ No newline at end of file
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        Assert.assertNotNull(ksession);
+
+        handler = new CommandBasedServicesWSHumanTaskHandler(ksession);
+        handler.setAddress("127.0.0.1", 9123);
+
+        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();
+        client.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();
+        client.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();
+        client.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);
+
+
+    }
+
+    private Object eval(Reader reader, Map<String, Object> vars) {
+        try {
+            return eval(toString(reader), vars);
+        } catch (IOException e) {
+            throw new RuntimeException("Exception Thrown", e);
+        }
+    }
+
+    private String toString(Reader reader) throws IOException {
+        int charValue = 0;
+        StringBuffer sb = new StringBuffer(1024);
+        while ((charValue = reader.read()) != -1) {
+            // result = result + (char) charValue;
+            sb.append((char) charValue);
+        }
+        return sb.toString();
+    }
+
+    private Object eval(String str, Map<String, Object> 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);
+    }
+
+    
+
+}
+
+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) {
+        }
+
+
+
+    }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-06-14 18:29:30 UTC (rev 33494)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-06-14 19:23:09 UTC (rev 33495)
@@ -88,6 +88,7 @@
 
     @After
     public void tearDown() {
+        server1.stop();
     }
 
     

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/task/MockUserInfo.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/task/MockUserInfo.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/task/MockUserInfo.java	2010-06-14 19:23:09 UTC (rev 33495)
@@ -0,0 +1,77 @@
+package org.drools.services.task;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.drools.task.Group;
+import org.drools.task.OrganizationalEntity;
+import org.drools.task.UserInfo;
+
+public class MockUserInfo implements UserInfo {
+
+    private Map<Group, List<OrganizationalEntity>> groups = new HashMap<Group, List<OrganizationalEntity>>();
+
+    private Map<OrganizationalEntity, String> emails = new HashMap<OrganizationalEntity, String>();
+
+    private Map<OrganizationalEntity, String> languages = new HashMap<OrganizationalEntity, String>();
+
+    private Map<OrganizationalEntity, String> displayNames = new HashMap<OrganizationalEntity, String>();
+
+    public Map<Group, List<OrganizationalEntity>> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(Map<Group, List<OrganizationalEntity>> groups) {
+        this.groups = groups;
+    }
+
+    public Map<OrganizationalEntity, String> getEmails() {
+        return emails;
+    }
+
+    public void setEmails(Map<OrganizationalEntity, String> emails) {
+        this.emails = emails;
+    }
+
+    public String getEmailForEntity(OrganizationalEntity entity) {
+        return emails.get( entity );
+    }
+
+
+
+    public Map<OrganizationalEntity, String> getDisplayNames() {
+        return displayNames;
+    }
+
+    public void setDisplayNames(Map<OrganizationalEntity, String> displayNames) {
+        this.displayNames = displayNames;
+    }
+
+    public Map<OrganizationalEntity, String> getLanguages() {
+        return languages;
+    }
+
+    public void setLanguages(Map<OrganizationalEntity, String> languages) {
+        this.languages = languages;
+    }
+
+    public Iterator<OrganizationalEntity> getMembersForGroup(Group group) {
+        return groups.get( group ).iterator();
+    }
+
+    public boolean hasEmail(Group group) {
+        return emails.containsKey( group );
+    }
+
+    public String getDisplayName(OrganizationalEntity entity) {
+        String displayName = displayNames.get( entity );
+        return ( displayName != null ) ? displayName : entity.getId();
+    }
+
+    public String getLanguageForEntity(OrganizationalEntity entity) {
+        return languages.get( entity );
+    }
+
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/drools.email.conf
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/drools.email.conf	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/drools.email.conf	2010-06-14 19:23:09 UTC (rev 33495)
@@ -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_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/orm.xml	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/orm.xml	2010-06-14 19:23:09 UTC (rev 33495)
@@ -0,0 +1,546 @@
+<?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>
+      <named-query name="TaskByWorkItemId">
+          <query>
+select
+    t
+from
+    Task t
+where
+    t.taskData.workItemId = :workItemId
+          </query>
+          <!-- hint name="org.hibernate.timeout" value="200"/ -->
+      </named-query>
+</entity-mappings>

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/persistence.xml	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/META-INF/persistence.xml	2010-06-14 19:23:09 UTC (rev 33495)
@@ -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_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadGroups.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadGroups.mvel	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadGroups.mvel	2010-06-14 19:23:09 UTC (rev 33495)
@@ -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_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadUsers.mvel
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadUsers.mvel	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/resources/org/drools/task/LoadUsers.mvel	2010-06-14 19:23:09 UTC (rev 33495)
@@ -0,0 +1,14 @@
+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'),
+          'krisv'  : new User('krisv'),          'john'       : new User('john'),
+          'mary'   : new User('mary'),           'sales'      : new User('sales-rep')
+        ];       
+
+return users;
+        
\ No newline at end of file

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java	2010-06-14 18:29:30 UTC (rev 33494)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java	2010-06-14 19:23:09 UTC (rev 33495)
@@ -74,6 +74,9 @@
         this.session = session;
         this.address = new InetSocketAddress(ipAddress, port);
     }
+    public void setAddress(String ipAddress, int port){
+        this.address = new InetSocketAddress(ipAddress, port);
+    }
 
     public void connect() throws RemoteException {
         if (connector == null) {



More information about the jboss-svn-commits mailing list