背景:在利用activi完成开发项目开发后,假设某一个正常走的流程功能用户想要回退到某一个环节去,重新审核或者编辑表单,我们在处理运维工作时经常会遇到这种情况,下面针对这种情况,记录一下自己的处理方式,便于下次回忆起。
效果:可以回退到指定环节,并查看流程记录时该环节后的也删除掉。
举例我的流程如下:拟稿->评分人审核->自评->评分人评分->员工确认->完成
假设当前环节已经到了员工确认,但是我想退回到评分人评分环节。
1、找到流程实例表中的PROC_INST_ID_
一般都是通过业务表主键作为唯一的实例id代表整个流程实例的key即BUSINESS_KEY_,举例我要修改某一个绩效的单子的任务,先通过业务主键id找到PROC_INST_ID_。
3、修改历史记录表中的历史记录
找到要退回的一条流程记录,删除它后续的记录,并修改需要回退的记录的结束时间为空,并修改审核人,再将当前流程所在环节(也就是最新的一条的id复制给要退回的流程那条记录,为了complete时,修改到结束时间)。此处的操作就是将评分人评价的END_TIME_设置为空,并设置这个环节的ASSIGNEE_(我这个例子是特殊情况,这个环节不设置审批人,是通过代码处理),再将员工确认的主键复制给评分人评价着一条,再将员工确认这条删除掉。
4、修改执行实例表数据
通过PROC_INST_ID_筛选执行实例表相关数据,将ACT_ID_不为空的数据(表示当前环节的名字,流程图画的时候节点的名字)修改为需要回到的环节名字。此处修改four为three。
5、修改流程实例表
通过PROC_INST_ID_筛选流程实例表相关数据,当前数据表示该流程实例正所处的环节信息,修改数据为需要回到的环节数据。此处的操作是将员工确认改为评分人评价,four改为three,ASSIGNEE改为该环节的处理人。
6、修改业务表本身
最后再修改自己的业务表数据,将流程状态改为自己退回后该流程应该属于的环节状态即可。此处7改为5。
欢迎交流,若有更好的方法欢迎评论区指教。