flowable 根据processInstanceId 获取改单是哪个组审批
时间: 2024-02-09 14:09:20 浏览: 175
在 Flowable 中,您可以使用以下步骤获取 processInstanceId 对应的任务的审批组:
1. 从 `TaskService` 中获取 processInstanceId 对应的任务对象:
```java
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
```
2. 从任务对象中获取任务的候选组:
```java
String candidateGroup = task.getCandidateGroup();
```
这里假设任务只有一个候选组。如果任务有多个候选组,可以使用 `getTaskCandidateGroups()` 方法获取所有候选组的列表。
相关问题
flowable获取下一环节审批人
要获取下一环节审批人,可以使用Flowable的TaskService中的方法:
1. 首先获取当前任务的相关信息,包括流程实例ID、任务ID等。
```java
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
```
2. 然后获取下一个任务节点的相关信息,包括节点的名称和ID等。
```java
List<SequenceFlow> outgoingFlows = runtimeService.getExecutionService()
.findActiveActivityExecutions(executionId)
.get(0)
.getProcessDefinition()
.findActivity(activityId)
.getOutgoingTransitions();
for (SequenceFlow outgoingFlow : outgoingFlows) {
String nextTaskName = outgoingFlow.getTargetActivityName();
String nextTaskId = outgoingFlow.getTargetActivityId();
}
```
3. 最后获取下一个任务节点的候选人或候选组信息。
```java
List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(nextTaskId);
for (IdentityLink identityLink : identityLinks) {
String userId = identityLink.getUserId();
String groupId = identityLink.getGroupId();
}
```
以上是获取下一环节审批人的大致流程,具体实现可能需要根据实际情况进行调整。
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工作流中动态指定审批人的功能。
阅读全文