2023年8月1日发(作者:)
站长统计流程引擎之Camunda开发记录(⼆)Camunda的使⽤有两种⽅法,⼀种是JAVA API,⼀种是RESET API个⼈理解JAVA API是从上到下通过JAVA类⼀级⼀级调⽤,RESET API则是从下到上通过注解+接⼝⼀层⼀层实现,如果你只是使⽤Camunda实现⼀些简单的操作,⽤JAVA API就能满⾜。1.如何部署流程? /** * 部署流程 * * @param path * @return */ @Override public Deployment createDeployment(String path) throws IOException { File file = new File(path); // ⽂件发布 其中param 是⽂件的路径信息 Deployment deploy = Deployment().addInputStream("bpmnProcessId", new FileInputStream(file)).deploy(); return deploy; }2.如何查看流程定义(1)查看单个流程 /** * 查看流程定义-ById * * @param processDefinitionId * @return */ @Override public CommonResult
// long count = ProcessDefinitionQuery().latestVersion().count(); // 取分页结果 PageInfo pageInfo = new PageInfo<>(list); // 取记录总数 long total= al(); n(list); List processDefinitionList =new ArrayList<>(); for(ProcessDefinition processDefinition:list){ ProcessModel processDefinitionLike = new ProcessModel(); loymentId(loymentId()); cessDefinitionName(e()); cessDefinitionVersion(sion()); cessDefinitionDescription(cription()); cessDefinitionKey(()); cessDefinitionId(()); cessDefinitionResourceName(ourceName()); (processDefinitionLike); } // 构建Map Map data = new HashMap(); ("result", processDefinitionList); ("total", total); ("currentPage", currentPage); return s(data); }流程定义key值相同的情况下,版本是从1开始逐次升级的,流程定义的id是【key:版本:⽣成ID】流程定义key值可以理解为,⼀个流程只有1个固定key值,你每修改⼀次流程定义,key值不变,但流程ID,版本号会改变,流程ID会重新⽣成,版本号会在之前基础上加1;.latestVersion()实际是通过key值对列表进⾏了过滤,只保留最后⼀版的流程定义。(3)获取流程定义的⽂件资源-XML /** * 获取流程XML * * @param processDefinitionId * @return */ @Override public CommonResult getProcessModel(String processDefinitionId){// BpmnModelInstance bpmnModelInstance = nModelInstance(processDefinitionId); InputStream processModelIn = null; try { processModelIn = cessModel(processDefinitionId); byte[] processModel = putStream(processModelIn, "processModelBpmn20Xml"); ProcessDefinitionDiagramDto processDefinitionDiagramDto = ProcessDefinitionDiagramDto .create(processDefinitionId, new String(processModel, "UTF-8")); n(processDefinitionDiagramDto); Map data = new HashMap(); ("bpmn20Xml", processDefinitionDiagramDto); ("id", processDefinitionId); return s(data); } catch (AuthorizationException e) { throw e; } catch (ProcessEngineException e) { throw new InvalidRequestException(_REQUEST, e, "No matching definition with id " + processDefinitionId); } catch (UnsupportedEncodingException e) { throw new RestException(AL_SERVER_ERROR, e); } finally { ilently(processModelIn); } }(4)获取流程 /** * 查看流程图 */ public void viewPic() throws IOException { // 将⽣产的图⽚放到⽂件夹下 String deploymentId = "401";// TODO // 获取图⽚资源名称 List list = ositoryService() .getDeploymentResourceNames(deploymentId);
// 定义图⽚资源名称 String resourceName = ""; if (list != null && () > 0) { for (String name : list) { if (f(".png") >= 0) { resourceName = name; } } }
// 获取图⽚的输⼊流 InputStream in = ositoryService() .getResourceAsStream(deploymentId, resourceName);
File file = new File("D:/" + resourceName); // 将输⼊流的图⽚写到D盘下 putStreamToFile(in, file); }3.获取流程下活动实例的节点 /** * 获取流程下活动实例的节点 * * @param processDefinitionId * @return */ @Override public CommonResult getActivityStatistics(String processDefinitionId){ List activityStatistics = managementService .createActivityStatisticsQuery(processDefinitionId) .list(); Map data = new HashMap(); ("result", activityStatistics); return s(data); }4.获取流程下活动实例 /** * 获取流程下活动实例 * * @param processDefinitionId * @return */ @Override public CommonResult getActiveInstances(String processDefinitionId){ List lists = ProcessInstanceQuery() .active() .processDefinitionId(processDefinitionId) .orderByProcessInstanceId() .asc() .list(); Map data = new HashMap(); ("result", lists); return s(data); }5.获取流程下失败实例 /** * 获取流程下失败实例 * * @param processDefinitionId * @return */ @Override public CommonResult getIncidentByProcessId(String processDefinitionId){ List lists = IncidentQuery() .processDefinitionId(processDefinitionId) .orderByIncidentId() .asc() .list(); Map data = new HashMap(); ("result", lists); return s(data); }
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690872765a451915.html
评论列表(0条)