Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
DolphinScheduler
提交
c10deeed
DolphinScheduler
项目概览
apache
/
DolphinScheduler
上一次同步 1 年多
通知
705
Star
9572
Fork
3514
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
DolphinScheduler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
c10deeed
编写于
9月 18, 2022
作者:
J
JiPeng Wang
提交者:
GitHub
9月 18, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
CP Workflow Definition Name Change Validation Optimization. (#11986)
上级
2bdd0d9c
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
49 addition
and
21 deletion
+49
-21
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
...scheduler/api/controller/ProcessDefinitionController.java
+5
-3
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
...org/apache/dolphinscheduler/api/python/PythonGateway.java
+1
-1
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
...olphinscheduler/api/service/ProcessDefinitionService.java
+3
-1
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
...eduler/api/service/impl/ProcessDefinitionServiceImpl.java
+10
-5
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java
...duler/api/controller/ProcessDefinitionControllerTest.java
+2
-2
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
...inscheduler/api/service/ProcessDefinitionServiceTest.java
+3
-3
dolphinscheduler-ui/src/service/modules/process-definition/index.ts
...eduler-ui/src/service/modules/process-definition/index.ts
+5
-2
dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx
...views/projects/workflow/components/dag/dag-save-modal.tsx
+20
-4
未找到文件。
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
浏览文件 @
c10deeed
...
...
@@ -179,7 +179,8 @@ public class ProcessDefinitionController extends BaseController {
*/
@ApiOperation
(
value
=
"verify-name"
,
notes
=
"VERIFY_PROCESS_DEFINITION_NAME_NOTES"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"name"
,
value
=
"PROCESS_DEFINITION_NAME"
,
required
=
true
,
type
=
"String"
)
@ApiImplicitParam
(
name
=
"name"
,
value
=
"PROCESS_DEFINITION_NAME"
,
required
=
true
,
dataTypeClass
=
String
.
class
),
@ApiImplicitParam
(
name
=
"code"
,
value
=
"PROCESS_DEFINITION_CODE"
,
required
=
false
,
dataTypeClass
=
Long
.
class
),
})
@GetMapping
(
value
=
"/verify-name"
)
@ResponseStatus
(
HttpStatus
.
OK
)
...
...
@@ -187,8 +188,9 @@ public class ProcessDefinitionController extends BaseController {
@AccessLogAnnotation
(
ignoreRequestArgs
=
"loginUser"
)
public
Result
verifyProcessDefinitionName
(
@ApiIgnore
@RequestAttribute
(
value
=
Constants
.
SESSION_USER
)
User
loginUser
,
@ApiParam
(
name
=
"projectCode"
,
value
=
"PROJECT_CODE"
,
required
=
true
)
@PathVariable
long
projectCode
,
@RequestParam
(
value
=
"name"
,
required
=
true
)
String
name
)
{
Map
<
String
,
Object
>
result
=
processDefinitionService
.
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
name
);
@RequestParam
(
value
=
"name"
,
required
=
true
)
String
name
,
@RequestParam
(
value
=
"code"
,
required
=
false
,
defaultValue
=
"0"
)
long
processDefinitionCode
)
{
Map
<
String
,
Object
>
result
=
processDefinitionService
.
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
name
,
processDefinitionCode
);
return
returnDataList
(
result
);
}
...
...
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
浏览文件 @
c10deeed
...
...
@@ -267,7 +267,7 @@ public class PythonGateway {
* @param processDefinitionName process definition name
*/
private
ProcessDefinition
getProcessDefinition
(
User
user
,
long
projectCode
,
String
processDefinitionName
)
{
Map
<
String
,
Object
>
verifyProcessDefinitionExists
=
processDefinitionService
.
verifyProcessDefinitionName
(
user
,
projectCode
,
processDefinitionName
);
Map
<
String
,
Object
>
verifyProcessDefinitionExists
=
processDefinitionService
.
verifyProcessDefinitionName
(
user
,
projectCode
,
processDefinitionName
,
0
);
Status
verifyStatus
=
(
Status
)
verifyProcessDefinitionExists
.
get
(
Constants
.
STATUS
);
ProcessDefinition
processDefinition
=
null
;
...
...
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
浏览文件 @
c10deeed
...
...
@@ -187,11 +187,13 @@ public interface ProcessDefinitionService {
* @param loginUser login user
* @param projectCode project code
* @param name name
* @param processDefinitionCode processDefinitionCode
* @return true if process definition name not exists, otherwise false
*/
Map
<
String
,
Object
>
verifyProcessDefinitionName
(
User
loginUser
,
long
projectCode
,
String
name
);
String
name
,
long
processDefinitionCode
);
/**
* delete process definition by code
...
...
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
浏览文件 @
c10deeed
...
...
@@ -666,7 +666,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
* @return true if process definition name not exists, otherwise false
*/
@Override
public
Map
<
String
,
Object
>
verifyProcessDefinitionName
(
User
loginUser
,
long
projectCode
,
String
name
)
{
public
Map
<
String
,
Object
>
verifyProcessDefinitionName
(
User
loginUser
,
long
projectCode
,
String
name
,
long
processDefinitionCode
)
{
Project
project
=
projectMapper
.
queryByCode
(
projectCode
);
//check user access for project
Map
<
String
,
Object
>
result
=
projectService
.
checkProjectAndAuth
(
loginUser
,
project
,
projectCode
);
...
...
@@ -676,9 +676,13 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
ProcessDefinition
processDefinition
=
processDefinitionMapper
.
verifyByDefineName
(
project
.
getCode
(),
name
.
trim
());
if
(
processDefinition
==
null
)
{
putMsg
(
result
,
Status
.
SUCCESS
);
}
else
{
putMsg
(
result
,
Status
.
PROCESS_DEFINITION_NAME_EXIST
,
name
.
trim
());
return
result
;
}
if
(
processDefinitionCode
!=
0
&&
processDefinitionCode
==
processDefinition
.
getCode
())
{
putMsg
(
result
,
Status
.
SUCCESS
);
return
result
;
}
putMsg
(
result
,
Status
.
PROCESS_DEFINITION_NAME_EXIST
,
name
.
trim
());
return
result
;
}
...
...
@@ -1126,8 +1130,9 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
// generate import processDefinitionName
String
processDefinitionName
=
recursionProcessDefinitionName
(
projectCode
,
processDefinition
.
getName
(),
1
);
String
importProcessDefinitionName
=
getNewName
(
processDefinitionName
,
IMPORT_SUFFIX
);
//unique check
Map
<
String
,
Object
>
checkResult
=
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
importProcessDefinitionName
);
// unique check
Map
<
String
,
Object
>
checkResult
=
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
importProcessDefinitionName
,
0
);
if
(
Status
.
SUCCESS
.
equals
(
checkResult
.
get
(
Constants
.
STATUS
)))
{
putMsg
(
result
,
Status
.
SUCCESS
);
}
else
{
...
...
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java
浏览文件 @
c10deeed
...
...
@@ -127,9 +127,9 @@ public class ProcessDefinitionControllerTest {
long
projectCode
=
1L
;
String
name
=
"dag_test"
;
Mockito
.
when
(
processDefinitionService
.
verifyProcessDefinitionName
(
user
,
projectCode
,
name
)).
thenReturn
(
result
);
Mockito
.
when
(
processDefinitionService
.
verifyProcessDefinitionName
(
user
,
projectCode
,
name
,
0
)).
thenReturn
(
result
);
Result
response
=
processDefinitionController
.
verifyProcessDefinitionName
(
user
,
projectCode
,
name
);
Result
response
=
processDefinitionController
.
verifyProcessDefinitionName
(
user
,
projectCode
,
name
,
0
);
Assert
.
assertTrue
(
response
.
isStatus
(
Status
.
PROCESS_DEFINITION_NAME_EXIST
));
}
...
...
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
浏览文件 @
c10deeed
...
...
@@ -485,20 +485,20 @@ public class ProcessDefinitionServiceTest {
putMsg
(
result
,
Status
.
PROJECT_NOT_FOUND
,
projectCode
);
Mockito
.
when
(
projectService
.
checkProjectAndAuth
(
loginUser
,
project
,
projectCode
)).
thenReturn
(
result
);
Map
<
String
,
Object
>
map
=
processDefinitionService
.
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
"test_pdf"
);
projectCode
,
"test_pdf"
,
0
);
Assert
.
assertEquals
(
Status
.
PROJECT_NOT_FOUND
,
map
.
get
(
Constants
.
STATUS
));
//project check auth success, process not exist
putMsg
(
result
,
Status
.
SUCCESS
,
projectCode
);
Mockito
.
when
(
processDefineMapper
.
verifyByDefineName
(
project
.
getCode
(),
"test_pdf"
)).
thenReturn
(
null
);
Map
<
String
,
Object
>
processNotExistRes
=
processDefinitionService
.
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
"test_pdf"
);
projectCode
,
"test_pdf"
,
0
);
Assert
.
assertEquals
(
Status
.
SUCCESS
,
processNotExistRes
.
get
(
Constants
.
STATUS
));
//process exist
Mockito
.
when
(
processDefineMapper
.
verifyByDefineName
(
project
.
getCode
(),
"test_pdf"
)).
thenReturn
(
getProcessDefinition
());
Map
<
String
,
Object
>
processExistRes
=
processDefinitionService
.
verifyProcessDefinitionName
(
loginUser
,
projectCode
,
"test_pdf"
);
projectCode
,
"test_pdf"
,
0
);
Assert
.
assertEquals
(
Status
.
PROCESS_DEFINITION_NAME_EXIST
,
processExistRes
.
get
(
Constants
.
STATUS
));
}
...
...
dolphinscheduler-ui/src/service/modules/process-definition/index.ts
浏览文件 @
c10deeed
...
...
@@ -137,9 +137,12 @@ export function querySimpleList(code: number): any {
})
}
export
function
verifyName
(
params
:
NameReq
,
code
:
number
):
any
{
export
function
verifyName
(
params
:
{
name
:
string
;
workflowCode
?:
number
},
projectCode
:
number
):
any
{
return
axios
({
url
:
`/projects/
${
c
ode
}
/process-definition/verify-name`
,
url
:
`/projects/
${
projectC
ode
}
/process-definition/verify-name`
,
method
:
'
get
'
,
params
})
...
...
dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx
浏览文件 @
c10deeed
...
...
@@ -15,7 +15,15 @@
* limitations under the License.
*/
import
{
defineComponent
,
PropType
,
ref
,
computed
,
onMounted
,
watch
}
from
'
vue
'
import
{
defineComponent
,
PropType
,
ref
,
computed
,
onMounted
,
watch
,
getCurrentInstance
}
from
'
vue
'
import
Modal
from
'
@/components/modal
'
import
{
useI18n
}
from
'
vue-i18n
'
import
{
...
...
@@ -136,8 +144,9 @@ export default defineComponent({
formRef
.
value
.
validate
(
async
(
valid
:
any
)
=>
{
if
(
!
valid
)
{
const
params
=
{
name
:
formValue
.
value
.
name
}
name
:
formValue
.
value
.
name
,
code
:
props
.
definition
?.
processDefinition
.
code
}
as
{
name
:
string
;
code
?:
number
}
if
(
props
.
definition
?.
processDefinition
.
name
!==
formValue
.
value
.
name
)
{
...
...
@@ -172,6 +181,8 @@ export default defineComponent({
}
}
const
trim
=
getCurrentInstance
()?.
appContext
.
config
.
globalProperties
.
trim
onMounted
(()
=>
updateModalData
())
watch
(
...
...
@@ -189,10 +200,15 @@ export default defineComponent({
>
<
NForm
model
=
{
formValue
.
value
}
rules
=
{
rule
}
ref
=
{
formRef
}
>
<
NFormItem
label
=
{
t
(
'
project.dag.workflow_name
'
)
}
path
=
'name'
>
<
NInput
v
-
model
:
value
=
{
formValue
.
value
.
name
}
class
=
'input-name'
/>
<
NInput
allowInput
=
{
trim
}
v
-
model
:
value
=
{
formValue
.
value
.
name
}
class
=
'input-name'
/>
</
NFormItem
>
<
NFormItem
label
=
{
t
(
'
project.dag.description
'
)
}
path
=
'description'
>
<
NInput
allowInput
=
{
trim
}
type
=
'textarea'
v
-
model
:
value
=
{
formValue
.
value
.
description
}
class
=
'input-description'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录