Flowable 7多流程定义ID的In查询实现及or方式合理性探讨
Flowable 7 多流程定义ID的In查询实现方案
能否通过or()连接多个processDefinitionId()实现In查询?
可以。这种写法最终生成的SQL逻辑等价于process_definition_id IN (?, ?),能够准确筛选出归属指定多个流程定义ID的任务。
该方式是否属于最佳实践?
分场景判断:
- 当需要查询的流程定义ID数量较少(如个位数),这种写法简单直观,完全可以正常使用。
- 当ID数量较多时,这种方式会生成冗长的OR拼接SQL,不仅可读性差,还可能触发数据库的SQL长度限制,执行效率也不如原生的
IN查询。此时更推荐使用原生SQL查询,示例代码如下:
若业务中频繁需要此类查询,也可基于Flowable的扩展机制自定义Query方法,但需额外开发成本。List<Task> tasks = taskService.createNativeTaskQuery() .sql("SELECT * FROM ACT_RU_TASK WHERE PROC_DEF_ID_ IN (?, ?)") .parameter(1, processDefinitionId1) .parameter(2, processDefinitionId2) .list();
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

