瀏覽代碼

查询优化

caixiaofeng 6 月之前
父節點
當前提交
10c6c8568c

+ 46 - 46
flow-app/src/main/resources/mapper/workflow/FlowDefineDao.xml

@@ -26,68 +26,68 @@
     </resultMap>
 
     <sql id="defProcess">
-        SELECT res.ID_               AS define_id,
-               res.CATEGORY_         AS group_id,
-               res.KEY_              AS `key_`,
-               res.NAME_             AS name,
-               res.VERSION_          AS version,
-               res.CATEGORY_         AS groupId,
-               res.SUSPENSION_STATE_ AS suspend,
-               res.DEPLOYMENT_ID_    AS deployment_id,
-               res.DESCRIPTION_      AS description,
-               pro.id,
-               pro.icon,
-               pro.process,
-               pro.form,
-               pro.admin,
-               pro.starters,
-               pro.settings,
-               pro.created_by,
-               pro.updated_by,
-               pro.create_time,
-               pro.update_time
-        FROM ACT_RE_PROCDEF AS res INNER JOIN flow_define AS pro ON res.ID_ = pro.define_id
+        SELECT rp.ID_               AS define_id,
+               rp.CATEGORY_         AS group_id,
+               rp.KEY_              AS `key_`,
+               rp.NAME_             AS name,
+               rp.VERSION_          AS version,
+               rp.CATEGORY_         AS groupId,
+               rp.SUSPENSION_STATE_ AS suspend,
+               rp.DEPLOYMENT_ID_    AS deployment_id,
+               rp.DESCRIPTION_      AS description,
+               fd.id,
+               fd.icon,
+               fd.process,
+               fd.form,
+               fd.admin,
+               fd.starters,
+               fd.settings,
+               fd.created_by,
+               fd.updated_by,
+               fd.create_time,
+               fd.update_time
+        FROM flow_define AS fd INNER JOIN ACT_RE_PROCDEF AS rp ON fd.define_id = rp.ID_
     </sql>
 
     <select id="getList" resultMap="BaseResultMap">
         SELECT
-            res.ID_               AS define_id,
-            res.CATEGORY_         AS group_id,
-            res.KEY_              AS `key_`,
-            res.NAME_             AS name,
-            res.VERSION_          AS version,
-            res.CATEGORY_         AS groupId,
-            res.SUSPENSION_STATE_ AS suspend,
-            res.DEPLOYMENT_ID_    AS deployment_id,
-            res.DESCRIPTION_      AS description,
-            pro.id,
-            pro.icon,
-            pro.admin,
-            pro.starters,
-            pro.created_by,
-            pro.updated_by,
-            pro.create_time,
-            pro.update_time
-        FROM ACT_RE_PROCDEF AS res INNER JOIN flow_define AS pro ON res.ID_ = pro.define_id
+            rp.ID_               AS define_id,
+            rp.CATEGORY_         AS group_id,
+            rp.KEY_              AS `key_`,
+            rp.NAME_             AS name,
+            rp.VERSION_          AS version,
+            rp.CATEGORY_         AS groupId,
+            rp.SUSPENSION_STATE_ AS suspend,
+            rp.DEPLOYMENT_ID_    AS deployment_id,
+            rp.DESCRIPTION_      AS description,
+            fd.id,
+            fd.icon,
+            fd.admin,
+            fd.starters,
+            fd.created_by,
+            fd.updated_by,
+            fd.create_time,
+            fd.update_time
+        FROM flow_define AS fd INNER JOIN ACT_RE_PROCDEF AS rp ON fd.define_id = rp.ID_
         <where>
-            res.VERSION_ = (
-                SELECT max( def.VERSION_ ) FROM ACT_RE_PROCDEF as def WHERE def.KEY_ = res.KEY_
+            rp.VERSION_ = (
+                SELECT max( def.VERSION_ ) FROM ACT_RE_PROCDEF as def WHERE def.KEY_ = rp.KEY_
             )
-            and res.SUSPENSION_STATE_ = 1
+            and rp.SUSPENSION_STATE_ = 1
             <if test="name != null and name != ''">
-                and res.NAME_ like CONCAT( '%',#{name},'%')
+                and rp.NAME_ like CONCAT( '%',#{name},'%')
             </if>
             <if test="groupId != null and groupId != ''">
-                and res.CATEGORY_ = #{groupId}
+                and rp.CATEGORY_ = #{groupId}
             </if>
         </where>
-        order by pro.create_time desc
+        order by fd.id desc
     </select>
 
     <select id="getByDefineId" resultMap="BaseResultMap">
         <include refid="defProcess"></include>
         <where>
-            res.ID_ = #{defineId}
+            rp.ID_ = #{defineId}
         </where>
     </select>
 

+ 5 - 7
flow-app/src/main/resources/mapper/workflow/FlowInstanceDao.xml

@@ -28,8 +28,8 @@
             RE.status,
             RE.cancel_days
         FROM
-            ACT_HI_PROCINST HP
-                LEFT JOIN flow_instance RE ON HP.ID_ = RE.id
+            flow_instance AS RE
+            INNER JOIN ACT_HI_PROCINST AS HP ON RE.id = HP.ID_
     </sql>
     <sql id="instanceWheres">
         <if test="query.startUserId != null and query.startUserId != ''">
@@ -65,22 +65,21 @@
     </select>
     <select id="copy" resultMap="BaseResultMap">
         <include refid="instanceColumns"></include>
-        LEFT JOIN ACT_HI_IDENTITYLINK HE ON
-        HE.PROC_INST_ID_ = RE.id AND
+        INNER JOIN ACT_HI_IDENTITYLINK HE ON
+        RE.id = HE.PROC_INST_ID_ AND
         HE.TYPE_ = 'copy' AND
         USER_ID_ = '${@com.flow.common.core.util.SecurityContextUtil@getUserId()}'
         <where>
             <include refid="instanceWheres"></include>
         </where>
         ORDER BY
-        HP.ID_ DESC
+        RE.id DESC
     </select>
     <select id="getInstance" resultMap="BaseResultMap">
         <include refid="instanceColumns"></include>
         WHERE
             RE.id = #{id}
     </select>
-
     <select id="getCurrentNodes" resultType="java.lang.String">
         SELECT
             DISTINCT ACT_NAME_
@@ -90,5 +89,4 @@
            END_TIME_ IS NULL AND PROC_INST_ID_ = #{id}
     </select>
 
-
 </mapper>

+ 7 - 7
flow-app/src/main/resources/mapper/workflow/FlowTaskDao.xml

@@ -19,9 +19,9 @@
     <!--进行中-->
     <sql id="runningTaskColumns">
         SELECT
+            FT.id,
             RP.NAME_ AS instance_name,
             RP.START_USER_ID_ AS start_user_id,
-            RT.ID_ AS id,
             RT.NAME_ AS NAME,
             RT.ASSIGNEE_ AS assignee,
             RT.PROC_INST_ID_ AS instance_id,
@@ -31,9 +31,9 @@
             RT.DUE_DATE_ AS due_date,
             FT.STATUS
         FROM
-            ACT_RU_TASK AS RT
-                LEFT JOIN flow_task AS FT ON FT.id = RT.ID_
-                LEFT JOIN ACT_RU_EXECUTION AS RP ON RT.PROC_INST_ID_ = RP.PROC_INST_ID_
+            flow_task AS FT
+                INNER JOIN ACT_RU_TASK AS RT ON FT.id = RT.ID_
+                INNER JOIN ACT_RU_EXECUTION AS RP ON RT.PROC_INST_ID_ = RP.PROC_INST_ID_
     </sql>
     <select id="todo" resultMap="BaseResultMap">
         <include refid="runningTaskColumns"></include>
@@ -94,9 +94,9 @@
             HP.START_USER_ID_ as start_user_id,
             FT.STATUS
         FROM
-            ACT_HI_TASKINST AS HT
-                LEFT JOIN ACT_HI_PROCINST AS HP ON HT.PROC_INST_ID_ = HP.PROC_INST_ID_
-                LEFT JOIN flow_task AS FT ON FT.id = HT.ID_
+            flow_task AS FT
+            INNER JOIN ACT_HI_TASKINST AS HT ON FT.id = HT.ID_
+            INNER JOIN ACT_HI_PROCINST AS HP ON HT.PROC_INST_ID_ = HP.PROC_INST_ID_
     </sql>
     <select id="done" resultMap="BaseResultMap">
         <include refid="historyTaskColumns"></include>

+ 6 - 5
flow-common/flow-common-flowable-starter/src/main/java/com/flow/flowable/loader/FlowableLoaderClass.java

@@ -27,18 +27,19 @@ public class FlowableLoaderClass implements BeanDefinitionRegistryPostProcessor,
         serializableFlowableClassList.add("org.flowable.bpmn.model.GraphicInfo");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.event.FlowableEventSupport");
         serializableFlowableClassList.add("org.flowable.bpmn.model.BpmnDiEdge");
-        serializableFlowableClassList.add("org.flowable.bpmn.model.ExtensionAttribute");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.persistence.entity.AbstractEntity");
-        serializableFlowableClassList.add("org.flowable.engine.impl.delegate.invocation.DefaultDelegateInterceptor");
-        serializableFlowableClassList.add("org.flowable.common.engine.api.delegate.FlowableFunctionDelegate");
-        serializableFlowableClassList.add("org.flowable.common.engine.impl.el.FlowableAstFunctionCreator");
+        serializableFlowableClassList.add("org.flowable.bpmn.model.ExtensionAttribute");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.cfg.SpringBeanFactoryProxyMap");
+        serializableFlowableClassList.add("org.flowable.common.engine.impl.el.FlowableAstFunctionCreator");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.el.DefaultExpressionManager");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.de.odysseus.el.tree.Node");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.de.odysseus.el.tree.impl.ast.AstNode");
         // serializableFlowableClassList.add("org.flowable.common.engine.impl.el.function.AbstractFlowableVariableExpressionFunction");
         serializableFlowableClassList.add("org.flowable.common.engine.impl.persistence.deploy.DefaultDeploymentCache");
-        FlowableSerializable flowableSerializable = new FlowableSerializable(serializableFlowableClassList);
+        serializableFlowableClassList.add("org.flowable.engine.impl.delegate.invocation.DefaultDelegateInterceptor");
+        // serializableFlowableClassList.add("org.flowable.common.engine.api.delegate.FlowableFunctionDelegate");
+        FlowableSerializable flowableSerializable = new FlowableSerializable();
+        flowableSerializable.setSerializableFlowableClassList(serializableFlowableClassList);
         try {
             flowableSerializable.execute();
         } catch (Exception e) {

+ 7 - 6
flow-common/flow-common-flowable-starter/src/main/java/com/flow/flowable/loader/FlowableSerializable.java

@@ -2,6 +2,7 @@ package com.flow.flowable.loader;
 
 import org.apache.ibatis.javassist.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 public class FlowableSerializable {
@@ -10,9 +11,6 @@ public class FlowableSerializable {
     public FlowableSerializable() {
     }
 
-    public FlowableSerializable(List<String> serializableFlowableClassList) {
-        this.serializableFlowableClassList = serializableFlowableClassList;
-    }
 
     public List<String> getSerializableFlowableClassList() {
         return serializableFlowableClassList;
@@ -31,12 +29,15 @@ public class FlowableSerializable {
                 ctClass.defrost();
             }
             ctClass.addInterface(classPool.get("java.io.Serializable"));
-            if (!ctClass.isInterface()) {
+            if ("org.flowable.common.engine.impl.el.DefaultExpressionManager".equals(serializableFlowableClass)) {
+                CtField[] fields = ctClass.getFields();
+                Arrays.stream(fields).forEach(field -> field.setModifiers(Modifier.TRANSIENT));
+            }
+            /*if (!ctClass.isInterface()) {
                 CtField field = CtField.make("private static final long serialVersionUID = 1L;", ctClass);
                 ctClass.addField(field);
-            }
+            }*/
             ctClass.toClass();
-
         }
         classPool.importPackage("org.flowable.engine.impl.util.CommandContextUtil");
         CtClass ctClass = classPool.get("org.flowable.common.engine.impl.el.JuelExpression");

+ 1 - 1
flow-workflow/flow-workflow-biz/src/main/java/com/flow/config/CustomDeploymentCache.java

@@ -14,7 +14,7 @@ import java.util.Set;
 public class CustomDeploymentCache implements DeploymentCache<ProcessDefinitionCacheEntry> {
     @Autowired
     private RedisTemplate<String, ProcessDefinitionCacheEntry> jdkRedisTemplate;
-    private final String CachePrefix = "flow:";
+    private final String CachePrefix = "flow:cache:";
 
     @Override
     public ProcessDefinitionCacheEntry get(String id) {

+ 0 - 1
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/FlowModel.java

@@ -18,7 +18,6 @@ import org.flowable.bpmn.model.Process;
 import org.flowable.bpmn.model.*;
 import org.flowable.common.engine.api.delegate.event.FlowableEventType;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;