This is an automated email from the ASF dual-hosted git repository.
songjian pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new cd8c5e1 [Feature][UI Next]Add PIGEON Task (#8462)
cd8c5e1 is described below
commit cd8c5e1c9aeff536c705c9152b31a09a674ea864
Author: labbomb <[email protected]>
AuthorDate: Mon Feb 21 15:23:06 2022 +0800
[Feature][UI Next]Add PIGEON Task (#8462)
* Fix field errors in SubProcess
* Add PIGEON Task
---
.../src/locales/modules/en_US.ts | 4 +-
.../src/locales/modules/zh_CN.ts | 4 +-
.../projects/task/components/node/fields/index.ts | 1 +
.../components/node/fields/use-target-task-name.ts | 32 +++++++++
.../task/components/node/tasks/use-pigeon.ts | 81 ++++++++++++++++++++++
.../projects/task/components/node/use-task.ts | 9 +++
6 files changed, 129 insertions(+), 2 deletions(-)
diff --git a/dolphinscheduler-ui-next/src/locales/modules/en_US.ts
b/dolphinscheduler-ui-next/src/locales/modules/en_US.ts
index ed1df69..77549f0 100644
--- a/dolphinscheduler-ui-next/src/locales/modules/en_US.ts
+++ b/dolphinscheduler-ui-next/src/locales/modules/en_US.ts
@@ -670,7 +670,9 @@ const project = {
status_code_custom: 'Custom response code',
body_contains: 'Content includes',
body_not_contains: 'Content does not contain',
- http_parameters_position: 'Http Parameters Position'
+ http_parameters_position: 'Http Parameters Position',
+ target_task_name: 'Target Task Name',
+ target_task_name_tips: 'Please enter the Pigeon task name'
}
}
diff --git a/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts
b/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts
index 86208a5..6ee70b4 100644
--- a/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts
+++ b/dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts
@@ -662,7 +662,9 @@ const project = {
status_code_custom: '自定义响应码',
body_contains: '内容包含',
body_not_contains: '内容不包含',
- http_parameters_position: '参数位置'
+ http_parameters_position: '参数位置',
+ target_task_name: '目标任务名',
+ target_task_name_tips: '请输入Pigeon任务名'
}
}
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 4056707..5eefb20 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
@@ -29,6 +29,7 @@ export { usePreTasks } from './use-pre-tasks'
export { useTaskType } from './use-task-type'
export { useProcessName } from './use-process-name'
export { useChildNode } from './use-child-node'
+export { useTargetTaskName } from './use-target-task-name'
export { useShell } from './use-shell'
export { useSpark } from './use-spark'
diff --git
a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-target-task-name.ts
b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-target-task-name.ts
new file mode 100644
index 0000000..0f81016
--- /dev/null
+++
b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-target-task-name.ts
@@ -0,0 +1,32 @@
+/*
+ * 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 type { IJsonItem } from '../types'
+
+export function useTargetTaskName(): IJsonItem {
+ const { t } = useI18n()
+ return {
+ type: 'input',
+ field: 'targetJobName',
+ name: t('project.node.target_task_name'),
+ props: {
+ placeholder: t('project.node.target_task_name_tips'),
+ maxLength: 100
+ }
+ }
+}
diff --git
a/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-pigeon.ts
b/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-pigeon.ts
new file mode 100644
index 0000000..0701bea
--- /dev/null
+++
b/dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-pigeon.ts
@@ -0,0 +1,81 @@
+/*
+ * 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 usePigeon({
+ projectCode,
+ from = 0,
+ readonly,
+ data
+}: {
+ projectCode: number
+ from?: number
+ readonly?: boolean
+ data?: ITaskData
+}) {
+ const model = reactive({
+ name: '',
+ flag: 'YES',
+ description: '',
+ timeoutFlag: false,
+ localParams: [],
+ environmentCode: null,
+ failRetryInterval: 1,
+ failRetryTimes: 0,
+ workerGroup: 'default',
+ delayTime: 0,
+ timeout: 30,
+ rawScript: ''
+ } as INodeData)
+
+ let extra: IJsonItem[] = []
+ if (from === 1) {
+ extra = [
+ Fields.useTaskType(model, readonly),
+ Fields.useProcessName({
+ model,
+ projectCode,
+ isCreate: !data?.id,
+ from,
+ processName: data?.processName,
+ code: data?.code
+ })
+ ]
+ }
+
+ return {
+ json: [
+ Fields.useName(),
+ ...extra,
+ Fields.useRunFlag(),
+ Fields.useDescription(),
+ Fields.useTaskPriority(),
+ Fields.useWorkerGroup(),
+ Fields.useEnvironmentName(model, !data?.id),
+ ...Fields.useTaskGroup(model, projectCode),
+ ...Fields.useFailed(),
+ Fields.useDelayTime(model),
+ ...Fields.useTimeoutAlarm(model),
+ Fields.useTargetTaskName(),
+ Fields.usePreTasks(model)
+ ] as IJsonItem[],
+ model
+ }
+}
diff --git
a/dolphinscheduler-ui-next/src/views/projects/task/components/node/use-task.ts
b/dolphinscheduler-ui-next/src/views/projects/task/components/node/use-task.ts
index 00018c3..89b9882 100644
---
a/dolphinscheduler-ui-next/src/views/projects/task/components/node/use-task.ts
+++
b/dolphinscheduler-ui-next/src/views/projects/task/components/node/use-task.ts
@@ -18,6 +18,7 @@
import { useFlink } from './tasks/use-flink'
import { useShell } from './tasks/use-shell'
import { useSubProcess } from './tasks/use-sub-process'
+import { usePigeon } from './tasks/use-pigeon'
import { usePython } from './tasks/use-python'
import { useSpark } from './tasks/use-spark'
import { useMr } from './tasks/use-mr'
@@ -93,5 +94,13 @@ export function useTask({
data
})
}
+ if (taskType === 'PIGEON') {
+ node = usePigeon({
+ projectCode,
+ from,
+ readonly,
+ data
+ })
+ }
return node
}