flowable工作流中如果审批人是发起人的部门领导,审批人是动态的不知道是谁,前后端代码实现
时间: 2024-03-04 13:49:43 浏览: 131
在Flowable工作流中,如果审批人是发起人的部门领导,可以在前后端代码中通过以下步骤实现动态指定审批人的功能:
1. 前端代码实现:
首先,在前端页面中,需要获取发起人所在的部门信息,可以通过调用后端接口获取部门信息。然后,在提交流程时,将部门信息一并提交到后端。
以下是一个示例前端代码:
```
// 获取部门信息
axios.get('/api/getDepartmentInfo')
.then(response => {
// 获取到部门信息后,将其存储到变量中
this.departmentInfo = response.data;
})
.catch(error => {
console.log(error);
});
// 提交流程
axios.post('/api/startProcess', {
// 提交的流程参数中包含部门信息
departmentInfo: this.departmentInfo
})
.then(response => {
// 提交成功后,跳转到流程列表页面
this.$router.push('/processList');
})
.catch(error => {
console.log(error);
});
```
2. 后端代码实现:
在后端代码中,需要在流程启动时获取发起人所在的部门信息,并将部门领导设置为任务的候选人或候选组。以下是一个示例后端代码:
```
// 获取部门信息
@GetMapping("/getDepartmentInfo")
public DepartmentInfo getDepartmentInfo() {
// 获取当前登录用户
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
// 获取用户所在的部门信息
DepartmentInfo departmentInfo = departmentService.getDepartmentInfo(user.getDepartmentId());
return departmentInfo;
}
// 启动流程
@PostMapping("/startProcess")
public void startProcess(@RequestBody Map<String, Object> params) {
// 获取部门信息
DepartmentInfo departmentInfo = (DepartmentInfo) params.get("departmentInfo");
// 获取部门领导
User departmentLeader = userService.getDepartmentLeader(departmentInfo.getId());
// 启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
// 设置流程变量
runtimeService.setVariable(processInstance.getId(), "departmentLeader", departmentLeader.getId());
// 获取当前任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// 将部门领导设置为任务的候选人
taskService.addCandidateUser(task.getId(), departmentLeader.getId());
}
```
通过以上步骤,即可实现在Flowable工作流中动态指定审批人的功能。
阅读全文