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日