在Flowable中,要查询“我的代办流程”和“我的已办流程”,你可以分别使用TaskService
和HistoryService
。以下是具体的步骤和示例代码:
查询“我的代办流程”
- 获取
TaskService
:这是操作任务的主要服务接口。 - 创建
TaskQuery
:使用TaskService
创建一个TaskQuery
对象。 - 设置查询条件:通常设置任务的受理人(assignee)为当前用户。
- 执行查询:执行查询并获取结果。
java
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngines;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import java.util.List;
public class MyTodoProcesses {
public static void main(String[] args) {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
String currentUserId = "当前用户ID";
TaskQuery taskQuery = taskService.createTaskQuery()
.taskAssignee(currentUserId)
.active(); // 只查询活跃的任务
List<Task> taskList = taskQuery.list();
for (Task task : taskList) {
System.out.println("Task ID: " + task.getId());
System.out.println("Task Name: " + task.getName());
System.out.println("Process Instance ID: " + task.getProcessInstanceId());
// 可以根据需要获取更多任务信息
}
}
}
查询“我的已办流程”
- 获取
HistoryService
:这是操作历史数据的主要服务接口。 - 创建
HistoricProcessInstanceQuery
:使用HistoryService
创建一个HistoricProcessInstanceQuery
对象。 - 设置查询条件:通常设置流程实例的启动人(starter)为当前用户,并选择已完成的流程实例。
- 执行查询:执行查询并获取结果。
java
import org.flowable.engine.HistoryService;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngines;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import java.util.List;
public class MyCompletedProcesses {
public static void main(String[] args) {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
HistoryService historyService = processEngine.getHistoryService();
String currentUserId = "当前用户ID";
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
.startedBy(currentUserId)
.finished(); // 只查询已完成的流程实例
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.list();
for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {
System.out.println("Process Instance ID: " + historicProcessInstance.getId());
System.out.println("Process Definition ID: " + historicProcessInstance.getProcessDefinitionId());
System.out.println("Start Time: " + historicProcessInstance.getStartTime());
System.out.println("End Time: " + historicProcessInstance.getEndTime());
// 可以根据需要获取更多历史流程实例信息
}
}
}
在这两个示例中,你需要将"当前用户ID"
替换为实际的用户ID。执行上述代码将会分别输出当前用户的待办任务和已办流程的信息。
请注意,在实际应用中,你可能需要处理异常、事务管理,并根据具体需求调整查询条件。同时,确保你有适当的权限来执行这些查询。