flowable 获取当前任务流程图片的输入流

简介: flowable 获取当前任务流程图片的输入流
/**
   * 获取当前任务流程图片的输入流
   * @param PROC_INST_ID_ 流程实例ID
   * @from  fhadmin.cn
   */
  public InputStream genProcessDiagram(String PROC_INST_ID_, String type){
    /* 获得活动的节点  */
        String processDefinitionId = "";
        if (this.isFinished(PROC_INST_ID_)) { // 如果流程已经结束,则得到结束节点
            HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();
            processDefinitionId=pi.getProcessDefinitionId();
        } else {              // 如果流程没有结束,则取当前活动节点
          /* 根据流程实例ID获得当前处于活动状态的ActivityId合集  */
            ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();
            processDefinitionId = pi.getProcessDefinitionId();
        }
        /* 获得活动的节点对象  */
        List<HistoricActivityInstance> highLightedActivitList =  historyService.createHistoricActivityInstanceQuery().processInstanceId(PROC_INST_ID_).orderByHistoricActivityInstanceStartTime().asc().list();
        List<String> highLightedActivitis = new ArrayList<String>();        //节点对象ID
        for(HistoricActivityInstance tempActivity : highLightedActivitList){
            String activityId = tempActivity.getActivityId();
            highLightedActivitis.add(activityId);
        }
        BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);  //获取流程图
        ProcessEngineConfiguration engconf = processEngine.getProcessEngineConfiguration();
        /* 获得活动的连线对象  */
        List<String> flows = new ArrayList<>();                   //连线ID
        if("RU".equals(type)) {
          List<ActivityInstance> highLightedFlowInstances = runtimeService.createActivityInstanceQuery().activityType(BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW).processInstanceId(PROC_INST_ID_).list();
            for(ActivityInstance ai : highLightedFlowInstances) {
              flows.add(ai.getActivityId());  
            }
        }else {
          List<HistoricActivityInstance> highLightedFlowInstances = historyService.createHistoricActivityInstanceQuery().activityType(BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW).processInstanceId(PROC_INST_ID_).list();
          for(HistoricActivityInstance ha : highLightedFlowInstances) {
              flows.add(ha.getActivityId());  
            }
        }
        ProcessDiagramGenerator diagramGenerator = engconf.getProcessDiagramGenerator();
        InputStream in = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivitis, flows, engconf.getActivityFontName(), engconf.getLabelFontName(), engconf.getAnnotationFontName(), engconf.getClassLoader(), 1.0, true);
        return in;
   }

 

目录
相关文章
|
7月前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
372 3
|
7月前
|
缓存 监控 JavaScript
基于若依和flowable6.7.2的ruoyi-nbcio流程管理系统正式发布
基于若依和flowable6.7.2的ruoyi-nbcio流程管理系统正式发布
208 1
|
7月前
基于若依的ruoyi-nbcio流程管理系统增加读取节点扩展属性的方法
基于若依的ruoyi-nbcio流程管理系统增加读取节点扩展属性的方法
62 0
|
7月前
|
存储
day17-缓冲流&转换流&序列化流&打印流&Properties(一)
day17-缓冲流&转换流&序列化流&打印流&Properties
79 0
|
Java
从Excel批量导入数据说到ForkJoin的原理
前面我们介绍了EasyPOI,用其进行Excel导入导出,非常的方便,非常的简单。但是4.0.0 版本以及其之前的版本都是通过单线程的方式对Excel中的数据进行解析的。效率比较差。 今天我将做一个测试,5000条数据,分别使用EasyPOI的方式和自己手写ForkJoin的方式(多任务)的方式来导入,来比较这两者的性能差异。
224 0
从Excel批量导入数据说到ForkJoin的原理
|
7月前
|
Java API 数据库
IO流【转换流、字符输出流、数据流、对象流】(三)-全面详解(学习总结---从入门到深化)
IO流【转换流、字符输出流、数据流、对象流】(三)-全面详解(学习总结---从入门到深化)
72 0
|
存储 Java
Java开发——30.I/O流_处理流(数据流、输入/输出流和打印流)
处理流就相当于外衣,每件衣服的作用不同,每个处理流的作用也不同,处理流可以实现多嵌套,即可以有多个处理流,每个处理流的功能不同!
Java开发——30.I/O流_处理流(数据流、输入/输出流和打印流)
|
存储 Java
Java开发——29.I/O流_处理流(缓冲流和转换流)
缓冲流和转换流,就是在某个流的基础上再添加不同的功能以实现对文件更为灵活的操作
Java开发——29.I/O流_处理流(缓冲流和转换流)
|
存储 Java 数据处理
JavaIO流(2)--IO流原理、流的分类及节点流文件流操作
JavaIO流(2)--IO流原理、流的分类及节点流文件流操作
114 0
JavaIO流(2)--IO流原理、流的分类及节点流文件流操作