[jboss-svn-commits] JBL Code SVN: r22685 - in labs/jbossrules/trunk/drools-process/drools-workitems: src/main/java/org/drools/process/workitem and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Sep 11 10:36:39 EDT 2008
Author: KrisVerlaenen
Date: 2008-09-11 10:36:39 -0400 (Thu, 11 Sep 2008)
New Revision: 22685
Added:
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
Removed:
labs/jbossrules/trunk/drools-process/drools-workitems/.settings/
Modified:
labs/jbossrules/trunk/drools-process/drools-workitems/
labs/jbossrules/trunk/drools-process/drools-workitems/.classpath
labs/jbossrules/trunk/drools-process/drools-workitems/.project
labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/email/EmailWorkItemHandlerTest.java
Log:
JBRULES-1762: Add work item handler for human task management
- initial implementation
Property changes on: labs/jbossrules/trunk/drools-process/drools-workitems
___________________________________________________________________
Name: svn:ignore
- target
+ target
.settings
Modified: labs/jbossrules/trunk/drools-process/drools-workitems/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/.classpath 2008-09-11 14:09:02 UTC (rev 22684)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/.classpath 2008-09-11 14:36:39 UTC (rev 22685)
@@ -1,31 +1,48 @@
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
- <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.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/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/apache/commons/commons-finder/1.0-SNAPSHOT/commons-finder-1.0-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar"/>
- <classpathentry kind="src" path="/drools-compiler"/>
- <classpathentry kind="src" path="/drools-core"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-SNAPSHOT/mvel-2.0-SNAPSHOT.jar"/>
- <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/antlr/gunit/1.0.1/gunit-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0.1/antlr-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
- <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.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"/>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.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/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/apache/commons/commons-finder/1.0-SNAPSHOT/commons-finder-1.0-SNAPSHOT.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/drools/drools-compiler/5.0.0.SNAPSHOT/drools-compiler-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-compiler/5.0.0.SNAPSHOT/drools-compiler-5.0.0.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.0.SNAPSHOT/drools-core-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/5.0.0.SNAPSHOT/drools-core-5.0.0.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-SNAPSHOT/mvel-2.0-SNAPSHOT.jar"/>
+ <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/antlr/gunit/1.0.1/gunit-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0.1/antlr-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-process-task/5.0.0.SNAPSHOT/drools-process-task-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-process-task/5.0.0.SNAPSHOT/drools-process-task-5.0.0.SNAPSHOT-sources.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.4.3/slf4j-api-1.4.3.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/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/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/com/h2database/h2/1.0.77/h2-1.0.77.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/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"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-process/drools-workitems/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/.project 2008-09-11 14:09:02 UTC (rev 22684)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/.project 2008-09-11 14:36:39 UTC (rev 22685)
@@ -1,16 +1,13 @@
-<projectDescription>
- <name>drools-workitems</name>
- <comment>A rule production system</comment>
- <projects>
- <project>drools-compiler</project>
- <project>drools-core</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-workitems</name>
+ <comment>A rule production system</comment>
+ <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-workitems/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml 2008-09-11 14:09:02 UTC (rev 22684)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml 2008-09-11 14:36:39 UTC (rev 22685)
@@ -24,6 +24,11 @@
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-process-task</artifactId>
+ <version>5.0.0.SNAPSHOT</version>
+ </dependency>
<!-- External dependencies -->
<dependency>
@@ -41,15 +46,7 @@
<artifactId>commons-finder</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
-
<dependency>
- <groupId>org.subethamail</groupId>
- <artifactId>subethasmtp-wiser</artifactId>
- <version>1.2</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
@@ -64,6 +61,15 @@
<artifactId>commons-exec</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
+
+ <!-- External test dependencies -->
+ <dependency>
+ <groupId>org.subethamail</groupId>
+ <artifactId>subethasmtp-wiser</artifactId>
+ <version>1.2</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
</project>
Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2008-09-11 14:36:39 UTC (rev 22685)
@@ -0,0 +1,118 @@
+package org.drools.process.workitem.wsht;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.process.instance.WorkItemManager;
+import org.drools.task.I18NText;
+import org.drools.task.OrganizationalEntity;
+import org.drools.task.PeopleAssignments;
+import org.drools.task.Status;
+import org.drools.task.Task;
+import org.drools.task.TaskData;
+import org.drools.task.User;
+import org.drools.task.service.MinaTaskClient;
+import org.drools.task.service.TaskClientHandler;
+import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
+
+public class WSHumanTaskHandler implements WorkItemHandler {
+
+ private String ipAddress = "127.0.0.1";
+ private int port = 9123;
+
+ public void setConnection(String ipAddress, int port) {
+ this.ipAddress = ipAddress;
+ this.port = port;
+ }
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ // TODO: cache client and keep client open ?
+ MinaTaskClient client = new MinaTaskClient(
+ "org.drools.process.workitem.wsht.WSHumanTaskHandler", new TaskClientHandler());
+ NioSocketConnector connector = new NioSocketConnector();
+ SocketAddress address = new InetSocketAddress(ipAddress, port);
+ client.connect(connector, address);
+
+ Task task = new Task();
+ String taskName = (String) workItem.getParameter("TaskName");
+ if (taskName != null) {
+ List<I18NText> names = new ArrayList<I18NText>();
+ names.add(new I18NText("en-UK", taskName));
+ task.setNames(names);
+ }
+ String comment = (String) workItem.getParameter("Comment");
+ if (comment != null) {
+ List<I18NText> descriptions = new ArrayList<I18NText>();
+ descriptions.add(new I18NText("en-UK", comment));
+ task.setDescriptions(descriptions);
+ List<I18NText> subjects = new ArrayList<I18NText>();
+ subjects.add(new I18NText("en-UK", comment));
+ task.setSubjects(subjects);
+ }
+ String priority = (String) workItem.getParameter("Priority");
+ if (priority != null) {
+ try {
+ task.setPriority(new Integer(priority));
+ } catch (NumberFormatException e) {
+ // do nothing
+ }
+ }
+ TaskData taskData = new TaskData();
+ taskData.setWorkItemId(workItem.getId());
+ taskData.setStatus(Status.Created);
+ task.setTaskData(taskData);
+ String actorId = (String) workItem.getParameter("ActorId");
+ if (actorId != null) {
+ PeopleAssignments assignments = new PeopleAssignments();
+ List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
+ User user = new User();
+ user.setId(new Long(actorId));
+ potentialOwners.add(user);
+ assignments.setPotentialOwners(potentialOwners);
+ task.setPeopleAssignments(assignments);
+ //taskData.setActualOwner(user);
+ //taskData.setCreatedBy(user);
+ //taskData.setCreatedOn(new Date());
+ //taskData.setActivationTime(new Date());
+ }
+ client.addTask(task, new BlockingAddTaskResponseHandler());
+ client.disconnect();
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ // TODO
+ }
+
+ private class BlockingAddTaskResponseHandler implements AddTaskResponseHandler {
+ private volatile long taskId;
+ private volatile boolean wait = true;
+
+ public synchronized void execute(long taskId) {
+ this.taskId = taskId;
+ wait = false;
+ notifyAll();
+ }
+
+ public synchronized long getTaskId() {
+ if ( wait ) {
+ try {
+ wait( 3000 );
+ } catch ( InterruptedException e ) {
+ // swallow as this is just a notifiation
+ }
+ }
+
+ if ( wait ) {
+ throw new RuntimeException("Timeout : unable to retrieve Task Id" );
+ }
+
+ return taskId;
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/email/EmailWorkItemHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/email/EmailWorkItemHandlerTest.java 2008-09-11 14:09:02 UTC (rev 22684)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/email/EmailWorkItemHandlerTest.java 2008-09-11 14:36:39 UTC (rev 22685)
@@ -1,21 +1,20 @@
package org.drools.process.workitem.email;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
+import junit.framework.TestCase;
+
import org.drools.process.instance.WorkItemManager;
+import org.drools.process.instance.impl.DefaultWorkItemManager;
import org.drools.process.instance.impl.WorkItemImpl;
import org.subethamail.wiser.Wiser;
import org.subethamail.wiser.WiserMessage;
-
-import junit.framework.TestCase;
-
public class EmailWorkItemHandlerTest extends TestCase {
Wiser wiser;
@Override
@@ -40,7 +39,7 @@
workItem.setParameter( "Subject", "Subject 1" );
workItem.setParameter( "Body", "Body 1" );
- WorkItemManager manager = new WorkItemManager();
+ WorkItemManager manager = new DefaultWorkItemManager(null);
handler.executeWorkItem( workItem, manager );
assertEquals( 1, wiser.getMessages().size() );
@@ -68,7 +67,7 @@
workItem.setParameter( "Subject", "Subject 1" );
workItem.setParameter( "Body", "Body 1" );
- WorkItemManager manager = new WorkItemManager();
+ WorkItemManager manager = new DefaultWorkItemManager(null);
handler.executeWorkItem( workItem, manager );
assertEquals( 3, wiser.getMessages().size() );
@@ -124,7 +123,7 @@
workItem.setParameter( "Subject", "Subject 1" );
workItem.setParameter( "Body", "Body 1" );
- WorkItemManager manager = new WorkItemManager();
+ WorkItemManager manager = new DefaultWorkItemManager(null);
handler.executeWorkItem( workItem, manager );
assertEquals( 6, wiser.getMessages().size() );
More information about the jboss-svn-commits
mailing list