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 LV16
2021年4月1日
zhaoyu_2016 LV2
2021年1月12日
chenliuyang
2020年10月13日
暂无贡献等级
随便取个名字_哈哈 LV27
2020年10月5日
157554513749 LV11
2020年8月1日

