zoukankan      html  css  js  c++  java
  • 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;
         }

     ------------------------------------fhadmin.cn------------------------------自定义表单
    28. 定义模版:拖拽左侧表单元素到右侧区域,编辑表单元素,保存表单模版
    29. 表单模版:编辑维护表单模版,复制表单模版,修改模版类型,预览表单模版
    30. 我的表单:选择表单模版,编辑表单规则,是否上传图片、附件、开启富文本、挂靠流程开关等
    31. 表单数据:从我的表单进去可增删改查表单数据,修改表单规则
    32. 挂靠记录:记录表单数据和流程实例ID关联记录,可删除

  • 相关阅读:
    elasticsearch 索引清理脚本及常用命令
    git 快速入门及常见用法
    第01章-成本,你真的算对过吗?
    windows mysql安装及常用命令
    centos7 systemctl配置开机自启动服务
    python pip手动安装二进制包
    centos7使用nginx+uwsgi部署python django项目
    python json.loads()、json.dumps()和json.dump()、json.load()区别
    比阿里云快2倍的InfluxDB集群,我们开源了
    为什么是InfluxDB | 写在《InfluxDB原理和实战》出版之际
  • 原文地址:https://www.cnblogs.com/m170981362621/p/15524919.html
Copyright © 2011-2022 走看看