activiti跟踪流程实例图片

原创 2015年11月19日 20:16:16

1、根据流程实例ID查询

/**
     * 查询流程实例图片
     *
     * @param processInstanceId
     * @return
     */
    @RequiresPermissions("activitiManage:processInstance")
    @RequestMapping("/showProcessInstance")
    public ModelAndView showProcessInstance(String processInstanceId) {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("admin/workflow/processInstancePng");
        ProcessInstance processInstance =
                runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
        String processDefinitionId = processInstance.getProcessDefinitionId();
        ProcessDefinition processDefinition =
                repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
        String deploymentId = processDefinition.getDeploymentId();
        String imageName = processDefinition.getDiagramResourceName();
        List<ActivityImpl> processMap = getProcessMap(processInstance,processDefinition);
        ActivityImpl activity = processMap.get(0);
        int x = activity.getX();
        int y = activity.getY();
        int width = activity.getWidth();
        int height = activity.getHeight();
        InputStream resourceAsStream = repositoryService.getResourceAsStream(deploymentId, imageName);
        String base64Img = Base64Util.GetImageStr(resourceAsStream);

        mav.addObject("x", x);
        mav.addObject("y", y);
        mav.addObject("width", width);
        mav.addObject("height", height);
        mav.addObject("img", "data:image/png;base64," + base64Img);
        return mav;
    }

2、获取活动任务

/**
     * 获取活动任务
     * @return
     */
    public List<ActivityImpl> getProcessMap(ProcessInstance pi,ProcessDefinition processDefinition) {
        List<ActivityImpl> actImpls = new ArrayList<ActivityImpl>();
        ProcessDefinitionImpl pdImpl = (ProcessDefinitionImpl) processDefinition;
        String processDefinitionId = pdImpl.getId();// 流程标识
        ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
        List<ActivityImpl> activitiList = def.getActivities();// 获得当前任务的所有节点
        List<String> ActiveActivityIds = runtimeService.getActiveActivityIds(pi.getId());
        for (String activeId : ActiveActivityIds) {
            for (ActivityImpl activityImpl : activitiList) {
                String id = activityImpl.getId();
                if (activityImpl.isScope()) {
                    if (activityImpl.getActivities().size() > 1) {
                        List<ActivityImpl> subAcList = activityImpl.getActivities();
                        for (ActivityImpl subActImpl : subAcList) {
                            String subid = subActImpl.getId();
                            if (activeId.equals(subid)) {// 获得执行到那个节点
                                actImpls.add(subActImpl);
                                break;
                            }
                        }
                    }
                }
                if (activeId.equals(id)) {// 获得执行到那个节点
                    actImpls.add(activityImpl);
                }
            }
        }
        return actImpls;
    }


3、用输入流编码

 /**
     * 用输入流编码
     * @param in
     * @return
     */
    public static String GetImageStr(InputStream in)
    {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        byte[] data = null;
        //读取图片字节数组
        try
        {
            data = new byte[in.available()];
            in.read(data);
            in.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        //对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);//返回Base64编码过的字节数组字符串
    }


4、jsp页面

<img src="${img}"/>
<div style="position: absolute;border:3px solid red;top:${y-1}px;left:${x-1}px;width:${width-3}px;height:${height-3}px;">



版权声明:本文为博主原创文章,未经博主允许不得转载。

Activiti学习——生成历史流程跟踪图

需求说明 流程在流转或者结束后,可以查看其流转历史流程图 实现思路 获取流程图 获取指定流程的流转环节 获取每个流转环节之间的线 根据流程图,环节,线绘制流转历史流程图...
  • flygoa
  • flygoa
  • 2016年07月13日 11:41
  • 10475

Activiti查看流程图片

在开发中可能需要查看某个流程的流程图片。 对应操作的数据库表是act_ge_bytearray的Bytes_字段: Activiti提供了操作接口,可以查询返回一个资源文件输入流, 然后...
  • lifupingcn
  • lifupingcn
  • 2017年03月13日 16:02
  • 1183

Activiti 跟踪流程执行情况用红色框在流程图上标识路线跟节点

/** * @Author 葛明 * @Note 读取流程资源 * @Date 2017-1-3 15:11 * @param processDefinitionId 流程定义ID * @p...
  • m0_37222746
  • m0_37222746
  • 2017年01月06日 17:42
  • 3166

activiti - 流程跟踪图

1、 先上效果。效果如下图 2、 代码如下 /** * 方法一:生成流程图;带进度: * 得到带有高亮节点的流程图 * * @param processInsta...
  • hichinamobile
  • hichinamobile
  • 2017年09月26日 16:24
  • 203

Activiti工作流引擎流程执行情况监控

通过扩展Activiti的API来获取流程实例的执行信息(json格式数据)、在前台动态渲染出监控图: 可以在此页面查看办理人和待办人等任务信息。...
  • xiezunjin
  • xiezunjin
  • 2015年08月03日 15:17
  • 2073

Activiti流程图进度查看

Activiti流程查看进度图片 直接上效果图: 在上源码: package com.deer.controller; import java.io.IOException; import ...
  • xc137647341
  • xc137647341
  • 2017年08月17日 20:43
  • 2747

activiti 5.16 实现流程图高亮跟踪显示

之前看到好多代码使用工具类ProcessDiagramGenerator ,我的5.16怎么没有这个类呢?activiti-engine-5.16.jar中org.activiti.engine.im...
  • yanyanwish
  • yanyanwish
  • 2015年01月05日 13:20
  • 3375

activiti根据流程实例id查询资源文件(xml、image)

/** * 读取资源,通过部署ID * * @param processDefinitionId * 流程定义 * @param resourceType * ...
  • chen_lay
  • chen_lay
  • 2017年10月24日 17:54
  • 96

Activiti 流程定义实例

流程定义实例 ProcessDefinition
  • caoyue_new
  • caoyue_new
  • 2016年08月09日 17:39
  • 1047

Activiti挂起或者删除一个流程实例

private RuntimeService runtimeService;runtimeService.suspendProcessInstanceById(processInstanceId);/...
  • bc_aptx4869
  • bc_aptx4869
  • 2017年11月08日 15:30
  • 1221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:activiti跟踪流程实例图片
举报原因:
原因补充:

(最多只允许输入30个字)