[jbpm-commits] JBoss JBPM SVN: r6634 - in jbpm4/trunk/modules: jpdl/src/main/java/org/jbpm/jpdl/internal/activity and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sun Aug 29 04:47:23 EDT 2010


Author: swiderski.maciej
Date: 2010-08-29 04:47:23 -0400 (Sun, 29 Aug 2010)
New Revision: 6634

Added:
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java
Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
Log:
JBPM-2924: introduced new event type TASK_CREATED that is fired when task is fully created and initialized so it can be found and accessed from within event listener

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java	2010-08-29 08:38:15 UTC (rev 6633)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java	2010-08-29 08:47:23 UTC (rev 6634)
@@ -38,6 +38,8 @@
   String ASSIGN = "assign";
   /** fired when an assignee is reminded of a task */
   String REMIND = "remind";
+  /** fired when a task is created */
+  String TASK_CREATED = "task-created";
 
   /** get the name of event. */
   String getName();

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java	2010-08-29 08:38:15 UTC (rev 6633)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java	2010-08-29 08:47:23 UTC (rev 6634)
@@ -26,6 +26,7 @@
 
 import org.jbpm.api.JbpmException;
 import org.jbpm.api.activity.ActivityExecution;
+import org.jbpm.api.model.Event;
 import org.jbpm.api.model.Transition;
 import org.jbpm.pvm.internal.cal.Duration;
 import org.jbpm.pvm.internal.el.Expression;
@@ -106,6 +107,8 @@
 
     execution.initializeAssignments(taskDefinition, task);
     
+    execution.fire(Event.TASK_CREATED, execution.getActivity());
+    
     HistoryEvent.fire(new TaskActivityStart(task), execution);
 
     execution.waitForSignal();

Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java	                        (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java	2010-08-29 08:47:23 UTC (rev 6634)
@@ -0,0 +1,64 @@
+package org.jbpm.test.task;
+
+import java.util.List;
+
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.listener.EventListener;
+import org.jbpm.api.listener.EventListenerExecution;
+import org.jbpm.api.model.Event;
+import org.jbpm.api.task.Task;
+import org.jbpm.pvm.internal.env.EnvironmentImpl;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.session.DbSession;
+import org.jbpm.test.JbpmTestCase;
+
+
+public class TaskWithEventTest extends JbpmTestCase {
+
+  public void testTaskWithEvent() {
+    deployJpdlXmlString(""
+    + "<process name='process' xmlns='http://jbpm.org/4.0/jpdl' key='process' version='1'> "
+      + "    <start name='start1' g='74,95,48,48'> "
+      + "      <transition name='to task1' to='task1' g='1,-23'/> "
+      + "   </start> "
+      + "   <end name='end1' g='73,270,48,48'/> "
+      + "   <task name='task1' g='215,141,92,52' assignee='alex'> "
+      + "           <on event='task-created'> "
+      + "             <event-listener class='" + TaskEventListener.class.getName() + "' /> "
+      + "          </on>    "
+      + "     <transition name='to task2' to='task2' g='-50,-21'/> "
+      + "  </task> "
+      + "  <task name='task2' g='214,270,92,52' assignee='mike'> "
+      + "     <transition name='to end1' to='end1' g='-48,-21'/> "
+      + "  </task> "
+      + "  </process>"        
+    );
+    
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("process");
+    List<Task> tasks = taskService.findPersonalTasks("alex");
+    taskService.completeTask(tasks.get(0).getId());
+    
+    String eventName = (String) executionService.getVariable(processInstance.getId(), "event-type");
+    assertEquals(Event.TASK_CREATED, eventName);
+    
+    String assigneeName = (String) executionService.getVariable(processInstance.getId(), "assignee");
+    assertEquals("alex", assigneeName);
+    
+    tasks = taskService.findPersonalTasks("mike");
+    taskService.completeTask(tasks.get(0).getId());
+
+  }
+
+
+  public static class TaskEventListener implements EventListener {
+  
+    private static final long serialVersionUID = 1L;
+  
+    public void notify(EventListenerExecution execution) {
+      
+      DbSession session = EnvironmentImpl.getFromCurrent(DbSession.class);
+      execution.setVariable("assignee", session.findTaskByExecution(execution.getProcessInstance()).getAssignee());      
+      execution.setVariable("event-type", ((ExecutionImpl)execution).getEvent().getName());
+    }
+  }
+}



More information about the jbpm-commits mailing list