activiti学习资料(流程任务高亮显示)
来源:互联网 发布:snmp java 编辑:程序博客网 时间:2024/05/23 10:34
activiti5学习资料11(流程任务高亮显示)
直接生成带老亮节点的图片:
try{// ProcessDefinitionEntity pde = (ProcessDefinitionEntity) RepositoryService// .getDeployedProcessDefinition(procDefId); InputStream imageStream = ProcessDiagramGenerator.generateDiagram( def, "png", runtimeService.getActiveActivityIds(executionId)); List<Task> list = taskService.createTaskQuery().processInstanceId(executionId).orderByTaskId().desc().list(); int size = list.size(); getRequest().setAttribute("inputStream", imageStream); }catch(RasterFormatException e){ e.printStackTrace(); }img.jsp
<%@page import="java.io.InputStream"%><%@page import="org.activiti.engine.impl.*"%><%@page import="org.activiti.engine.impl.pvm.*"%><%@page import="org.activiti.engine.impl.pvm.process.*"%><%@page import="org.activiti.engine.repository.*"%><%@page import="org.activiti.engine.*"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%InputStream is = (InputStream)request.getAttribute("inputStream");byte[] b = new byte[1024];int len = -1;while((len = is.read(b, 0, 1024)) != -1) {response.getOutputStream().write(b, 0, len);// 防止异常:getOutputStream() has already been called for this responseout.clear();out = pageContext.pushBody();}%>
方法2: 图片和高亮节点圈分别产生
/** * 显示流程图 * @return * @throws Exception */ public String getProcessPic() throws Exception { // String taskId = // "2901";//getRequest().getParameter("taskId");3016,552,3020 String procDefId = getRequest().getParameter("procDefId");ProcessDefinition procDef = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult(); String diagramResourceName = procDef.getDiagramResourceName(); InputStream imageStream = repositoryService.getResourceAsStream( procDef.getDeploymentId(), diagramResourceName); getRequest().setAttribute("inputStream", imageStream); return SUCCESS; }/** * 获取跟踪信息 * @return * @throws Exception */ public String getProcessMap() throws Exception { String procDefId = getRequest().getParameter("procDefId"); String executionId = getRequest().getParameter("executionId"); ProcessDefinition processDefinition = repositoryService .createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult(); ProcessDefinitionImpl pdImpl = (ProcessDefinitionImpl) processDefinition; String processDefinitionId = pdImpl.getId();// 流程标识 ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(processDefinitionId); ActivityImpl actImpl = null; ExecutionEntity execution = (ExecutionEntity) runtimeService .createExecutionQuery().executionId(executionId).singleResult();// 执行实例 String activitiId = execution.getActivityId();// 当前实例的执行到哪个节点// List<String>activitiIds = runtimeService.getActiveActivityIds(executionId); List<ActivityImpl> activitiList = def.getActivities();// 获得当前任务的所有节点// for(String activitiId : activitiIds){ for (ActivityImpl activityImpl : activitiList) { String id = activityImpl.getId(); if (id.equals(activitiId)) {// 获得执行到那个节点 actImpl = activityImpl; break; } }// } getRequest().setAttribute("coordinateObj", actImpl); getRequest().setAttribute("procDefId",procDefId ); return SUCCESS; }
pic.jsp
<%@page import="java.io.InputStream"%><%@page import="org.activiti.engine.impl.*"%><%@page import="org.activiti.engine.impl.pvm.*"%><%@page import="org.activiti.engine.impl.pvm.process.*"%><%@page import="org.activiti.engine.repository.*"%><%@page import="org.activiti.engine.*"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%InputStream is = (InputStream)request.getAttribute("inputStream");byte[] b = new byte[1024];int len = -1;while((len = is.read(b, 0, 1024)) != -1) {response.getOutputStream().write(b, 0, len);// 防止异常:getOutputStream() has already been called for this responseout.clear();out = pageContext.pushBody();}%>
showImg.jsp
<%@page import="java.io.InputStream"%><%@page import="org.activiti.engine.impl.*"%><%@page import="org.activiti.engine.impl.pvm.*"%><%@page import="org.activiti.engine.impl.pvm.process.*"%><%@page import="org.activiti.engine.repository.*"%><%@page import="org.activiti.engine.*"%><%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title></title></head><body><div > <img src="getProcessPic.action?procDefId=${procDefId}" style="position:absolute; left:0px; top:0px;"> <!-- 给执行的节点加框 --> <div style="position:absolute; border:2px solid red;left:${coordinateObj.x-1 }px;top:${coordinateObj.y-1 }px;width:${coordinateObj.width }px;height:${coordinateObj.height }px;"></div> </div></body></html>
struts.xml
<action name="getProcessPic" class="processInstanceAction" method="getProcessPic"><result name = "success" >/incident/pic.jsp</result></action><action name="getProcessMap" class="processInstanceAction" method="getProcessMap"><result name = "success" >/incident/showImg.jsp</result></action>
需要注意的是,当你的流程图中存在并发节点时需要用到runtimeService.getActiveActivityIds(proInstId)得到多个活动节点。
这个方法可以在activiti的帮助文档中找到,但它的原文中是getActiveActivityIds(String executionId)(执行ID)这是错的,因为在数据库的_ru_task表(运行任务表)中,执行ID与任务记录一一对应,但可以存在多个流程实例Id相同的任务记录。
activiti-explorer源码下载地址:https://github.com/HSSC/activiti-explorer
- activiti学习资料(流程任务高亮显示)
- activiti学习资料(流程任务高亮显示)
- activiti当前流程高亮显示
- activiti学习资料(子流程subProcess)
- activiti学习资料(实例流程图的显示)
- activiti学习资料(Activiti Initiative)
- activiti学习资料(Activiti Modeler)
- Activiti学习资料(流程活动自动与手工触发执行)
- activiti学习资料(xml格式的字符串发布流程)
- BPMN2,activiti,jbpm5学习资料1(规范,流程实例)
- Activiti学习资料(流程对象之间的关系)
- Activiti学习资料(业务对象和流程关联测试)
- activiti学习资料(xml格式的字符串发布流程)
- BPMN2,activiti,jbpm5学习资料1(规范,流程实例)
- 工作流学习——Activiti流程实例、任务管理四步曲
- 工作流学习——Activiti流程实例、任务管理四步曲
- Activiti 学习笔记四:流程实例、任务的执行
- 工作流学习——Activiti流程实例、任务管理四步曲
- iPhone消息推送机制实现与探讨
- 安装编译好的内核
- android UI相关类
- action 与 jsp 传值 ,session ,request
- IP地址转换成Long型数字的算法
- activiti学习资料(流程任务高亮显示)
- fatal error C1070: mismatched wabtags.h
- mysql优化实践总结
- NAT 类型及检测方法
- 如何让IOS应用从容地崩溃
- PHP学习网站
- 求中位数的O(n)算法
- CentOS下go 语言开发环境源码安装
- 网站优化--让你的网页飞起来