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流程实例以及办理任务(四)

1.当部署好一个流程之后,便可以启动流程实例了。 部署方法请参考博客:http://blog.csdn.net/qciwyy/article/details/48051699 2.启动流程实例 方...
  • QCIWYY
  • QCIWYY
  • 2015-08-28 14:32
  • 2429

工作流引擎Activiti使用总结

http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html

20位活跃在Github上的国内技术大牛

20位活跃在Github上的国内技术大牛 本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页:    ...

Activiti进阶(五)——流程执行历史记录

之前的几篇文章,为大家简单的介绍了部署流程定义、启动流程实例、查看和办理个人任务以及如何设置和获取流程变量,这一系列的活动组成了一个完整的执行流程,那么一个执行完的流程我们如何查看相关的定义呢,这篇博...

工作流学习——Activiti流程实例、任务管理四步曲

我们这篇文章主要是流程实例、执行对象、任务以及他们之间的关系进行了学习,同时我们还将启动和查询流程实例、判断流程实例是否执行结束、查看和办理任务以及查询历史任务都进行了介绍。

activiti工作流表说明

activiti工作流表说明

Activiti流程编辑器中任务节点用户输入框改为弹出选择框

将整合到系统中的activiti流程编辑器中任务节点的候选人和候选组输入框修改为弹出框

activiti工作流程实例

  • 2017-03-17 10:40
  • 19.54MB
  • 下载

框架 day57 BOS项目练习(流程定义/实例管理,bos用户角色同步activiti用户表组表)

BOS项目笔记第11天   内容: 1、提供新的json文件,修改系统菜单(加入工作流的菜单) 2、流程定义管理(查询、部署流程、查看png流程图片) 3、流程实例管理(查询、查看运行状态...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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