camunda查询会签中审批部分通过的节点
时间: 2024-11-12 14:41:28 浏览: 60
DesignOA.rar_OAIGINAL DESIGH_办公 Java_审批_流程审批_组织架构
Camunda Platform是一款流程管理平台,它允许开发者构建业务流程并进行查询和管理。在Camunda的查询中,如果你想要找出那些“审批部分已经通过”的流程实例节点,你可以使用历史活动查询(HistoricActivityInstanceQuery)。这个查询可以基于流程实例的状态过滤结果,比如检查每个任务是否已被参与者完成并提交(如"approved"状态)。
通常,你需要执行以下步骤:
1. 获取流程实例的历史记录:`HistoricProcessInstanceQuery`用于查询历史流程实例,然后可以根据流程实例ID获取其活动实例列表。
2. 遍历活动实例:对活动实例应用`HistoricActivityInstanceQuery#unfinished()`,只选择那些未结束的活动实例。
3. 检查任务状态:对于每个任务活动实例,检查其`HistoricTaskInstance#taskCompletionState()`是否为已完成,例如"COMPLETED"。
4. 过滤通过审批的节点:筛选出状态为"COMPLETED"并且审批通过的任务。
```java
HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery()
. unfinished(); // 查询所有未结束的流程实例
List<HistoricActivityInstance> activityInstances = processInstanceQuery.list();
for (HistoricActivityInstance activityInstance : activityInstances) {
if (activityInstance.getTaskId() != null && activityInstance.getTaskCompletionState().equals("COMPLETED")) {
HistoricTaskInstance taskInstance = historyService.createHistoricTaskInstanceQuery()
.taskId(activityInstance.getTaskId())
.singleResult();
if (taskInstance != null && taskInstance.getExecutionVariables().containsKey("审批状态") && taskInstance.getExecutionVariables().get("审批状态").equals("通过")) {
// 找到了审批已通过的节点
System.out.println("节点 " + activityInstance.getId() + " 已经通过审批");
}
}
}
```
阅读全文