Flowable工作流 动态处理审批人
时间: 2023-05-16 17:05:52 浏览: 362
Flowable工作流可以通过动态处理来指定审批人。在流程定义中,可以使用表达式来指定候选人或候选组,也可以使用Java代码来动态指定审批人。例如,可以在Java代码中查询数据库或调用外部接口来获取审批人信息,并将其设置为任务的候选人或候选组。这样就可以实现动态处理审批人的功能。如果您需要更具体的实现细节,可以参考Flowable官方文档或相关教程。
相关问题
flowable工作流中如果审批人是发起人的部门领导,审批人是动态的不知道是谁,代码实现
在Flowable中,可以通过任务监听器来动态指定审批人,具体实现可以参考以下步骤:
1. 在流程定义中定义一个用户任务,并在该任务的候选人或候选组中设置发起人所在部门的领导。
2. 在该任务的监听器中,通过以下代码获取发起人所在部门的领导:
```
// 获取当前任务
TaskEntity task = (TaskEntity) delegateTask;
// 获取当前任务的流程实例
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.singleResult();
// 获取流程实例中的变量
String departmentLeader = (String) runtimeService.getVariable(processInstance.getId(), "departmentLeader");
```
3. 将获取到的审批人设置为候选人或候选组:
```
// 将审批人设置为候选人
task.addCandidateUser(departmentLeader);
// 将审批人设置为候选组
task.addCandidateGroup(departmentLeader);
```
4. 最后,需要在流程启动时设置流程实例变量,存储发起人所在部门的领导,以便后续任务监听器中获取:
```
// 设置流程实例变量
runtimeService.setVariable(processInstance.getId(), "departmentLeader", departmentLeader);
```
通过以上步骤,即可实现在Flowable工作流中动态指定审批人的功能。
flowable工作流中如果审批人是发起人的部门领导,审批人是动态的不知道是谁,前后端代码实现
在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工作流中动态指定审批人的功能。
阅读全文