[jbpm-commits] JBoss JBPM SVN: r5247 - in jbpm4/trunk/modules: pvm/src/main/java/org/jbpm/pvm/internal/history/events and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Jul 6 07:08:58 EDT 2009
Author: tom.baeyens at jboss.com
Date: 2009-07-06 07:08:58 -0400 (Mon, 06 Jul 2009)
New Revision: 5247
Added:
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java
Modified:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskHandler.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
Log:
JBPM-2389 fixed history propagation of reassignment of tasks
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 2009-07-06 11:07:48 UTC (rev 5246)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -51,13 +51,7 @@
public void execute(ActivityExecution execution) {
ExecutionImpl executionImpl = (ExecutionImpl) execution;
TaskImpl task = executionImpl.createTask(taskDefinition);
-
- TaskHandler taskHandler = task.getTaskHandler();
- boolean wait = taskHandler.executionCreateTask(task);
-
- if (wait) {
- execution.waitForSignal();
- }
+ execution.waitForSignal();
}
public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java 2009-07-06 11:07:48 UTC (rev 5246)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -21,7 +21,11 @@
*/
package org.jbpm.pvm.internal.history.events;
+import org.jbpm.pvm.internal.env.Environment;
import org.jbpm.pvm.internal.history.HistoryEvent;
+import org.jbpm.pvm.internal.history.model.HistoryTaskInstanceImpl;
+import org.jbpm.pvm.internal.session.DbSession;
+import org.jbpm.pvm.internal.task.TaskImpl;
/**
* @author Alejandro Guizar
@@ -30,15 +34,18 @@
private static final long serialVersionUID = 1L;
- protected String userId;
+ protected TaskImpl taskImpl;
+ protected String assignee;
- public TaskAssign(String userId) {
- this.userId = userId;
+ public TaskAssign(TaskImpl taskImpl, String assignee) {
+ this.assignee = assignee;
}
- @Override
public void process() {
- // TODO
+ DbSession dbSession = Environment.getFromCurrent(DbSession.class);
+ Long historyActivityInstanceDbId = execution.getHistoryActivityInstanceDbid();
+ HistoryTaskInstanceImpl historyTaskInstance = (HistoryTaskInstanceImpl)
+ dbSession.get(HistoryTaskInstanceImpl.class, historyActivityInstanceDbId);
+ historyTaskInstance.setAssignee(assignee);
}
-
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java 2009-07-06 11:07:48 UTC (rev 5246)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -30,10 +30,12 @@
import org.jbpm.pvm.internal.cal.BusinessCalendar;
import org.jbpm.pvm.internal.cal.Duration;
import org.jbpm.pvm.internal.env.Environment;
+import org.jbpm.pvm.internal.env.EnvironmentDefaults;
import org.jbpm.pvm.internal.env.Transaction;
import org.jbpm.pvm.internal.jobexecutor.JobAddedNotification;
import org.jbpm.pvm.internal.jobexecutor.JobExecutor;
import org.jbpm.pvm.internal.model.ObservableElement;
+import org.jbpm.pvm.internal.script.ScriptManager;
import org.jbpm.pvm.internal.session.DbSession;
import org.jbpm.pvm.internal.session.TimerSession;
import org.jbpm.pvm.internal.util.Clock;
@@ -69,6 +71,10 @@
}
public void setDueDateDescription(String dueDateDescription) {
+
+ ScriptManager scriptManager = EnvironmentDefaults.getScriptManager();
+ dueDateDescription = (String) scriptManager.evaluateExpression(dueDateDescription, null);
+
Duration duration = new Duration(dueDateDescription);
Date now = Clock.getCurrentTime();
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-07-06 11:07:48 UTC (rev 5246)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -75,6 +75,7 @@
import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
import org.jbpm.pvm.internal.task.SwimlaneImpl;
import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
+import org.jbpm.pvm.internal.task.TaskHandler;
import org.jbpm.pvm.internal.task.TaskImpl;
import org.jbpm.pvm.internal.type.Variable;
import org.jbpm.pvm.internal.util.EqualsUtil;
@@ -729,6 +730,9 @@
// save task so that TaskDbSession.findTaskByExecution works for assign event listeners
dbSession.saveTask(task);
+
+ TaskHandler taskHandler = task.getTaskHandler();
+ boolean wait = taskHandler.executionCreateTask(task);
SwimlaneDefinitionImpl swimlaneDefinition = taskDefinition.getSwimlaneDefinition();
if (swimlaneDefinition!=null) {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskHandler.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskHandler.java 2009-07-06 11:07:48 UTC (rev 5246)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskHandler.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -53,8 +53,8 @@
}
/** called when the given task is assigned to an actor. */
- public void taskAssign(TaskImpl task, String userId) {
- task.historyTaskAssign(userId);
+ public void taskAssign(TaskImpl task, String assignee) {
+ task.historyTaskAssign(assignee);
}
/** called when the given task is cancelled. */
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java 2009-07-06 11:07:48 UTC (rev 5246)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -123,13 +123,14 @@
setAssignee(userId, false);
}
- public void setAssignee(String userId, boolean propagateToSwimlane) {
- this.assignee = userId;
+ public void setAssignee(String assignee, boolean propagateToSwimlane) {
+ this.assignee = assignee;
if (propagateToSwimlane) {
propagateAssigneeToSwimlane();
}
if (execution != null) {
execution.fire(Event.ASSIGN, execution.getActivity());
+ getTaskHandler().taskAssign(this, assignee);
}
}
@@ -327,9 +328,9 @@
}
}
- public void historyTaskAssign(String userId) {
+ public void historyTaskAssign(String assignee) {
if (execution != null) {
- execution.fireHistoryEvent(new TaskAssign(userId));
+ execution.fireHistoryEvent(new TaskAssign(this, assignee));
}
}
Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java 2009-07-06 11:08:58 UTC (rev 5247)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test.taskactivity;
+
+import java.util.List;
+
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.history.HistoryActivityInstance;
+import org.jbpm.api.task.Task;
+import org.jbpm.jpdl.internal.xml.JpdlParser;
+import org.jbpm.pvm.internal.history.model.HistoryTaskInstanceImpl;
+import org.jbpm.test.JbpmTestCase;
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskReassignTest extends JbpmTestCase {
+
+ public void testReassignHistory() {
+ deployJpdlXmlString(
+ "<process name='ReassignTest' xmlns='"+JpdlParser.JPDL_NAMESPACE+"'>" +
+ " <start>" +
+ " <transition to='write email'/>" +
+ " </start>" +
+ " <task name='write email' assignee='shekharv'>" +
+ " <transition to='end'/>" +
+ " </task>" +
+ " <end name='end'/>" +
+ "</process>"
+ );
+
+ ProcessInstance pi = executionService.startProcessInstanceByKey("ReassignTest");
+
+ List<Task> tasks = taskService.findPersonalTasks("shekharv");
+ assertTrue(tasks.size() == 1);
+
+ String taskId = tasks.get(0).getId();
+
+ taskService.assignTask(taskId, "johndoe");
+
+ List<Task> tasksAfterReassignment = taskService.findPersonalTasks("shekharv");
+ assertTrue("shekharv should not have any tasks.", tasksAfterReassignment.size() == 0);
+
+ List<Task> tasksForNewAssignee = taskService.findPersonalTasks("johndoe");
+ assertTrue("johndoe should have 1 task.", tasksForNewAssignee.size() == 1);
+
+ assertEquals("johndoe", taskService.getTask(taskId).getAssignee());
+
+ taskService.completeTask(taskId);
+ List<HistoryActivityInstance> aiHistory = historyService
+ .createHistoryActivityInstanceQuery()
+ .executionId(pi.getId())
+ .list();
+ HistoryTaskInstanceImpl hai = (HistoryTaskInstanceImpl) aiHistory.get(0);
+
+ assertEquals("John Doe completed the Task, but someone else got the credit", "johndoe", hai.getAssignee());
+ }
+}
Property changes on: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
More information about the jbpm-commits
mailing list