flowable 根据processInstanceId 获取 processDefinitionId
时间: 2023-09-07 15:12:15 浏览: 132
可以通过Flowable的API来根据processInstanceId获取processDefinitionId。具体的实现方法如下:
```
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
String processDefinitionId = processInstance.getProcessDefinitionId();
```
首先,使用`createProcessInstanceQuery()`方法创建一个流程实例查询对象,然后使用`processInstanceId()`方法设置要查询的流程实例ID。使用`singleResult()`方法获取查询结果,这里只会返回一个结果,因为根据流程实例ID查询只会匹配一个流程实例。最后,通过`getProcessDefinitionId()`方法获取查询结果的流程定义ID。
相关问题
flowable如何获取Activity ID
在Flowable中,可以使用`ProcessDefinition`和`ProcessInstance`对象来获取Activity ID。
一种常见的方法是使用`ProcessInstance`对象,如下所示:
```
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
String currentActivityId = processInstance.getActivityId();
```
还可以使用`Task`对象来获取当前正在执行的任务的Activity ID:
```
Task currentTask = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.singleResult();
String currentActivityId = currentTask.getTaskDefinitionKey();
```
如果要获取流程定义的第一个活动(通常是开始事件),可以使用`ProcessDefinition`对象:
```
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(processDefinitionId)
.singleResult();
// 获取第一个活动的ID
String startEventId = processDefinition.getInitialActivity().getId();
```
flowable获取未审核的节点
要获取未审核的节点,你需要使用 Flowable API 中的 `TaskQuery` 接口,并使用 `taskUnnassigned()` 和 `taskCandidateGroup()` 方法过滤未审核的任务。以下是一个例子:
```java
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery()
.taskUnnassigned() // 未分配的任务
.taskCandidateGroup("审核组") // 审核组的候选任务
.list();
```
这将返回所有未分配且归属于 `审核组` 的候选任务。你可以进一步使用其他查询方法来进一步筛选结果,例如根据流程定义 ID、流程实例 ID、任务创建时间等。
```java
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery()
.taskUnnassigned() // 未分配的任务
.taskCandidateGroup("审核组") // 审核组的候选任务
.processDefinitionId("myProcessDefinitionId") // 流程定义 ID
.processInstanceId("myProcessInstanceId") // 流程实例 ID
.taskCreatedAfter(new Date(2021, 1, 1)) // 2021 年 1 月 1 日之后创建的任务
.list();
```