从jBPM 4.0开始,一个新的API被介绍使用查询系统, 可以覆盖大多数你可以想到的查询。
开发者需要编写企业特定查询时 当然也可以使用Hibenrate。但是对大多数用例来说, 查询API是不足够的。 查询可以写成同ideas方式(? ),用于主要的jBPM概念: 流程实例,任务,发布,历史流程,等等。
List<ProcessInstance> results = executionService.createProcessInstanceQuery()
.processDefinitionId("my_process_definition")
.notSuspended()
.page(0, 50)
.list();
这个例子返回指定流程定义的所有流程实例, 流程定义不是暂停的(? )。结果支持分页,第一页的前50条数据 会被我们获得。
查询任务也可以使用相同的方式完成:
List<Task> myTasks = taskService.createTaskQuery()
.processInstanceId(piId)
.assignee("John")
.page(100, 120)
.orderDesc(TaskQuery.PROPERTY_DUEDATE)
.list();
这个查询会获得指定流程实例,分配给John的所有任务, 也使用分页,对duedate进行逆序查询。
每个服务拥有操作这些统一查询的功能(比如,查询job通过 ManagementService
,查询完成的流程实例通过HistoryService
。 可以参考服务的javadoc了解这些查询API的所有细节。)