### Eclipse Workspace Patch 1.0
#P jbpm4
Index: modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java
===================================================================
--- modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java (revision 0)
+++ modules/test-db/src/test/java/org/jbpm/test/task/TaskWithEventTest.java (revision 0)
@@ -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(""
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ );
+
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("process");
+ List 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());
+ }
+ }
+}
Property changes on: modules\test-db\src\test\java\org\jbpm\test\task\TaskWithEventTest.java
___________________________________________________________________
Added: svn:keywords
+ Id Revision
Added: svn:eol-style
+ LF
Index: modules/api/src/main/java/org/jbpm/api/model/Event.java
===================================================================
--- modules/api/src/main/java/org/jbpm/api/model/Event.java (revision 6403)
+++ modules/api/src/main/java/org/jbpm/api/model/Event.java (working copy)
@@ -38,4 +38,6 @@
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";
}
Index: modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
===================================================================
--- modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java (revision 6426)
+++ modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java (working copy)
@@ -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();