Skip to content

Commit eb90563

Browse files
authored
Merge branch 'dev' into Improvement-17942
2 parents 88e6c5b + 6c5af9c commit eb90563

33 files changed

Lines changed: 207 additions & 1409 deletions

File tree

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
## About
1010

1111
Apache DolphinScheduler is a modern data orchestration platform that empowers agile, low-code development of high-performance workflows.
12-
It is dedicated to handling complex task dependencies in data pipelines, and provides a wide range of built-in job types ** out of the box**
12+
It is dedicated to handling complex task dependencies in data pipelines and provides a wide range of built-in job types **out of the box**.
1313

1414
Key features for DolphinScheduler are as follows:
1515

16-
- Easy to deploy, provides four deployment modes including Standalone, Cluster, Docker and Kubernetes.
16+
- Easy to deploy, providing four deployment modes including Standalone, Cluster, Docker, and Kubernetes.
1717
- Easy to use, workflows can be created and managed via Web UI, [Python SDK](https://dolphinscheduler.apache.org/python/main/index.html) or Open API
18-
- Highly reliable and high availability, with a decentralized, multi-master and multi-worker architecture and native supports for horizontal scaling.
18+
- Highly reliable and high availability, with a decentralized, multi-master and multi-worker architecture and native support for horizontal scaling.
1919
- High performance, its performance is several times faster than other orchestration platforms, and it is capable of handling tens of millions of tasks per day
20-
- Cloud Native, DolphinScheduler supports orchestrating workflows cross multiple clouds and data centers, and allows custom task types
20+
- Cloud Native, DolphinScheduler supports orchestrating workflows across multiple clouds and data centers, and allows custom task types
2121
- Workflow Versioning, provides version control for both workflows and individual workflow instances, including tasks.
22-
- Flexible state control of workflows and tasks, supports pause/stop/recover them in any time
22+
- Flexible state control of workflows and tasks, supports pausing, stopping, and recovering them at any time.
2323
- Multi-tenancy support
2424
- Additional features, backfill support(Web UI native), permission control including project and data source etc.
2525

@@ -47,7 +47,7 @@ Key features for DolphinScheduler are as follows:
4747
* **Data source:** Supports multiple external data sources, provides unified data access capabilities for MySQL, PostgreSQL, Hive, Trino, etc.
4848
![data-source](images/data-source.png)
4949

50-
* **Monitor:** View the status of the master, worker and database in real time, including server resource usage and load, do quick health check without logging in to the server.
50+
* **Monitor:** View the status of the master, worker and database in real time, including server resource usage and load, do a quick health check without logging in to the server.
5151
![monitor](images/monitor.png)
5252

5353
## Suggestions & Bug Reports
@@ -57,7 +57,7 @@ Follow [this guide](https://github.com/apache/dolphinscheduler/issues/new/choose
5757
## Contributing
5858

5959
The community welcomes contributions from everyone. Please refer to this page to find out more details: [How to contribute](docs/docs/en/contribute/join/contribute.md).
60-
Check out good first issue in [here](https://github.com/apache/dolphinscheduler/contribute) if you are new to DolphinScheduler.
60+
Check out good first issues [here](https://github.com/apache/dolphinscheduler/contribute) if you are new to DolphinScheduler.
6161

6262
## Community
6363

README_zh_CN.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Apache Dolphinscheduler
1+
# Apache DolphinScheduler
22

33
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
4-
[![codecov](https://codecov.io/gh/apache/dolphinscheduler/branch/dev/graph/badge.svg)]()
4+
[![codecov](https://codecov.io/gh/apache/dolphinscheduler/branch/dev/graph/badge.svg)](https://codecov.io/gh/apache/dolphinscheduler)
55
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=apache-dolphinscheduler&metric=alert_status)](https://sonarcloud.io/dashboard?id=apache-dolphinscheduler)
66
[![Twitter Follow](https://img.shields.io/twitter/follow/dolphinschedule.svg?style=social&label=Follow)](https://twitter.com/dolphinschedule) <!-- markdown-link-check-disable-line -->
77
[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
@@ -12,8 +12,8 @@
1212

1313
DolphinScheduler 的主要特性如下:
1414

15-
- 易于部署,提供四种部署方式,包括Standalone、Cluster、Docker和Kubernetes
16-
- 易于使用,可以通过四种方式创建和管理工作流,包括Web UI、[Python SDK](https://dolphinscheduler.apache.org/python/main/index.html)和Open API
15+
- 易于部署,提供四种部署方式,包括 Standalone、Cluster、Docker 和 Kubernetes
16+
- 易于使用,可以通过多种方式创建和管理工作流,包括 Web UI、[Python SDK](https://dolphinscheduler.apache.org/python/main/index.html) 和 Open API
1717
- 高可靠高可用,多主多从的去中心化架构,原生支持横向扩展
1818
- 高性能,性能比其他编排平台快N倍,每天可支持千万级任务
1919
- Cloud Native,DolphinScheduler支持编排多云/数据中心工作流,支持自定义任务类型
@@ -57,7 +57,7 @@ DolphinScheduler 的主要特性如下:
5757

5858
## 社区
5959

60-
欢迎通过以方式加入社区
60+
欢迎通过以下方式加入社区
6161

6262
- 讨论和提问请通过 [GitHub Issues](https://github.com/apache/dolphinscheduler/issues)
6363
- 关注 [DolphinScheduler Twitter](https://twitter.com/dolphinschedule) 来获取最新消息 <!-- markdown-link-check-disable-line -->

docs/docs/en/guide/project/workflow-definition.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,3 @@ Description of workflow operating parameters:
188188
- View the Schedule Timing:After the scheduled time goes online, you can check the current timing situation through the "Timing" button<img src="../../../../img/timing.png" width="35"/>. But it cannot be modified, as shown in the below figure.
189189
![workflow-time04](../../../../img/new_ui/dev/project/workflow-time04.png)
190190

191-
## Import Workflow
192-
193-
Click `Project Management -> Workflow -> Workflow Definition` to enter the workflow definition page, click the `Import Workflow` button to import the local workflow file, the workflow definition list displays the imported workflow and the status is offline.

docs/docs/en/guide/upgrade/incompatible.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,7 @@ This document records the incompatible updates between each version. You need to
4040
* Refactor the task plugins which use ShellCommandExecutor ([#17790])(https://github.com/apache/dolphinscheduler/pull/17790)
4141
* Remove the `Pytorch` from the `Task Plugin` ([#17808])(https://github.com/apache/dolphinscheduler/pull/17808), if you are still using this task type, please delete the data with `task_type = 'PYTORCH'` in `t_ds_task_definition` and `t_ds_task_definition_log` before upgrading.
4242

43+
## 3.4.1
44+
45+
* Remove import and export of workflow definition. ([#17940])(https://github.com/apache/dolphinscheduler/issues/17940)
46+

docs/docs/zh/guide/project/workflow-definition.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,3 @@
170170
- 查看定时:定时上线后可以通过"定时"按钮<img src="../../../../img/timing.png" width="35"/>,查看当前定时情况。但是不可修改,如图所示。
171171
![workflow-time04](../../../../img/new_ui/dev/project/workflow-time04.png)
172172

173-
## 导入工作流
174-
175-
点击项目管理->工作流->工作流定义,进入工作流定义页面,点击"导入工作流"按钮,导入本地工作流文件,工作流定义列表显示导入的工作流,状态为下线。

docs/docs/zh/guide/upgrade/incompatible.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,7 @@
4444
* 重构使用 ShellCommandExecutor 的任务插件 ([#17790])(https://github.com/apache/dolphinscheduler/pull/17790)
4545
*`任务插件` 中移除 `Pytorch` 类型 ([#17808])(https://github.com/apache/dolphinscheduler/pull/17808),如果您仍在使用该任务类型,请在升级前删除 `t_ds_task_definition``t_ds_task_definition_log``task_type = 'PYTORCH'` 的数据。
4646

47+
## 3.4.1
48+
49+
* 移除导入导出工作流([#17940])(https://github.com/apache/dolphinscheduler/issues/17940)
50+

dolphinscheduler-api-test/dolphinscheduler-api-test-case/src/test/java/org/apache/dolphinscheduler/api/test/cases/ExecutorAPITest.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@
3131
import org.apache.dolphinscheduler.common.enums.WarningType;
3232
import org.apache.dolphinscheduler.dao.entity.User;
3333

34-
import org.apache.http.client.methods.CloseableHttpResponse;
35-
import org.apache.http.util.EntityUtils;
36-
3734
import java.io.File;
3835
import java.text.SimpleDateFormat;
3936
import java.util.Date;
@@ -75,6 +72,8 @@ public class ExecutorAPITest {
7572

7673
private static List<Integer> workflowInstanceIds;
7774

75+
private static String workflowDefinitionName = "test" + System.currentTimeMillis();
76+
7877
@BeforeAll
7978
public static void setup() {
8079
LoginPage loginPage = new LoginPage();
@@ -109,10 +108,9 @@ public void testStartWorkflowInstance() {
109108
// upload test workflow definition json
110109
ClassLoader classLoader = getClass().getClassLoader();
111110
File file = new File(classLoader.getResource("workflow-json/test.json").getFile());
112-
CloseableHttpResponse importWorkflowDefinitionResponse = workflowDefinitionPage
113-
.importWorkflowDefinition(loginUser, projectCode, file);
114-
String data = EntityUtils.toString(importWorkflowDefinitionResponse.getEntity());
115-
Assertions.assertTrue(data.contains("\"success\":true"));
111+
HttpResponse createWorkflowDefinitionResponse = workflowDefinitionPage
112+
.createWorkflowDefinition(loginUser, projectCode, file, workflowDefinitionName);
113+
Assertions.assertTrue(createWorkflowDefinitionResponse.getBody().getSuccess());
116114

117115
// get workflow definition code
118116
HttpResponse queryAllWorkflowDefinitionByProjectCodeResponse =

dolphinscheduler-api-test/dolphinscheduler-api-test-case/src/test/java/org/apache/dolphinscheduler/api/test/cases/SchedulerAPITest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ public class SchedulerAPITest {
6767

6868
private static int scheduleId;
6969

70+
private static String workflowDefinitionName = "test" + System.currentTimeMillis();
71+
7072
@BeforeAll
7173
public static void setup() {
7274
LoginPage loginPage = new LoginPage();
@@ -98,7 +100,7 @@ public void testCreateSchedule() {
98100
.getBody().getData()).get(0)).get("code");
99101
ClassLoader classLoader = getClass().getClassLoader();
100102
File file = new File(classLoader.getResource("workflow-json/test.json").getFile());
101-
workflowDefinitionPage.importWorkflowDefinition(loginUser, projectCode, file);
103+
workflowDefinitionPage.createWorkflowDefinition(loginUser, projectCode, file, workflowDefinitionName);
102104
HttpResponse queryAllWorkflowDefinitionByProjectCodeResponse =
103105
workflowDefinitionPage.queryAllWorkflowDefinitionByProjectCode(loginUser, projectCode);
104106
Assertions.assertTrue(queryAllWorkflowDefinitionByProjectCodeResponse.getBody().getSuccess());

dolphinscheduler-api-test/dolphinscheduler-api-test-case/src/test/java/org/apache/dolphinscheduler/api/test/cases/WorkflowDefinitionAPITest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@
2828
import org.apache.dolphinscheduler.common.enums.UserType;
2929
import org.apache.dolphinscheduler.dao.entity.User;
3030

31-
import org.apache.http.client.methods.CloseableHttpResponse;
32-
import org.apache.http.util.EntityUtils;
33-
3431
import java.io.File;
3532
import java.util.LinkedHashMap;
3633
import java.util.List;
@@ -65,7 +62,9 @@ public class WorkflowDefinitionAPITest {
6562

6663
private static long workflowDefinitionCode;
6764

68-
private static String workflowDefinitionName;
65+
private static String projectName = "project-test" + System.currentTimeMillis();
66+
67+
private static String workflowDefinitionName = "test" + System.currentTimeMillis();
6968

7069
@BeforeAll
7170
public static void setup() {
@@ -87,20 +86,20 @@ public static void cleanup() {
8786

8887
@Test
8988
@Order(1)
90-
public void testImportWorkflowDefinition() {
89+
public void testCreateWorkflowDefinition() {
9190
try {
92-
HttpResponse createProjectResponse = projectPage.createProject(loginUser, "project-test");
91+
projectPage.createProject(loginUser, projectName);
9392
HttpResponse queryAllProjectListResponse = projectPage.queryAllProjectList(loginUser);
9493
Assertions.assertTrue(queryAllProjectListResponse.getBody().getSuccess());
9594

9695
projectCode = (long) ((LinkedHashMap<String, Object>) ((List<LinkedHashMap>) queryAllProjectListResponse
9796
.getBody().getData()).get(0)).get("code");
9897
ClassLoader classLoader = getClass().getClassLoader();
9998
File file = new File(classLoader.getResource("workflow-json/test.json").getFile());
100-
CloseableHttpResponse importWorkflowDefinitionResponse = workflowDefinitionPage
101-
.importWorkflowDefinition(loginUser, projectCode, file);
102-
String data = EntityUtils.toString(importWorkflowDefinitionResponse.getEntity());
103-
Assertions.assertTrue(data.contains("\"success\":true"));
99+
HttpResponse createWorkflowDefinitionResponse = workflowDefinitionPage
100+
.createWorkflowDefinition(loginUser, projectCode, file, workflowDefinitionName);
101+
Boolean successFlag = createWorkflowDefinitionResponse.getBody().getSuccess();
102+
Assertions.assertTrue(successFlag);
104103
} catch (Exception e) {
105104
log.error("failed", e);
106105
Assertions.fail();
@@ -141,7 +140,7 @@ public void testGetWorkflowListByProjectCode() {
141140
Assertions.assertTrue(getWorkflowListByProjectCodeResponse.getBody().getSuccess());
142141
Assertions
143142
.assertTrue(
144-
getWorkflowListByProjectCodeResponse.getBody().getData().toString().contains("test_import"));
143+
getWorkflowListByProjectCodeResponse.getBody().getData().toString().contains("test"));
145144
}
146145

147146
@Test
@@ -151,7 +150,7 @@ public void testQueryWorkflowDefinitionByName() {
151150
workflowDefinitionPage.queryWorkflowDefinitionByName(loginUser, projectCode, workflowDefinitionName);
152151
Assertions.assertTrue(queryWorkflowDefinitionByNameResponse.getBody().getSuccess());
153152
Assertions.assertTrue(
154-
queryWorkflowDefinitionByNameResponse.getBody().getData().toString().contains("hello world"));
153+
queryWorkflowDefinitionByNameResponse.getBody().getData().toString().contains(workflowDefinitionName));
155154
}
156155

157156
@Test

dolphinscheduler-api-test/dolphinscheduler-api-test-case/src/test/java/org/apache/dolphinscheduler/api/test/cases/WorkflowInstanceAPITest.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@
3535
import org.apache.dolphinscheduler.common.enums.WarningType;
3636
import org.apache.dolphinscheduler.dao.entity.User;
3737

38-
import org.apache.http.client.methods.CloseableHttpResponse;
39-
import org.apache.http.util.EntityUtils;
40-
4138
import java.io.File;
4239
import java.text.SimpleDateFormat;
4340
import java.util.Date;
@@ -83,6 +80,10 @@ public class WorkflowInstanceAPITest {
8380

8481
private static int workflowInstanceId;
8582

83+
private static String projectName = "project-test" + System.currentTimeMillis();
84+
85+
private static String workflowDefinitionName = "test" + System.currentTimeMillis();
86+
8687
@BeforeAll
8788
public static void setup() {
8889
LoginPage loginPage = new LoginPage();
@@ -109,7 +110,7 @@ public static void cleanup() {
109110
public void testQueryWorkflowInstancesByWorkflowInstanceId() {
110111
try {
111112
// create test project
112-
HttpResponse createProjectResponse = projectPage.createProject(loginUser, "project-test");
113+
HttpResponse createProjectResponse = projectPage.createProject(loginUser, projectName);
113114
HttpResponse queryAllProjectListResponse = projectPage.queryAllProjectList(loginUser);
114115
assertTrue(queryAllProjectListResponse.getBody().getSuccess());
115116
projectCode = (long) ((LinkedHashMap<String, Object>) ((List<LinkedHashMap>) queryAllProjectListResponse
@@ -118,10 +119,9 @@ public void testQueryWorkflowInstancesByWorkflowInstanceId() {
118119
// upload test workflow definition json
119120
ClassLoader classLoader = getClass().getClassLoader();
120121
File file = new File(classLoader.getResource("workflow-json/test.json").getFile());
121-
CloseableHttpResponse importWorkflowDefinitionResponse = workflowDefinitionPage
122-
.importWorkflowDefinition(loginUser, projectCode, file);
123-
String data = EntityUtils.toString(importWorkflowDefinitionResponse.getEntity());
124-
assertTrue(data.contains("\"success\":true"));
122+
HttpResponse createWorkflowDefinitionResponse = workflowDefinitionPage
123+
.createWorkflowDefinition(loginUser, projectCode, file, workflowDefinitionName);
124+
assertTrue(createWorkflowDefinitionResponse.getBody().getSuccess());
125125

126126
// get workflow definition code
127127
HttpResponse queryAllWorkflowDefinitionByProjectCodeResponse =
@@ -176,7 +176,7 @@ public void testQueryWorkflowInstanceList() {
176176
HttpResponse queryWorkflowInstanceListResponse =
177177
workflowInstancePage.queryWorkflowInstanceList(loginUser, projectCode, 1, 10);
178178
assertTrue(queryWorkflowInstanceListResponse.getBody().getSuccess());
179-
assertTrue(queryWorkflowInstanceListResponse.getBody().getData().toString().contains("test_import"));
179+
assertTrue(queryWorkflowInstanceListResponse.getBody().getData().toString().contains(workflowDefinitionName));
180180
}
181181

182182
@Test
@@ -185,7 +185,8 @@ public void testQueryTaskListByWorkflowInstanceId() {
185185
HttpResponse queryTaskListByWorkflowInstanceIdResponse =
186186
workflowInstancePage.queryTaskListByWorkflowInstanceId(loginUser, projectCode, workflowInstanceId);
187187
assertTrue(queryTaskListByWorkflowInstanceIdResponse.getBody().getSuccess());
188-
assertTrue(queryTaskListByWorkflowInstanceIdResponse.getBody().getData().toString().contains("test_import"));
188+
assertTrue(queryTaskListByWorkflowInstanceIdResponse.getBody().getData().toString()
189+
.contains(workflowDefinitionName));
189190
}
190191

191192
@Test
@@ -194,7 +195,7 @@ public void testQueryWorkflowInstanceById() {
194195
HttpResponse queryWorkflowInstanceByIdResponse =
195196
workflowInstancePage.queryWorkflowInstanceById(loginUser, projectCode, workflowInstanceId);
196197
assertTrue(queryWorkflowInstanceByIdResponse.getBody().getSuccess());
197-
assertTrue(queryWorkflowInstanceByIdResponse.getBody().getData().toString().contains("test_import"));
198+
assertTrue(queryWorkflowInstanceByIdResponse.getBody().getData().toString().contains(workflowDefinitionName));
198199
}
199200

200201
@Test
@@ -208,7 +209,8 @@ public void testDeleteWorkflowInstanceById() {
208209
workflowInstancePage.queryWorkflowInstanceList(loginUser, projectCode, 1, 10);
209210
assertTrue(queryWorkflowInstanceListResponse.getBody().getSuccess());
210211
Assertions
211-
.assertFalse(queryWorkflowInstanceListResponse.getBody().getData().toString().contains("test_import"));
212+
.assertFalse(queryWorkflowInstanceListResponse.getBody().getData().toString()
213+
.contains(workflowDefinitionName));
212214
}
213215

214216
}

0 commit comments

Comments
 (0)