Flowable 生成流程图

java 复制代码
/**
 * 生成流程图
 *
 * @param processId 任务ID
 */
@RequestMapping("/diagram/{processId}")
public void genProcessDiagram(HttpServletResponse response,
                              @PathVariable("processId") String processId) {
    InputStream inputStream = flowTaskService.diagram(processId);
    OutputStream os = null;
    BufferedImage image = null;
    try {
        image = ImageIO.read(inputStream);
        response.setContentType("image/png");
        os = response.getOutputStream();
        if (image != null) {
            ImageIO.write(image, "png", os);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (os != null) {
                os.flush();
                os.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
java 复制代码
/**
 * 获取流程过程图
 */
public InputStream diagram(String processId) {
    String processDefinitionId;
    // 获取当前的流程实例
    ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
    // 如果流程已经结束,则得到结束节点
    if (Objects.isNull(processInstance)) {
        HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).singleResult();

        processDefinitionId = pi.getProcessDefinitionId();
    } else {// 如果流程没有结束,则取当前活动节点
        // 根据流程实例ID获得当前处于活动状态的ActivityId合集
        ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
        processDefinitionId = pi.getProcessDefinitionId();
    }

    // 获得活动的节点
    List<HistoricActivityInstance> highLightedFlowList = historyService.createHistoricActivityInstanceQuery()
        .processInstanceId(processId).orderByHistoricActivityInstanceStartTime().asc().list();

    List<String> highLightedFlows = new ArrayList<>();
    List<String> highLightedNodes = new ArrayList<>();
    //高亮线
    for (HistoricActivityInstance tempActivity : highLightedFlowList) {
        if ("sequenceFlow".equals(tempActivity.getActivityType())) {
            //高亮线
            highLightedFlows.add(tempActivity.getActivityId());
        } else {
            //高亮节点
            highLightedNodes.add(tempActivity.getActivityId());
        }
    }

    //获取流程图
    BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
    ProcessEngineConfiguration configuration = processEngine.getProcessEngineConfiguration();
    //获取自定义图片生成器
    ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator();
    return diagramGenerator.generateDiagram(bpmnModel, "png", highLightedNodes, highLightedFlows, configuration.getActivityFontName(),
        configuration.getLabelFontName(), configuration.getAnnotationFontName(), configuration.getClassLoader(), 1.0, true);
}
相关推荐
oyezitan7 小时前
发送语音流程图
流程图
数说星榆1818 小时前
电脑流程图模板精选 中文适配一键修改超方便
论文阅读·毕业设计·流程图·论文笔记·毕设
十年一梦实验室14 小时前
【Gemini+Claude】根据(先进战机)系统描述创建系统软硬件架构图 & 爆炸图 & 多线程飞控系统逻辑流程图+六代机架构设计理念深度解析
流程图
檐下翻书1734 天前
音乐产业版权管理与运营流程图表制作方法
论文阅读·信息可视化·毕业设计·流程图·论文笔记
陌上阳光4 天前
代码绘制流程图
流程图
兰.lan5 天前
【黑马ai测试】判定表+流程图+ai生成测试用例
ai·测试用例·流程图·ai编程
dajun18112345610 天前
轻微交通事故处理流程图 现场快速取证步骤
架构·流程图
静听松涛13310 天前
远程视频会议组织全流程步骤 在线画图工具绘制会议流程图表教程
人工智能·架构·流程图
檐下翻书17318 天前
公司组织架构调整工具 在线可视化编辑平台
论文阅读·人工智能·信息可视化·架构·去中心化·流程图