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);
}
相关推荐
向明天乄3 小时前
Maotu流程图编辑器:Vue3项目中的集成实战与自定义流程开发指南
javascript·编辑器·vue·流程图
打码人的日常分享2 天前
物联网智慧医院建设方案(PPT)
大数据·物联网·架构·流程图·智慧城市·制造
YuTaoShao5 天前
HashMap中的put方法执行流程(流程图)
流程图·哈希算法·散列表
米饭不加菜5 天前
`mermaid-cli` 生成高分辨率 Mermaid 流程图(可以下载安装Typora更好 )的操作指南
流程图
Ai财富密码7 天前
Cursor从入门到精通实战指南(五):一键生成流程图/架构图,开发者必备收藏!
流程图·产品经理·cursor·ai生成产品原型
零起飞12 天前
SAAS架构设计2-流程图-注册流程图
流程图·saas
シ風箏13 天前
Django【应用 02】第一个Django应用开发流程图
python·django·流程图
零起飞13 天前
SAAS架构设计2-流程图-用户与租户之间对应关系图
流程图·saas·erp
IT技术猿猴16 天前
一键生成专业流程图:Draw.io与AI结合的高效绘图指南
人工智能·流程图·draw.io
黄交大彭于晏16 天前
论文流程图mermaid解决方案
流程图