Activiti 流程图上标记当前任务

[img]http://dl2.iteye.com/upload/attachment/0101/0349/cd728153-435b-3215-826e-266a0f57aeb9.png[/img]



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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值