Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/plugins_config
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,5 @@ dolphinscheduler-task-spark
dolphinscheduler-task-sql
dolphinscheduler-task-sqoop
dolphinscheduler-task-zeppelin
dolphinscheduler-task-external-system
--end--
24 changes: 24 additions & 0 deletions docs/docs/en/guide/task/external-system.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# External System Task

The External System task is used to call external system APIs and integrate with third-party systems. This task type allows DolphinScheduler to interact with external services, execute remote operations, and retrieve results.

## Introduction

External System tasks provide a way to execute operations in external systems through REST APIs calls. These tasks can be configured to authenticate with external systems, send requests, and process responses.

## Configuration

- **Task Name**: The name of the task.
- **Task Type**: Select "External System" from the task type list.
- **External System**: Select the external system to connect to.
- **API Endpoint**: The API endpoint to call in the external system.
- **Authentication**: Configure authentication parameters for the external system.
- **Request Method**: The HTTP method to use (GET, POST, PUT, DELETE, etc.).
- **Request Parameters**: Parameters to send with the request.
- **Response Processing**: How to process the response from the external system.

## Example

![External System Task](../../../../img/tasks/icons/external_system.png)

This is an example of how to configure an External System task in the workflow.
24 changes: 24 additions & 0 deletions docs/docs/zh/guide/task/external-system.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 外部系统任务

外部系统任务用于调用外部系统API并与第三方系统集成。这种任务类型允许DolphinScheduler与外部服务交互,执行远程操作并检索结果。

## 介绍

外部系统任务提供了一种通过REST APIs调用与外部系统交互的方式。这些任务可以配置为对第三方系统进行身份验证,发送请求并处理响应。

## 配置

- **任务名称**: 任务的名称。
- **任务类型**: 从任务类型列表中选择"外部系统"。
- **外部系统**: 选择要连接的外部系统。
- **API端点**: 在外部系统中调用的API端点。
- **认证**: 配置外部系统的认证参数。
- **请求方法**: 要使用的HTTP方法(GET、POST、PUT、DELETE等)。
- **请求参数**: 与请求一起发送的参数。
- **响应处理**: 如何处理来自外部系统的响应。

## 示例

![外部系统任务](../../../../img/tasks/icons/external_system.png)

这是在工作流程中配置外部系统任务的示例。
Binary file added docs/img/tasks/icons/external_system.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions dolphinscheduler-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,11 @@
<artifactId>azure-resourcemanager-datafactory</artifactId>
</dependency>

<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>

<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* 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.
*/

package org.apache.dolphinscheduler.api.controller;

import static org.apache.dolphinscheduler.api.enums.Status.QUERY_EXTERNAL_SYSTEM_ERROR;

import org.apache.dolphinscheduler.api.exceptions.ApiException;
import org.apache.dolphinscheduler.api.service.ExternalSystemService;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.dao.entity.ExternalSystemTaskQuery;
import org.apache.dolphinscheduler.dao.entity.User;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;

@Tag(name = "EXTERNAL_SYSTEM_TAG")
@RestController
@RequestMapping("external-systems")
public class ExternalSystemController extends BaseController {

@Autowired
private ExternalSystemService externalSystemService;

@Operation(summary = "queryExternalSystemTasks", description = "QUERY_EXTERNAL_SYSTEM_TASKS_NOTES")
@GetMapping(value = "/queryExternalSystemTasks")
@ResponseStatus(HttpStatus.OK)
@ApiException(QUERY_EXTERNAL_SYSTEM_ERROR)
public Result<List<ExternalSystemTaskQuery>> queryExternalSystemTasks(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("externalSystemId") Integer externalSystemId) {
List<ExternalSystemTaskQuery> result =
externalSystemService.queryExternalSystemTasks(loginUser, externalSystemId);
return Result.success(result);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ public enum Status {
VERIFY_DATASOURCE_NAME_FAILURE(10039, "verify datasource name failure", "验证数据源名称失败"),
UNAUTHORIZED_DATASOURCE(10040, "unauthorized datasource", "未经授权的数据源"),
AUTHORIZED_DATA_SOURCE(10041, "authorized data source", "授权数据源失败"),
QUERY_EXTERNAL_SYSTEM_ERROR(11044, "query external system error", "查询第三方系统错误"),
EXTERNAL_SYSTEM_CONNECT_AUTH_FAILED(11049, "external connect failed", "第三方系统连接失败,检查认证信息"),
LOGIN_SUCCESS(10042, "login success", "登录成功"),
USER_LOGIN_FAILURE(10043, "user login failure", "用户登录失败"),
LIST_WORKERS_ERROR(10044, "list workers error", "查询worker列表错误"),
Expand Down Expand Up @@ -120,6 +122,7 @@ public enum Status {
GRANT_PROJECT_ERROR(10094, "grant project error", "授权项目错误"),
GRANT_RESOURCE_ERROR(10095, "grant resource error", "授权资源错误"),
GRANT_DATASOURCE_ERROR(10097, "grant datasource error", "授权数据源错误"),
GRANT_EXTERNALSYSTEM_ERROR(100971, "grant external system error", "授权第三方系统错误"),
GET_USER_INFO_ERROR(10098, "get user info error", "获取用户信息错误"),
USER_LIST_ERROR(10099, "user list error", "查询用户列表错误"),
VERIFY_USERNAME_ERROR(10100, "verify username error", "用户名验证错误"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* 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.
*/

package org.apache.dolphinscheduler.api.service;

import org.apache.dolphinscheduler.dao.entity.ExternalSystemTaskQuery;
import org.apache.dolphinscheduler.dao.entity.User;

import java.util.List;

public interface ExternalSystemService {

List<ExternalSystemTaskQuery> queryExternalSystemTasks(User loginUser, int externalSystemId);

}
Loading
Loading