Browse Source

[Feature][UI Next]Add PIGEON Task (#8462)

* Fix field errors in SubProcess

* Add PIGEON Task
3.0.0/version-upgrade
labbomb 3 years ago committed by GitHub
parent
commit
cd8c5e1c9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      dolphinscheduler-ui-next/src/locales/modules/en_US.ts
  2. 4
      dolphinscheduler-ui-next/src/locales/modules/zh_CN.ts
  3. 1
      dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/index.ts
  4. 32
      dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-target-task-name.ts
  5. 81
      dolphinscheduler-ui-next/src/views/projects/task/components/node/tasks/use-pigeon.ts
  6. 9
      dolphinscheduler-ui-next/src/views/projects/task/components/node/use-task.ts

4
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'
}
}

4
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任务名'
}
}

1
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'

32
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
}
}
}

81
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
}
}

9
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
}

Loading…
Cancel
Save