flowable实现流程回退任务

本文介绍了如何在Flowable工作流中,当任务还未被中心签领时,实现撤销审批的功能。通过获取任务实例、检查签领状态并进行活动状态更改,同时涉及自动签领和后续页面跳转。然而,提到的问题在于撤回操作可能导致的脏数据清理问题。

参考文章:
flowable审批,在下个节点没审批前,如何撤回审批。
Flowable 快速入门教程:任务驳回与回退
flowable实战(五)flowable驳回/退回上一步/退回到

一、背景

公司项目是统一在公司自己的框架下实现的,然后现在在做的项目使用了flowable工作流。

昨儿忽然提了一个需求:在中心签领之前,企业可以撤回任务。比如企业上报了自己的信息,中心端需要签领后审核,但忽然企业发现自己上报的信息有些问题,这时可以点击【撤回】按钮,将该条上报信息撤回。(串行普通节点的回退)。

其中部分代码详细实现不可以粘贴出来,就主要记录一下大概思路~~

自己瞎实现,还请各位大佬可以指正错误~~~呜呜呜呜呜呜呜。

二、思路

1、获取当前任务节点
2、判断是否被签领
3、若被签领,则提示不能撤回。
4、若未被签领,则执行退回任务。

//核心
runtimeService.createChangeActivityStateBuilder()
        .processInstanceId(proInstanceId)
        .moveActivityIdsToSingleActivityId(curTaskKeys, targetTaskKey)
        .changeState();

5、自动签领任务。
6、返回要跳转的路径

三、代码

1、flowableEngineAPI.quash()实现!!

/**
	 * 撤回任务
	 */
	public DataObject quash(String piid, String taskid, String taskkey) throws AppException{
   
   
		//存最终结果
		DataObject result = DataObject.getInstance();
		
		//判空
		this.isEmpty(piid, "流程实例id不可为空");

		//获取当前任务信息
		Task task = taskService.createTaskQuery().taskId(taskid).singleResult();
		//判断该任务是否被签领
		String assignee = task.getAssignee();
		if (null != assignee){
   
   
			result.put("statu","0");
			result.put("msg","任务已被签领,无法撤回!"
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值