📄 starterassigment.java.svn-base
字号:
package com.chinacars.oss.data.appform.workflow.assignment;
import java.util.Map;
import net.sf.jaype.ext.domain.sys.User;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.taskmgmt.def.AssignmentHandler;
import org.jbpm.taskmgmt.exe.Assignable;
import org.springframework.web.context.WebApplicationContext;
import com.chinacars.oss.data.appform.domain.Task;
import com.chinacars.oss.data.appform.services.TaskService;
public class StarterAssigment implements AssignmentHandler {
private static final long serialVersionUID = 1L;
/*
* (non-Javadoc)
* @see org.jbpm.taskmgmt.def.AssignmentHandler#assign(org.jbpm.taskmgmt.exe.Assignable, org.jbpm.graph.exe.ExecutionContext)
*
* 判断逻辑:
* 当用户首次开始流程时,starter会为空,此时将当前发起人即(loginuser)设置为任务的actor;
* 流程在执行过中返回给发起人时,此时starter不为空,直接设为任务的actor
*
*/
@SuppressWarnings("unchecked")
public void assign(Assignable assignable, ExecutionContext executionContext)
throws Exception {
ContextInstance ci = executionContext.getTaskInstance().getContextInstance();
User user = (User)ci.getTransientVariable("LOGIN_USER");
//获取此次流程的发起人,即第一个开始流程的人
String starter = executionContext.getProcessInstance().getTaskMgmtInstance().getSwimlaneInstance("requester").getActorId();
//如果发起人为空,设置当前用户为任务的发起人
if (null == starter || starter.trim().length()==0){
starter = user.getId();
}
String[] actors = new String[]{starter};
assignable.setPooledActors(actors);
//修改项目状态
Map<String,Object> params = ci.getTransientVariables();
Task task = (Task)params.get("BUSINESS_TASK");
task.setState(2); //设置项目为修改状态
WebApplicationContext wac = (WebApplicationContext)params.get("WEB_APPLICATION_CONTEXT");
TaskService taskService = (TaskService) wac.getBean("taskServiceBase");
taskService.upateTask(task);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -