纯个人大白话--flowable多实例加签与减签

16 阅读1分钟

1. 加签与减签的含义

对于flowable官方文档来说,并没有加签与减签的说法,这个东西其实是后来的开发人员说出来的。

谈谈我对于这个加签减签的理解:

加签:一种是多实例节点中添加新处理人、一种是委派(A委派给B处理,B处理完后回到A这,这再complete一次) 减签:多实例删除某些处理人。

2. 相关实现(极简版)

这里就不贴详细的代码了,只贴出来最主要的代码。

2.1 加签(多实例)

String activityId = task.getTaskDefinitionKey();
Map<String, Object> executionVariables = new HashMap<>();
// 需要加签的处理人用户id,如果是多个,外面包个循环即可
executionVariables.put("assignee", "10");
// activityId:节点id;parentExecutionId:父执行id;executionVariables:执行参数
runtimeService.addMultiInstanceExecution(activityId, miExecution.getParentId(), executionVariables);

2.2 加签(委派)

// A委派任务给B(newAssigneeId)
//ACT_RU_TASK 数据变化,owner -> A ,assignee A-> B ,DELEGATION_ 变更为 PENDING
taskService.delegateTask(taskId, newAssigneeId)


//B解决任务,B不能调用complete方法,因为拥有者不是B,而是A。
//ACT_RU_TASK 数据变化,owner -> A ,assignee A-> A ,DELEGATION_ 变更为 RESOLVED
taskService.resolveTask(taskId);

//A 完成任务,走到下一个节点
taskService.complete(taskId);

2.3 减签

//原方法
deleteMultiInstanceExecution(String executionId, boolean executionIsCompleted)

runtimeService.deleteMultiInstanceExecution(task.getExecutionId(), false);