工作流相关API实例
来源:互联网 发布:权力来源于哪里知乎 编辑:程序博客网 时间:2024/05/21 11:12
相关api 实例
基础部分
1.创建一个流程实例
@Override public Result createProcessInstance(Paramenter paramenter) { Result result = new Result(); String processInstanceByKey=paramenter.getProcessInstanceByKey(); try { String processInstanceId=ProcessUtils.createProcessInstance(processEngine,processInstanceByKey); result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); result.setData(processInstanceId); } catch (Exception e) { logger.error("业务流程实例化失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("业务流程实例化失败!"); result.setError(e.getMessage()); } return result; }
2.查找任务
@Override public Result createProcessInstance(Paramenter paramenter) { Result result = new Result(); String processInstanceByKey=paramenter.getProcessInstanceByKey(); try { String processInstanceId=ProcessUtils.createProcessInstance(processEngine,processInstanceByKey); result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); result.setData(processInstanceId); } catch (Exception e) { logger.error("业务流程实例化失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("业务流程实例化失败!"); result.setError(e.getMessage()); } return result; }
3.执行处理任务
@Override public Result completeTask(Paramenter paramenter) { Result result = new Result(); String taskId=paramenter.getTaskId(); Object signal=paramenter.getSignal(); try { ProcessUtils.completeTask(processEngine, taskId, signal); result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); } catch (Exception e) { logger.error("用户作业处理失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("用户作业处理失败!"); result.setError(e.getMessage()); } return result; }
4.查找历史任务
@Override public Result historyTaskList(Paramenter paramenter) { Result result = new Result(); String processInstanceId=paramenter.getProcessInstanceId(); List<TaskDto> taskDtoList=null; TaskDto taskDto=null; try { List<HistoricTaskInstance> list=ProcessUtils.historyTaskList(processEngine, processInstanceId); if(list!=null){ taskDtoList=new ArrayList<TaskDto>(); for (HistoricTaskInstance historicTaskInstance : list) { taskDto=new TaskDto(); taskDto.setId(historicTaskInstance.getId()); taskDto.setExecutionId(historicTaskInstance.getExecutionId()); taskDto.setName(historicTaskInstance.getName()); taskDto.setProcessInstanceId(historicTaskInstance.getProcessInstanceId()); taskDto.setStartTime(historicTaskInstance.getStartTime()); taskDto.setEndTime(historicTaskInstance.getEndTime()); taskDtoList.add(taskDto); } } result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); result.setListData(taskDtoList); } catch (Exception e) { logger.error("查看流转日志失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("查看流转日志失败!"); result.setError(e.getMessage()); } return result; }
5查找历史Activity任务
@Override public Result historyActivityList(Paramenter paramenter) { Result result = new Result(); String processInstanceId=paramenter.getProcessInstanceId(); List<ActivityDto> activityDtoList=null; ActivityDto activityDto=null; try { List<HistoricActivityInstance> list=ProcessUtils.historyActivityList(processEngine, processInstanceId); if(list!=null){ activityDtoList=new ArrayList<ActivityDto>(); for (HistoricActivityInstance historicActivityInstance : list) { activityDto=new ActivityDto(); activityDto.setActivitiId(historicActivityInstance.getActivityId()); activityDto.setActivityName(historicActivityInstance.getActivityName()); activityDto.setActivityType(historicActivityInstance.getActivityType()); activityDto.setDuration(historicActivityInstance.getDurationInMillis()); activityDto.setProcessInstanceId(historicActivityInstance.getProcessInstanceId()); activityDto.setTaskId(historicActivityInstance.getTaskId()); activityDto.setStartTime(historicActivityInstance.getStartTime()); activityDto.setEndTime(historicActivityInstance.getEndTime()); activityDtoList.add(activityDto); } } result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); result.setListData(activityDtoList); } catch (Exception e) { logger.error("查看流转日志失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("查看流转日志失败!"); result.setError(e.getMessage()); } return result; }
特殊部分
1.删除任务
@Override public Result deleteProcessInstance(Paramenter paramenter) { Result result = new Result(); String processInstanceId=paramenter.getProcessInstanceId(); String deleteReason=paramenter.getDeleteReason(); try { ProcessUtils.deleteProcessInstance(processEngine, processInstanceId, deleteReason); result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); } catch (Exception e) { logger.error("删除业务流程实例失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("删除业务流程实例失败!"); result.setError(e.getMessage()); } return result; }
2.挂机和重启任务
@Override public Result suspendAndActivateProcessInstance(Paramenter paramenter) { Result result = new Result(); String processInstanceId=paramenter.getProcessInstanceId(); Boolean suspendOrActivate=paramenter.getSuspendOrActivate(); try { ProcessUtils.suspendOrActivateProcessInstance(processEngine, processInstanceId, suspendOrActivate); result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); } catch (Exception e) { logger.error("流程的挂起或激活失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("流程的挂起或激活失败!"); result.setError(e.getMessage()); } return result; }
3.执行任务带审批内容
@Override public Result completeTaskDetail(Paramenter paramenter) { Result result = new Result(); String taskId=paramenter.getTaskId(); Object signal=paramenter.getSignal(); String context=paramenter.getContext(); try { ProcessUtils.completeTaskDetail(processEngine, taskId, signal,context); result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); } catch (Exception e) { logger.error("用户作业处理失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("用户作业处理失败!"); result.setError(e.getMessage()); } return result; }
4.查找历史流程实例带审批
@Override public Result historyTaskListDetail(Paramenter paramenter) { Result result = new Result(); String processInstanceId=paramenter.getProcessInstanceId(); String taskId=paramenter.getTaskId(); List<TaskDto> taskDtoList=null; TaskDto taskDto=null; try { List<HistoricTaskInstance> list=ProcessUtils.historyTaskList(processEngine, processInstanceId); if(list!=null){ taskDtoList=new ArrayList<TaskDto>(); for (HistoricTaskInstance historicTaskInstance : list) { taskDto=new TaskDto(); taskDto.setId(historicTaskInstance.getId()); taskDto.setExecutionId(historicTaskInstance.getExecutionId()); taskDto.setName(historicTaskInstance.getName()); taskDto.setProcessInstanceId(historicTaskInstance.getProcessInstanceId()); taskDto.setStartTime(historicTaskInstance.getStartTime()); taskDto.setEndTime(historicTaskInstance.getEndTime()); String executionId=taskDto.getExecutionId(); List<HistoricVariableInstance> lists = processEngine.getHistoryService() .createHistoricVariableInstanceQuery()//创建一个历史的流程变量查询 .processInstanceId(processInstanceId) .executionId(executionId) .variableName("context") //.taskId(taskDto.getId()) .list(); for(HistoricVariableInstance hiv : lists){ String context=(String) hiv.getValue(); taskDto.setContext(context); } taskDtoList.add(taskDto); } } result.setResult(true); result.setCode(ConstCode.OPERAT_SUCCESS); result.setListData(taskDtoList); } catch (Exception e) { logger.error("查看流转日志失败!"); logger.error(e.getMessage()); result.setResult(false); result.setCode(ConstCode.OPERAT_FAILURE); result.setMessage("查看流转日志失败!"); result.setError(e.getMessage()); } return result; }
定义工具类ProcessUtils
public class ProcessUtils { /** * 流程操作 * * @param taskId * 作业Id * @param content * 审批内容 */ public static void completeTask(ProcessEngine processEngine,String taskId, Object signal) { Map<String, Object> variables = new HashMap(); variables.put("signal", signal); processEngine.getTaskService().complete(taskId, variables); } /** * 查看流转日志(某一次流程的执行经历的任务) * * @param processInstanceId */ public static List<HistoricTaskInstance> historyTaskList(ProcessEngine processEngine,String processInstanceId) { List<HistoricTaskInstance> list = processEngine.getHistoryService().createHistoricTaskInstanceQuery() .processInstanceId(processInstanceId) // .finished() .list(); return list; } /** * 查看流转日志(某一次流程的执行经历的活动) * * @param processInstanceId */ public static List<HistoricActivityInstance> historyActivityList(ProcessEngine processEngine,String processInstanceId) { List<HistoricActivityInstance> list = processEngine.getHistoryService().createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) // .finished() .list(); return list; } /** * 判断当前流程是否执行完 0是,1否 */ public static String processState(ProcessEngine processEngine,String processInstanceId) { ProcessInstance pi = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId) .singleResult(); String flag="1"; if (pi == null) { flag="0"; } return flag; } /** * 删除当前流程实例 */ public static void deleteProcessInstance(ProcessEngine processEngine,String processInstanceId,String deleteReason) { processEngine.getRuntimeService().deleteProcessInstance(processInstanceId, deleteReason); } /**挂起或激活当前流程实例 * * @param processEngine * @param processInstanceId * @param suspendOrActivate ture:挂起,false:激活 * @return */ public static Boolean suspendOrActivateProcessInstance(ProcessEngine processEngine,String processInstanceId,Boolean suspendOrActivate) { RuntimeService ru=processEngine.getRuntimeService(); if(suspendOrActivate){ //挂起流程实例 ru.suspendProcessInstanceById(processInstanceId); //验证是否挂起 return ru.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().isSuspended(); }if(!suspendOrActivate){ //激活流程实例 ru.activateProcessInstanceById(processInstanceId); //验证是否激活 return !ru.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().isSuspended(); } return false; } /** * 返回用户流程作业 * * @param candidateUser * @return */ public static List<Task> findTask(ProcessEngine processEngine,String candidateUser) { List<Task> taskList = processEngine.getTaskService().createTaskQuery().taskCandidateUser(candidateUser).list(); return taskList; } /** 查询 历史任务的用户列表 */ public static List<HistoricIdentityLink> findHistoryGroupCandidate(ProcessEngine processEngine,String processInstanceId) { // 流程实例ID List<HistoricIdentityLink> list = processEngine.getHistoryService() .getHistoricIdentityLinksForProcessInstance(processInstanceId); if (list != null && list.size() > 0) { for (HistoricIdentityLink identityLink : list) { System.out.println("任务ID:" + identityLink.getTaskId()); System.out.println("用户ID:" + identityLink.getUserId()); System.out.println("工作流角色ID:" + identityLink.getGroupId()); } } return list; } /** * 创建一个流程实例task(流程作业) * * @throws Exception */ public static String createProcessInstance(ProcessEngine processEngine,String processInstanceByKey) throws Exception { ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processInstanceByKey); return processInstance.getId(); } /** * 创建一个流程实例task(流程作业带业务主键) * * @param businessKey业务主键 * @return * @throws Exception */ public static String createProcessInstance(ProcessEngine processEngine,String processInstanceByKey,String businessKey) throws Exception { ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processInstanceByKey, businessKey); return processInstance.getId(); } public static void deploy(ProcessEngine processEngine,String name,String bpmn,String png) throws Exception { // 获取仓库服务 RepositoryService repositoryService = processEngine.getRepositoryService(); // 创建发布配置对象 DeploymentBuilder builder = repositoryService.createDeployment(); // 设置发布信息 builder.name(name)// 添加部署规则的显示别名 .addClasspathResource(bpmn)// 添加规则文件 .addClasspathResource(png);// 添加规则图片 // 不添加会自动产生一个图片不推荐 // 完成发布 builder.deploy(); } public void deployZIP(ProcessEngine processEngine,String name,String zip) throws Exception { // 获取仓库服务 RepositoryService repositoryService = processEngine.getRepositoryService(); // 创建发布配置对象 DeploymentBuilder builder = repositoryService.createDeployment(); // 获得上传文件的输入流程 InputStream in = this.getClass().getClassLoader().getResourceAsStream(zip); ZipInputStream zipInputStream = new ZipInputStream(in); // 设置发布信息 builder.name(name)// 添加部署规则的显示别名 .addZipInputStream(zipInputStream); // 完成发布 builder.deploy(); } /** * 流程操作 * * @param taskId * 作业Id * @param content * 审批内容 */ public static void completeTaskDetail(ProcessEngine processEngine,String taskId, Object signal,String context) { Map<String, Object> variables = new HashMap(); variables.put("context", context); variables.put("signal", signal); processEngine.getTaskService().complete(taskId, variables); } public static void main(String[] args) throws Exception { // 部署 // deploy(); // 流程实例化 // String proc_inst_id=createProcessInstance(); // 当前用户作业 // findTask("aa"); // 处理 // completeTask("c8452602-08e4-11e7-8486-dc536091e18b","11"); //historyTaskList("c4c5bfff-08e0-11e7-a7bc-dc536091e18b"); }/* public void setVariableValues() throws Exception { TaskService taskService = processEngine.getTaskService(); String taskId = ""; String variableName = ""; taskService.setVariable("", "", ""); } public void getVariableValues() throws Exception { TaskService taskService = processEngine.getTaskService(); String taskId = ""; String variableName = ""; taskService.getVariable(taskId, variableName); } public void setRuVariableValues() throws Exception { RuntimeService runtimeService = processEngine.getRuntimeService(); runtimeService.setVariable("", "", ""); String taskId = ""; String variableName = ""; } public void setPVariableValues() throws Exception { String processDefinitionKey = "varTest"; // 创建流程变量 Map<String, Object> variables = new HashMap<String, Object>(); variables.put("请假人", "冯小刚"); // 在启动时设置流程变量 ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variables); System.out.println("pid:" + pi.getId()); }*/}
1 0
- 工作流相关API实例
- Activiti工作流-流程实例相关
- 工作流API
- 工作流相关
- activiti工作流常用api
- activiti工作流常用api
- 工作流相关FUNCTION
- 工作流相关(oswf)
- 工作流相关的
- jBPM工作流相关
- 图解Git相关工作流
- 工作流的相关知识
- 工作流相关概念
- SOA之工作流实例
- 2017工作流触发器实例
- 支付宝API接口开发相关文档以及实例
- 支付宝API接口开发相关文档以及实例
- Spark SQL相关API操作实例 spark研习第五季
- Java I/O解读与使用实例
- 远程接入局域网--windows下搭建openvpn服务
- HTML/CSS初写仿csdn博客页面框架
- hugepage
- [HackerRank Week of Code]DAG Queries/[JZOJ5038]命运的构造
- 工作流相关API实例
- iOSUIImageView处理图片大小问题
- spark点点滴滴 —— 认识spark sql的DataFrame和DataSet
- SPFA——Luogu1073 [NOIP2009]最优贸易
- 蓝桥杯 历届试题 核桃的数量(求三个数的最小公倍数)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- js删除数组的几种方法
- Jquery入门
- Android Tab的实现方法(二) FragmentTab