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
分享到:
相关推荐
流程跟踪任务节点和线高亮显示是Activiti流程跟踪功能的重要组成部分,能够标记流程所走过的节点和线为红色,未走过的节点和线不标记,支持驳回和子流程。 Activiti流程跟踪任务节点和线高亮显示的实现原理是基于...
将这些任务节点在流程图上标记出来,可以直观地看到流程的停滞点或瓶颈。 为了生成这两种高亮显示的流程图,通常需要结合Activiti的API与图像处理库,比如Java的Batik库,它可以解析BPMN流程图的XML描述,并将其...
个人任务通常通过定义`userTask`元素在BPMN 2.0流程图中表示。 二、任务分配方式 1. **静态分配**:在流程定义时,直接指定任务的执行者。这可以通过在`userTask`元素中设置`assignee`属性来完成,如`任务1" ...
在新创建的项目中,你需要创建一个Activiti流程定义文件,通常为`.activiti`格式,比如`MyProcess1.activiti`。在这个文件中,你可以使用图形化工具绘制流程图。 在流程图中,每个节点都有其特定的配置。例如,`...
**任务**是Activiti流程中的关键组成部分,代表了需要人工参与的工作项。 - **用户任务**:这是最常见的任务类型,通常由系统中的用户来执行。它支持多种配置选项: - **Assignment**:指定任务的分配规则,包括...
- **图形化处理**:Activiti能够将业务流程图形化,通过流程图的方式来设计和展示业务流程。 - **数据库化处理**:它将图形化表示的业务流程部署到流程数据库中,实现业务流程的数据化存储。 - **提供了23张表的流程...
2. **动态颜色标记**:根据任务状态实时更新流程图中的节点颜色,绿色表示完成,红色表示待办,可能还包含其他颜色表示暂停、异常等状态。 3. **驳回逻辑**:实现驳回操作的后端逻辑,包括设置驳回条件、确定回退...
根据由谁处理当前任务,我们就可以查询出具体的任务信息。 根据任务的id,我们就可以执行任务了。 细节 流程定义:涉及到了四张数据库表 我们可以通过API把我们的流程定义图读取出来 可以根据...
Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...