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 工作流实例-实现请假流程

  • 2016年01月13日 09:48
  • 48.44MB
  • 下载

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

BOS项目笔记第11天   内容: 1、提供新的json文件,修改系统菜单(加入工作流的菜单) 2、流程定义管理(查询、部署流程、查看png流程图片) 3、流程实例管理(查询、查看运行状态...

Activiti 学习笔记四:流程实例、任务的执行

一、部署流程定义/**部署流程定义(从zip)*/ @Test public void deploymentProcessDefinition_zip(){ Input...

Activiti(二)流程实例

一、创建Activiti项目, 创建好的项目结构如图所示: 打开windows-preferences,如图如示: 二、创建Demo测试类 注意:别忘了导入开发所需的jar包,ja...
  • ITlsc
  • ITlsc
  • 2016年06月19日 21:06
  • 260

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

http://blog.csdn.net/zwk626542417/article/details/46646565 ****************************************...

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

一、前言       上一篇文章中我们将Activiti流程定义管理的知识进行了介绍,这篇文章我们继续Activiti流程实例和任务管理的学习。   二、正文   ...

BPMN2,activiti,jbpm5学习资料1(规范,流程实例)

BPMN2.0,Activiti,jbpm5学习资料 上世纪九十年代以后,随着WfMC联盟的成立,BPM市场群雄逐鹿如火如荼,工作流技术得到了突飞猛进的发展,其中IBM、Oracle等大型软件厂...

activiti5.21中调用活动(callactivity),在多实例(multi-instance)情况下,子流程无法返回值到主流程

activiti工作流callactivity多实例情况下,activiti:out子流程无法返回值到主流程的问题解决...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:activiti跟踪流程实例图片
举报原因:
原因补充:

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