`

Activiti 流程图上标记当前任务

 
阅读更多




public byte[] getCurrTaskTrackImage(String deoployId,String processInstanceId) {
		byte[] imageByte = null;
		ByteArrayOutputStream out = null;
		try{
			ProcessDefinition processDefinition = null;
			if(deoployId != null) {
				processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deoployId).singleResult();
			}else{
				HistoricProcessInstance processInstance = findProcessInstanceHisById(processInstanceId);
				processDefinition = ((RepositoryServiceImpl)repositoryService).getProcessDefinition(processInstance.getProcessDefinitionId());
			}
			String diagramResourceName = processDefinition.getDiagramResourceName();
			InputStream imageStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName);
			BufferedImage image = ImageIO.read(imageStream); 
			List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
			Task currTask = list.get(0);
			String taskId = currTask.getId();
			Graphics g = image.getGraphics();
			g.setColor(Color.red);
			ActivityImpl currActivity = findCurrActivityGraph(taskId);
			int x = currActivity.getX(),
				y = currActivity.getY(),
				weight = currActivity.getWidth(),
				height = currActivity.getHeight();
			g.drawRect(x-1, y-1, weight, height);
			g.dispose();
//			
			ImageIO.write(image, "PNG", new File("C:/1.png"));
			out = new ByteArrayOutputStream();
	        ImageIO.write(image, "PNG", out);
	        imageByte = out.toByteArray();
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally{
			try {
				out.flush();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return imageByte;
	}


public ActivityImpl findCurrActivityGraph(String taskId) {
		HistoricTaskInstance currTask = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult();  
		String currActivitiId = currTask.getTaskDefinitionKey();
		ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)repositoryService).
				getDeployedProcessDefinition(currTask.getProcessDefinitionId());
		ActivityImpl activityImpl = def.findActivity(currActivitiId);
		return activityImpl;
	}

private HistoricProcessInstance findProcessInstanceHisById(String processInstanceId) throws Exception {
		HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		if(historicProcessInstance == null) {
			throw new Exception("流程历史实例未找到!");
		}
		return historicProcessInstance;
	}


  • 大小: 9 KB
分享到:
评论

相关推荐

    Activiti12流程跟踪任务节点和线高亮显示

    流程跟踪任务节点和线高亮显示是Activiti流程跟踪功能的重要组成部分,能够标记流程所走过的节点和线为红色,未走过的节点和线不标记,支持驳回和子流程。 Activiti流程跟踪任务节点和线高亮显示的实现原理是基于...

    activiti工作流流程跟踪图(图片(两种方式))

    将这些任务节点在流程图上标记出来,可以直观地看到流程的停滞点或瓶颈。 为了生成这两种高亮显示的流程图,通常需要结合Activiti的API与图像处理库,比如Java的Batik库,它可以解析BPMN流程图的XML描述,并将其...

    Activiti 学习笔记12:分配个人任务

    个人任务通常通过定义`userTask`元素在BPMN 2.0流程图中表示。 二、任务分配方式 1. **静态分配**:在流程定义时,直接指定任务的执行者。这可以通过在`userTask`元素中设置`assignee`属性来完成,如`任务1" ...

    Activiti5开发指南

    在新创建的项目中,你需要创建一个Activiti流程定义文件,通常为`.activiti`格式,比如`MyProcess1.activiti`。在这个文件中,你可以使用图形化工具绘制流程图。 在流程图中,每个节点都有其特定的配置。例如,`...

    activiti节点说明

    **任务**是Activiti流程中的关键组成部分,代表了需要人工参与的工作项。 - **用户任务**:这是最常见的任务类型,通常由系统中的用户来执行。它支持多种配置选项: - **Assignment**:指定任务的分配规则,包括...

    16. Activiti框架.pdf

    - **图形化处理**:Activiti能够将业务流程图形化,通过流程图的方式来设计和展示业务流程。 - **数据库化处理**:它将图形化表示的业务流程部署到流程数据库中,实现业务流程的数据化存储。 - **提供了23张表的流程...

    高亮流程跟踪.rar

    2. **动态颜色标记**:根据任务状态实时更新流程图中的节点颜色,绿色表示完成,红色表示待办,可能还包含其他颜色表示暂停、异常等状态。 3. **驳回逻辑**:实现驳回操作的后端逻辑,包括设置驳回条件、确定回退...

    Java EE常用框架.xmind

    根据由谁处理当前任务,我们就可以查询出具体的任务信息。 根据任务的id,我们就可以执行任务了。 细节 流程定义:涉及到了四张数据库表 我们可以通过API把我们的流程定义图读取出来 可以根据...

    JAVA上百实例源码以及开源项目源代码

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    java开源包1

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包11

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包2

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包3

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包6

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包5

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包10

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包4

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包8

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包7

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包9

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

Global site tag (gtag.js) - Google Analytics