Skip to content

Commit 8bf866e

Browse files
committed
optimize
1 parent 0f73592 commit 8bf866e

4 files changed

Lines changed: 31 additions & 2 deletions

File tree

build-resource

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
CREATE OR REPLACE VIEW `list_flow_instance_view` AS select /*+use_merge(flow_instance flow_instance_node_task)*/
2+
`flow_instance`.`id` AS `id`,
3+
`flow_instance`.`create_time` AS `create_time`,
4+
`flow_instance`.`update_time` AS `update_time`,
5+
`flow_instance`.`name` AS `name`,
6+
`flow_instance`.`flow_config_id` AS `flow_config_id`,
7+
`flow_instance`.`creator_id` AS `creator_id`,
8+
`flow_instance`.`organization_id` AS `organization_id`,
9+
`flow_instance`.`process_definition_id` AS `process_definition_id`,
10+
`flow_instance`.`process_instance_id` AS `process_instance_id`,
11+
`flow_instance`.`status` AS `status`,
12+
`flow_instance`.`flow_config_snapshot_xml` AS `flow_config_snapshot_xml`,
13+
`flow_instance`.`description` AS `description`,
14+
`flow_instance`.`parent_instance_id` AS `parent_instance_id`,
15+
`flow_instance`.`project_id` AS `project_id`,
16+
`flow_instance_node_task`.`task_type` AS `task_type`
17+
from
18+
(
19+
`flow_instance` join `flow_instance_node_task` on ( `flow_instance`.`id` = `flow_instance_node_task`.`flow_instance_id`)
20+
);

server/odc-service/src/main/java/com/oceanbase/odc/metadb/flow/FlowInstanceViewSpecs.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.oceanbase.odc.metadb.flow;
1818

19+
import java.util.Arrays;
1920
import java.util.Collection;
2021
import java.util.Date;
2122
import java.util.Objects;
@@ -98,6 +99,13 @@ public static Specification<FlowInstanceViewEntity> taskTypeIn(Collection<TaskTy
9899
return SpecificationUtil.columnIn(FLOW_INSTANCE_VIEW_TASK_TYPE, taskTypes);
99100
}
100101

102+
public static Specification<FlowInstanceViewEntity> groupByIdAndTaskType() {
103+
return (root, query, cb) -> {
104+
query.groupBy(Arrays.asList(root.get(FLOW_INSTANCE_VIEW_ID_NAME), root.get(FLOW_INSTANCE_VIEW_TASK_TYPE)));
105+
return cb.conjunction();
106+
};
107+
}
108+
101109
public static Specification<FlowInstanceViewEntity> leftJoinFlowInstanceApprovalView(
102110
@NotNull Set<String> resourceRoleIdentifiers, Long creatorId, Set<FlowNodeStatus> statusList) {
103111
return (root, query, builder) -> {

server/odc-service/src/main/java/com/oceanbase/odc/service/flow/FlowInstanceService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,8 @@ public Page<FlowInstanceEntity> listAll(@NotNull Pageable pageable, @NotNull Que
376376
.and(FlowInstanceViewSpecs.statusIn(params.getStatuses()))
377377
.and(FlowInstanceViewSpecs.createTimeLate(params.getStartTime()))
378378
.and(FlowInstanceViewSpecs.createTimeBefore(params.getEndTime()))
379-
.and(FlowInstanceViewSpecs.idEquals(targetId));
379+
.and(FlowInstanceViewSpecs.idEquals(targetId))
380+
.and(FlowInstanceViewSpecs.groupByIdAndTaskType());
380381
if (params.getType() != null) {
381382
specification = specification.and(FlowInstanceViewSpecs.taskTypeEquals(params.getType()));
382383
} else {

0 commit comments

Comments
 (0)