【弄nèng - Activiti6】应用篇之生成流程跟踪图

250 阅读1分钟

文章目录

本文建议你熟悉Activiti之后在阅读,是Activiti的应用篇。直接上应用代码,包含生成流程跟踪图功能。Springboot搭建Activiti整合流程设计器 请查看这篇博客https://blog.csdn.net/yy756127197/article/details/101211510

后台服务基于Springboot2 + Mybatis-plus3 + Lombok + Swagger + Hutool工具类

1. 代码

	/**
     * ActivitiConstant.LEAVE_BUSINESSKEY = "leave." 是businessKey前缀
     * 
     * @param id  业务ID
     * @param response
     * @throws Exception
     */
	@ApiOperation(value = "读取带跟踪的图片", notes = "读取带跟踪的图片")
    @GetMapping(value = "/process/trace/auto/{id}")
    public void readResource(@PathVariable("id") String id, HttpServletResponse response)
            throws Exception {
        // 流程businessKey
        String businessKey = ActivitiConstant.LEAVE_BUSINESSKEY + id;
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
                .processInstanceBusinessKey(businessKey)
                .singleResult();
        InputStream imageStream;
        // 存活
        if (processInstance != null) {
            BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
            List<String> activeActivityIds = runtimeService.getActiveActivityIds(processInstance.getId());
            // 不使用spring请使用下面的两行代码
            // ProcessEngineImpl defaultProcessEngine = (ProcessEngineImpl) ProcessEngines.getDefaultProcessEngine();
            // Context.setProcessEngineConfiguration(defaultProcessEngine.getProcessEngineConfiguration());

            // 使用spring注入引擎请使用下面的这行代码
            ProcessEngineConfiguration processEngineConfiguration = processEngine.getProcessEngineConfiguration();
            Context.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);

            ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
            imageStream = diagramGenerator.generateDiagram(bpmnModel, "png", activeActivityIds,
                    Collections.<String>emptyList(), "宋体", "宋体", "宋体", null, 1.0);
        } else {
            HistoricProcessInstance historyProcessInstance = historyService.createHistoricProcessInstanceQuery()
                    .processInstanceBusinessKey(businessKey)
                    .singleResult();
            imageStream = actReProcdefService.readResource(historyProcessInstance.getProcessDefinitionId(),
                    null, ActivitiConstant.IMAGE);
        }


        // 输出资源内容到相应对象
        byte[] b = new byte[1024];
        int len;
        while ((len = imageStream.read(b, 0, 1024)) != -1) {
            response.getOutputStream().write(b, 0, len);
        }
    }

源码地址

IT-CLOUD :IT服务管理平台,集成基础服务,中间件服务,监控告警服务等。\