⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 starterassigment.java.svn-base

📁 jbpm工作流 jbpm工作流
💻 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 + -