### 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();