package com.vci.server.workflow.server.event;
|
import java.sql.Connection;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.jbpm.api.Configuration;
|
import org.jbpm.api.Execution;
|
import org.jbpm.api.ProcessEngine;
|
import org.jbpm.api.TaskService;
|
import org.jbpm.api.cmd.Environment;
|
import org.jbpm.api.model.OpenExecution;
|
import org.jbpm.api.task.Assignable;
|
import org.jbpm.api.task.AssignmentHandler;
|
import org.jbpm.api.task.Participation;
|
import org.jbpm.api.task.Task;
|
import org.jbpm.jpdl.internal.activity.TaskActivity;
|
import org.jbpm.pvm.internal.env.EnvironmentImpl;
|
import org.jbpm.pvm.internal.history.HistoryEvent;
|
import org.jbpm.pvm.internal.history.events.TaskActivityStart;
|
import org.jbpm.pvm.internal.history.model.HistoryTaskImpl;
|
import org.jbpm.pvm.internal.model.ActivityImpl;
|
import org.jbpm.pvm.internal.model.ExecutionImpl;
|
import org.jbpm.pvm.internal.session.DbSession;
|
import org.jbpm.pvm.internal.task.OpenTask;
|
import org.jbpm.pvm.internal.task.TaskImpl;
|
import org.jbpm.pvm.internal.util.Clock;
|
|
import com.vci.server.base.persistence.dao.HibernateTemplate;
|
import com.vci.server.workflow.server.template.ProcessTemplateService;
|
|
public class AssignTaskForWuYuan implements AssignmentHandler{
|
|
private static final long serialVersionUID = 1L;
|
List<String> participants;
|
ProcessEngine processEngine=Configuration.getProcessEngine();
|
TaskService taskService=processEngine.getTaskService();
|
|
@SuppressWarnings("unchecked")
|
public void assign(Assignable assignable, OpenExecution execution) throws Exception {
|
Connection cn = new HibernateTemplate().getSessionConnection();
|
String activityName = ((ExecutionImpl)execution).getActivityName();
|
String pid = execution.getProcessInstance().getId();
|
List taskList = this.taskService.createTaskQuery().processInstanceId(pid).activityName(activityName).list();
|
Task task = null;
|
for (int i = 0; i < taskList.size(); i++) {
|
task = (Task)taskList.get(i);
|
if (task.getActivityName().equals(activityName)) {
|
break;
|
}
|
}
|
this.participants = ((List)this.taskService.getVariable(task.getId(), "participants"));
|
int i = 1;
|
if (this.participants != null) {
|
for (String participant : this.participants) {
|
Task subTask = ((OpenTask)task).createSubTask();
|
subTask.setName(task.getActivityName() + "-处理" + i);
|
subTask.setPriority(1);
|
subTask.setAssignee(participant);
|
|
this.taskService.addTaskParticipatingUser(task.getId(), participant, Participation.CLIENT);
|
i++;
|
}
|
cn.commit();
|
}
|
}
|
}
|