diff --git a/dolphinscheduler-ui-next/src/locales/modules/en_US.ts b/dolphinscheduler-ui-next/src/locales/modules/en_US.ts index ed1df69b6d..77549f06fc 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 86208a5092..6ee70b4efb 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 4056707525..5eefb203e5 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 0000000000..0f81016eec --- /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 0000000000..0701beace8 --- /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 00018c3c5b..89b98822cb 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 }