This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch 2.0.0-release-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/2.0.0-release-prepare by this 
push:
     new 72dc21a  [cherry-pick] add processDefinitionSimpleList api and 
optimize page load (#6834)
72dc21a is described below

commit 72dc21a4b92520bf67488a10bd42161812cdcb28
Author: OS <[email protected]>
AuthorDate: Fri Nov 12 18:48:34 2021 +0800

    [cherry-pick] add processDefinitionSimpleList api and optimize page load 
(#6834)
    
    * [Feature][API] add processDefinitionSimpleList api (#6814)
    
    * add processDefinitionSimpleList api
    
    * add processDefinitionSimpleList api
    
    * Optimize DAG page opening speed (#6830)
    
    Co-authored-by: JinYong Li <[email protected]>
    Co-authored-by: wangyizhi <[email protected]>
---
 .../controller/ProcessDefinitionController.java    | 18 ++++++++
 .../api/service/ProcessDefinitionService.java      | 10 +++++
 .../service/impl/ProcessDefinitionServiceImpl.java | 32 +++++++++++++
 .../home/pages/dag/_source/formModel/formModel.vue |  6 +--
 .../dag/_source/formModel/tasks/sub_process.vue    | 52 ++++++++++++++--------
 .../js/conf/home/pages/dag/definitionDetails.vue   |  4 +-
 .../src/js/conf/home/pages/dag/index.vue           |  4 +-
 .../src/js/conf/home/pages/dag/instanceDetails.vue |  4 +-
 .../src/js/conf/home/store/dag/actions.js          |  2 +-
 9 files changed, 100 insertions(+), 32 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
index d6cb1ba..35e70b2 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
@@ -439,6 +439,24 @@ public class ProcessDefinitionController extends 
BaseController {
     }
 
     /**
+     * query Process definition simple list
+     *
+     * @param loginUser login user
+     * @param projectCode project code
+     * @return process definition list
+     */
+    @ApiOperation(value = "querySimpleList", notes = 
"QUERY_PROCESS_DEFINITION_SIMPLE_LIST_NOTES")
+    @GetMapping(value = "/simple-list")
+    @ResponseStatus(HttpStatus.OK)
+    @ApiException(QUERY_PROCESS_DEFINITION_LIST)
+    @AccessLogAnnotation(ignoreRequestArgs = "loginUser")
+    public Result queryProcessDefinitionSimpleList(@ApiIgnore 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+                                                   @ApiParam(name = 
"projectCode", value = "PROJECT_CODE", required = true) @PathVariable long 
projectCode) {
+        Map<String, Object> result = 
processDefinitionService.queryProcessDefinitionSimpleList(loginUser, 
projectCode);
+        return returnDataList(result);
+    }
+
+    /**
      * query process definition list paging
      *
      * @param loginUser login user
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
index 42fce02..e74ea98 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
@@ -69,6 +69,16 @@ public interface ProcessDefinitionService {
                                                    long projectCode);
 
     /**
+     * query process definition simple list
+     *
+     * @param loginUser login user
+     * @param projectCode project code
+     * @return definition simple list
+     */
+    Map<String, Object> queryProcessDefinitionSimpleList(User loginUser,
+                                                         long projectCode);
+
+    /**
      * query process definition list paging
      *
      * @param loginUser login user
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
index d4aa93e..d7bcbc7 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
@@ -103,6 +103,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Lists;
 
 /**
@@ -350,6 +352,36 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
     }
 
     /**
+     * query process definition simple list
+     *
+     * @param loginUser   login user
+     * @param projectCode project code
+     * @return definition simple list
+     */
+    @Override
+    public Map<String, Object> queryProcessDefinitionSimpleList(User 
loginUser, long projectCode) {
+        Project project = projectMapper.queryByCode(projectCode);
+        //check user access for project
+        Map<String, Object> result = 
projectService.checkProjectAndAuth(loginUser, project, projectCode);
+        if (result.get(Constants.STATUS) != Status.SUCCESS) {
+            return result;
+        }
+        List<ProcessDefinition> processDefinitions = 
processDefinitionMapper.queryAllDefinitionList(projectCode);
+        ArrayNode arrayNode = JSONUtils.createArrayNode();
+        for (ProcessDefinition processDefinition : processDefinitions) {
+            ObjectNode processDefinitionNode = JSONUtils.createObjectNode();
+            processDefinitionNode.put("id", processDefinition.getId());
+            processDefinitionNode.put("code", processDefinition.getCode());
+            processDefinitionNode.put("name", processDefinition.getName());
+            processDefinitionNode.put("projectCode", 
processDefinition.getCode());
+            arrayNode.add(processDefinitionNode);
+        }
+        result.put(Constants.DATA_LIST, arrayNode);
+        putMsg(result, Status.SUCCESS);
+        return result;
+    }
+
+    /**
      * query process definition list paging
      *
      * @param loginUser login user
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
index 2995da1..fcafefc 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
@@ -659,10 +659,10 @@
           const processDefinitionId =
             this.backfillItem.params.processDefinitionId
           const process = this.processListS.find(
-            (process) => process.processDefinition.id === processDefinitionId
+            (def) => def.id === processDefinitionId
           )
           this.$emit('onSubProcess', {
-            subProcessCode: process.processDefinition.code,
+            subProcessCode: process.code,
             fromThis: this
           })
         }
@@ -949,7 +949,7 @@
        * Child workflow entry show/hide
        */
       _isGoSubProcess () {
-        return this.nodeData.taskType === 'SUB_PROCESS' && this.name
+        return this.nodeData.taskType === 'SUB_PROCESS' && this.name && 
this.processListS && this.processListS.length > 0
       },
       taskInstance () {
         if (this.taskInstances.length > 0) {
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
index 189f92f..e0041e1 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
@@ -42,6 +42,7 @@
   import i18n from '@/module/i18n'
   import disabledState from '@/module/mixin/disabledState'
   import mListBox from './_source/listBox'
+  import { mapActions, mapState } from 'vuex'
 
   export default {
     name: 'sub_process',
@@ -57,7 +58,11 @@
     props: {
       backfillItem: Object
     },
+    computed: {
+      ...mapState('dag', ['processListS'])
+    },
     methods: {
+      ...mapActions('dag', ['getProcessList']),
       /**
        * Node unified authentication parameters
        */
@@ -82,6 +87,15 @@
        */
       _handleName (id) {
         return _.filter(this.processDefinitionList, v => id === v.id)[0].name
+      },
+      /**
+       * Get all processDefinition list
+       */
+      getAllProcessDefinitions () {
+        if (!this.processListS || this.processListS.length === 0) {
+          return this.getProcessList()
+        }
+        return Promise.resolve(this.processListS)
       }
     },
     watch: {
@@ -92,32 +106,32 @@
       }
     },
     created () {
-      let processListS = _.cloneDeep(this.store.state.dag.processListS)
       let code = null
       if (this.router.history.current.name === 'projects-instance-details') {
         code = this.router.history.current.query.code || null
       } else {
         code = this.router.history.current.params.code || null
       }
-      this.processDefinitionList = processListS.map(v => {
-        return {
-          id: v.processDefinition.id,
-          code: v.processDefinition.code,
-          name: v.processDefinition.name,
-          disabled: false
+      this.getAllProcessDefinitions().then((processListS) => {
+        this.processDefinitionList = processListS.map(def => {
+          return {
+            id: def.id,
+            code: def.code,
+            name: def.name,
+            disabled: false
+          }
+        }).filter(a => (a.code + '') !== code)
+        let o = this.backfillItem
+        // Non-null objects represent backfill
+        if (!_.isEmpty(o)) {
+          this.wdiCurr = o.params.processDefinitionId
+        } else {
+          if (this.processDefinitionList.length) {
+            this.wdiCurr = this.processDefinitionList[0].id
+            this.$emit('on-set-process-name', this._handleName(this.wdiCurr))
+          }
         }
-      }).filter(a => (a.code + '') !== code)
-
-      let o = this.backfillItem
-      // Non-null objects represent backfill
-      if (!_.isEmpty(o)) {
-        this.wdiCurr = o.params.processDefinitionId
-      } else {
-        if (this.processDefinitionList.length) {
-          this.wdiCurr = this.processDefinitionList[0].id
-          this.$emit('on-set-process-name', this._handleName(this.wdiCurr))
-        }
-      }
+      })
     },
     mounted () {
     },
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/definitionDetails.vue 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/definitionDetails.vue
index 2e1f69f..052d956 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/definitionDetails.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/definitionDetails.vue
@@ -46,7 +46,7 @@
     props: {},
     methods: {
       ...mapMutations('dag', ['resetParams', 'setIsDetails']),
-      ...mapActions('dag', ['getProcessList', 'getProjectList', 
'getResourcesList', 'getProcessDetails', 'getResourcesListJar']),
+      ...mapActions('dag', ['getProjectList', 'getResourcesList', 
'getProcessDetails', 'getResourcesListJar']),
       ...mapActions('security', ['getTenantList', 'getWorkerGroupsAll', 
'getAlarmGroupsAll']),
       /**
        * init
@@ -59,8 +59,6 @@
         Promise.all([
           // Node details
           this.getProcessDetails(this.$route.params.code),
-          // get process definition
-          this.getProcessList(),
           // get project
           this.getProjectList(),
           // get resource
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue
index 81d129a..2099c38 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue
@@ -40,7 +40,7 @@
     props: {},
     methods: {
       ...mapMutations('dag', ['resetParams']),
-      ...mapActions('dag', ['getProcessList', 'getProjectList', 
'getResourcesList', 'getResourcesListJar', 'getResourcesListJar']),
+      ...mapActions('dag', ['getProjectList', 'getResourcesList', 
'getResourcesListJar', 'getResourcesListJar']),
       ...mapActions('security', ['getTenantList', 'getWorkerGroupsAll', 
'getAlarmGroupsAll']),
       /**
        * init
@@ -51,8 +51,6 @@
         this.resetParams()
         // Promise Get node needs data
         Promise.all([
-          // get process definition
-          this.getProcessList(),
           // get project
           this.getProjectList(),
           // get jar
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/instanceDetails.vue 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/instanceDetails.vue
index 7faa41e..c9e3b98 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/instanceDetails.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/instanceDetails.vue
@@ -43,7 +43,7 @@
     props: {},
     methods: {
       ...mapMutations('dag', ['setIsDetails', 'resetParams']),
-      ...mapActions('dag', ['getProcessList', 'getProjectList', 
'getResourcesList', 'getInstancedetail', 'getResourcesListJar']),
+      ...mapActions('dag', ['getProjectList', 'getResourcesList', 
'getInstancedetail', 'getResourcesListJar']),
       ...mapActions('security', ['getTenantList', 'getWorkerGroupsAll', 
'getAlarmGroupsAll']),
       /**
        * init
@@ -56,8 +56,6 @@
         Promise.all([
           // Process instance details
           this.getInstancedetail(this.$route.params.id),
-          // get process definition
-          this.getProcessList(),
           // get project
           this.getProjectList(),
           // get resources
diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js 
b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
index 14295c7..a78df48 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
@@ -345,7 +345,7 @@ export default {
         resolve()
         return
       }
-      io.get(`projects/${state.projectCode}/process-definition/list`, payload, 
res => {
+      io.get(`projects/${state.projectCode}/process-definition/simple-list`, 
payload, res => {
         state.processListS = res.data
         resolve(res.data)
       }).catch(res => {

Reply via email to