[jboss-svn-commits] JBL Code SVN: r23811 - in labs/jbossrules/trunk: drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Nov 10 19:57:07 EST 2008


Author: KrisVerlaenen
Date: 2008-11-10 19:57:07 -0500 (Mon, 10 Nov 2008)
New Revision: 23811

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/HumanTaskCustomEditor.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/FaultData.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceRequest.java
Removed:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskOperation.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/HumanTaskNodeWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java
   labs/jbossrules/trunk/drools-process/drools-process-task/.classpath
   labs/jbossrules/trunk/drools-process/drools-process-task/.project
   labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/client/MinaKnowledgeBaseClient.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/WorkItemNotification.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/DefaultEscalatedDeadlineHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/QueryTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/IcalTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceDeadlinesTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEscalationTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEventMessagingTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java
Log:
JBRULES-1834: Data for Tasks
 - added data to task + modified life cycle methods

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/HumanTaskCustomEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/HumanTaskCustomEditor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/HumanTaskCustomEditor.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -0,0 +1,144 @@
+package org.drools.eclipse.flow.common.editor.editpart.work;
+
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.process.core.Work;
+import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.WorkEditor;
+import org.drools.process.core.impl.WorkImpl;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Custom Work editor for human tasks.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class HumanTaskCustomEditor extends EditBeanDialog<Work> implements WorkEditor {
+
+	private Text nameText;
+	private Text actorText;
+	private Text commentText;
+	private Text priorityText;
+	private Button skippableButton;
+	private Text contentText;
+	
+    public HumanTaskCustomEditor(Shell parentShell) {
+        super(parentShell, "Human Task Editor");
+        setBlockOnOpen(true);
+    }
+    
+    protected Point getInitialSize() {
+        return new Point(400, 400);
+    }
+    
+    protected Control createDialogArea(Composite parent) {
+        Composite composite = (Composite) super.createDialogArea(parent);
+        GridLayout gridLayout = new GridLayout();
+        gridLayout.numColumns = 2;
+        composite.setLayout(gridLayout);
+        
+        Work work = (Work) getValue();
+        
+        Label nameLabel = new Label(composite, SWT.NONE);
+        nameLabel.setText("Name: ");
+        nameText = new Text(composite, SWT.NONE);
+        GridData gridData = new GridData();
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        nameText.setLayoutData(gridData);
+        String name = (String) work.getParameter("TaskName");
+        nameText.setText(name == null ? "" : name);
+        
+        Label label = new Label(composite, SWT.NONE);
+        label.setText("Actor(s): ");
+        actorText = new Text(composite, SWT.NONE);
+        gridData = new GridData();
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        actorText.setLayoutData(gridData);
+        String value = (String) work.getParameter("ActorId");
+        actorText.setText(value == null ? "" : value);
+        
+        label = new Label(composite, SWT.NONE);
+        label.setText("Comment: ");
+        commentText = new Text(composite, SWT.MULTI);
+        gridData = new GridData();
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.grabExcessVerticalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        gridData.verticalAlignment = GridData.FILL;
+        commentText.setLayoutData(gridData);
+        value = (String) work.getParameter("Comment");
+        commentText.setText(value == null ? "" : value.toString());
+        
+        label = new Label(composite, SWT.NONE);
+        label.setText("Priority: ");
+        priorityText = new Text(composite, SWT.NONE);
+        gridData = new GridData();
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        priorityText.setLayoutData(gridData);
+        value = (String) work.getParameter("Priority");
+        priorityText.setText(value == null ? "" : value);
+        
+        skippableButton = new Button(composite, SWT.CHECK | SWT.LEFT);
+        skippableButton.setText("Skippable");
+        value = (String) work.getParameter("Skippable");
+        skippableButton.setSelection("true".equals(value));
+        gridData = new GridData();
+        gridData.horizontalSpan = 2;
+        skippableButton.setLayoutData(gridData);
+        
+        label = new Label(composite, SWT.NONE);
+        label.setText("Content: ");
+        contentText = new Text(composite, SWT.MULTI);
+        gridData = new GridData();
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.grabExcessVerticalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        gridData.verticalAlignment = GridData.FILL;
+        contentText.setLayoutData(gridData);
+        value = (String) work.getParameter("Content");
+        contentText.setText(value == null ? "" : value.toString());
+        
+        return composite;
+    }
+    
+    protected Work updateValue(Work value) {
+        Work work = new WorkImpl();
+        work.setName("Human Task");
+        work.setParameter("TaskName", nameText.getText());
+        work.setParameter("ActorId", actorText.getText());
+        work.setParameter("Comment", commentText.getText());
+        work.setParameter("Priority", priorityText.getText());
+        work.setParameter("Skippable", skippableButton.getSelection() + "");
+        work.setParameter("Content", contentText.getText());
+        work.setParameterDefinitions(((Work) value).getParameterDefinitions());
+        return work;
+    }
+        
+    public Work getWork() {
+        return (Work) getValue();
+    }
+
+    public void setWork(Work work) {
+        setValue(work);
+    }
+
+    public void setWorkDefinition(WorkDefinition workDefinition) {
+    }
+
+    public boolean show() {
+        int result = open();
+        return result == OK;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/HumanTaskNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/HumanTaskNodeWrapper.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/HumanTaskNodeWrapper.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -18,6 +18,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.drools.eclipse.flow.common.editor.editpart.work.HumanTaskCustomEditor;
 import org.drools.process.core.ParameterDefinition;
 import org.drools.process.core.WorkDefinition;
 import org.drools.process.core.datatype.impl.type.StringDataType;
@@ -53,6 +54,7 @@
         parameterDefinitions.add(new ParameterDefinitionImpl("Content", new StringDataType()));
         ((WorkDefinitionExtensionImpl) WORK_DEFINITION).setParameters(parameterDefinitions);
         ((WorkDefinitionExtensionImpl) WORK_DEFINITION).setIcon("icons/human_task.gif");
+        ((WorkDefinitionExtensionImpl) WORK_DEFINITION).setCustomEditor(HumanTaskCustomEditor.class.getName());
     }
 
     public HumanTaskNodeWrapper() {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -605,7 +605,7 @@
 		}
 		
 		BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
-		client.complete(taskSummary.getId(), userId, responseHandler);
+		client.complete(taskSummary.getId(), userId, null, responseHandler);
 		responseHandler.waitTillDone(3000);
         refresh();
 	}
@@ -627,7 +627,7 @@
 		}
 		
 		BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
-		client.fail(taskSummary.getId(), userId, responseHandler);
+		client.fail(taskSummary.getId(), userId, null, responseHandler);
 		responseHandler.waitTillDone(3000);
         refresh();
 	}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/.classpath	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/.classpath	2008-11-11 00:57:07 UTC (rev 23811)
@@ -1,55 +1,54 @@
-<classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.77/h2-1.0.77.jar"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/mina/mina-core/2.0.0-M3/mina-core-2.0.0-M3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.2/slf4j-api-1.5.2.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.1-SNAPSHOT/mvel2-2.0.1-SNAPSHOT.jar"/>
-  <classpathentry kind="src" path="/drools-api"/>
-  <classpathentry kind="src" path="/drools-workitems"/>
-  <classpathentry kind="src" path="/drools-compiler"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-finder/1.0-SNAPSHOT/commons-finder-1.0-SNAPSHOT.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-compress/1.0-SNAPSHOT/commons-compress-1.0-SNAPSHOT.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-exec/1.0.0-SNAPSHOT/commons-exec-1.0.0-SNAPSHOT.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.1.0.GA/hibernate-commons-annotations-3.1.0.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.0.SP1/hibernate-core-3.3.0.SP1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.1.0-SNAPSHOT/jboss-seam-2.1.0-SNAPSHOT.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/el/jboss-el/1.0_02.CR2/jboss-el-1.0_02.CR2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jdk14/1.5.2/slf4j-jdk14-1.5.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/subethamail/subethasmtp-wiser/1.2/subethasmtp-wiser-1.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/subethamail/subethasmtp-smtp/1.2/subethasmtp-smtp-1.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
-  <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/postgresql/postgresql/8.3-603.jdbc3/postgresql-8.3-603.jdbc3.jar"/>
+<classpath>
+  <classpathentry kind="src" path="src/main/java"/>
+  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
+  <classpathentry kind="output" path="target/classes"/>
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.77/h2-1.0.77.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/mina/mina-core/2.0.0-M3/mina-core-2.0.0-M3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.2/slf4j-api-1.5.2.jar"/>
+  <classpathentry kind="src" path="/drools-core"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.1-SNAPSHOT/mvel2-2.0.1-SNAPSHOT.jar"/>
+  <classpathentry kind="src" path="/drools-api"/>
+  <classpathentry kind="src" path="/drools-workitems"/>
+  <classpathentry kind="src" path="/drools-compiler"/>
+  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-finder/1.0-SNAPSHOT/commons-finder-1.0-SNAPSHOT.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-compress/1.0-SNAPSHOT/commons-compress-1.0-SNAPSHOT.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-exec/1.0.0-SNAPSHOT/commons-exec-1.0.0-SNAPSHOT.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.1.0.GA/hibernate-commons-annotations-3.1.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.0.SP1/hibernate-core-3.3.0.SP1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.1.0-SNAPSHOT/jboss-seam-2.1.0-SNAPSHOT.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/jboss/el/jboss-el/1.0_02.CR2/jboss-el-1.0_02.CR2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jdk14/1.5.2/slf4j-jdk14-1.5.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/subethamail/subethasmtp-wiser/1.2/subethasmtp-wiser-1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/subethamail/subethasmtp-smtp/1.2/subethasmtp-smtp-1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+  <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/postgresql/postgresql/8.3-603.jdbc3/postgresql-8.3-603.jdbc3.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/.project	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/.project	2008-11-11 00:57:07 UTC (rev 23811)
@@ -1,18 +1,18 @@
-<projectDescription>
-  <name>drools-process-task</name>
-  <comment>A rule production system</comment>
-  <projects>
-    <project>drools-core</project>
-    <project>drools-api</project>
-    <project>drools-workitems</project>
-    <project>drools-compiler</project>
-  </projects>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
+<projectDescription>
+  <name>drools-process-task</name>
+  <comment>A rule production system</comment>
+  <projects>
+    <project>drools-core</project>
+    <project>drools-api</project>
+    <project>drools-workitems</project>
+    <project>drools-compiler</project>
+  </projects>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+  </natures>
 </projectDescription>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml	2008-11-11 00:57:07 UTC (rev 23811)
@@ -12,9 +12,15 @@
   <packaging>jar</packaging>
   <name>Drools :: Process :: Task</name> 
     
-      <dependencies> 	       
+      <dependencies>
+            
     	<dependency>
     		<groupId>org.drools</groupId>
+    		<artifactId>drools-api</artifactId>
+    	</dependency>
+    	         		  
+    	<dependency>
+    		<groupId>org.drools</groupId>
     		<artifactId>drools-core</artifactId>
     	</dependency>         		  
        

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/client/MinaKnowledgeBaseClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/client/MinaKnowledgeBaseClient.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/client/MinaKnowledgeBaseClient.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -20,8 +20,9 @@
 
     public void addPackage(Task task,
                         AddTaskResponseHandler responseHandler) {
-        List args = new ArrayList( 1 );
+        List args = new ArrayList( 2 );
         args.add( task );
+        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.AddTaskRequest,
                                    args );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -47,8 +47,22 @@
 
     private String           documentType;
 
-    private long             documentContentId;
+    private long             documentContentId = -1;
 
+    private AccessType       outputAccessType;
+
+    private String           outputType;
+
+    private long             outputContentId = -1;
+    
+    private String 	         faultName;
+
+    private AccessType       faultAccessType;
+
+    private String           faultType;
+
+    private long             faultContentId = -1;
+    
     @OneToMany(cascade = CascadeType.ALL)
     @JoinColumn(name = "TaskData_Comments_Id", nullable = true)
     private List<Comment>    comments    = Collections.emptyList();
@@ -116,6 +130,76 @@
             out.writeBoolean( false );
         }
         
+        if ( documentAccessType != null ) {
+            out.writeBoolean( true );
+            out.writeObject( documentAccessType );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( documentType != null ) {
+            out.writeBoolean( true );
+            out.writeUTF( documentType );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( documentContentId != -1 ) {
+            out.writeBoolean( true );
+            out.writeLong( documentContentId );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( outputAccessType != null ) {
+            out.writeBoolean( true );
+            out.writeObject( outputAccessType );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( outputType != null ) {
+            out.writeBoolean( true );
+            out.writeUTF( outputType );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( outputContentId != -1 ) {
+            out.writeBoolean( true );
+            out.writeLong( outputContentId );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( faultName != null ) {
+            out.writeBoolean( true );
+            out.writeUTF( faultName );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( faultAccessType != null ) {
+            out.writeBoolean( true );
+            out.writeObject( faultAccessType );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( faultType != null ) {
+            out.writeBoolean( true );
+            out.writeUTF( faultType );
+        } else {
+            out.writeBoolean( false );
+        }
+        
+        if ( faultContentId != -1 ) {
+            out.writeBoolean( true );
+            out.writeLong( faultContentId );
+        } else {
+            out.writeBoolean( false );
+        }
+        
         CollectionUtils.writeCommentList( comments,
                                           out );
         CollectionUtils.writeAttachmentList( attachments,
@@ -159,7 +243,47 @@
         if ( in.readBoolean() ) {
             workItemId = in.readLong();
         }
+        
+        if ( in.readBoolean() ) {
+            documentAccessType = (AccessType) in.readObject();
+        }
 
+        if ( in.readBoolean() ) {
+            documentType = in.readUTF();
+        }
+        
+        if ( in.readBoolean() ) {
+            documentContentId = in.readLong();
+        }
+        
+        if ( in.readBoolean() ) {
+            outputAccessType = (AccessType) in.readObject();
+        }
+
+        if ( in.readBoolean() ) {
+            outputType = in.readUTF();
+        }
+        
+        if ( in.readBoolean() ) {
+            outputContentId = in.readLong();
+        }
+        
+        if ( in.readBoolean() ) {
+            faultName = in.readUTF();
+        }
+        
+        if ( in.readBoolean() ) {
+            faultAccessType = (AccessType) in.readObject();
+        }
+
+        if ( in.readBoolean() ) {
+            faultType = in.readUTF();
+        }
+        
+        if ( in.readBoolean() ) {
+            faultContentId = in.readLong();
+        }
+        
         comments = CollectionUtils.readCommentList( in );
         attachments = CollectionUtils.readAttachmentList( in );
 
@@ -262,7 +386,63 @@
         this.documentType = documentType;
     }
 
-    public List<Comment> getComments() {
+    public AccessType getOutputAccessType() {
+		return outputAccessType;
+	}
+
+	public void setOutputAccessType(AccessType outputAccessType) {
+		this.outputAccessType = outputAccessType;
+	}
+
+	public String getOutputType() {
+		return outputType;
+	}
+
+	public void setOutputType(String outputType) {
+		this.outputType = outputType;
+	}
+
+	public long getOutputContentId() {
+		return outputContentId;
+	}
+
+	public void setOutputContentId(long outputContentId) {
+		this.outputContentId = outputContentId;
+	}
+
+	public String getFaultName() {
+		return faultName;
+	}
+
+	public void setFaultName(String faultName) {
+		this.faultName = faultName;
+	}
+
+	public AccessType getFaultAccessType() {
+		return faultAccessType;
+	}
+
+	public void setFaultAccessType(AccessType faultAccessType) {
+		this.faultAccessType = faultAccessType;
+	}
+
+	public String getFaultType() {
+		return faultType;
+	}
+
+	public void setFaultType(String faultType) {
+		this.faultType = faultType;
+	}
+
+	public long getFaultContentId() {
+		return faultContentId;
+	}
+
+	public void setFaultContentId(long faultContentId) {
+		this.faultContentId = faultContentId;
+	}
+
+	public List<Comment> getComments() {
         return comments;
     }
 

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/WorkItemNotification.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/WorkItemNotification.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/WorkItemNotification.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -8,9 +8,9 @@
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 
-import org.drools.process.instance.WorkItem;
-import org.drools.process.instance.WorkItemHandler;
-import org.drools.process.instance.WorkItemManager;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemHandler;
+import org.drools.runtime.process.WorkItemManager;
 import org.mvel2.MVEL;
 import org.mvel2.compiler.ExpressionCompiler;
 

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -0,0 +1,55 @@
+package org.drools.task.service;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.task.AccessType;
+
+public class ContentData implements Externalizable {
+	
+	private AccessType accessType;
+	private String type;
+	private byte[] content;
+
+	public AccessType getAccessType() {
+		return accessType;
+	}
+
+	public void setAccessType(AccessType accessType) {
+		this.accessType = accessType;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public byte[] getContent() {
+		return content;
+	}
+
+	public void setContent(byte[] content) {
+		this.content = content;
+	}
+
+	public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject( accessType );
+        out.writeUTF( type );
+        out.writeInt( content.length );
+        out.write( content );        
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        accessType = (AccessType) in.readObject();
+        type = in.readUTF();
+        content = new byte[ in.readInt() ];
+        in.read( content );
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/DefaultEscalatedDeadlineHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/DefaultEscalatedDeadlineHandler.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/DefaultEscalatedDeadlineHandler.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -11,9 +11,9 @@
 
 import javax.persistence.EntityManager;
 
-import org.drools.process.instance.WorkItemManager;
 import org.drools.process.instance.impl.WorkItemImpl;
 import org.drools.process.workitem.email.EmailWorkItemHandler;
+import org.drools.runtime.process.WorkItemManager;
 import org.drools.task.Content;
 import org.drools.task.Deadline;
 import org.drools.task.EmailNotification;

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/FaultData.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/FaultData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/FaultData.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -0,0 +1,30 @@
+package org.drools.task.service;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+public class FaultData extends ContentData {
+	
+	private String faultName;
+
+	public String getFaultName() {
+		return faultName;
+	}
+
+	public void setFaultName(String faultName) {
+		this.faultName = faultName;
+	}
+	
+	public void writeExternal(ObjectOutput out) throws IOException {
+		out.writeUTF( faultName );
+		super.writeExternal( out );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        faultName = in.readUTF();
+        super.readExternal( in );
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -28,10 +28,11 @@
                handler );
     }
 
-    public void addTask(Task task,
+    public void addTask(Task task, ContentData content, 
                         AddTaskResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 1 );
+        List<Object> args = new ArrayList<Object>( 2 );
         args.add( task );
+        args.add( content );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.AddTaskRequest,
                                    args );
@@ -158,11 +159,10 @@
     public void claim(long taskId,
                       String userId,
                       TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Claim );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -176,11 +176,10 @@
     public void start(long taskId,
                       String userId,
                       TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Start );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -194,11 +193,10 @@
     public void stop(long taskId,
                      String userId,
                      TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Stop );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -212,11 +210,10 @@
     public void release(long taskId,
                         String userId,
                         TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Release );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -230,11 +227,10 @@
     public void suspend(long taskId,
                         String userId,
                         TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Suspend );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -248,11 +244,10 @@
     public void resume(long taskId,
                        String userId,
                        TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Resume );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -266,11 +261,10 @@
     public void skip(long taskId,
                      String userId,
                      TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        List<Object> args = new ArrayList<Object>( 3 );
         args.add( Operation.Skip );
         args.add( taskId );
         args.add( userId );
-        args.add( null );
         Command cmd = new Command( counter.getAndIncrement(),
                                    CommandName.OperationRequest,
                                    args );
@@ -321,12 +315,14 @@
 
     public void complete(long taskId,
                          String userId,
+                         ContentData outputData,
                          TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        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 );
@@ -339,12 +335,14 @@
 
     public void fail(long taskId,
                      String userId,
+                     FaultData faultData,
                      TaskOperationResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>( 4 );
+        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 );

Deleted: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskOperation.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskOperation.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskOperation.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -1,6 +0,0 @@
-package org.drools.task.service;
-
-
-public enum TaskOperation {
-
-}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -52,22 +52,27 @@
                     if ( cmd.getArguments().size() > 3 ) {
                         targetEntityId = (String) cmd.getArguments().get( 3 );
                     }
-                        error = taskSession.taskOperation( operation,
-                                                           taskId,
-                                                           userId,
-                                                           targetEntityId );
-                        List args = null;
-                        if ( error != null ) {
-                            args = new ArrayList( 1 );
-                            args.add( error );
-                        } else {
-                            args = Collections.emptyList();
-                        }
+                    ContentData data = null;
+                    if ( cmd.getArguments().size() > 4 ) {
+                        data = (ContentData) cmd.getArguments().get( 4 );
+                    }
+                    error = taskSession.taskOperation( operation,
+                                                       taskId,
+                                                       userId,
+                                                       targetEntityId,
+                                                       data);
+                    List args = null;
+                    if ( error != null ) {
+                        args = new ArrayList( 1 );
+                        args.add( error );
+                    } else {
+                        args = Collections.emptyList();
+                    }
 
-                        Command resultsCmnd = new Command( cmd.getId(),
-                                                           CommandName.OperationResponse,
-                                                           args );
-                        session.write( resultsCmnd );
+                    Command resultsCmnd = new Command( cmd.getId(),
+                                                       CommandName.OperationResponse,
+                                                       args );
+                    session.write( resultsCmnd );
                     break;
                 }
                 case GetTaskRequest : {
@@ -90,7 +95,8 @@
                 case AddTaskRequest : {
                     response = CommandName.AddTaskResponse;
                     Task task = (Task) cmd.getArguments().get( 0 );
-                    taskSession.addTask( task );
+                    ContentData content = (ContentData) cmd.getArguments().get( 1 );
+                    taskSession.addTask( task, content );
 
                     List args = new ArrayList( 1 );
                     args.add( task.getId() );

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceRequest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceRequest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -0,0 +1,61 @@
+package org.drools.task.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.task.User;
+
+public class TaskServiceRequest {
+	
+	private String type;
+	private User user;
+	private Map<String, Object> parameters;
+	private boolean allowed = true;
+	private List<String> reasons;
+	
+	public TaskServiceRequest(String type, User user, Map<String, Object> parameters) {
+		this.type = type;
+		this.user = user;
+		this.parameters = parameters;
+	}
+	
+	public String getType() {
+		return type;
+	}
+	
+	public User getUser() {
+		return user;
+	}
+	
+	public Map<String, Object> getParameters() {
+		return parameters;
+	}
+	
+	public Object getParameter(String name) {
+		if (parameters == null) {
+			return null;
+		}
+		return parameters.get(name);
+	}
+	
+	public boolean isAllowed() {
+		return allowed;
+	}
+	
+	public void setAllowed(boolean allowed) {
+		this.allowed = allowed;
+	}
+	
+	public List<String> getReasons() {
+		return reasons;
+	}
+	
+	public void addReason(String reason) {
+		if (reasons == null) {
+			reasons = new ArrayList<String>();
+		}
+		reasons.add(reason);
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -5,6 +5,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -12,6 +13,8 @@
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 
+import org.drools.RuleBase;
+import org.drools.StatefulSession;
 import org.drools.task.Attachment;
 import org.drools.task.Comment;
 import org.drools.task.Content;
@@ -28,8 +31,11 @@
 import org.drools.task.service.TaskService.ScheduledTaskDeadline;
 
 public class TaskServiceSession {
-    TaskService   service;
-    EntityManager em;
+	
+    private TaskService service;
+    private EntityManager em;
+    private Map<String, RuleBase> ruleBases;  
+    private Map<String, Map<String, Object>> globals;  
 
     public TaskServiceSession(TaskService service,
                               EntityManager em) {
@@ -44,6 +50,20 @@
     public EntityManager getEntityManager() {
         return em;
     }
+    
+    public void setRuleBase(String type, RuleBase ruleBase) {
+    	if (ruleBases == null) {
+    		ruleBases = new HashMap<String, RuleBase>();
+    	}
+    	ruleBases.put(type, ruleBase);
+    }
+    
+    public void setGlobals(String type, Map<String, Object> globals) {
+    	if (this.globals == null) {
+    		this.globals = new HashMap<String, Map<String, Object>>();
+    	}
+    	this.globals.put(type, globals);
+    }
 
     public void addUser(User user) {
         em.getTransaction().begin();
@@ -57,11 +77,39 @@
         em.getTransaction().commit();
     }
 
-    public void addTask(Task task) {
+    public void addTask(Task task, ContentData contentData) {
         TaskData taskData = task.getTaskData();
         // new tasks start off with status created
         taskData.setStatus( Status.Created );
 
+        // execute "addTask" rules
+        if (ruleBases != null) {
+        	RuleBase ruleBase = ruleBases.get("addTask");
+        	if (ruleBase != null) {
+        		StatefulSession session = ruleBase.newStatefulSession();
+    			Map<String, Object> globals = this.globals.get("addTask");
+    			if (globals != null) {
+    				for (Map.Entry<String, Object> entry: globals.entrySet()) {
+    					session.setGlobal(entry.getKey(), entry.getValue());
+    				}
+    			}
+    			TaskServiceRequest request = new TaskServiceRequest("addTask", null, null);
+    			session.setGlobal("request", request);
+        		session.insert(task);
+        		session.insert(contentData);
+        		session.fireAllRules();
+        		if (!request.isAllowed()) {
+        			String error = "Cannot add Task:\n";
+        			if (request.getReasons() != null) {
+        				for (String reason: request.getReasons()) {
+        					error += reason + "\n";
+        				}
+        			}
+        			throw new RuntimeException(error);
+        		}
+        	}
+        }
+
         if ( task.getPeopleAssignments() != null ) {
             List<OrganizationalEntity> potentialOwners = task.getPeopleAssignments().getPotentialOwners();
             if ( potentialOwners.size() == 1 ) {
@@ -87,10 +135,19 @@
         if ( taskData.getActivationTime() == null ) {
             taskData.setActivationTime( taskData.getCreatedOn() );
         }
-
+        
         em.getTransaction().begin();
         em.persist( task );
+        if (contentData != null) {
+        	Content content = new Content();
+        	content.setContent(contentData.getContent());
+        	em.persist( content );
+            taskData.setDocumentAccessType( contentData.getAccessType() );
+            taskData.setDocumentType( contentData.getType() );
+            taskData.setDocumentContentId( content.getId() );
+        }
         em.getTransaction().commit();
+
         long now = System.currentTimeMillis();
         // schedule after it's been persisted, otherwise the id's won't be assigned
         if ( task.getDeadlines() != null ) {
@@ -160,7 +217,7 @@
                         commands( command,
                                   task,
                                   user,
-                                  targetEntity );
+                                  targetEntity);
                         return null;
                     }
                 }
@@ -182,7 +239,7 @@
                         commands( command,
                                   task,
                                   user,
-                                  targetEntity );
+                                  targetEntity);
                         return null;
                     }
                 }
@@ -290,7 +347,8 @@
     public TaskError taskOperation(Operation operation,
                                    long taskId,
                                    String userId,
-                                   String targetEntityId) {
+                                   String targetEntityId,
+                                   ContentData data) {
         Task task = em.find( Task.class,
                              taskId );
 
@@ -302,7 +360,7 @@
             targetEntity = em.find( OrganizationalEntity.class,
                                     targetEntityId );
         }
-
+        
         em.getTransaction().begin();
         TaskError error = null;
         try {
@@ -312,7 +370,7 @@
                                  commands,
                                  task,
                                  user,
-                                 targetEntity );
+                                 targetEntity);
 
             if ( error != null ) {
                 throw new RuntimeException( "TaskOperationException" );
@@ -329,13 +387,36 @@
                 }
                 
                 case Complete : {
-                    // trigger event support
+                	// set output data 
+                	if (data != null) {
+	                	TaskData taskData = task.getTaskData();
+	                	Content content = new Content();
+	                	content.setContent( data.getContent() );
+	                	em.persist( content );
+	                	taskData.setOutputContentId( content.getId() );
+	                	taskData.setOutputAccessType( data.getAccessType() );
+	                	taskData.setOutputType( data.getType() );
+                	}
+
+                	// trigger event support
                     service.getEventSupport().fireTaskCompleted( task.getId(),
                                                                  task.getTaskData().getActualOwner().getId() );
                     break;
                 }
                 
                 case Fail : {
+                	// set fault data 
+                	if (data != null) {
+	                	TaskData taskData = task.getTaskData();
+	                	Content content = new Content();
+	                	content.setContent( data.getContent() );
+	                	em.persist( content );
+	                	taskData.setFaultContentId( content.getId() );
+	                	taskData.setFaultAccessType( data.getAccessType() );
+	                	taskData.setFaultType( data.getType() );
+	                	taskData.setFaultName( ((FaultData) data).getFaultName() );
+                	}
+
                     // trigger event support
                     service.getEventSupport().fireTaskFailed( task.getId(),
                                                               task.getTaskData().getActualOwner().getId() );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -303,7 +303,7 @@
         potentialOwners.add( users.get( "stuart" ) );
         potentialOwners.add( users.get( "dalai" ) );        
 
-        session.addTask( task1 );
+        session.addTask( task1, null );
         
         session.dispose();        
         session = taskService.createSession();

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/QueryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/QueryTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/QueryTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -29,7 +29,7 @@
         List<Task> tasks = (List<Task>) eval( reader,
                                               vars );
         for ( Task task : tasks ) {
-            taskSession.addTask( task );
+            taskSession.addTask( task, null );
         }
         long now = ((Date)vars.get( "now" )).getTime();
         

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/IcalTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/IcalTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/IcalTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -107,7 +107,7 @@
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = (Task) eval( new StringReader( str ),
                                  vars );
-        client.addTask( task,
+        client.addTask( task, null,
                         addTaskResponseHandler );
 
         long taskId = addTaskResponseHandler.getTaskId();
@@ -219,7 +219,7 @@
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = (Task) eval( new StringReader( str ),
                                  vars );
-        client.addTask( task,
+        client.addTask( task, null,
                         addTaskResponseHandler );
 
         long taskId = addTaskResponseHandler.getTaskId();
@@ -302,7 +302,7 @@
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = (Task) eval( new StringReader( str ),
                                  vars );
-        client.addTask( task,
+        client.addTask( task, null,
                         addTaskResponseHandler );
 
         long taskId = addTaskResponseHandler.getTaskId();
@@ -381,7 +381,7 @@
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = (Task) eval( new StringReader( str ),
                                  vars );
-        client.addTask( task,
+        client.addTask( task, null,
                         addTaskResponseHandler );
 
         long taskId = addTaskResponseHandler.getTaskId();

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -28,7 +28,7 @@
         str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
             
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        taskSession.addTask( task );
+        taskSession.addTask( task, null );
         
         long taskId = task.getId();      
         
@@ -37,7 +37,7 @@
         taskService.getEventKeys().register( key, transport );      
         
         
-        taskSession.taskOperation( Operation.Claim, taskId, users.get( "darth" ).getId(), null );        
+        taskSession.taskOperation( Operation.Claim, taskId, users.get( "darth" ).getId(), null, null );        
         
         assertEquals( 1, transport.list.size() );
         assertEquals( taskId, ((TaskClaimedEvent) ((Payload) transport.list.get(0)).get()).getTaskId() );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -62,7 +62,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -86,7 +86,7 @@
         assertEquals(Status.InProgress, tasks.get(0).getStatus());
         
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( taskId, users.get( "bobba" ).getId(), responseHandler );
+        client.complete( taskId, users.get( "bobba" ).getId(), null, responseHandler );
         
         taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
         client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
@@ -119,7 +119,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         long taskId = addTaskResponseHandler.getTaskId();
         
         EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );           
@@ -143,7 +143,7 @@
         
         BlockingAddTaskResponseHandler addTaskResponseHandler2 = new BlockingAddTaskResponseHandler();
         Task task2 = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task2, addTaskResponseHandler2 );
+        client.addTask( task2, null, addTaskResponseHandler2 );
         long taskId2 = addTaskResponseHandler.getTaskId();
         
         EventKey key2 = new TaskEventKey(TaskCompletedEvent.class, taskId2 );           
@@ -156,7 +156,7 @@
         assertEquals(2, tasks.size());
         
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( taskId, users.get( "bobba" ).getId(), responseHandler );
+        client.complete( taskId, users.get( "bobba" ).getId(), null, responseHandler );
         
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId2, users.get( "bobba" ).getId(), responseHandler );  
@@ -176,7 +176,7 @@
         assertEquals( Status.Completed , task.getTaskData().getStatus() );
         
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( taskId2, users.get( "bobba" ).getId(), responseHandler );
+        client.complete( taskId2, users.get( "bobba" ).getId(), null, responseHandler );
         
         payload = handler.getPayload();
         event = ( TaskCompletedEvent ) payload.get();

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -59,7 +59,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -140,7 +140,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceDeadlinesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceDeadlinesTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceDeadlinesTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -16,8 +16,8 @@
 
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.drools.process.instance.WorkItemManager;
 import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.runtime.process.WorkItemManager;
 import org.drools.task.BaseTest;
 import org.drools.task.Content;
 import org.drools.task.MockUserInfo;
@@ -96,7 +96,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( string ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         long taskId = addTaskResponseHandler.getTaskId();    
                                         
         Content content = new Content();
@@ -104,6 +104,10 @@
         BlockingSetContentResponseHandler setContentResponseHandler  = new BlockingSetContentResponseHandler();
         client.setDocumentContent( taskId, content, setContentResponseHandler );
         long contentId = setContentResponseHandler.getContentId();
+        BlockingGetContentResponseHandler  getResponseHandler = new BlockingGetContentResponseHandler();
+        client.getContent( contentId, getResponseHandler );
+        content = getResponseHandler.getContent();
+        assertEquals( "['subject' : 'My Subject', 'body' : 'My Body']", new String( content.getContent() ) );
         
         // emails should not be set yet
         assertEquals(0, wiser.getMessages().size() );             
@@ -167,7 +171,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( string ), vars );               
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         long taskId = addTaskResponseHandler.getTaskId();    
         
         // Shouldn't have re-assigned yet

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEscalationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEscalationTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEscalationTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -63,7 +63,7 @@
         
         for ( Task task : tasks ) {  
             BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();            
-            client.addTask( task, addTaskResponseHandler ); 
+            client.addTask( task, null, addTaskResponseHandler ); 
             addTaskResponseHandler.waitTillDone( 3000 );
         }
 

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEventMessagingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEventMessagingTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceEventMessagingTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -70,7 +70,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -85,7 +85,7 @@
         client.registerForEvent( key, true, handler );
         Thread.sleep( 3000 );
         
-        taskSession.taskOperation( Operation.Claim, taskId, users.get( "darth" ).getId(), null );          
+        taskSession.taskOperation( Operation.Claim, taskId, users.get( "darth" ).getId(), null, null );          
         handler.waitTillDone( 5000 );
         
         Payload payload = handler.getPayload();

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -8,7 +8,9 @@
 
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.task.AccessType;
 import org.drools.task.BaseTest;
+import org.drools.task.Content;
 import org.drools.task.Status;
 import org.drools.task.Task;
 
@@ -52,7 +54,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -77,7 +79,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -89,6 +91,41 @@
         assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );
     }
     
+    public void testNewTaskWithContent() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        ContentData data = new ContentData();
+        data.setAccessType(AccessType.Inline);
+        data.setType("type");
+        data.setContent("content".getBytes());
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, data, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();
+        
+        // Task should be assigned to the single potential owner and state set to Reserved
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals( AccessType.Inline, task1.getTaskData().getDocumentAccessType() );
+        assertEquals( "type", task1.getTaskData().getDocumentType() );
+        long contentId = task1.getTaskData().getDocumentContentId();
+        assertTrue( contentId != -1 ); 
+
+        BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
+        client.getContent(contentId, getContentResponseHandler);
+        Content content = getContentResponseHandler.getContent();
+        assertEquals("content", new String(content.getContent()));
+    }
+    
     public void testClaimWithMultiplePotentialOwners() throws Exception {
         Map  vars = new HashedMap();     
         vars.put( "users", users );
@@ -102,7 +139,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -136,7 +173,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -171,7 +208,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -206,7 +243,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -242,7 +279,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();
         
@@ -278,7 +315,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -316,7 +353,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -356,7 +393,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -396,7 +433,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -436,7 +473,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -476,7 +513,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -513,7 +550,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -554,7 +591,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -594,7 +631,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -643,7 +680,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -696,7 +733,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -735,7 +772,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();                     
         
@@ -751,7 +788,7 @@
         assertNull(  task1.getTaskData().getActualOwner() );                  
     }    
     
-    public void testSkipFromReseerved() {
+    public void testSkipFromReserved() {
         Map  vars = new HashedMap();     
         vars.put( "users", users );
         vars.put( "groups", groups );        
@@ -763,7 +800,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -797,7 +834,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );        
+        client.addTask( task, null, addTaskResponseHandler );        
         long taskId = addTaskResponseHandler.getTaskId();                     
         
         // Check is Delegated
@@ -827,7 +864,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -869,7 +906,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );        
+        client.addTask( task, null, addTaskResponseHandler );        
         long taskId = addTaskResponseHandler.getTaskId();             
         
         // Claim and Reserved
@@ -910,7 +947,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();                     
         
@@ -941,7 +978,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -983,7 +1020,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -1025,7 +1062,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -1042,7 +1079,7 @@
         
         // Check is Complete
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( taskId, users.get( "darth" ).getId(), responseHandler ); 
+        client.complete( taskId, users.get( "darth" ).getId(), null, responseHandler ); 
         responseHandler.waitTillDone( 3000 );
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
@@ -1065,7 +1102,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -1082,7 +1119,7 @@
         
         // Should not complete as wrong user
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( taskId, users.get( "bobba" ).getId(), responseHandler );  
+        client.complete( taskId, users.get( "bobba" ).getId(), null, responseHandler );  
         responseHandler.waitTillDone( 3000 );
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
@@ -1092,6 +1129,56 @@
         assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );                  
     }    
 
+    public void testCompleteWithContent() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, null, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Go straight from Ready to Inprogress
+        BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+        client.start( taskId, users.get( "darth" ).getId(), responseHandler );
+        responseHandler.waitTillDone( 3000 );
+        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.InProgress, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );  
+        
+        ContentData data = new ContentData();
+        data.setAccessType(AccessType.Inline);
+        data.setType("type");
+        data.setContent("content".getBytes());
+        responseHandler = new BlockingTaskOperationResponseHandler();
+        client.complete( taskId, users.get( "darth" ).getId(), data, responseHandler ); 
+        responseHandler.waitTillDone( 3000 );
+        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals( AccessType.Inline, task2.getTaskData().getOutputAccessType() );
+        assertEquals( "type", task2.getTaskData().getOutputType() );
+        long contentId = task2.getTaskData().getOutputContentId();
+        assertTrue( contentId != -1 ); 
+        
+        BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
+        client.getContent(contentId, getContentResponseHandler);
+        Content content = getContentResponseHandler.getContent();
+        assertEquals("content", new String(content.getContent()));
+    }
+        
     public void testFail() {
         Map  vars = new HashedMap();     
         vars.put( "users", users );
@@ -1105,7 +1192,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -1122,7 +1209,7 @@
         
         // Check is Failed
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.fail( taskId, users.get( "darth" ).getId(), responseHandler );
+        client.fail( taskId, users.get( "darth" ).getId(), null, responseHandler );
         responseHandler.waitTillDone( 3000 );
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
@@ -1145,7 +1232,7 @@
             
         BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
         Task task = ( Task )  eval( new StringReader( str ), vars );
-        client.addTask( task, addTaskResponseHandler );
+        client.addTask( task, null, addTaskResponseHandler );
         
         long taskId = addTaskResponseHandler.getTaskId();             
         
@@ -1162,7 +1249,7 @@
         
         // Should not fail as wrong user
         responseHandler = new BlockingTaskOperationResponseHandler();
-        client.fail( taskId, users.get( "bobba" ).getId(), responseHandler );
+        client.fail( taskId, users.get( "bobba" ).getId(), null, responseHandler );
         responseHandler.waitTillDone( 3000 );
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
@@ -1171,4 +1258,58 @@
         assertEquals(  Status.InProgress, task2.getTaskData().getStatus() );
         assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );                  
     }    
+
+    public void testFailWithContent() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, null, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Go straight from Ready to Inprogress
+        BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+        client.start( taskId, users.get( "darth" ).getId(), responseHandler );
+        responseHandler.waitTillDone( 3000 );
+        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.InProgress, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );  
+        
+        FaultData data = new FaultData();
+        data.setAccessType(AccessType.Inline);
+        data.setType("type");
+        data.setFaultName("faultName");
+        data.setContent("content".getBytes());
+        responseHandler = new BlockingTaskOperationResponseHandler();
+        client.fail( taskId, users.get( "darth" ).getId(), data, responseHandler );
+        responseHandler.waitTillDone( 3000 );
+        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals( Status.Failed, task2.getTaskData().getStatus() );
+        assertEquals( AccessType.Inline, task2.getTaskData().getFaultAccessType() );
+        assertEquals( "type", task2.getTaskData().getFaultType() );
+        assertEquals( "faultName", task2.getTaskData().getFaultName() );
+        long contentId = task2.getTaskData().getFaultContentId();
+        assertTrue( contentId != -1 ); 
+        
+        BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
+        client.getContent(contentId, getContentResponseHandler);
+        Content content = getContentResponseHandler.getContent();
+        assertEquals("content", new String(content.getContent()));
+    }
+    
 }

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java	2008-11-11 00:29:40 UTC (rev 23810)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java	2008-11-11 00:57:07 UTC (rev 23811)
@@ -54,7 +54,7 @@
                                               vars );
         for ( Task task : tasks ) {
             BlockingAddTaskResponseHandler responseHandler = new BlockingAddTaskResponseHandler();
-            client.addTask( task, responseHandler );
+            client.addTask( task, null, responseHandler );
         }
 
         // Test UK I18N  
@@ -139,7 +139,7 @@
         List<Task> tasks = (List<Task>) eval( reader,
                                               vars );
         for ( Task task : tasks ) {
-            taskSession.addTask( task );
+            taskSession.addTask( task, null );
         }
 
         reader = new InputStreamReader( getClass().getResourceAsStream( "QueryResults_PeopleAssignmentQuerries.mvel" ) );




More information about the jboss-svn-commits mailing list