Forráskód Böngészése

优化缓存提高性能

caixiaofeng 6 hónapja
szülő
commit
f05ceaa2c7

+ 2 - 0
flow-common/flow-common-flowable-starter/src/main/java/com/flow/flowable/configure/FlowableConfigure.java

@@ -6,6 +6,7 @@ import com.flow.flowable.converter.CustomServiceTaskXMLConverter;
 import com.flow.flowable.converter.JumpServiceTaskXMLConverter;
 import com.flow.flowable.expression.VariableBetweenExpressionFunction;
 import com.flow.flowable.expression.VariableContainsAllExpressionFunction;
+import com.flow.flowable.mapper.CustomProcessDefinitionDataManager;
 import com.flow.flowable.parser.factory.CustomDefaultActivityBehaviorFactory;
 import com.flow.flowable.parser.handler.CopyServiceTaskParseHandler;
 import com.flow.flowable.parser.handler.JumpServiceTaskParseHandler;
@@ -70,6 +71,7 @@ public class FlowableConfigure implements EngineConfigurationConfigurer<SpringPr
         if (Objects.nonNull(this.deploymentCache)) {
             engineConfiguration.setProcessDefinitionCache(deploymentCache);
             engineConfiguration.setProcessDefinitionCacheLimit(1000);
+            engineConfiguration.setProcessDefinitionDataManager(new CustomProcessDefinitionDataManager(engineConfiguration, this.deploymentCache));
         }
     }
 }

+ 30 - 0
flow-common/flow-common-flowable-starter/src/main/java/com/flow/flowable/mapper/CustomProcessDefinitionDataManager.java

@@ -0,0 +1,30 @@
+package com.flow.flowable.mapper;
+
+import org.flowable.common.engine.impl.persistence.deploy.DeploymentCache;
+import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
+import org.flowable.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry;
+import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntity;
+import org.flowable.engine.impl.persistence.entity.data.impl.MybatisProcessDefinitionDataManager;
+
+import java.util.Objects;
+
+public class CustomProcessDefinitionDataManager extends MybatisProcessDefinitionDataManager {
+
+    private final DeploymentCache<ProcessDefinitionCacheEntry> deploymentCache;
+
+    public CustomProcessDefinitionDataManager(ProcessEngineConfigurationImpl processEngineConfiguration, DeploymentCache<ProcessDefinitionCacheEntry> deploymentCache) {
+        super(processEngineConfiguration);
+        this.deploymentCache = deploymentCache;
+    }
+
+    @Override
+    public ProcessDefinitionEntity findById(String entityId) {
+        if (Objects.nonNull(this.deploymentCache)) {
+            ProcessDefinitionCacheEntry processDefinitionCacheEntry = this.deploymentCache.get(entityId);
+            if (Objects.nonNull(processDefinitionCacheEntry)) {
+                return (ProcessDefinitionEntity) processDefinitionCacheEntry.getProcessDefinition();
+            }
+        }
+        return super.findById(entityId);
+    }
+}