activiti当前流程高亮显示

这篇教程介绍了如何在Activiti中实现当前流程节点的高亮显示。首先,通过流程部署获取流程图并展示。然后,利用流程实例ID获取当前节点信息,对比并突出显示。教程目前仅支持单节点高亮,未涉及并行节点和已完成节点的处理。
部署运行你感兴趣的模型镜像

啦啦啦。。。忙碌的时间过得快,最近系统提测,有个朋友问到activiti当前流程高亮的问题,于是我来开一篇基础教程。

既然是当前流程节点高亮显示,基础当然是把整个流程图都展示出来。在我整合modeler的文档中提到过,流程部署后就有一个流程图查看的链接。

这里,咱就依葫芦画瓢。先把整个流程图展示出来。

1、获取流程图,输出到页面。

public InputStream findProcessPic(String procDefId) {
        ProcessDefinition definition = getProcessDefinition(procDefId);
        String source = definition.getDiagramResourceName();
        InputStream inputStream = repositoryService.getResourceAsStream(definition.getDeploymentId(),source);
        return inputStream;
    }

根据当前流程的部署ID,获取到对应流程图的输入流。
InputStream inputStream = bpmProcessService.findProcessPic(procDefId);
			byte[] b = new byte[1024];
			int len = 0;
			while ((len = inputStream.read(b,0,1024))!=-1){
				response.getOutputStream().write(b, 0, len);
			}
将输入流输出到页面。
<img src="${application.getContextPath()}/workflow/document/${procDefId!}">
页面获取输出的图片信息并展示出来。朋友说用标签实现,其实无非就是数据的传递方式不一样,如果是需要使用其他方式的,自己改改数据传递方式就可以了。

2、获取当前流程所在节点,并高亮显示

ActivityImpl activity = null;
        ProcessDefinition definition = getProcessDefinition(procDefId);
        ProcessDefinitionImpl definitionImp = (ProcessDefinitionImpl)definition;
        String proDefId = definitionImp.getId();
        ProcessDefinitionEntity definitionEntity = (ProcessDefinitionEntity)
                ((RepositoryServiceImpl)repositoryService).getDeployedProcessDefinition(proDefId);
        Task task = bpmTaskService.selectTaskByProcessId(procInstId);
        ExecutionEntity executionEntity = (ExecutionEntity)runtimeService.createExecutionQuery()
                .executionId(task.getExecutionId()).singleResult();
        String activitiId = executionEntity.getActivityId();
        List<ActivityImpl> activities = definitionEntity.getActivities();
        for(ActivityImpl activity1 : activities){
            if(activity1.getId().equals(activitiId)){
                activity = activity1;
                break;
            }
        }
        return activity;



根据流程部署ID获取所有节点信息

根据当前流程实例ID,获取到当前流程所在节点信息。

对比获取需要高亮显示的节点的流程图信息。

<div style="position:absolute; border:2px solid red;left:${activity.x+6 }px;
            top:${activity.y+6 }px;width:${activity.width }px;height:${activity.height }px;"></div>

根据节点信息设置一个框,红色,标识当前节点为进行中节点。

备注:教程很简单,没有深入研究,并且只是支持单节点高亮,并行节点、已完成节点都不支持。并行节点返回当前所有节点的集合,然后遍历。已完成节点获取所有历史节点与其关联的线的信息即可,这里暂时不罗列,要是有时间我在研究出来给大家参考。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值