activiti工作流5.22.0自定义流程活动图获取接口

目标

在不使用activiti explore提供的流程实例图diagram-viewer/index.html以及其繁杂的BaseProcessDefinitionDiagramLayoutResource四个类的情况下,自定义轻量的流程活动图查询接口,可以按顺序返回串行显示的流程数据,并标识执行与否,注意,本例仅解决串行显示的需求,如果需要1:1完全绘制流程,包括排他网关等,则建议复用流程实例图diagram-viewer/index.html以及后端接口。

返回格式

demo:
在这里插入图片描述

{
	"code":0,
	"data":[
		{
			"activityId":"start_1",
			"activityName":"发起任务",
			"assign":"admin",
			"endTime":"2020-05-07 13:54:15",
			"highLight":true,
			"startTime":1588830855000
		},
		{
			"activityId":"exec_4",
			"activityName":"执行任务",
			"assign":"xx",
			"endTime":"",
			"highLight":true,
			"startTime":1588830855000
		},
		{
			"activityId":"confirm_5",
			"activityName":"确认结果",
			"assign":"",
			"endTime":"",
			"highLight":false,
			"startTime":0
		}
	],
	"message":"成功",
	"success":true
}

后端接口逻辑

首先activiti 的数据表模块分运行时(act_ru_execution)和历史(act_hi_procinst、act_hi_actinst),一般来说业务需求中都会有查全部的功能,这个时候需要返回所有的数据,包括运行时和历史。所以如果用户从历史流程列表入口点进流程图页面,这个时候他点击的是已完成的历史流程,后台接口根据历史流程ID采用runtimeService去查,立刻就报错。而简易渲染只关注userTask和startEvent,这个时候只需要查出这两种类型即可。

HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).activityType("userTask");
List<HistoricActivityInstance> list = query.list();
HistoricActivityInstance startEvent = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).activityType("startEvent").singleResult();

然后再从中取出需要的活动节点信息,并封装,准备下一步顺序拼接。

for (HistoricActivityInstance tmpHisAct : list) {
            ProcessActivityModel processActivityModel = new ProcessActivityModel();
            if (tmpHisAct != null) {
                processActivityModel.setActivityId(tmpHisAct.getActivityId());
                processActivit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值