From bbf6c4ed62e0b5ad57d41691a05032e2a613c739 Mon Sep 17 00:00:00 2001 From: Eric Gao Date: Thu, 28 Apr 2022 16:06:49 +0800 Subject: [PATCH] [Feature][UI Next] Add front-end for Apache Zeppelin task plugin (#9597) (#9810) * [Feature][UI Next] Add front-end for Apache Zeppelin task plugin (#9597) * Fix minor bugs of zeppelin server endpoint in common.properties * Fix several bugs in zeppelin task plugin front-end * add noteId and paragraphId into ITaskParams * Fix bug in tasks/use-zeppelin.ts --- .../src/main/resources/common.properties | 2 +- .../public/images/task-icons/zeppelin.png | Bin 0 -> 44175 bytes .../images/task-icons/zeppelin_hover.png | Bin 0 -> 19024 bytes .../src/locales/modules/en_US.ts | 4 + .../src/locales/modules/zh_CN.ts | 4 + .../task/components/node/fields/index.ts | 1 + .../components/node/fields/use-zeppelin.ts | 61 +++++++++++++ .../task/components/node/format-data.ts | 14 +++ .../task/components/node/tasks/index.ts | 4 +- .../components/node/tasks/use-zeppelin.ts | 80 ++++++++++++++++++ .../projects/task/components/node/types.ts | 4 + .../projects/task/constants/task-type.ts | 5 ++ .../workflow/components/dag/dag.module.scss | 6 ++ 13 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 dolphinscheduler-ui-next/public/images/task-icons/zeppelin.png create mode 100644 dolphinscheduler-ui-next/public/images/task-icons/zeppelin_hover.png create mode 100644 dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-zeppelin.ts create mode 100644 dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-zeppelin.ts diff --git a/dolphinscheduler-common/src/main/resources/common.properties b/dolphinscheduler-common/src/main/resources/common.properties index fd26cd2bb4..428b80f45e 100644 --- a/dolphinscheduler-common/src/main/resources/common.properties +++ b/dolphinscheduler-common/src/main/resources/common.properties @@ -92,4 +92,4 @@ development.state=false alert.rpc.port=50052 # Url endpoint for zeppelin RESTful API -zeppelin.rest.url="http://localhost:8080" +zeppelin.rest.url=http://localhost:8080 diff --git a/dolphinscheduler-ui-next/public/images/task-icons/zeppelin.png b/dolphinscheduler-ui-next/public/images/task-icons/zeppelin.png new file mode 100644 index 0000000000000000000000000000000000000000..c4defe085cb6a984587c2760b1796d4f42cce3f5 GIT binary patch literal 44175 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

T~7UJY!gm5xZXr#L7FvN)AR>+K0tS%$!?rdhR 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 literal 0 HcmV?d00001 diff --git a/dolphinscheduler-ui-next/public/images/task-icons/zeppelin_hover.png b/dolphinscheduler-ui-next/public/images/task-icons/zeppelin_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..70ee84030991c96c0a73a9b81d0f3823f12786bb GIT binary patch literal 19024 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 A?*IS* literal 0 HcmV?d00001 diff --git a/dolphinscheduler-ui-next/src/locales/modules/en_US.ts b/dolphinscheduler-ui-next/src/locales/modules/en_US.ts index 59869ae163..68de4463e0 100644 --- a/dolphinscheduler-ui-next/src/locales/modules/en_US.ts +++ b/dolphinscheduler-ui-next/src/locales/modules/en_US.ts @@ -920,6 +920,10 @@ const project = { required: 'required', emr_flow_define_json: 'jobFlowDefineJson', emr_flow_define_json_tips: 'Please enter the definition of the job flow.', + zeppelin_note_id: 'zeppelinNoteId', + zeppelin_note_id_tips: 'Please enter the note id of your zeppelin note', + zeppelin_paragraph_id: 'zeppelinParagraphId', + zeppelin_paragraph_id_tips: 'Please enter the paragraph id of your zeppelin paragraph', send_email: 'Send Email', log_display: 'Log display', rows_of_result: 'rows of result', diff --git a/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts b/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts index 3f27545f9f..a5990c07e9 100644 --- a/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts +++ b/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts @@ -909,6 +909,10 @@ const project = { required: '必填', emr_flow_define_json: 'jobFlowDefineJson', emr_flow_define_json_tips: '请输入工作流定义', + zeppelin_note_id: 'zeppelin_note_id', + zeppelin_note_id_tips: '请输入zeppelin note id', + zeppelin_paragraph_id: 'zeppelin_paragraph_id', + zeppelin_paragraph_id_tips: '请输入zeppelin paragraph id', send_email: '发送邮件', log_display: '日志显示', rows_of_result: '行查询结果', diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/index.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/index.ts index c00d29a636..38cb3fac3c 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/index.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/index.ts @@ -61,3 +61,4 @@ export { useDataX } from './use-datax' export { useConditions } from './use-conditions' export { useDependent } from './use-dependent' export { useEmr } from './use-emr' +export { useZeppelin } from './use-zeppelin' diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-zeppelin.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-zeppelin.ts new file mode 100644 index 0000000000..5cbe70f15a --- /dev/null +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-zeppelin.ts @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { useI18n } from 'vue-i18n' +import { useCustomParams } from '.' +import type { IJsonItem } from '../types' + +export function useZeppelin(model: { [field: string]: any }): IJsonItem[] { + const { t } = useI18n() + + return [ + { + type: 'input', + field: 'zeppelinNoteId', + name: t('project.node.zeppelin_note_id'), + props: { + placeholder: t('project.node.zeppelin_note_id_tips') + }, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if (!value) { + return new Error(t('project.node.zeppelin_note_id_tips')) + } + } + } + }, + { + type: 'input', + field: 'zeppelinParagraphId', + name: t('project.node.zeppelin_paragraph_id'), + props: { + placeholder: t('project.node.zeppelin_paragraph_id_tips') + }, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if (!value) { + return new Error(t('project.node.zeppelin_paragraph_id_tips')) + } + } + } + }, + ...useCustomParams({ model, field: 'localParams', isSimple: false }) + ] +} diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/format-data.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/format-data.ts index b84b5d7826..2f8547a688 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/format-data.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/format-data.ts @@ -300,6 +300,12 @@ export function formatParams(data: INodeData): { taskParams.type = data.type taskParams.jobFlowDefineJson = data.jobFlowDefineJson } + + if (data.taskType === 'ZEPPELIN') { + taskParams.noteId = data.zeppelinNoteId + taskParams.paragraphId = data.zeppelinParagraphId + } + if (data.taskType === 'PIGEON') { taskParams.targetJobName = data.targetJobName } @@ -500,6 +506,14 @@ export function formatModel(data: ITaskData) { params.jobFlowDefineJson = data.taskParams.jobFlowDefineJson } + if (data.taskParams?.zeppelinNoteId) { + params.zeppelinNoteId = data.taskParams.zeppelinNoteId + } + + if (data.taskParams?.zeppelinParagraphId) { + params.zeppelinParagraphId = data.taskParams.zeppelinParagraphId + } + if (data.taskParams?.processDefinitionCode) { params.processDefinitionCode = data.taskParams.processDefinitionCode } diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/index.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/index.ts index 82f444ff87..e1a64d2dcf 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/index.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/index.ts @@ -33,6 +33,7 @@ import { useDataX } from './use-datax' import { useDependent } from './use-dependent' import { useDataQuality } from './use-data-quality' import { useEmr } from './use-emr' +import { useZeppelin } from './use-zeppelin' export default { SHELL: useShell, @@ -52,5 +53,6 @@ export default { DATAX: useDataX, DEPENDENT: useDependent, DATA_QUALITY: useDataQuality, - EMR: useEmr + EMR: useEmr, + ZEPPELIN: useZeppelin } diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-zeppelin.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-zeppelin.ts new file mode 100644 index 0000000000..226543f23a --- /dev/null +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-zeppelin.ts @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { reactive } from 'vue' +import * as Fields from '../fields/index' +import type { IJsonItem, INodeData, ITaskData } from '../types' + +export function useZeppelin({ + projectCode, + from = 0, + readonly, + data +}: { + projectCode: number + from?: number + readonly?: boolean + data?: ITaskData +}) { + const model = reactive({ + name: '', + taskType: 'ZEPPELIN', + flag: 'YES', + description: '', + timeoutFlag: false, + localParams: [], + environmentCode: null, + failRetryInterval: 1, + failRetryTimes: 0, + workerGroup: 'default', + delayTime: 0, + timeout: 30 + } as INodeData) + + let extra: IJsonItem[] = [] + if (from === 1) { + extra = [ + Fields.useTaskType(model, readonly), + Fields.useProcessName({ + model, + projectCode, + isCreate: !data?.id, + from, + processName: data?.processName + }) + ] + } + + return { + json: [ + Fields.useName(from), + ...extra, + Fields.useRunFlag(), + Fields.useDescription(), + Fields.useTaskPriority(), + Fields.useWorkerGroup(), + Fields.useEnvironmentName(model, !model.id), + ...Fields.useTaskGroup(model, projectCode), + ...Fields.useFailed(), + Fields.useDelayTime(model), + ...Fields.useTimeoutAlarm(model), + ...Fields.useZeppelin(model), + Fields.usePreTasks() + ] as IJsonItem[], + model + } +} diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/types.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/types.ts index 8001373695..5c74d29065 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/types.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/types.ts @@ -280,6 +280,10 @@ interface ITaskParams { ruleId?: number ruleInputParameter?: IRuleParameters jobFlowDefineJson?: string + zeppelinNoteId?: string + zeppelinParagraphId?: string + noteId?: string + paragraphId?: string processDefinitionCode?: number conditionResult?: { successNode?: number[] diff --git a/dolphinscheduler-ui-next/src/views/projects/task/constants/task-type.ts b/dolphinscheduler-ui-next/src/views/projects/task/constants/task-type.ts index fe899a5daf..aa14db5532 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/constants/task-type.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/constants/task-type.ts @@ -33,6 +33,7 @@ export type TaskType = | 'SWITCH' | 'SEATUNNEL' | 'EMR' + | 'ZEPPELIN' export const TASK_TYPES_MAP = { SHELL: { @@ -93,5 +94,9 @@ export const TASK_TYPES_MAP = { EMR: { alias: 'AmazonEMR', helperLinkDisable: true + }, + ZEPPELIN: { + alias: 'ZEPPELIN', + helperLinkDisable: true } } as { [key in TaskType]: { alias: string; helperLinkDisable?: boolean } } diff --git a/dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/dag.module.scss b/dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/dag.module.scss index 4d69d595fe..70d0970d4c 100644 --- a/dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/dag.module.scss +++ b/dolphinscheduler-ui-next/src/views/projects/workflow/components/dag/dag.module.scss @@ -155,6 +155,9 @@ $bgLight: #ffffff; &.icon-emr { background-image: url('/images/task-icons/emr.png'); } + &.icon-zeppelin { + background-image: url('/images/task-icons/zeppelin.png'); + } } &:hover { @@ -213,6 +216,9 @@ $bgLight: #ffffff; &.icon-emr { background-image: url('/images/task-icons/emr_hover.png'); } + &.icon-zeppelin { + background-image: url('/images/task-icons/zeppelin_hover.png'); + } } } }