Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9c6cf15
[Feature-17501]Third-party System API Connector for REST-based Task …
Dec 11, 2025
edce44e
[Feature-17501]Generic Third-party System API Connector for REST-base…
Dec 11, 2025
b1ee992
Merge branch 'dev' into thirdparty-system-connector
SbloodyS Dec 19, 2025
469bc54
[Feature-17501]simplify and modernize third-party connector
Dec 24, 2025
1dbb678
[Feature-17501]Third-party System API Connector fix CI error
Dec 24, 2025
895f440
Merge remote-tracking branch 'github/thirdparty-system-connector' int…
Dec 24, 2025
3a5c842
Merge branch 'dev' into thirdparty-system-connector
dill21yu Dec 24, 2025
b311bef
Merge branch 'dev' into thirdparty-system-connector
SbloodyS Jan 5, 2026
7a37ab2
[Feature-17501]Third-party System APl Connector fix UI CI error
Jan 7, 2026
deed2ba
[Feature-17501]Third-party System APl Connector fix UI CI error2
Jan 7, 2026
0690673
[Feature-17501]Third-party System APl Connector fix CI error -revert …
Jan 7, 2026
ce6d068
Merge remote-tracking branch 'github/thirdparty-system-connector' int…
Jan 7, 2026
046d20d
Merge branch 'dev' into thirdparty-system-connector
dill21yu Jan 7, 2026
16ea2b5
Merge branch 'dev' into thirdparty-system-connector
dill21yu Jan 12, 2026
38a1f34
Merge branch 'dev' into thirdparty-system-connector
dill21yu Jan 19, 2026
00200c7
Merge branch 'dev' into thirdparty-system-connector
ruanwenjun Jan 21, 2026
5df5bce
Merge branch 'dev' into thirdparty-system-connector
SbloodyS Jan 23, 2026
3ad5473
[Feature-17501]Third-party System APl Connector fix UI CI error remov…
Jan 27, 2026
daa86ce
[Feature-17501]Third-party System APl Connector fix UI CI error pnpm …
Jan 27, 2026
3123356
Merge branch 'dev' into thirdparty-system-connector
dill21yu Jan 27, 2026
ca52f4a
[Feature-17501]Third-party System APl Connector add unit test
Jan 27, 2026
a1f3565
Merge remote-tracking branch 'origin/thirdparty-system-connector' int…
Jan 27, 2026
c735e14
[Feature-17501]Third-party System APl Connector fix sonarqubecloud
Jan 28, 2026
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,58 @@
/*
* 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.dao.entity.ExternalSystemTaskQuery;

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.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.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(@RequestParam("externalSystemId") Integer externalSystemId) {
List<ExternalSystemTaskQuery> result =
externalSystemService.queryExternalSystemTasks(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,28 @@
/*
* 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 java.util.List;

public interface ExternalSystemService {

List<ExternalSystemTaskQuery> queryExternalSystemTasks(int externalSystemId);

}
Loading
Loading