首页>代码>JBPM实例demo>/JbpmSource/src/com/ktvoa/process/action/JbpmManagerImpl.java
package com.ktvoa.process.action;

import java.io.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipInputStream;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.IdentityService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.model.ActivityCoordinates;
import org.jbpm.api.task.Task;

/**
 * 
* @类名: JbpmManagerImpl
* @描述: TODO(流程管理实现类)
* @作者 LYK
* @创建日期 2013-7-6 下午04:30:56
* @公司  上海创昱信息技术有限公司
* 
 */
public class JbpmManagerImpl implements JbpmManager {
	/**
	 * 流程引擎接口
	 */
	private ProcessEngine processEngine;
	/**
	 * 流程存储服务接口
	 */
	private RepositoryService repositoryService;
	/**
	 * 执行流程服务接口
	 */
	private ExecutionService executionService;
	/**
	 * 历史流程服务接口
	 */
	private HistoryService historyService;
	/**
	 * 获取流程任务接口
	 */
	private TaskService taskService;
	/**
	 * 身份验证接口
	 */
	private IdentityService identityService;
	public final Log logger = LogFactory.getLog(getClass());

	@Override
	public List<ProcessDefinition> getProcessDefinitions() {
		return repositoryService.createProcessDefinitionQuery().list();
	}
       
	@Override
	public void deploy(String deployKey) {
		String deployFilePath = "/com/jbpm/source/" + deployKey + ".zip";
		ZipInputStream zis = new ZipInputStream(this.getClass()
				.getResourceAsStream(deployFilePath));
		String did = repositoryService.createDeployment()
				.addResourcesFromZipInputStream(zis).deploy();
	}

	@Override
	public void undeploy(String id) {
		repositoryService.deleteDeploymentCascade(id);

	}

	@Override
	public void start(String id, Map<String, Object> map) {
		executionService.startProcessInstanceById(id, map);
	}

	@Override
	public List<ProcessInstance> getProcessInstances() {
		return executionService.createProcessInstanceQuery().list();
	}

	@Override
	public List<Task> getTasks(String roleName) {
		return taskService.findPersonalTasks(roleName);
	}

	@Override
	public void complate(String taskId, Map<String, Object> map) {
		taskService.setVariables(taskId, map);
		taskService.completeTask(taskId);
	}

	@Override
	public Map<String, Object> manager(String id) {
		Task task = taskService.getTask(id);
		String taskId = task.getId();
		Set<String> strSet = new HashSet<String>();
		strSet.add("owner");
		strSet.add("day");
		strSet.add("reason");
		strSet.add("name");

		return taskService.getVariables(taskId, strSet);
	}

	@Override
	public void complateByManager(String id, String result) {
		taskService.completeTask(id, result);
	}

	@Override
	public Map<String, Object> boss(String id) {
		Task task = taskService.getTask(id);
		String taskId = task.getId();
		Set<String> strSet = new HashSet<String>();
		strSet.add("owner");
		strSet.add("day");
		strSet.add("reason"); 
		strSet.add("name");
		strSet.add("age");
		strSet.add("address");
		return taskService.getVariables(taskId, strSet);
	}

	@Override
	public List<HistoryProcessInstance> getHistoryProcessInstances() {
		return historyService.createHistoryProcessInstanceQuery().list();
		// return historyService.createHistoryDetailQuery().list();
	}

	@Override
	public ActivityCoordinates findActivityCoordinates(String id) {
		// 通过id查到流程实例
		ProcessInstance processInstance = executionService
				.findProcessInstanceById(id);
		
		//ProcessInstance processInstance = executionService
		//.findProcessInstanceById(id);
		Set<String> activityNames = processInstance.findActiveActivityNames();
           
		return repositoryService.getActivityCoordinates(processInstance
				.getProcessDefinitionId(), activityNames.iterator().next());

	}

	@Override
	public InputStream findPicInputStream(String id) {
		// 通过流程实例id查找到流程实例
		ProcessInstance processInstance = executionService
				.findProcessInstanceById(id);
		// 通过流程实例查找流程定义id
		String processDefinitionId = processInstance.getProcessDefinitionId();
		// 通过流程id查找流程
		ProcessDefinition processDefinition = repositoryService
				.createProcessDefinitionQuery().processDefinitionId(
						processDefinitionId).uniqueResult();
		
		String name= processDefinition.getName();
		String deployId=processDefinition.getDeploymentId();
		return repositoryService.getResourceAsStream(deployId,  name + ".png");
	}

	public ProcessEngine getProcessEngine() {
		return processEngine;
	}

	public void setProcessEngine(ProcessEngine processEngine) {
		this.processEngine = processEngine;
	}

	public RepositoryService getRepositoryService() {
		return repositoryService;
	}

	public void setRepositoryService(RepositoryService repositoryService) {
		this.repositoryService = repositoryService;
	}

	public ExecutionService getExecutionService() {
		return executionService;
	}

	public void setExecutionService(ExecutionService executionService) {
		this.executionService = executionService;
	}

	public HistoryService getHistoryService() {
		return historyService;
	}

	public void setHistoryService(HistoryService historyService) {
		this.historyService = historyService;
	}

	public TaskService getTaskService() {
		return taskService;
	}

	public void setTaskService(TaskService taskService) {
		this.taskService = taskService;
	}

	public IdentityService getIdentityService() {
		return identityService;
	}

	public void setIdentityService(IdentityService identityService) {
		this.identityService = identityService;
	}

	@Override
	public void complateByBoss(String id) {
		taskService.completeTask(id);
	}

	@Override
	public List<String> getDeployProcessInstanceName() {
		List<ProcessDefinition> list =  repositoryService.createProcessDefinitionQuery().list();
		Set<String> set = new HashSet<String>();
		List<String> plist = new ArrayList<String>();
		for(Iterator<ProcessDefinition> iter = list.iterator();iter.hasNext();){
			Object element = iter.next().getName();
			if(set.add((String) element)){
				plist.add(element.toString());
			}
		}
		return plist;
	}

	@Override
	public String deployJbpmFromOutSrc(String deployKey) {
		
		String deployFilePath = "D:/process/" + deployKey + ".zip";
		ZipInputStream zis=null;
		try{
		 zis = new ZipInputStream(new FileInputStream(deployFilePath));
		}
		catch (Exception e) {
		e.printStackTrace();
		}
	        String deployId=	 repositoryService.createDeployment()
				.addResourcesFromZipInputStream(zis).deploy();
	        
	        return deployId;
		
	}

	@Override
	public boolean complateTaskByProcessId(String processId) {
            taskService.completeTask(processId);
            
		return false;
	}

	@Override
	public void delteProcessById(String processId) {
		// TODO Auto-generated method stub
		repositoryService.deleteDeploymentCascade(processId);
	}
}
最近下载更多
胜过这首歌  LV2 2023年6月27日
17852250910  LV2 2021年12月27日
157554513749  LV11 2020年8月1日
xuyongff  LV24 2020年3月3日
chaoy_nx  LV8 2020年2月25日
三生石sh1  LV13 2019年10月21日
逛逛逛  LV2 2019年8月13日
alreadyhome  LV10 2019年6月6日
hanl  LV12 2019年2月22日
wj024835  LV8 2019年1月25日
最近浏览更多
胜过这首歌  LV2 2023年6月27日
liuzejuncn  LV6 2022年3月27日
17852250910  LV2 2021年12月27日
qwqqwq123 2021年7月14日
暂无贡献等级
hollwomanc  LV1 2021年4月9日
pxqtsht  LV15 2021年4月1日
zhaoyu_2016  LV2 2021年1月12日
chenliuyang 2020年10月13日
暂无贡献等级
随便取个名字_哈哈  LV27 2020年10月5日
157554513749  LV11 2020年8月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友