activiti流程图的显示 高亮连线和已执行节点及当前节点

activiti流程图的显示 高亮连线和已执行节点及当前节点
大家好,本人玉米,这是我首次在csdn发帖,不太会编辑,见谅。本贴是为了教大家解决activiti5.22里的流程图高亮显示,并且绿色表明已走过的路线,以及红色表明当期正处于的任务节点。话不多说,先上效果图:
activiti流程图的显示 高亮连线和已执行节点及当前节点_第1张图片
activiti流程图的显示 高亮连线和已执行节点及当前节点_第2张图片
activiti流程图的显示 高亮连线和已执行节点及当前节点_第3张图片
是不是很帅~~

我用的是springboot+springcloud
controller里的调用代码:

/**
     * @读取动态流程图
     *  @author  yumiyellow
     */
    @RequestMapping("/showView/{processInstanceId}")
    public String showView(@PathVariable("processInstanceId")String processInstanceId, HttpServletResponse response) throws IOException {
        try {
            if (StringUtil.isEmpty(processInstanceId)) {
                logger.error("参数为空");
            }
            HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery()
                    .processInstanceId(processInstanceId).singleResult();
            BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
            ProcessDefinitionEntity definitionEntity = (ProcessDefinitionEntity) repositoryService
                    .getProcessDefinition(processInstance.getProcessDefinitionId());
            List highLightedActivitList = historyService.createHistoricActivityInstanceQuery()
                    .processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
            // 高亮环节id集合
            List highLightedActivitis = new ArrayList();
            // 高亮线路id集合
            List highLightedFlows = getHighLightedFlows(definitionEntity, highLightedActivitList);
            for (HistoricActivityInstance tempActivity : highLightedActivitList) {
                String activityId = tempActivity.getActivityId();
                highLightedActivitis.add(activityId);
            }
            Set currIds = runtimeService.createExecutionQuery().processInstanceId(processInstance.getId()).list()
                    .stream().map(e->e.getActivityId()).collect(Collectors.toSet());
            CustomProcessDiagramGeneratorI diagramGenerator = (CustomProcessDiagramGeneratorI) processEngineConfiguration
                    .getProcessDiagramGenerator();
            InputStream inputStream = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivitis,
                    highLightedFlows, "宋体", "宋体", "宋体", null, 1.0, new Color[] { WorkflowConstants.COLOR_NORMAL, WorkflowConstants.COLOR_CURRENT }, currIds);
            OutputStream outputStream = response.getOutputStream();
            for (int b = -1; (b = inputStream.read()) != -1; ) {
                outputStream.write(b);
            }
            outputStream.close();
            inputStream.close();
            return null;
        }catch (Exception e){
            log.error("流程图查看出错{}",e);
        }
        return null;
    }

另外需要以下几个文件在项目中配置下:
activiti流程图的显示 高亮连线和已执行节点及当前节点_第4张图片
这5个文件我已为大家写好了,大家可以打包下载以上需要使用的文件,放进自己项目就能直接用。

感谢支持下哈!o( ̄︶ ̄)o

资料下载链接:activiti工作流高亮显示配置代码文件

你可能感兴趣的:(activiti)