Flowable 查询API
在引擎中查询数据有两种方式:查询API和原生(Native)查询。
查询API可以使用链式API,通过编程方式进行类型安全的查询。
可以在查询中增加各种条件(所有条件都用做AND逻辑),也可以明确指定排序方式。
下例是示例代码:
List<Task> tasks = taskService.createTaskQuery() .taskAssignee("kermit") .processVariableValueEquals("orderId", "0815") .orderByDueDate().asc() .list();
有时更复杂的查询,例如使用OR操作符查询,或者使用查询API不能满足条件要求。
我们为这种需求提供了可以自己写SQL查询的原生查询。返回类型由使用的查询对象决定,数据会映射到正确的对象中(Task、ProcessInstance、Execution等等)。查询在数据库中进行,因此需要使用数据库中定义的表名与列名。这需要了解内部数据结构,因此建议小心使用原生查询。数据库表名可以通过API读取,这样可以将依赖关系减到最小。
List<Task> tasks = taskService.createNativeTaskQuery() .sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T WHERE T.NAME_ = #{taskName}") .parameter("taskName", "gonzoTask") .list(); long count = taskService.createNativeTaskQuery() .sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T1, " + managementService.getTableName(VariableInstanceEntity.class) + " V1 WHERE V1.TASK_ID_ = T1.ID_") .count();
本文详细介绍了Flowable工作流引擎中的查询API和原生查询两种数据查询方式。查询API提供链式调用的类型安全查询,支持条件过滤和排序;原生查询则适用于复杂场景,允许直接编写SQL查询,但需谨慎使用。
2323

被折叠的 条评论
为什么被折叠?



