[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