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

leonbao pushed a commit to branch json_split
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/json_split by this push:
     new 2a81b29  fix: process instance version page bug (#5319)
2a81b29 is described below

commit 2a81b29b8f26f71ac32413200de9699ba3d211cb
Author: wen-hemin <[email protected]>
AuthorDate: Mon Apr 19 16:22:17 2021 +0800

    fix: process instance version page bug (#5319)
    
    Co-authored-by: wen-hemin <[email protected]>
---
 .../api/controller/ProcessDefinitionController.java          | 12 ++++++------
 .../api/service/ProcessDefinitionService.java                |  6 +++---
 .../api/service/impl/ProcessDefinitionServiceImpl.java       |  8 ++++----
 .../api/service/impl/ProcessInstanceServiceImpl.java         |  6 +++++-
 .../src/js/conf/home/pages/dag/_source/dag.vue               |  4 ++--
 .../pages/definition/pages/list/_source/versions.vue         |  5 +++--
 dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js    | 10 ++++++++--
 dolphinscheduler-ui/src/js/conf/home/store/dag/state.js      |  4 ++++
 8 files changed, 35 insertions(+), 20 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 d2cbe78..6c73e2a 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
@@ -275,14 +275,14 @@ public class ProcessDefinitionController extends 
BaseController {
      * @param projectName         the process definition project name
      * @param pageNo              the process definition version list current 
page number
      * @param pageSize            the process definition version list page size
-     * @param processDefinitionId the process definition id
+     * @param processDefinitionCode the process definition code
      * @return the process definition version list
      */
     @ApiOperation(value = "queryProcessDefinitionVersions", notes = 
"QUERY_PROCESS_DEFINITION_VERSIONS_NOTES")
     @ApiImplicitParams({
         @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, 
dataType = "Int", example = "100"),
         @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = 
true, dataType = "Int", example = "100"),
-        @ApiImplicitParam(name = "processDefinitionId", value = 
"PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100")
+        @ApiImplicitParam(name = "processDefinitionCode", value = 
"PROCESS_DEFINITION_CODE", required = true, dataType = "Long", example = "1")
     })
     @GetMapping(value = "/versions")
     @ResponseStatus(HttpStatus.OK)
@@ -291,11 +291,11 @@ public class ProcessDefinitionController extends 
BaseController {
                                                  @ApiParam(name = 
"projectName", value = "PROJECT_NAME", required = true) @PathVariable String 
projectName,
                                                  @RequestParam(value = 
"pageNo") int pageNo,
                                                  @RequestParam(value = 
"pageSize") int pageSize,
-                                                 @RequestParam(value = 
"processDefinitionId") int processDefinitionId) {
-        logger.info("login user {}, query process versions, project name: {}, 
pageNo: {}, pageSize: {}, processDefinitionId: {}",
-                loginUser.getUserName(), projectName, pageNo, pageSize, 
processDefinitionId);
+                                                 @RequestParam(value = 
"processDefinitionCode") long processDefinitionCode) {
+        logger.info("login user {}, query process versions, project name: {}, 
pageNo: {}, pageSize: {}, processDefinitionCode: {}",
+                loginUser.getUserName(), projectName, pageNo, pageSize, 
processDefinitionCode);
         Map<String, Object> result = 
processDefinitionService.queryProcessDefinitionVersions(loginUser
-            , projectName, pageNo, pageSize, processDefinitionId);
+            , projectName, pageNo, pageSize, processDefinitionCode);
 
         return returnDataList(result);
     }
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 eaa73e8..acaab97 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
@@ -276,17 +276,17 @@ public interface ProcessDefinitionService {
             , int processDefinitionId, long version);
 
     /**
-     * query the pagination versions info by one certain process definition id
+     * query the pagination versions info by one certain process definition 
code
      *
      * @param loginUser login user info to check auth
      * @param projectName process definition project name
      * @param pageNo page number
      * @param pageSize page size
-     * @param processDefinitionId process definition id
+     * @param processDefinitionCode process definition code
      * @return the pagination process definition versions info of the certain 
process definition
      */
     Map<String, Object> queryProcessDefinitionVersions(User loginUser, String 
projectName,
-                                                       int pageNo, int 
pageSize, int processDefinitionId);
+                                                       int pageNo, int 
pageSize, long processDefinitionCode);
 
     /**
      * delete one certain process definition by version number and process 
definition id
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 6dabcb2..396d59c 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
@@ -1726,17 +1726,17 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
     }
 
     /**
-     * query the pagination versions info by one certain process definition id
+     * query the pagination versions info by one certain process definition 
code
      *
      * @param loginUser login user info to check auth
      * @param projectName process definition project name
      * @param pageNo page number
      * @param pageSize page size
-     * @param processDefinitionId process definition id
+     * @param processDefinitionCode process definition code
      * @return the pagination process definition versions info of the certain 
process definition
      */
     @Override
-    public Map<String, Object> queryProcessDefinitionVersions(User loginUser, 
String projectName, int pageNo, int pageSize, int processDefinitionId) {
+    public Map<String, Object> queryProcessDefinitionVersions(User loginUser, 
String projectName, int pageNo, int pageSize, long processDefinitionCode) {
 
         Map<String, Object> result = new HashMap<>();
 
@@ -1758,7 +1758,7 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
             return checkResult;
         }
 
-        ProcessDefinition processDefinition = 
processDefinitionMapper.queryByDefineId(processDefinitionId);
+        ProcessDefinition processDefinition = 
processDefinitionMapper.queryByCode(processDefinitionCode);
 
         PageInfo<ProcessDefinitionLog> pageInfo = new PageInfo<>(pageNo, 
pageSize);
         Page<ProcessDefinitionLog> page = new Page<>(pageNo, pageSize);
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
index 21c79bd..67d6183 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
@@ -463,12 +463,16 @@ public class ProcessInstanceServiceImpl extends 
BaseServiceImpl implements Proce
                 processDefinition.getUserId());
         setProcessInstance(processInstance, tenant, scheduleTime, locations,
                 connects, processInstanceJson, processData);
-        int update = processService.updateProcessInstance(processInstance);
         int updateDefine = 1;
         if (Boolean.TRUE.equals(syncDefine)) {
             updateDefine = syncDefinition(loginUser, project, locations, 
connects,
                     processInstance, processDefinition, processData);
+
+            
processInstance.setProcessDefinitionVersion(processDefinitionLogMapper.
+                    
queryMaxVersionForDefinition(processInstance.getProcessDefinitionCode()));
         }
+
+        int update = processService.updateProcessInstance(processInstance);
         if (update > 0 && updateDefine > 0) {
             putMsg(result, Status.SUCCESS);
         } else {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
index 860de1c..a1cef10 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
@@ -153,7 +153,7 @@
         :visible.sync="drawer"
         size=""
         :with-header="false">
-        <m-versions :versionData = versionData 
@mVersionSwitchProcessDefinitionVersion="mVersionSwitchProcessDefinitionVersion"
 
@mVersionGetProcessDefinitionVersionsPage="mVersionGetProcessDefinitionVersionsPage"
 
@mVersionDeleteProcessDefinitionVersion="mVersionDeleteProcessDefinitionVersion"
 @closeVersion="closeVersion"></m-versions>
+        <m-versions :versionData = versionData :isInstance="type === 
'instance'" 
@mVersionSwitchProcessDefinitionVersion="mVersionSwitchProcessDefinitionVersion"
 
@mVersionGetProcessDefinitionVersionsPage="mVersionGetProcessDefinitionVersionsPage"
 
@mVersionDeleteProcessDefinitionVersion="mVersionDeleteProcessDefinitionVersion"
 @closeVersion="closeVersion"></m-versions>
       </el-drawer>
       <el-drawer
         :visible.sync="nodeDrawer"
@@ -798,7 +798,7 @@
         this.getProcessDefinitionVersionsPage({
           pageNo: 1,
           pageSize: 10,
-          processDefinitionId: this.urlParam.id
+          processDefinitionCode: this.store.state.dag.code
         }).then(res => {
           let processDefinitionVersions = res.data.lists
           let total = res.data.totalCount
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
 
b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
index f1e10b3..7fa8bb3 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
@@ -50,7 +50,7 @@
                 :title="$t('Confirm Switch To This Version?')"
                 @onConfirm="_mVersionSwitchProcessDefinitionVersion(scope.row)"
               >
-                <el-button 
:disabled="versionData.processDefinition.releaseState === 'ONLINE' || 
scope.row.version === versionData.processDefinition.version" type="primary" 
size="mini" icon="el-icon-warning" circle slot="reference"></el-button>
+                <el-button 
:disabled="versionData.processDefinition.releaseState === 'ONLINE' || 
scope.row.version === versionData.processDefinition.version || isInstance" 
type="primary" size="mini" icon="el-icon-warning" circle 
slot="reference"></el-button>
               </el-popconfirm>
             </el-tooltip>
             <el-tooltip :content="$t('Delete')" placement="top">
@@ -62,7 +62,7 @@
                 :title="$t('Delete?')"
                 
@onConfirm="_mVersionDeleteProcessDefinitionVersion(scope.row,scope.row.id)"
               >
-                <el-button :disabled="scope.row.version === 
versionData.processDefinition.version" type="danger" size="mini" 
icon="el-icon-delete" circle slot="reference"></el-button>
+                <el-button :disabled="scope.row.version === 
versionData.processDefinition.version || isInstance" type="danger" size="mini" 
icon="el-icon-delete" circle slot="reference"></el-button>
               </el-popconfirm>
             </el-tooltip>
           </template>
@@ -110,6 +110,7 @@
       }
     },
     props: {
+      isInstance: Boolean,
       versionData: Object
     },
     methods: {
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 841fd18..3cda9e3 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
@@ -158,6 +158,10 @@ export default {
       io.get(`projects/${state.projectName}/process/select-by-id`, {
         processId: payload
       }, res => {
+        // process definition code
+        state.code = res.data.code
+        // version
+        state.version = res.data.version
         // name
         state.name = res.data.name
         // description
@@ -166,8 +170,6 @@ export default {
         state.connects = JSON.parse(res.data.connects)
         // locations
         state.locations = JSON.parse(res.data.locations)
-        // version
-        state.version = res.data.version
         // Process definition
         const processDefinitionJson = 
JSON.parse(res.data.processDefinitionJson)
         // tasks info
@@ -243,6 +245,10 @@ export default {
       io.get(`projects/${state.projectName}/instance/select-by-id`, {
         processInstanceId: payload
       }, res => {
+        // code
+        state.code = res.data.processDefinitionCode
+        // version
+        state.version = res.data.processDefinitionVersion
         // name
         state.name = res.data.name
         // desc
diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js 
b/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
index 1d5a06d..486611a 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
@@ -21,6 +21,10 @@ import localStore from '@/module/util/localStorage'
 const projectName = localStore.getItem('projectName')
 
 export default {
+  // process definition code
+  code: '',
+  // process definition version
+  version: '',
   // name
   name: '',
   // description

Reply via email to