You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by li...@apache.org on 2021/01/20 02:28:11 UTC
[incubator-dolphinscheduler] branch dev updated: [Feature-4423][UI]
When the process definition is running,
the pop-up box can manually set the global parameters. (#4433)
This is an automated email from the ASF dual-hosted git repository.
lidongdai pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 17c06ce [Feature-4423][UI] When the process definition is running, the pop-up box can manually set the global parameters. (#4433)
17c06ce is described below
commit 17c06ce966fc5c6a6136ee142e4698312fe6532f
Author: Dean Wong <wa...@gmail.com>
AuthorDate: Wed Jan 20 10:28:00 2021 +0800
[Feature-4423][UI] When the process definition is running, the pop-up box can manually set the global parameters. (#4433)
* [DS-130][feat] pass global param values when starting new process instance
add optional param for start-process-instance api
reuse command_param in command table for persistence
overload curingGlobalParams function in ParameterUtils
not adapt the UI code yet
* change import order
* support datetime expression
* print start params
* (fix) avoid npe when cmdParam is null
Change-Id: I3b4c4b5fa1df316ff221e27146e45d7d4d3a404e
* [Feature-4423][UI] When the process definition is running, the pop-up box can manually set the global parameters
(frontend) adapt the UI code
(backend-fix) add empty string check for param
Change-Id: I710db55f5059f8bd324c79f4494f2798d58e7b19
* add Startup parameters label
Change-Id: I5ac82031ea1b64abec330ee8cf2991477a28fcaa
* reuse i18n label
Change-Id: I5f322cb1dd8e2cade0c679bd025fc984e31bf3ae
---
.../formModel/tasks/_source/localParams.vue | 12 +++--
.../pages/definition/pages/list/_source/start.vue | 52 ++++++++++++++++++++--
2 files changed, 56 insertions(+), 8 deletions(-)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
index c001a20..3f8c6e8 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
@@ -59,7 +59,7 @@
</el-select>
</template>
<el-input
- :disabled="isDetails"
+ :disabled="isDetails && !isStartProcess"
type="text"
size="small"
v-model="localParamsList[$index].value"
@@ -68,18 +68,18 @@
@blur="_handleValue()"
:style="inputStyle">
</el-input>
- <span class="lt-add">
+ <span class="lt-add" v-show="!isStartProcess">
<a href="javascript:" style="color:red;" @click="!isDetails && _removeUdp($index)" >
<em class="el-icon-delete" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
</a>
</span>
- <span class="add" v-if="$index === (localParamsList.length - 1)">
+ <span class="add" v-if="$index === (localParamsList.length - 1)" v-show="!isStartProcess">
<a href="javascript:" @click="!isDetails && _addUdp()" >
<em class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
</a>
</span>
</div>
- <span class="add-dp" v-if="!localParamsList.length">
+ <span class="add-dp" v-if="!localParamsList.length" v-show="!isStartProcess">
<a href="javascript:" @click="!isDetails && _addUdp()" >
<em class="iconfont el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
</a>
@@ -112,6 +112,10 @@
hide: {
type: Boolean,
default: true
+ },
+ isStartProcess: {
+ type: Boolean,
+ default: false
}
},
methods: {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue
index cb6cc67..0cf2391 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue
@@ -125,6 +125,22 @@
</div>
</div>
</div>
+ <div class="clearfix list">
+ <div class="text">
+ <span>{{$t('Startup parameter')}}</span>
+ </div>
+ <div class="cont" style="width: 688px;">
+ <div style="padding-top: 6px;">
+ <m-local-params
+ ref="refLocalParams"
+ @on-local-params="_onLocalParams"
+ :udp-list="udpList"
+ :hide="false"
+ :isStartProcess="true">
+ </m-local-params>
+ </div>
+ </div>
+ </div>
<template v-if="execType">
<div class="clearfix list" style="margin:-6px 0 16px 0">
<div class="text">
@@ -163,12 +179,16 @@
</div>
</template>
<script>
+ import _ from 'lodash'
import dayjs from 'dayjs'
import mEmail from './email.vue'
import store from '@/conf/home/store'
import { warningTypeList } from './util'
import mPriority from '@/module/components/priority/priority'
import mWorkerGroups from '@/conf/home/pages/dag/_source/formModel/_source/workerGroups'
+ import mLocalParams from '@/conf/home/pages/dag/_source/formModel/tasks/_source/localParams'
+ import disabledState from '@/module/mixin/disabledState'
+ import { mapMutations } from 'vuex'
export default {
name: 'start-process',
@@ -190,10 +210,13 @@
receiversCc: [],
runMode: 'RUN_MODE_SERIAL',
processInstancePriority: 'MEDIUM',
- workerGroup: 'default'
-
+ workerGroup: 'default',
+ // Global custom parameters
+ definitionGlobalParams: [],
+ udpList: []
}
},
+ mixins: [disabledState],
props: {
startData: Object,
startNodeList: {
@@ -203,11 +226,21 @@
sourceType: String
},
methods: {
+ ...mapMutations('dag', ['setIsDetails', 'resetParams']),
+ _onLocalParams (a) {
+ this.udpList = a
+ },
_datepicker (val) {
this.scheduleTime = val
},
_start () {
this.spinnerLoading = true
+ let startParams = {}
+ for (const item of this.udpList) {
+ if (item.value !== '') {
+ startParams[item.prop] = item.value
+ }
+ }
let param = {
processDefinitionId: this.startData.id,
scheduleTime: this.scheduleTime.length && this.scheduleTime.join(',') || '',
@@ -221,7 +254,8 @@
processInstancePriority: this.processInstancePriority,
receivers: this.receivers.join(',') || '',
receiversCc: this.receiversCc.join(',') || '',
- workerGroup: this.workerGroup
+ workerGroup: this.workerGroup,
+ startParams: !_.isEmpty(startParams) ? JSON.stringify(startParams) : ''
}
// Executed from the specified node
if (this.sourceType === 'contextmenu') {
@@ -230,6 +264,8 @@
this.store.dispatch('dag/processStart', param).then(res => {
this.$message.success(res.msg)
this.$emit('onUpdateStart')
+ // recovery
+ this.udpList = _.cloneDeep(this.definitionGlobalParams)
setTimeout(() => {
this.spinnerLoading = false
this.close()
@@ -253,6 +289,13 @@
this.receiversCc = res.receiversCc && res.receiversCc.split(',') || []
})
},
+ _getGlobalParams () {
+ this.setIsDetails(true)
+ this.store.dispatch('dag/getProcessDetails', this.startData.id).then(res => {
+ this.definitionGlobalParams = _.cloneDeep(this.store.state.dag.globalParams)
+ this.udpList = _.cloneDeep(this.store.state.dag.globalParams)
+ })
+ },
ok () {
this._start()
},
@@ -270,6 +313,7 @@
this.workflowName = this.startData.name
this._getReceiver()
+ this._getGlobalParams()
let stateWorkerGroupsList = this.store.state.security.workerGroupsListAll || []
if (stateWorkerGroupsList.length) {
this.workerGroup = stateWorkerGroupsList[0].id
@@ -292,7 +336,7 @@
this.workflowName = this.startData.name
},
computed: {},
- components: { mEmail, mPriority, mWorkerGroups }
+ components: { mEmail, mPriority, mWorkerGroups, mLocalParams }
}
</script>