activiti流程图的部署、删除、新增、编辑
activiti流程图的部署、删除以及流程启动
文章目录
- activiti流程图的部署、删除以及流程启动
- 前言`
- 一、activiti-modeler画流程图注意事项
- 二、流程部署
- 1.部署流程
- 2.启动流程
- 2.删除activiti-modeler定义的一个流程
- 总结
前言`
上一章节展示了spring boot集成activiti以及activiti-modeler及项目基础配置信息,接下来介绍activiti-modeler流程图的一些基本操作
一、activiti-modeler画流程图注意事项

可以直接拖拉左侧所需用到的事件来画流程图

人工任务可以输入用户组或者用户唯一值用来分发任务给用户、也可以直接输入assignee直接分发任务给某一角色或某人。因为activiti查询任务时只有assignee为空时才会去表ACT_RU_IDENTITYLINK中查询这里填入的Candidate users和Candidate groups

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、流程部署
1.部署流程
因为activiti-modeler画图数据会转换成bytes形式存在act_GE_BYTEARRAY这个表中
代码如下(示例):
public String deploy(String processName, String modelId) throws IOException {RepositoryService repositoryService = processEngine.getRepositoryService();//获取模型Model modelData = repositoryService.getModel(modelId);byte[] bytes = repositoryService.getModelEditorSource(modelData.getId());if (bytes == null) {return "模型数据为空,请先设计流程并成功保存,再进行发布。";}JsonNode modelNode = new ObjectMapper().readTree(bytes);BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);if (model.getProcesses().size() == 0) {return "数据模型不符要求,请至少设计一条主线流程。";}byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);if (StringUtils.isNotEmpty(modelData.getDeploymentId())) {deployModeler.deployModelDao.updatemodel(modelData.getDeploymentId(),new String(bpmnBytes, "UTF-8"));//由于楼主项目与activiti-modeler分开的所以采用接口来清除activiti缓存,这样不用重启就可以生效String url =******JSONObject jsonParam = new JSONObject();String json = doPostJson(url, jsonParam);return "success";} else {//发布流程processName = modelData.getName() + ".bpmn20.xml";Deployment deployment = repositoryService.createDeployment().name(modelData.getName()).addString(processName, new String(bpmnBytes, "UTF-8")).deploy();modelData.setDeploymentId(deployment.getId());repositoryService.saveModel(modelData);return "success";}}

2.启动流程
businessKey是唯一值这样能跟流程所对应的外部表单建立关联关系。
启动流程后调用审批方法因为,流程启动后只会到第一节点但是实际业务常常是第一节点人员发起,所以得走过第一节点。
代码如下(示例):
//根据流程key和businessKey启动项目//设置流程发起人 Authentication.setAuthenticatedUserId(userCode);ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(flowKey, businessKey);if (ObjectUtils.isNotEmpty(processInstance) && StringUtils.isNotEmpty(processInstance.getProcessInstanceId())) {//根据实例查询下一步任务Task list = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();taskService.setAssignee(list.getId(), userCode);//taskService.addCandidateUser(list.getId(), userCode);//流程开始后需要默认审批第一节点ActApproveInfo actApproveInfo1 = approveByBusinesskeyUserId(businessKey, userCode, "", lczt,true);
2.删除activiti-modeler定义的一个流程
删除一个model
@AutowiredRepositoryService rep;
rep.deleteDeployment(deployid, true);
删除正发生或历史流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();if (ObjectUtils.isNotEmpty(processInstance)) {//结束流程runtimeService.deleteProcessInstance(processInstance.getProcessInstanceId(), "");processEngine.getHistoryService().deleteHistoricProcessInstance(processInstance.getProcessInstanceId());result.setStatus(ActivitiConstants.DELETE_SUCCESS);return result;} else {HistoricProcessInstance historicProcessInstance = processEngine.getHistoryService().createHistoricProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();processEngine.getHistoryService().deleteHistoricProcessInstance(((HistoricProcessInstanceEntityImpl) historicProcessInstance).getProcessInstanceId());result.setStatus(ActivitiConstants.DELETE_SUCCESS);return result;}
查询所有已部署流程
List<ProcessDefinition> list = rep.createProcessDefinitionQuery().listPage(firstrow, rowCount);
总结
抱歉、语言功底不行,有问题可以私信我
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
