Activiti 根据流程定义id生成图片

Activiti 根据流程定义id生成图片

1.前提是已经部署了流程 会在act_re_procdef表中生成一条数据
根据流程定义的id 生成图片

 @GetMapping(value = "/getImageNOId")
    public void getImage2(HttpServletResponse response,@RequestParam  String processDefinitionId) {
        try {
            //select * from ACT_RE_PROCDEF
           // String processDefinitionId="leave:1:2501";
            InputStream is = activitiservice.getDiagramNoId(processDefinitionId);
            if (is == null)
                return;
            response.setContentType("image/png");
            BufferedImage image = ImageIO.read(is);
            OutputStream out = response.getOutputStream();
            ImageIO.write(image, "png", out);
            is.close();
            out.close();
        } catch (Exception ex) {
            logger.error("查看流程图失败", ex);
        }
    }

serviceImpl中

 public InputStream getDiagramNoId(String processDefinitionId) {
        //获得流程实例
        BpmnModel model = repositoryService.getBpmnModel(processDefinitionId);
        //使用宋体
        String fontName = "宋体";
        //获取BPMN模型对象

        //获取流程实例当前的节点,需要高亮显示
        List<String> currentActs = Collections.EMPTY_LIST; //空list就是没有高亮的
        return processEngine.getProcessEngineConfiguration()
                .getProcessDiagramGenerator()
                .generateDiagram(model, "png", currentActs, new ArrayList<String>(),
                        fontName, fontName, fontName, null, 1.0);
    }

2.根据processInstanceId查询流程图

 /**
     * 查看流程图 根据processInstanceId
     */
    @GetMapping(value = "/getImage")
    public void getImage(HttpServletResponse response,
                      @RequestParam String processInstanceId) {
        try {
            InputStream is = activitiservice.getDiagram(processInstanceId);
            if (is == null)
                return;

            response.setContentType("image/png");
            BufferedImage image = ImageIO.read(is);
            OutputStream out = response.getOutputStream();
            ImageIO.write(image, "png", out);
            is.close();
            out.close();
        } catch (Exception ex) {
            logger.error("查看流程图失败", ex);
        }
    }

serviceImpl

 @Override
    public InputStream getDiagram(String processInstanceId) {
        //获得流程实例
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
                .processInstanceId(processInstanceId).singleResult();
        String processDefinitionId = StringUtils.EMPTY;
        if (processInstance == null) {
            //查询已经结束的流程实例
            HistoricProcessInstance processInstanceHistory =
                    historyService.createHistoricProcessInstanceQuery()
                            .processInstanceId(processInstanceId).singleResult();
            if (processInstanceHistory == null)
                return null;
            else
                processDefinitionId = processInstanceHistory.getProcessDefinitionId();
        } else {
            processDefinitionId = processInstance.getProcessDefinitionId();
        }

        //使用宋体
        String fontName = "宋体";
        //获取BPMN模型对象
        BpmnModel model = repositoryService.getBpmnModel(processDefinitionId);
        //获取流程实例当前的节点,需要高亮显示
        List<String> currentActs = Collections.EMPTY_LIST;
        if (processInstance != null)
            currentActs = runtimeService.getActiveActivityIds(processInstance.getId());

        return processEngine.getProcessEngineConfiguration()
                .getProcessDiagramGenerator()
                .generateDiagram(model, "png", currentActs, new ArrayList<String>(),
                        fontName, fontName, fontName, null, 1.0);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值