You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by zh...@apache.org on 2022/08/04 04:37:50 UTC

[dolphinscheduler] 03/03: fix: cherry pick bug for document img path

This is an automated email from the ASF dual-hosted git repository.

zhongjiajie pushed a commit to branch 3.0.0-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 4d7dded81954da4255398da14588dfed1f3f4824
Author: Jiajie Zhong <zh...@gmail.com>
AuthorDate: Thu Aug 4 12:35:44 2022 +0800

    fix: cherry pick bug for document img path
---
 .dlc.json                                          |  4 ----
 docs/docs/en/about/glossary.md                     |  2 +-
 docs/docs/en/development/e2e-test.md               | 10 ++++-----
 docs/docs/en/guide/alert/dingtalk.md               |  2 +-
 docs/docs/en/guide/alert/enterprise-webexteams.md  | 14 ++++++------
 docs/docs/en/guide/alert/enterprise-wechat.md      | 20 ++++++++---------
 docs/docs/en/guide/alert/http.md                   |  4 ++--
 docs/docs/en/guide/alert/script.md                 |  2 +-
 docs/docs/en/guide/alert/telegram.md               |  2 +-
 docs/docs/en/guide/datasource/hive.md              |  4 ++--
 docs/docs/en/guide/datasource/mysql.md             |  2 +-
 docs/docs/en/guide/datasource/postgresql.md        |  2 +-
 docs/docs/en/guide/datasource/spark.md             |  2 +-
 docs/docs/en/guide/homepage.md                     |  2 +-
 docs/docs/en/guide/open-api.md                     | 18 +++++++--------
 docs/docs/en/guide/parameter/context.md            | 14 ++++++------
 docs/docs/en/guide/parameter/global.md             |  6 ++---
 docs/docs/en/guide/parameter/local.md              | 10 ++++-----
 docs/docs/en/guide/parameter/priority.md           |  8 +++----
 docs/docs/en/guide/project/task-definition.md      |  2 +-
 docs/docs/en/guide/project/task-instance.md        |  4 ++--
 docs/docs/en/guide/resource/task-group.md          | 12 +++++-----
 docs/docs/en/guide/resource/udf-manage.md          |  8 +++----
 docs/docs/en/guide/start/docker.md                 |  2 +-
 docs/docs/zh/about/glossary.md                     |  2 +-
 docs/docs/zh/development/e2e-test.md               | 10 ++++-----
 .../docs/zh/guide/alert/alert_plugin_user_guide.md | 10 ++++-----
 docs/docs/zh/guide/alert/dingtalk.md               |  2 +-
 docs/docs/zh/guide/alert/enterprise-webexteams.md  | 14 ++++++------
 docs/docs/zh/guide/alert/enterprise-wechat.md      | 20 ++++++++---------
 docs/docs/zh/guide/alert/http.md                   |  4 ++--
 docs/docs/zh/guide/alert/script.md                 |  2 +-
 docs/docs/zh/guide/alert/telegram.md               |  2 +-
 docs/docs/zh/guide/data-quality.md                 | 26 +++++++++++-----------
 docs/docs/zh/guide/datasource/hive.md              |  4 ++--
 docs/docs/zh/guide/datasource/mysql.md             |  2 +-
 docs/docs/zh/guide/datasource/postgresql.md        |  2 +-
 docs/docs/zh/guide/datasource/spark.md             |  4 ++--
 docs/docs/zh/guide/homepage.md                     |  2 +-
 docs/docs/zh/guide/monitor.md                      | 10 ++++-----
 docs/docs/zh/guide/open-api.md                     | 18 +++++++--------
 docs/docs/zh/guide/parameter/context.md            | 14 ++++++------
 docs/docs/zh/guide/parameter/global.md             |  6 ++---
 docs/docs/zh/guide/parameter/local.md              | 10 ++++-----
 docs/docs/zh/guide/parameter/priority.md           |  8 +++----
 docs/docs/zh/guide/project/task-definition.md      |  2 +-
 docs/docs/zh/guide/project/task-instance.md        |  4 ++--
 docs/docs/zh/guide/project/workflow-instance.md    | 20 ++++++++---------
 docs/docs/zh/guide/resource/file-manage.md         | 22 ++++++++++--------
 docs/docs/zh/guide/resource/task-group.md          | 12 +++++-----
 docs/docs/zh/guide/resource/udf-manage.md          |  8 +++----
 docs/docs/zh/guide/start/docker.md                 |  2 +-
 docs/docs/zh/guide/start/quick-start.md            | 24 ++++++++++----------
 docs/docs/zh/guide/task/conditions.md              | 10 ++++-----
 docs/docs/zh/guide/task/datax.md                   |  8 +++----
 docs/docs/zh/guide/task/dependent.md               |  8 +++----
 docs/docs/zh/guide/task/flink.md                   | 10 ++++-----
 docs/docs/zh/guide/task/http.md                    |  4 ++--
 docs/docs/zh/guide/task/map-reduce.md              |  8 +++----
 docs/docs/zh/guide/task/python.md                  |  6 ++---
 docs/docs/zh/guide/task/shell.md                   |  6 ++---
 docs/docs/zh/guide/task/spark.md                   | 10 ++++-----
 docs/docs/zh/guide/task/sql.md                     |  9 ++++----
 docs/docs/zh/guide/task/sub-process.md             |  8 +++----
 docs/docs/zh/guide/task/zeppelin.md                |  6 ++---
 65 files changed, 258 insertions(+), 257 deletions(-)

diff --git a/.dlc.json b/.dlc.json
index 7c0ff97038..de75d319c2 100644
--- a/.dlc.json
+++ b/.dlc.json
@@ -21,10 +21,6 @@
     {
       "pattern": "^/zh-cn/download/download.html$",
       "replacement": "https://dolphinscheduler.apache.org/zh-cn/download/download.html"
-    },
-    {
-      "pattern": "^/img",
-      "replacement": "{{BASEURL}}/docs/img"
     }
   ],
   "timeout": "10s",
diff --git a/docs/docs/en/about/glossary.md b/docs/docs/en/about/glossary.md
index 0dd2ed0caf..492fdee963 100644
--- a/docs/docs/en/about/glossary.md
+++ b/docs/docs/en/about/glossary.md
@@ -9,7 +9,7 @@ scheduling system
 form of a directed acyclic graph, and topological traversal is performed from nodes with zero degrees of entry until
 there are no subsequent nodes. Examples are as follows:
 
-![about-glossary](/img/new_ui/dev/about/glossary.png)
+![about-glossary](../../../img/new_ui/dev/about/glossary.png)
 
 **Process definition**: Visualization formed by dragging task nodes and establishing task node associations**DAG**
 
diff --git a/docs/docs/en/development/e2e-test.md b/docs/docs/en/development/e2e-test.md
index 3f5e26af69..1db70f46a3 100644
--- a/docs/docs/en/development/e2e-test.md
+++ b/docs/docs/en/development/e2e-test.md
@@ -104,7 +104,7 @@ The goToTab method is provided in SecurityPage to test the corresponding sidebar
     }
 ```
 
-![SecurityPage](/img/e2e-test/SecurityPage.png)
+![SecurityPage](../../../img/e2e-test/SecurityPage.png)
 
 For navigation bar options jumping, the goToNav method is provided in `org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java`. The currently supported pages are: ProjectPage, SecurityPage and ResourcePage.
 
@@ -139,7 +139,7 @@ For navigation bar options jumping, the goToNav method is provided in `org/apach
 
 Current E2E test cases supported include: File Management, Project Management, Queue Management, Tenant Management, User Management, Worker Group Management and Workflow Test.
 
-![E2E_Cases](/img/e2e-test/E2E_Cases.png)
+![E2E_Cases](../../../img/e2e-test/E2E_Cases.png)
 
 The following is an example of a tenant management test. As explained earlier, we use docker-compose for deployment, so for each test case, we need to import the corresponding file in the form of an annotation.
 
@@ -186,12 +186,12 @@ When running E2E tests locally, the `-Dlocal=true` parameter can be configured t
 When running E2E tests with `M1` chip, you can use `-Dm1_chip=true` parameter to configure containers supported by 
 `ARM64`.
 
-![Dlocal](/img/e2e-test/Dlocal.png)
+![Dlocal](../../../img/e2e-test/Dlocal.png)
 
 If a connection timeout occurs during a local run, increase the load time to a recommended 30 and above.
 
-![timeout](/img/e2e-test/timeout.png)
+![timeout](../../../img/e2e-test/timeout.png)
 
 The test run will be available as an MP4 file.
 
-![MP4](/img/e2e-test/MP4.png)
+![MP4](../../../img/e2e-test/MP4.png)
diff --git a/docs/docs/en/guide/alert/dingtalk.md b/docs/docs/en/guide/alert/dingtalk.md
index 56c98fb0db..f0b9196386 100644
--- a/docs/docs/en/guide/alert/dingtalk.md
+++ b/docs/docs/en/guide/alert/dingtalk.md
@@ -4,7 +4,7 @@ If you need to use `DingTalk` for alerting, create an alert instance in the aler
 
 The following shows the `DingTalk` configuration example:
 
-![alert-dingtalk](/img/new_ui/dev/alert/alert_dingtalk.png)
+![alert-dingtalk](../../../../img/new_ui/dev/alert/alert_dingtalk.png)
 
 ## Parameter Configuration
 
diff --git a/docs/docs/en/guide/alert/enterprise-webexteams.md b/docs/docs/en/guide/alert/enterprise-webexteams.md
index 80e356c469..2427b1c626 100644
--- a/docs/docs/en/guide/alert/enterprise-webexteams.md
+++ b/docs/docs/en/guide/alert/enterprise-webexteams.md
@@ -3,7 +3,7 @@
 If you need to use `Webex Teams` to alert, create an alert instance in the alert instance management, and choose the WebexTeams plugin. You can pick private alert or room group chat alert.
 The following is the `WebexTeams` configuration example:
 
-![enterprise-webexteams-plugin](/img/alert/enterprise-webexteams-plugin.png)
+![enterprise-webexteams-plugin](../../../../img/alert/enterprise-webexteams-plugin.png)
 
 ## Parameter Configuration
 
@@ -20,13 +20,13 @@ The following is the `WebexTeams` configuration example:
 
 Create a bot visit [Official Website My-Apps](https://developer.webex.com/my-apps) to `Create a New APP` and select `Create a Bot`, fill in the bot information and acquire `bot username` and `bot ID` for further usage.
 
-![enterprise-webexteams-bot-info](/img/alert/enterprise-webexteams-bot.png)
+![enterprise-webexteams-bot-info](../../../../img/alert/enterprise-webexteams-bot.png)
 
 ## Create a Room
 
 Create a root visit [Official Website for Developer APIs](https://developer.webex.com/docs/api/v1/rooms/create-a-room) to create a new room, fill in the room name and acquire `id`(room ID) and `creatorId` for further usage.
 
-![enterprise-webexteams-room-info](/img/alert/enterprise-webexteams-room.png)
+![enterprise-webexteams-room-info](../../../../img/alert/enterprise-webexteams-room.png)
 
 ### Invite Bot to the Room
 
@@ -38,22 +38,22 @@ In this way, you can send private message to a person by `User Email` or `UserId
 The `user Email` is user register Email.
 The `userId` we can acquire it from the `creatorId` of creating a new group chat room API.
 
-![enterprise-webexteams-private-message-form](/img/alert/enterprise-webexteams-private-form.png)
+![enterprise-webexteams-private-message-form](../../../../img/alert/enterprise-webexteams-private-form.png)
 
 ### Private Alert Message Example
 
-![enterprise-webexteams-private-message-example](/img/alert/enterprise-webexteams-private-msg.png)
+![enterprise-webexteams-private-message-example](../../../../img/alert/enterprise-webexteams-private-msg.png)
 
 ## Send Group Room Message
 
 In this way, you can send group room message to a room by `Room ID`. Fill in the `Room Id` and `Bot Access Token` and select `Destination` `roomId`.
 The `Room ID` we can acquire it from the `id` of creating a new group chat room API.
 
-![enterprise-webexteams-room](/img/alert/enterprise-webexteams-group-form.png)
+![enterprise-webexteams-room](../../../../img/alert/enterprise-webexteams-group-form.png)
 
 ### Group Room Alert Message Example
 
-![enterprise-webexteams-room-message-example](/img/alert/enterprise-webexteams-room-msg.png)
+![enterprise-webexteams-room-message-example](../../../../img/alert/enterprise-webexteams-room-msg.png)
 
 ## References:
 
diff --git a/docs/docs/en/guide/alert/enterprise-wechat.md b/docs/docs/en/guide/alert/enterprise-wechat.md
index c5c32a873c..a4fdb84bd5 100644
--- a/docs/docs/en/guide/alert/enterprise-wechat.md
+++ b/docs/docs/en/guide/alert/enterprise-wechat.md
@@ -3,7 +3,7 @@
 If you need to use `Enterprise WeChat` to alert, create an alert instance in the alert instance management, and choose the `WeChat` plugin.
 The following is the `WeChat` configuration example:
 
-![enterprise-wechat-plugin](/img/alert/enterprise-wechat-plugin.png)
+![enterprise-wechat-plugin](../../../../img/alert/enterprise-wechat-plugin.png)
 
 ## Send Type
 
@@ -14,15 +14,15 @@ The parameter `send.type` corresponds to sending messages to Enterprise WeChat c
 The APP sends type means to notify the alert results via Enterprise WeChat customized APPs, supports sending messages to both specified users and all members. Currently, send to specified enterprise department and tags are not supported, a new PR to contribute is welcomed.
 The following is the `APP` alert config example:
 
-![enterprise-wechat-app-msg-config](/img/alert/wechat-app-form-example.png)
+![enterprise-wechat-app-msg-config](../../../../img/alert/wechat-app-form-example.png)
 
 The following is the `APP` `MARKDOWN` alert message example:
 
-![enterprise-wechat-app-msg-markdown](/img/alert/enterprise-wechat-app-msg-md.png)
+![enterprise-wechat-app-msg-markdown](../../../../img/alert/enterprise-wechat-app-msg-md.png)
 
 The following is the `APP` `TEXT` alert message example:
 
-![enterprise-wechat-app-msg-text](/img/alert/enterprise-wechat-app-msg.png)
+![enterprise-wechat-app-msg-text](../../../../img/alert/enterprise-wechat-app-msg.png)
 
 #### Prerequisites
 
@@ -34,7 +34,7 @@ The Enterprise WeChat APPs support sending messages to both specified users and
 To acquire user `userId` refer to [Official Doc](https://developer.work.weixin.qq.com/document/path/95402), acquire `userId` by user phone number.
 The following is the `query userId` API example:
 
-![enterprise-wechat-create-group](/img/alert/enterprise-wechat-query-userid.png)
+![enterprise-wechat-create-group](../../../../img/alert/enterprise-wechat-query-userid.png)
 
 #### References
 
@@ -46,15 +46,15 @@ APP: https://work.weixin.qq.com/api/doc/90000/90135/90236
 The Group Chat send type means to notify the alert results via group chat created by Enterprise WeChat API, sending messages to all members of the group and specified users are not supported.
 The following is the `Group Chat` alert config example:
 
-![enterprise-wechat-app-msg-config](/img/alert/wechat-group-form-example.png)
+![enterprise-wechat-app-msg-config](../../../../img/alert/wechat-group-form-example.png)
 
 The following is the `APP` `MARKDOWN` alert message example:
 
-![enterprise-wechat-group-msg-markdown](/img/alert/enterprise-wechat-group-msg-md.png)
+![enterprise-wechat-group-msg-markdown](../../../../img/alert/enterprise-wechat-group-msg-md.png)
 
 The following is the `Group Chat` `TEXT` alert message example:
 
-![enterprise-wechat-group-msg-text](/img/alert/enterprise-wechat-group-msg.png)
+![enterprise-wechat-group-msg-text](../../../../img/alert/enterprise-wechat-group-msg.png)
 
 #### Prerequisites
 
@@ -62,9 +62,9 @@ Before sending messages to group chat, create a new group chat by Enterprise WeC
 To acquire user `userId` refer to [Official Doc](https://developer.work.weixin.qq.com/document/path/95402), acquire `userId` by user phone number.
 The following is the `create new group chat` API and `query userId` API example:
 
-![enterprise-wechat-create-group](/img/alert/enterprise-wechat-create-group.png)
+![enterprise-wechat-create-group](../../../../img/alert/enterprise-wechat-create-group.png)
 
-![enterprise-wechat-create-group](/img/alert/enterprise-wechat-query-userid.png)
+![enterprise-wechat-create-group](../../../../img/alert/enterprise-wechat-query-userid.png)
 
 ## Reference
 
diff --git a/docs/docs/en/guide/alert/http.md b/docs/docs/en/guide/alert/http.md
index 0b7bf16700..3725b516f7 100644
--- a/docs/docs/en/guide/alert/http.md
+++ b/docs/docs/en/guide/alert/http.md
@@ -21,11 +21,11 @@ Using `POST` and `GET` method to send `Http` request in the `Request Type`.
 Send alert information by `Http` GET method.
 The following shows the `GET` configuration example:
 
-![enterprise-wechat-app-msg-config](/img/alert/http-get-example.png)
+![enterprise-wechat-app-msg-config](../../../../img/alert/http-get-example.png)
 
 ### POST HTTP
 
 Send alert information inside `Http` body by `Http` POST method.
 The following shows the `POST` configuration example:
 
-![enterprise-wechat-app-msg-config](/img/alert/http-post-example.png)
\ No newline at end of file
+![enterprise-wechat-app-msg-config](../../../../img/alert/http-post-example.png)
\ No newline at end of file
diff --git a/docs/docs/en/guide/alert/script.md b/docs/docs/en/guide/alert/script.md
index 28eb80391a..b87b4f5f82 100644
--- a/docs/docs/en/guide/alert/script.md
+++ b/docs/docs/en/guide/alert/script.md
@@ -3,7 +3,7 @@
 If you need to use `Shell script` for alerting, create an alert instance in the alert instance management and select the `Script` plugin. 
 The following shows the `Script` configuration example:
 
-![dingtalk-plugin](/img/alert/script-plugin.png)
+![dingtalk-plugin](../../../../img/alert/script-plugin.png)
 
 ## Parameter Configuration
 
diff --git a/docs/docs/en/guide/alert/telegram.md b/docs/docs/en/guide/alert/telegram.md
index 0c2a9172a3..cdfb026ed4 100644
--- a/docs/docs/en/guide/alert/telegram.md
+++ b/docs/docs/en/guide/alert/telegram.md
@@ -3,7 +3,7 @@
 If you need `Telegram` to alert, create an alert instance in the alert instance management, and choose the `Telegram` plugin.
 The following shows the `Telegram` configuration example:
 
-![alert-telegram](/img/new_ui/dev/alert/alert_telegram.png)
+![alert-telegram](../../../../img/new_ui/dev/alert/alert_telegram.png)
 
 ## Parameter Configuration
 
diff --git a/docs/docs/en/guide/datasource/hive.md b/docs/docs/en/guide/datasource/hive.md
index fc999d16b0..2a29ccb319 100644
--- a/docs/docs/en/guide/datasource/hive.md
+++ b/docs/docs/en/guide/datasource/hive.md
@@ -2,7 +2,7 @@
 
 ## Use HiveServer2
 
-![hive](/img/new_ui/dev/datasource/hive.png)
+![hive](../../../../img/new_ui/dev/datasource/hive.png)
 
 ## Datasource Parameters
 
@@ -23,7 +23,7 @@
 
 ## Use HiveServer2 HA ZooKeeper
 
-![hive-server2](/img/new_ui/dev/datasource/hiveserver2.png)
+![hive-server2](../../../../img/new_ui/dev/datasource/hiveserver2.png)
 
 NOTICE: If Kerberos is disabled, ensure the parameter `hadoop.security.authentication.startup.state` is false, and parameter `java.security.krb5.conf.path` value sets null. 
 If **Kerberos** is enabled, needs to set the following parameters  in `common.properties`: 
diff --git a/docs/docs/en/guide/datasource/mysql.md b/docs/docs/en/guide/datasource/mysql.md
index b1270c2704..5b9c4642f5 100644
--- a/docs/docs/en/guide/datasource/mysql.md
+++ b/docs/docs/en/guide/datasource/mysql.md
@@ -1,6 +1,6 @@
 # MySQL
 
-![mysql](/img/new_ui/dev/datasource/mysql.png)
+![mysql](../../../../img/new_ui/dev/datasource/mysql.png)
 
 ## Datasource Parameters
 
diff --git a/docs/docs/en/guide/datasource/postgresql.md b/docs/docs/en/guide/datasource/postgresql.md
index 5cb2ec7537..08d92edd31 100644
--- a/docs/docs/en/guide/datasource/postgresql.md
+++ b/docs/docs/en/guide/datasource/postgresql.md
@@ -1,6 +1,6 @@
 # PostgreSQL
 
-![postgresql](/img/new_ui/dev/datasource/postgresql.png)
+![postgresql](../../../../img/new_ui/dev/datasource/postgresql.png)
 
 ## Datasource Parameters
 
diff --git a/docs/docs/en/guide/datasource/spark.md b/docs/docs/en/guide/datasource/spark.md
index 762b0a0818..e3ea0acac7 100644
--- a/docs/docs/en/guide/datasource/spark.md
+++ b/docs/docs/en/guide/datasource/spark.md
@@ -1,6 +1,6 @@
 # Spark
 
-![sparksql](/img/new_ui/dev/datasource/sparksql.png)
+![sparksql](../../../../img/new_ui/dev/datasource/sparksql.png)
 
 ## Datasource Parameters
 
diff --git a/docs/docs/en/guide/homepage.md b/docs/docs/en/guide/homepage.md
index 70cab64623..50e7750009 100644
--- a/docs/docs/en/guide/homepage.md
+++ b/docs/docs/en/guide/homepage.md
@@ -2,4 +2,4 @@
 
 Apache DolphinScheduler home page lets you see task state statistics, workflow state statistics, and project statistics for all projects of users. It is the best way to observe status of your system as a whole as well as diving into individual process to check each status of task and task logs.
 
-![homepage](/img/new_ui/dev/homepage/homepage.png)
+![homepage](../../../img/new_ui/dev/homepage/homepage.png)
diff --git a/docs/docs/en/guide/open-api.md b/docs/docs/en/guide/open-api.md
index 656fb415b4..606d670bdf 100644
--- a/docs/docs/en/guide/open-api.md
+++ b/docs/docs/en/guide/open-api.md
@@ -10,11 +10,11 @@ Generally, projects and processes are created through pages, but considering the
 
 1. Log in to the scheduling system, click "Security", then click "Token manage" on the left, and click "Create token" to create a token.
 
-![create-token](/img/new_ui/dev/security/create-token.png)
+![create-token](../../../img/new_ui/dev/security/create-token.png)
 
 2. Select the "Expiration time" (Token validity time), select "User" (choose the specified user to perform the API operation), click "Generate token", copy the `Token` string, and click "Submit".
 
-![token-expiration](/img/new_ui/dev/open-api/token_expiration.png)
+![token-expiration](../../../img/new_ui/dev/open-api/token_expiration.png)
 
 ### Examples
 
@@ -24,7 +24,7 @@ Generally, projects and processes are created through pages, but considering the
 
 > Address:http://{API server ip}:12345/dolphinscheduler/doc.html?language=en_US&lang=en
 
-![api-doc](/img/new_ui/dev/open-api/api_doc.png)
+![api-doc](../../../img/new_ui/dev/open-api/api_doc.png)
 
 2. select a test API, the API selected for this test is `queryAllProjectList`
 
@@ -36,7 +36,7 @@ Generally, projects and processes are created through pages, but considering the
     token: The Token just generated
     ```
    
-![api-test](/img/new_ui/dev/open-api/api_test.png)
+![api-test](../../../img/new_ui/dev/open-api/api_test.png)
 
 #### Create a Project
 
@@ -44,15 +44,15 @@ This demonstrates how to use the calling api to create the corresponding project
 
 By consulting the api documentation, configure the KEY as Accept and VALUE as the parameter of application/json in the headers of Postman.
 
-![create-project01](/img/new_ui/dev/open-api/create_project01.png)
+![create-project01](../../../img/new_ui/dev/open-api/create_project01.png)
 
 And then configure the required projectName and description parameters in Body.
 
-![create-project02](/img/new_ui/dev/open-api/create_project02.png)
+![create-project02](../../../img/new_ui/dev/open-api/create_project02.png)
 
 Check the post request result.
 
-![create-project03](/img/new_ui/dev/open-api/create_project03.png)
+![create-project03](../../../img/new_ui/dev/open-api/create_project03.png)
 
 The returned `msg` information is "success", indicating that we have successfully created the project through API.
 
@@ -60,9 +60,9 @@ If you are interested in the source code of creating a project, please continue
 
 ### Appendix: The Source Code of Creating a Project
 
-![api-source01](/img/new_ui/dev/open-api/api_source01.png)
+![api-source01](../../../img/new_ui/dev/open-api/api_source01.png)
 
-![api-source02](/img/new_ui/dev/open-api/api_source02.png)
+![api-source02](../../../img/new_ui/dev/open-api/api_source02.png)
 
 
 
diff --git a/docs/docs/en/guide/parameter/context.md b/docs/docs/en/guide/parameter/context.md
index 4f44ead026..482a1cd8df 100644
--- a/docs/docs/en/guide/parameter/context.md
+++ b/docs/docs/en/guide/parameter/context.md
@@ -28,7 +28,7 @@ The user needs to pass the parameter when creating the shell script, the output
 
 Create a Node_A task, add output and value parameters to the custom parameters, and write the following script:
 
-![context-parameter01](/img/new_ui/dev/parameter/context_parameter01.png)
+![context-parameter01](../../../../img/new_ui/dev/parameter/context_parameter01.png)
 
 Parameter Description:
 
@@ -39,13 +39,13 @@ When the SHELL node is defined, the log detects the format of `${setValue(output
 
 Create the Node_B task, which is mainly used to test and output the parameters passed by the upstream task Node_A.
 
-![context-parameter02](/img/new_ui/dev/parameter/context_parameter02.png)
+![context-parameter02](../../../../img/new_ui/dev/parameter/context_parameter02.png)
 
 #### Create SQL tasks and use parameters
 
 When the SHELL task is completed, we can use the output passed upstream as the query object for the SQL. The id of the query is renamed to ID and is output as a parameter.
 
-![context-parameter03](/img/new_ui/dev/parameter/context_parameter03.png)
+![context-parameter03](../../../../img/new_ui/dev/parameter/context_parameter03.png)
 
 > Note: If the result of the SQL node has only one row, one or multiple fields, the name of the `prop` needs to be the same as the field name. The data type can choose structure except `LIST`. The parameter assigns the value according to the same column name in the SQL query result.
 >
@@ -55,7 +55,7 @@ When the SHELL task is completed, we can use the output passed upstream as the q
 
 Click on the Save workflow icon and set the global parameters output and value.
 
-![context-parameter03](/img/new_ui/dev/parameter/context_parameter04.png)
+![context-parameter03](../../../../img/new_ui/dev/parameter/context_parameter04.png)
 
 #### View results
 
@@ -63,15 +63,15 @@ After the workflow is created, run the workflow online and view its running resu
 
 The result of Node_A is as follows:
 
-![context-log01](/img/new_ui/dev/parameter/context_log01.png)
+![context-log01](../../../../img/new_ui/dev/parameter/context_log01.png)
 
 The result of Node_B is as follows:
 
-![context-log02](/img/new_ui/dev/parameter/context_log02.png)
+![context-log02](../../../../img/new_ui/dev/parameter/context_log02.png)
 
 The result of Node_mysql is as follows:
 
-![context-log03](/img/new_ui/dev/parameter/context_log03.png)
+![context-log03](../../../../img/new_ui/dev/parameter/context_log03.png)
 
 Even though output is assigned a value of 1 in Node_A's script, the log still shows a value of 100. But according to the principle from [parameter priority](priority.md): `Local Parameter > Parameter Context > Global Parameter`, the output value in Node_B is 1. It proves that the output parameter is passed in the workflow with reference to the expected value, and the query operation is completed using this value in Node_mysql.
 
diff --git a/docs/docs/en/guide/parameter/global.md b/docs/docs/en/guide/parameter/global.md
index 1e985e6b6a..bda615eea6 100644
--- a/docs/docs/en/guide/parameter/global.md
+++ b/docs/docs/en/guide/parameter/global.md
@@ -14,13 +14,13 @@ The specific use method can be determined according to the actual production sit
 
 Create a shell task and enter `echo ${dt}` in the script content. In this case, dt is the global parameter we need to declare. As shown below:
 
-![global-parameter01](/img/new_ui/dev/parameter/global_parameter01.png)
+![global-parameter01](../../../../img/new_ui/dev/parameter/global_parameter01.png)
 
 ### Save the workflow and set global parameters
 
 Set global parameter: On the workflow definition page, click the plus sign to the right of "Set Global", after filling in the variable name and value, save it.
 
-![global-parameter02](/img/new_ui/dev/parameter/global_parameter02.png)
+![global-parameter02](../../../../img/new_ui/dev/parameter/global_parameter02.png)
 
 > Note: The dt parameter defined here can be referenced by the local parameters of any other node.
 
@@ -28,4 +28,4 @@ Set global parameter: On the workflow definition page, click the plus sign to th
 
 On the task instance page, you can check the log to verify the execution result of the task and determine whether the parameters are valid.
 
-![global-parameter03](/img/new_ui/dev/parameter/global_parameter03.png)
+![global-parameter03](../../../../img/new_ui/dev/parameter/global_parameter03.png)
diff --git a/docs/docs/en/guide/parameter/local.md b/docs/docs/en/guide/parameter/local.md
index 3ed38f6cfe..29a377e8e5 100644
--- a/docs/docs/en/guide/parameter/local.md
+++ b/docs/docs/en/guide/parameter/local.md
@@ -22,7 +22,7 @@ This example shows how to use local parameters to print the current date.
 
 Create a Shell task and write a script with the content `echo ${dt}`. Click **custom parameter** in the configuration bar, and the configuration is as follows:
 
-![local-parameter01](/img/new_ui/dev/parameter/local_parameter01.png)
+![local-parameter01](../../../../img/new_ui/dev/parameter/local_parameter01.png)
 
 Parameters:
 
@@ -33,7 +33,7 @@ Parameters:
 
 Save the workflow and run it. View log of Shell task.
 
-![local-parameter02](/img/new_ui/dev/parameter/local_parameter02.png)
+![local-parameter02](../../../../img/new_ui/dev/parameter/local_parameter02.png)
 
 > Note: The local parameter can be used in the workflow of the current task node. If it is set to OUT, it can be passed to the downstream workflow. Please refer to: [Parameter Context](context.md).
 
@@ -41,7 +41,7 @@ Save the workflow and run it. View log of Shell task.
 
 If you want to simple export parameters and then use them in downstream tasks, you could use `setValue` in your task. And you can manage your parameters into one single task. You can use syntax `echo '${setValue(set_val=123)}'`(**do not forget the single quote**) in Shell task and add new `OUT` custom parameter to export it.
 
-![local-parameter-set-val](/img/new_ui/dev/parameter/local_param_set_val.png)
+![local-parameter-set-val](../../../../img/new_ui/dev/parameter/local_param_set_val.png)
 
 You can get this value in downstream task using syntax `echo '${set_val}'`.
 
@@ -53,7 +53,7 @@ change its value. You can use syntax `echo "#{setValue(set_val_param=${val})}"`(
 using any variable with `setValue`**) in Shell task and add new `IN` custom parameter for input variable `val` and `OUT` custom
 parameter for exporting parameter `set_val_param`.
 
-![local-parameter-set-val-param](/img/new_ui/dev/parameter/local_param_set_val_custom.png)
+![local-parameter-set-val-param](../../../../img/new_ui/dev/parameter/local_param_set_val_custom.png)
 
 You could get this value in downstream task using syntax `echo '${set_val_param}'`.
 
@@ -72,6 +72,6 @@ in Shell task(**do not forget the double quote, if you are using any variable wi
 for exporting parameter `set_val_var`
 .
 
-![local-parameter-set-val-bash](/img/new_ui/dev/parameter/local_param_set_val_bash.png)
+![local-parameter-set-val-bash](../../../../img/new_ui/dev/parameter/local_param_set_val_bash.png)
 
 You could get this value in downstream task using syntax `echo '${set_val_var}'`.
diff --git a/docs/docs/en/guide/parameter/priority.md b/docs/docs/en/guide/parameter/priority.md
index db59e2afa4..9088f96fd1 100644
--- a/docs/docs/en/guide/parameter/priority.md
+++ b/docs/docs/en/guide/parameter/priority.md
@@ -21,21 +21,21 @@ Followings are examples showing task parameters priority problems:
 
 1: Use shell nodes to explain the first case.
 
-![priority-parameter01](/img/new_ui/dev/parameter/priority_parameter01.png)
+![priority-parameter01](../../../../img/new_ui/dev/parameter/priority_parameter01.png)
 
 The [useParam] node can use the parameters which are set in the [createParam] node. The [useParam] node cannot obtain the parameters from the [noUseParam] node due to there is no dependency between them. Other task node types have the same usage rules with the Shell example here.
 
-![priority-parameter02](/img/new_ui/dev/parameter/priority_parameter02.png)
+![priority-parameter02](../../../../img/new_ui/dev/parameter/priority_parameter02.png)
 
 The [createParam] node can use parameters directly. In addition, the node creates two parameters named "key" and "key1", and "key1" has the same name as the one passed by the upstream node and assign value "12". However, due to the priority rules, the value assignment will assign "12" and the value from the upstream node is discarded.
 
 2: Use SQL nodes to explain another case.
 
-![priority-parameter03](/img/new_ui/dev/parameter/priority_parameter03.png)
+![priority-parameter03](../../../../img/new_ui/dev/parameter/priority_parameter03.png)
 
 The following shows the definition of the [use_create] node:
 
-![priority-parameter04](/img/new_ui/dev/parameter/priority_parameter04.png)
+![priority-parameter04](../../../../img/new_ui/dev/parameter/priority_parameter04.png)
 
 "status" is own parameter of the node set by the current node. However, the user also sets the "status" parameter (global parameter) when saving the process definition and assign its value to -1. Then the value of status will be 2, with higher priority when the SQL executes. The global parameter value is discarded.
 
diff --git a/docs/docs/en/guide/project/task-definition.md b/docs/docs/en/guide/project/task-definition.md
index 53646eb2d9..c30948987a 100644
--- a/docs/docs/en/guide/project/task-definition.md
+++ b/docs/docs/en/guide/project/task-definition.md
@@ -5,7 +5,7 @@ We already have workflow level task editor in [workflow definition](workflow-def
 workflow and then edit its task definition. It is depressing when you want to edit the task definition but do not remember
 which workflow it belongs to. So we decide to add `Task Definition` view under `Task` menu.
 
-![task-definition](/img/new_ui/dev/project/task-definition.jpg)
+![task-definition](../../../../img/new_ui/dev/project/task-definition.jpg)
 
 In this view, you can create, query, update, delete task definition by click the related button in `operation` column. The
 most exciting thing is you could query task by task name in the wildcard, and it is useful when you only remember the task
diff --git a/docs/docs/en/guide/project/task-instance.md b/docs/docs/en/guide/project/task-instance.md
index 56924323eb..2d7651732c 100644
--- a/docs/docs/en/guide/project/task-instance.md
+++ b/docs/docs/en/guide/project/task-instance.md
@@ -4,10 +4,10 @@
 
 Click `Project Management -> Workflow -> Task Instance` to enter the task instance page, as shown in the figure below, click the name of the workflow instance to jump to the DAG diagram of the workflow instance to view the task status.
 
-![task-instance](/img/new_ui/dev/project/task-instance.png)
+![task-instance](../../../../img/new_ui/dev/project/task-instance.png)
 
 ## View Log
 
 Click the `View Log` button in the operation column to view the log of the task execution
 
-![task-log](/img/new_ui/dev/project/task-log.png)
+![task-log](../../../../img/new_ui/dev/project/task-log.png)
diff --git a/docs/docs/en/guide/resource/task-group.md b/docs/docs/en/guide/resource/task-group.md
index 0cf89a429c..b8f62f0757 100644
--- a/docs/docs/en/guide/resource/task-group.md
+++ b/docs/docs/en/guide/resource/task-group.md
@@ -6,11 +6,11 @@ The task group is mainly used to control the concurrency of task instances, and
 
 ### Create Task Group 
 
-![create-taskGroup](/img/new_ui/dev/resource/create-taskGroup.png)
+![create-taskGroup](../../../../img/new_ui/dev/resource/create-taskGroup.png)
 
 The user clicks `Resources -> Task Group Management -> Task Group option -> Create Task Group` 
 
-![create-taskGroup](/img/new_ui/dev/resource/create-taskGroup.png) 
+![create-taskGroup](../../../../img/new_ui/dev/resource/create-taskGroup.png) 
 
 You need to enter the information inside the picture:
 
@@ -20,11 +20,11 @@ You need to enter the information inside the picture:
 
 ### View Task Group Queue 
 
-![view-queue](/img/new_ui/dev/resource/view-queue.png) 
+![view-queue](../../../../img/new_ui/dev/resource/view-queue.png) 
 
 Click the button to view task group usage information:
 
-![view-queue](/img/new_ui/dev/resource/view-groupQueue.png) 
+![view-queue](../../../../img/new_ui/dev/resource/view-groupQueue.png) 
 
 ### Use of Task Groups 
 
@@ -32,7 +32,7 @@ Click the button to view task group usage information:
 
 Let's take the shell node as an example:
 
-![use-queue](/img/new_ui/dev/resource/use-queue.png)                 
+![use-queue](../../../../img/new_ui/dev/resource/use-queue.png)                 
 
 Regarding the configuration of the task group, all you need to do is to configure these parts in the red box:
 
@@ -52,5 +52,5 @@ When the task that has occupied the task group resource is finished, the task gr
 
 #### Task Group Flowchart 
 
-![task_group](/img/task_group_process.png)
+![task_group](../../../../img/task_group_process.png)
       
diff --git a/docs/docs/en/guide/resource/udf-manage.md b/docs/docs/en/guide/resource/udf-manage.md
index 1b08df58dc..c7235900cc 100644
--- a/docs/docs/en/guide/resource/udf-manage.md
+++ b/docs/docs/en/guide/resource/udf-manage.md
@@ -17,7 +17,7 @@ Currently only temporary UDF functions for HIVE are supported.
 - Package name Class name: Enter the full path of the UDF function.
 - UDF resource: Set the resource file corresponding to the created UDF function.
 
-![create-udf](/img/new_ui/dev/resource/create-udf.png)
+![create-udf](../../../../img/new_ui/dev/resource/create-udf.png)
 
 ## Example
 
@@ -25,13 +25,13 @@ Currently only temporary UDF functions for HIVE are supported.
 
 Users can customize the desired UDF function according to actual production requirements. Here's a function that appends "HelloWorld" to the end of any string. As shown below:
 
-![code-udf](/img/new_ui/dev/resource/demo/udf-demo01.png)
+![code-udf](../../../../img/new_ui/dev/resource/demo/udf-demo01.png)
 
 ### Configure the UDF function
 
 Before configuring UDF functions, you need to upload the required function jar package through resource management. Then enter the function management and configure the relevant information. As shown below:
 
-![conf-udf](/img/new_ui/dev/resource/demo/udf-demo02.png)
+![conf-udf](../../../../img/new_ui/dev/resource/demo/udf-demo02.png)
 
 ### Use UDF functions
 
@@ -42,4 +42,4 @@ Enter the workflow to define an SQL node, the data source type is HIVE, and the
 - SQL statement: `select HwUdf("abc");` This function is used in the same way as the built-in functions, and can be accessed directly using the function name.
 - UDF function: Select the one configured for the resource center.
 
-![use-udf](/img/new_ui/dev/resource/demo/udf-demo03.png)
+![use-udf](../../../../img/new_ui/dev/resource/demo/udf-demo03.png)
diff --git a/docs/docs/en/guide/start/docker.md b/docs/docs/en/guide/start/docker.md
index fadd629a5f..44e1db4d1f 100644
--- a/docs/docs/en/guide/start/docker.md
+++ b/docs/docs/en/guide/start/docker.md
@@ -125,7 +125,7 @@ $ docker run -d --name dolphinscheduler-alert-server \
 You could access DolphinScheduler web UI by click [http://localhost:12345/dolphinscheduler/ui](http://localhost:12345/dolphinscheduler/ui)
 and use `admin` and `dolphinscheduler123` as default username and password in the login page.
 
-![login](/img/new_ui/dev/quick-start/login.png)
+![login](../../../../img/new_ui/dev/quick-start/login.png)
 
 > Note: If you start the services by the way [using exists PostgreSQL ZooKeeper](#using-exists-postgresql-zookeeper), and
 > strating with multiple machine, you should change URL domain from `localhost` to IP or hostname the api server running.
diff --git a/docs/docs/zh/about/glossary.md b/docs/docs/zh/about/glossary.md
index b4f9de2c0e..013098f0fa 100644
--- a/docs/docs/zh/about/glossary.md
+++ b/docs/docs/zh/about/glossary.md
@@ -6,7 +6,7 @@
 
 **DAG:** 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:
 
-![about-glossary](/img/new_ui/dev/about/glossary.png)
+![about-glossary](../../../img/new_ui/dev/about/glossary.png)
 
 **流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**DAG**
 
diff --git a/docs/docs/zh/development/e2e-test.md b/docs/docs/zh/development/e2e-test.md
index 2aac1bb0e1..c588afd555 100644
--- a/docs/docs/zh/development/e2e-test.md
+++ b/docs/docs/zh/development/e2e-test.md
@@ -103,7 +103,7 @@ public final class LoginPage extends NavBarPage {
     }
 ```
 
-![SecurityPage](/img/e2e-test/SecurityPage.png)
+![SecurityPage](../../../img/e2e-test/SecurityPage.png)
 
 对于导航栏选项的跳转,在`org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java` 中提供了 goToNav 的方法。当前支持的页面为:项目管理(ProjectPage)、安全中心(SecurityPage)和资源中心(ResourcePage)。
 
@@ -138,7 +138,7 @@ public final class LoginPage extends NavBarPage {
 
 当前所支持的 E2E 测试案例,主要包括:文件管理、项目管理、队列管理、租户管理、用户管理、Worker 分组管理和工作流测试。
 
-![E2E_Cases](/img/e2e-test/E2E_Cases.png)
+![E2E_Cases](../../../img/e2e-test/E2E_Cases.png)
 
 下面以租户管理测试为例,前文已经说明,我们使用 docker-compose 进行部署,所以每个测试案例,都需要以注解的形式引入对应的文件。
 
@@ -183,12 +183,12 @@ https://github.com/apache/dolphinscheduler/tree/dev/dolphinscheduler-e2e/dolphin
 
 如果是`M1`芯片的机器,可以使用`-Dm1_chip=true` 参数,用于配置使用`ARM64`支持的容器。
 
-![Dlocal](/img/e2e-test/Dlocal.png)
+![Dlocal](../../../img/e2e-test/Dlocal.png)
 
 在本地运行过程中,如果出现连接超时,可增大加载时间,建议 30 及其以上。
 
-![timeout](/img/e2e-test/timeout.png)
+![timeout](../../../img/e2e-test/timeout.png)
 
 测试的运行过程将会以 MP4 的文件格式存在。
 
-![MP4](/img/e2e-test/MP4.png)
+![MP4](../../../img/e2e-test/MP4.png)
diff --git a/docs/docs/zh/guide/alert/alert_plugin_user_guide.md b/docs/docs/zh/guide/alert/alert_plugin_user_guide.md
index 231d6558a4..dbea97b961 100644
--- a/docs/docs/zh/guide/alert/alert_plugin_user_guide.md
+++ b/docs/docs/zh/guide/alert/alert_plugin_user_guide.md
@@ -2,7 +2,7 @@
 
 在 2.0.0 版本中,用户需要创建告警实例,在创建告警实例时,需要选择告警策略,有三个选项,成功发、失败发,以及成功和失败都发。在执行完工作流或任务时,如果触发告警,调用告警实例发送方法会进行逻辑判断,将告警实例与任务状态进行匹配,匹配则执行该告警实例发送逻辑,不匹配则过滤。创建完告警实例后,需要同告警组进行关联,一个告警组可以使用多个告警实例。
 告警模块支持场景如下:
-<img src="/img/alert/alert_scenarios_zh.png">
+<img src="../../../../img/alert/alert_scenarios_zh.png">
 
 使用步骤如下:
 
@@ -10,7 +10,7 @@
 
 然后选择告警组管理,创建告警组,选择相应的告警实例即可。
 
-![alert-instance01](/img/new_ui/dev/alert/alert_instance01.png)
-![alert-instance02](/img/new_ui/dev/alert/alert_instance02.png)
-![alert-instance03](/img/new_ui/dev/alert/alert_instance03.png)
-![alert-instance04](/img/new_ui/dev/alert/alert_instance04.png)
+![alert-instance01](../../../../img/new_ui/dev/alert/alert_instance01.png)
+![alert-instance02](../../../../img/new_ui/dev/alert/alert_instance02.png)
+![alert-instance03](../../../../img/new_ui/dev/alert/alert_instance03.png)
+![alert-instance04](../../../../img/new_ui/dev/alert/alert_instance04.png)
diff --git a/docs/docs/zh/guide/alert/dingtalk.md b/docs/docs/zh/guide/alert/dingtalk.md
index ec6f874ea7..a6cba29443 100644
--- a/docs/docs/zh/guide/alert/dingtalk.md
+++ b/docs/docs/zh/guide/alert/dingtalk.md
@@ -2,7 +2,7 @@
 
 如果您需要使用到钉钉进行告警,请在告警实例管理里创建告警实例,选择 DingTalk 插件。钉钉的配置样例如下:
 
-![alert-dingtalk](/img/new_ui/dev/alert/alert_dingtalk.png)
+![alert-dingtalk](../../../../img/new_ui/dev/alert/alert_dingtalk.png)
 
 参数配置
 
diff --git a/docs/docs/zh/guide/alert/enterprise-webexteams.md b/docs/docs/zh/guide/alert/enterprise-webexteams.md
index e324f0df7a..bb4d492e44 100644
--- a/docs/docs/zh/guide/alert/enterprise-webexteams.md
+++ b/docs/docs/zh/guide/alert/enterprise-webexteams.md
@@ -4,7 +4,7 @@
 你可以选择机器人私聊通知或聊天室通知。
 WebexTeams的配置样例如下:
 
-![enterprise-webexteams-plugin](/img/alert/enterprise-webexteams-plugin.png)
+![enterprise-webexteams-plugin](../../../../img/alert/enterprise-webexteams-plugin.png)
 
 ## 参数配置
 
@@ -25,13 +25,13 @@ WebexTeams的配置样例如下:
 
 访问[官网My-Apps](https://developer.webex.com/docs/api/v1/rooms/create-a-room)来创建一个机器人,点击`Create a New APP` 然后选择 `Create a Bot`,填入机器人信息后获取`bot username` 和 `bot ID`以备以下步骤使用。
 
-![enterprise-webexteams-bot-info](/img/alert/enterprise-webexteams-bot.png)
+![enterprise-webexteams-bot-info](../../../../img/alert/enterprise-webexteams-bot.png)
 
 ## 创建一个房间
 
 访问[官网开发者APIs](https://developer.webex.com/docs/api/v1/rooms/create-a-room)来创建一个房间,填入房间名称后获取`id`(room ID) 和 `creatorId`以备以下步骤使用。
 
-![enterprise-webexteams-room-info](/img/alert/enterprise-webexteams-room.png)
+![enterprise-webexteams-room-info](../../../../img/alert/enterprise-webexteams-room.png)
 
 ### 邀请机器人到房间
 
@@ -43,22 +43,22 @@ WebexTeams的配置样例如下:
 `用户邮箱`是用户注册Email地址。
 `用户`我们可以从新建房间返回的`creatorId`中获取。
 
-![enterprise-webexteams-private-message-form](/img/alert/enterprise-webexteams-private-form.png)
+![enterprise-webexteams-private-message-form](../../../../img/alert/enterprise-webexteams-private-form.png)
 
 ### 私聊告警样例
 
-![enterprise-webexteams-private-message-example](/img/alert/enterprise-webexteams-private-msg.png)
+![enterprise-webexteams-private-message-example](../../../../img/alert/enterprise-webexteams-private-msg.png)
 
 ## 发送群聊消息
 
 通过这种方式,你可以通过`房间`向一个房间发送告警,填入`房间` 和 `访问令牌`并选择`描述` `roomId`。
 `房间`我们可以从新建房间API返回的`id`中获取。
 
-![enterprise-webexteams-group-form](/img/alert/enterprise-webexteams-group-form.png)
+![enterprise-webexteams-group-form](../../../../img/alert/enterprise-webexteams-group-form.png)
 
 ### 群聊告警消息样例
 
-![enterprise-webexteams-room-message-example](/img/alert/enterprise-webexteams-room-msg.png)
+![enterprise-webexteams-room-message-example](../../../../img/alert/enterprise-webexteams-room-msg.png)
 
 [WebexTeams申请机器人文档](https://developer.webex.com/docs/bots)
 [WebexTeamsMessage开发文档](https://developer.webex.com/docs/api/v1/messages/create-a-message)
diff --git a/docs/docs/zh/guide/alert/enterprise-wechat.md b/docs/docs/zh/guide/alert/enterprise-wechat.md
index 263a44a257..258d0ee9f8 100644
--- a/docs/docs/zh/guide/alert/enterprise-wechat.md
+++ b/docs/docs/zh/guide/alert/enterprise-wechat.md
@@ -2,7 +2,7 @@
 
 如果您需要使用到企业微信进行告警,请在告警实例管理里创建告警实例,选择 WeChat 插件。企业微信的配置样例如下:
 
-![enterprise-wechat-plugin](/img/alert/enterprise-wechat-plugin.png)
+![enterprise-wechat-plugin](../../../../img/alert/enterprise-wechat-plugin.png)
 
 ## 发送类型
 
@@ -13,15 +13,15 @@
 应用指将告警结果通过企业微信的自定义应用进行通知,支持向特定用户发送消息和对所有人发送消息。目前还不支持部门和标签,欢迎提PR贡献代码。
 下图是应用告警配置的示例:
 
-![enterprise-wechat-app-msg-config](/img/alert/wechat-app-form-example.png)
+![enterprise-wechat-app-msg-config](../../../../img/alert/wechat-app-form-example.png)
 
 下图是`应用``MARKDOWN`告警消息的示例:
 
-![enterprise-wechat-app-msg-markdown](/img/alert/enterprise-wechat-app-msg-md.png)
+![enterprise-wechat-app-msg-markdown](../../../../img/alert/enterprise-wechat-app-msg-md.png)
 
 下图是`应用``TEXT`告警消息的示例:
 
-![enterprise-wechat-app-msg-text](/img/alert/enterprise-wechat-app-msg.png)
+![enterprise-wechat-app-msg-text](../../../../img/alert/enterprise-wechat-app-msg.png)
 
 #### 前置
 
@@ -33,7 +33,7 @@
 获取用户的userId请参考[官方文档](https://developer.work.weixin.qq.com/document/path/95402)根据手机号获取userId。
 下图是获取userId接口的示例:
 
-![enterprise-wechat-create-group](/img/alert/enterprise-wechat-query-userid.png)
+![enterprise-wechat-create-group](../../../../img/alert/enterprise-wechat-query-userid.png)
 
 #### 参考文档
 
@@ -44,15 +44,15 @@
 群聊指将告警结果通过企业微信API创建的群聊进行通知,会向该群聊下的所有人发送消息,不支持向特定用户发送消息。
 下图是群聊告警配置的示例:
 
-![enterprise-wechat-group-msg-config](/img/alert/wechat-group-form-example.png)
+![enterprise-wechat-group-msg-config](../../../../img/alert/wechat-group-form-example.png)
 
 下图是`群聊``MARKDOWN`告警消息的示例:
 
-![enterprise-wechat-group-msg-markdown](/img/alert/enterprise-wechat-group-msg-md.png)
+![enterprise-wechat-group-msg-markdown](../../../../img/alert/enterprise-wechat-group-msg-md.png)
 
 下图是`群聊``TEXT`告警消息的示例:
 
-![enterprise-wechat-group-msg-text](/img/alert/enterprise-wechat-group-msg.png)
+![enterprise-wechat-group-msg-text](../../../../img/alert/enterprise-wechat-group-msg.png)
 
 #### 前置
 
@@ -60,9 +60,9 @@
 其中获取用户的userId请参考[官方文档](https://developer.work.weixin.qq.com/document/path/95402)根据手机号获取userId。
 下图是创建新聊天群组和获取userId接口的示例:
 
-![enterprise-wechat-create-group](/img/alert/enterprise-wechat-create-group.png)
+![enterprise-wechat-create-group](../../../../img/alert/enterprise-wechat-create-group.png)
 
-![enterprise-wechat-create-group](/img/alert/enterprise-wechat-query-userid.png)
+![enterprise-wechat-create-group](../../../../img/alert/enterprise-wechat-query-userid.png)
 
 #### 参考文档
 
diff --git a/docs/docs/zh/guide/alert/http.md b/docs/docs/zh/guide/alert/http.md
index dd124df95b..e395bfead7 100644
--- a/docs/docs/zh/guide/alert/http.md
+++ b/docs/docs/zh/guide/alert/http.md
@@ -24,11 +24,11 @@
 GET `Http`告警指将告警结果作为参数通过`Http` GET方法进行请求。
 下图是GET告警配置的示例:
 
-![enterprise-wechat-app-msg-config](/img/alert/http-get-example.png)
+![enterprise-wechat-app-msg-config](../../../../img/alert/http-get-example.png)
 
 ### POST Http告警
 
 POST `Http`告警指将告警结果作为`BODY`参数通过`Http`POST方法进行请求。
 下图是POST告警配置的示例:
 
-![enterprise-wechat-app-msg-config](/img/alert/http-post-example.png)
+![enterprise-wechat-app-msg-config](../../../../img/alert/http-post-example.png)
diff --git a/docs/docs/zh/guide/alert/script.md b/docs/docs/zh/guide/alert/script.md
index 41be752ed4..7763f41854 100644
--- a/docs/docs/zh/guide/alert/script.md
+++ b/docs/docs/zh/guide/alert/script.md
@@ -2,7 +2,7 @@
 
 如果您需要使用到`Shell`脚本进行告警,请在告警实例管理里创建告警实例,选择`Script`插件。`Script`的配置样例如下:
 
-![dingtalk-plugin](/img/alert/script-plugin.png)
+![dingtalk-plugin](../../../../img/alert/script-plugin.png)
 
 参数配置
 
diff --git a/docs/docs/zh/guide/alert/telegram.md b/docs/docs/zh/guide/alert/telegram.md
index c586eb7052..643368c52d 100644
--- a/docs/docs/zh/guide/alert/telegram.md
+++ b/docs/docs/zh/guide/alert/telegram.md
@@ -4,7 +4,7 @@
 
 `Telegram` 的配置样例如下:
 
-![alert-telegram](/img/new_ui/dev/alert/alert_telegram.png)
+![alert-telegram](../../../../img/new_ui/dev/alert/alert_telegram.png)
 
 参数配置:
 * WebHook:
diff --git a/docs/docs/zh/guide/data-quality.md b/docs/docs/zh/guide/data-quality.md
index 89fc4e855f..50e2c92f14 100644
--- a/docs/docs/zh/guide/data-quality.md
+++ b/docs/docs/zh/guide/data-quality.md
@@ -68,7 +68,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
   ```
 
 ### 界面操作指南
-![dataquality_null_check](/img/tasks/demo/null_check.png)
+![dataquality_null_check](../../../img/tasks/demo/null_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -90,7 +90,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 及时性检查用于检查数据是否在预期时间内处理完成,可指定开始时间、结束时间来界定时间范围,如果在该时间范围内的数据量没有达到设定的阈值,那么会判断该检查任务为失败
 ### 界面操作指南
-![dataquality_timeliness_check](/img/tasks/demo/timeliness_check.png)
+![dataquality_timeliness_check](../../../img/tasks/demo/timeliness_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -115,7 +115,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 字段长度校验的目标是检查所选字段的长度是否满足预期,如果有存在不满足要求的数据,并且行数超过阈值则会判断任务为失败
 ### 界面操作指南
-![dataquality_length_check](/img/tasks/demo/field_length_check.png)
+![dataquality_length_check](../../../img/tasks/demo/field_length_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -139,7 +139,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 唯一性校验的目标是检查字段是否存在重复的情况,一般用于检验primary key是否有重复,如果存在重复且达到阈值,则会判断检查任务为失败
 ### 界面操作指南
-![dataquality_uniqueness_check](/img/tasks/demo/uniqueness_check.png)
+![dataquality_uniqueness_check](../../../img/tasks/demo/uniqueness_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -161,7 +161,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 正则表达式校验的目标是检查某字段的值的格式是否符合要求,例如时间格式、邮箱格式、身份证格式等等,如果存在不符合格式的数据并超过阈值,则会判断任务为失败
 ### 界面操作指南
-![dataquality_regex_check](/img/tasks/demo/regexp_check.png)
+![dataquality_regex_check](../../../img/tasks/demo/regexp_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -184,7 +184,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 枚举值校验的目标是检查某字段的值是否在枚举值的范围内,如果存在不在枚举值范围里的数据并超过阈值,则会判断任务为失败
 ### 界面操作指南
-![dataquality_enum_check](/img/tasks/demo/enumeration_check.png)
+![dataquality_enum_check](../../../img/tasks/demo/enumeration_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -206,7 +206,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 表行数校验的目标是检查表的行数是否达到预期的值,如果行数未达标,则会判断任务为失败
 ### 界面操作指南
-![dataquality_count_check](/img/tasks/demo/table_count_check.png)
+![dataquality_count_check](../../../img/tasks/demo/table_count_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择验证数据所在表
@@ -227,7 +227,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ## 单表检查之自定义SQL检查
 ### 检查介绍
 ### 界面操作指南
-![dataquality_custom_sql_check](/img/tasks/demo/custom_sql_check.png)
+![dataquality_custom_sql_check](../../../img/tasks/demo/custom_sql_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择要验证数据所在表
@@ -262,7 +262,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 | b | 3|
 如果对比c1和c21中的数据,则表test1和test2完全一致。 如果对比c2和c22则表test1和表test2中的数据则存在不一致了。
 ### 界面操作指南
-![dataquality_multi_table_accuracy_check](/img/tasks/demo/multi_table_accuracy_check.png)
+![dataquality_multi_table_accuracy_check](../../../img/tasks/demo/multi_table_accuracy_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:下拉选择要验证数据所在表
@@ -283,7 +283,7 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
 ### 检查介绍
 两表值比对允许用户对两张表自定义不同的SQL统计出相应的值进行比对,例如针对源表A统计出某一列的金额总值sum1,针对目标表统计出某一列的金额总值sum2,将sum1和sum2进行比较来判定检查结果
 ### 界面操作指南
-![dataquality_multi_table_comparison_check](/img/tasks/demo/multi_table_comparison_check.png)
+![dataquality_multi_table_comparison_check](../../../img/tasks/demo/multi_table_comparison_check.png)
 - 源数据类型:选择MySQL、PostgreSQL等
 - 源数据源:源数据类型下对应的数据源
 - 源数据表:要验证数据所在表
@@ -305,9 +305,9 @@ data-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar
     - 阻断:数据质量任务失败了,DolphinScheduler任务结果为失败,发送告警
 
 ## 任务结果查看
-![dataquality_result](/img/tasks/demo/result.png)
+![dataquality_result](../../../img/tasks/demo/result.png)
 ## 规则查看
 ### 规则列表
-![dataquality_rule_list](/img/tasks/demo/rule_list.png)
+![dataquality_rule_list](../../../img/tasks/demo/rule_list.png)
 ### 规则详情
-![dataquality_rule_detail](/img/tasks/demo/rule_detail.png)
\ No newline at end of file
+![dataquality_rule_detail](../../../img/tasks/demo/rule_detail.png)
\ No newline at end of file
diff --git a/docs/docs/zh/guide/datasource/hive.md b/docs/docs/zh/guide/datasource/hive.md
index 6598ba81b5..21dcf291e8 100644
--- a/docs/docs/zh/guide/datasource/hive.md
+++ b/docs/docs/zh/guide/datasource/hive.md
@@ -2,7 +2,7 @@
 
 ## 使用HiveServer2
 
-![hive](/img/new_ui/dev/datasource/hive.png)
+![hive](../../../../img/new_ui/dev/datasource/hive.png)
 
 - 数据源:选择 HIVE
 - 数据源名称:输入数据源的名称
@@ -19,7 +19,7 @@
 
 ## 使用 HiveServer2 HA Zookeeper
 
-![hive-server2](/img/new_ui/dev/datasource/hiveserver2.png)
+![hive-server2](../../../../img/new_ui/dev/datasource/hiveserver2.png)
 
 注意:如果没有开启 kerberos,请保证参数 `hadoop.security.authentication.startup.state` 值为 `false`,
 参数 `java.security.krb5.conf.path` 值为空. 开启了 **kerberos**,则需要在 `common.properties` 配置以下参数
diff --git a/docs/docs/zh/guide/datasource/mysql.md b/docs/docs/zh/guide/datasource/mysql.md
index c27a0e1081..8d31a8fcbd 100644
--- a/docs/docs/zh/guide/datasource/mysql.md
+++ b/docs/docs/zh/guide/datasource/mysql.md
@@ -1,6 +1,6 @@
 # MySQL 数据源
 
-![mysql](/img/new_ui/dev/datasource/mysql.png)
+![mysql](../../../../img/new_ui/dev/datasource/mysql.png)
 
 - 数据源:选择 MYSQL
 - 数据源名称:输入数据源的名称
diff --git a/docs/docs/zh/guide/datasource/postgresql.md b/docs/docs/zh/guide/datasource/postgresql.md
index a0a8143641..ede929e993 100644
--- a/docs/docs/zh/guide/datasource/postgresql.md
+++ b/docs/docs/zh/guide/datasource/postgresql.md
@@ -1,6 +1,6 @@
 # POSTGRESQL 数据源
 
-![postgresql](/img/new_ui/dev/datasource/postgresql.png)
+![postgresql](../../../../img/new_ui/dev/datasource/postgresql.png)
 
 - 数据源:选择 POSTGRESQL
 - 数据源名称:输入数据源的名称
diff --git a/docs/docs/zh/guide/datasource/spark.md b/docs/docs/zh/guide/datasource/spark.md
index 946ff01101..e673cfe9a2 100644
--- a/docs/docs/zh/guide/datasource/spark.md
+++ b/docs/docs/zh/guide/datasource/spark.md
@@ -1,6 +1,6 @@
 # Spark数据源
 
-![sparksql](/img/new_ui/dev/datasource/sparksql.png)
+![sparksql](../../../../img/new_ui/dev/datasource/sparksql.png)
 
 - 数据源:选择 Spark
 - 数据源名称:输入数据源的名称
@@ -15,7 +15,7 @@
 注意:如果开启了**kerberos**,则需要填写 **Principal**
 
 <p align="center">
-    <img src="/img/sparksql_kerberos.png" width="80%" />
+    <img src="../../../../img/sparksql_kerberos.png" width="80%" />
   </p>
 
 ## 是否原生支持
diff --git a/docs/docs/zh/guide/homepage.md b/docs/docs/zh/guide/homepage.md
index 0886852825..9e63b2a925 100644
--- a/docs/docs/zh/guide/homepage.md
+++ b/docs/docs/zh/guide/homepage.md
@@ -2,4 +2,4 @@
 
 Apache DolphinScheduler 首页可让您查看用户所有项目的任务状态统计、工作流状态统计和项目统计。 这是观察整个系统状态以及深入各个进程以检查任务和任务日志的每个状态的最佳方式。
 
-![homepage](/img/new_ui/dev/homepage/homepage.png)
+![homepage](../../../img/new_ui/dev/homepage/homepage.png)
diff --git a/docs/docs/zh/guide/monitor.md b/docs/docs/zh/guide/monitor.md
index f5e8709f8e..63a989df52 100644
--- a/docs/docs/zh/guide/monitor.md
+++ b/docs/docs/zh/guide/monitor.md
@@ -8,25 +8,25 @@
 
 - 主要是 master 的相关信息。
 
-![master](/img/new_ui/dev/monitor/master.png)
+![master](../../../img/new_ui/dev/monitor/master.png)
 
 ### Worker
 
 - 主要是 worker 的相关信息。
 
-![worker](/img/new_ui/dev/monitor/worker.png)
+![worker](../../../img/new_ui/dev/monitor/worker.png)
 
 ### Database
 
 - 主要是 DB 的健康状况
 
-![db](/img/new_ui/dev/monitor/db.png)
+![db](../../../img/new_ui/dev/monitor/db.png)
  
 ## 统计管理
 
 ### Statistics
 
-![statistics](/img/new_ui/dev/monitor/statistics.png)
+![statistics](../../../img/new_ui/dev/monitor/statistics.png)
  
 - 待执行命令数:统计 t_ds_command 表的数据
 - 执行失败的命令数:统计 t_ds_error_command 表的数据
@@ -37,4 +37,4 @@
 
 审计日志的记录提供了有关谁访问了系统,以及他或她在给定时间段内执行了哪些操作的信息,他对于维护安全都很有用。
 
-![audit-log](/img/new_ui/dev/monitor/audit-log.jpg)
+![audit-log](../../../img/new_ui/dev/monitor/audit-log.jpg)
diff --git a/docs/docs/zh/guide/open-api.md b/docs/docs/zh/guide/open-api.md
index cd01d22868..66217c29bc 100644
--- a/docs/docs/zh/guide/open-api.md
+++ b/docs/docs/zh/guide/open-api.md
@@ -10,11 +10,11 @@
 
 1. 登录调度系统,点击 "安全中心",再点击左侧的 "令牌管理",点击 "令牌管理" 创建令牌。
 
-![create-token](/img/new_ui/dev/security/create-token.png)
+![create-token](../../../img/new_ui/dev/security/create-token.png)
  
 2. 选择 "失效时间" (Token 有效期),选择 "用户" (以指定的用户执行接口操作),点击 "生成令牌" ,拷贝 Token 字符串,然后点击 "提交" 。
 
-![token-expiration](/img/new_ui/dev/open-api/token_expiration.png)
+![token-expiration](../../../img/new_ui/dev/open-api/token_expiration.png)
 
 ### 使用案例
 
@@ -24,7 +24,7 @@
 
 > 地址:http://{api server ip}:12345/dolphinscheduler/doc.html?language=zh_CN&lang=cn
 
-![api-doc](/img/new_ui/dev/open-api/api_doc.png)
+![api-doc](../../../img/new_ui/dev/open-api/api_doc.png)
     
 2. 选一个测试的接口,本次测试选取的接口是:查询所有项目
 
@@ -36,7 +36,7 @@
     token: 刚刚生成的 Token
     ```
    
-![api-test](/img/new_ui/dev/open-api/api_test.png)
+![api-test](../../../img/new_ui/dev/open-api/api_test.png)
  
 #### 创建项目
 
@@ -44,15 +44,15 @@
 
 通过查阅 api 文档,在 Postman 的 Headers 中配置 KEY 为 Accept,VALUE 为 application/json 的参数。
 
-![create-project01](/img/new_ui/dev/open-api/create_project01.png)
+![create-project01](../../../img/new_ui/dev/open-api/create_project01.png)
 
 然后再 Body 中配置所需的 projectName 和 description 参数。
 
-![create-project02](/img/new_ui/dev/open-api/create_project02.png)
+![create-project02](../../../img/new_ui/dev/open-api/create_project02.png)
 
 检查 post 请求结果。
 
-![create-project03](/img/new_ui/dev/open-api/create_project03.png)
+![create-project03](../../../img/new_ui/dev/open-api/create_project03.png)
 
 返回 msg 信息为 "success",说明我们已经成功通过 API 的方式创建了项目。
 
@@ -60,8 +60,8 @@
 
 ### 附:创建项目源码
 
-![api-source01](/img/new_ui/dev/open-api/api_source01.png)
+![api-source01](../../../img/new_ui/dev/open-api/api_source01.png)
 
-![api-source02](/img/new_ui/dev/open-api/api_source02.png)
+![api-source02](../../../img/new_ui/dev/open-api/api_source02.png)
 
 
diff --git a/docs/docs/zh/guide/parameter/context.md b/docs/docs/zh/guide/parameter/context.md
index 2e55ac7414..bbbcd5201c 100644
--- a/docs/docs/zh/guide/parameter/context.md
+++ b/docs/docs/zh/guide/parameter/context.md
@@ -28,7 +28,7 @@ DolphinScheduler 允许在任务间进行参数传递,目前传递方向仅支
 
 创建 Node_A 任务,在自定义参数中添加 output 和 value 参数,并编写如下脚本:
 
-![context-parameter01](/img/new_ui/dev/parameter/context_parameter01.png)
+![context-parameter01](../../../../img/new_ui/dev/parameter/context_parameter01.png)
 
 参数说明:
 
@@ -39,13 +39,13 @@ SHELL 节点定义时当日志检测到 ${setValue(output=1)} 的格式时,会
 
 创建 Node_B 任务,主要用于测试输出上游任务 Node_A 传递的参数。
 
-![context-parameter02](/img/new_ui/dev/parameter/context_parameter02.png)
+![context-parameter02](../../../../img/new_ui/dev/parameter/context_parameter02.png)
 
 #### 创建 SQL 任务,使用参数
 
 完成上述的 SHELL 任务之后,我们可以使用上游所传递的 output 作为 SQL 的查询对象。其中将所查询的 id 重命名为 ID,作为参数输出。
 
-![context-parameter03](/img/new_ui/dev/parameter/context_parameter03.png)
+![context-parameter03](../../../../img/new_ui/dev/parameter/context_parameter03.png)
 
 > 注:如果 SQL 节点的结果只有一行,一个或多个字段,参数的名字需要和字段名称一致。数据类型可选择为除 LIST 以外的其他类型。变量会选择 SQL 查询结果中的列名中与该变量名称相同的列对应的值。
 >
@@ -55,7 +55,7 @@ SHELL 节点定义时当日志检测到 ${setValue(output=1)} 的格式时,会
 
 点击保存工作流图标,并设置全局参数 output 和 value。
 
-![context-parameter03](/img/new_ui/dev/parameter/context_parameter04.png)
+![context-parameter03](../../../../img/new_ui/dev/parameter/context_parameter04.png)
 
 #### 查看运行结果
 
@@ -63,15 +63,15 @@ SHELL 节点定义时当日志检测到 ${setValue(output=1)} 的格式时,会
 
 Node_A 运行结果如下:
 
-![context-log01](/img/new_ui/dev/parameter/context_log01.png)
+![context-log01](../../../../img/new_ui/dev/parameter/context_log01.png)
 
 Node_B 运行结果如下:
 
-![context-log02](/img/new_ui/dev/parameter/context_log02.png)
+![context-log02](../../../../img/new_ui/dev/parameter/context_log02.png)
 
 Node_mysql 运行结果如下:
 
-![context-log03](/img/new_ui/dev/parameter/context_log03.png)
+![context-log03](../../../../img/new_ui/dev/parameter/context_log03.png)
 
 虽然在 Node_A 的脚本中为 output 赋值为 1,但日志中显示的值仍然为 100。但根据[参数优先级](priority.md)的原则:`本地参数 > 上游任务传递的参数 > 全局参数`,在 Node_B 中输出的值为 1。则证明 output 参数参照预期的值在该工作流中传递,并在 Node_mysql 中使用该值完成查询操作。
 
diff --git a/docs/docs/zh/guide/parameter/global.md b/docs/docs/zh/guide/parameter/global.md
index 3d91c165ff..aa35413305 100644
--- a/docs/docs/zh/guide/parameter/global.md
+++ b/docs/docs/zh/guide/parameter/global.md
@@ -12,13 +12,13 @@
 
 创建一个 Shell 任务,并在脚本内容中输入 `echo ${dt}`。此时 dt 则为我们需要声明的全局参数。如下图所示:
 
-![global-parameter01](/img/new_ui/dev/parameter/global_parameter01.png)
+![global-parameter01](../../../../img/new_ui/dev/parameter/global_parameter01.png)
 
 ### 保存工作流,并设置全局参数
 
 全局参数配置方式如下:在工作流定义页面,点击“设置全局”右边的加号,填写对应的变量名称和对应的值,保存即可。如下图所示:
 
-![global-parameter02](/img/new_ui/dev/parameter/global_parameter02.png)
+![global-parameter02](../../../../img/new_ui/dev/parameter/global_parameter02.png)
 
 > 注:这里定义的 dt 参数可以被其它任一节点的局部参数引用。
 
@@ -26,5 +26,5 @@
 
 进入任务实例页面,可以通过查看日志,验证任务的执行结果,判断参数是否有效。
 
-![global-parameter03](/img/new_ui/dev/parameter/global_parameter03.png)
+![global-parameter03](../../../../img/new_ui/dev/parameter/global_parameter03.png)
 
diff --git a/docs/docs/zh/guide/parameter/local.md b/docs/docs/zh/guide/parameter/local.md
index 6cddf35fa1..700f230a30 100644
--- a/docs/docs/zh/guide/parameter/local.md
+++ b/docs/docs/zh/guide/parameter/local.md
@@ -20,7 +20,7 @@
 
 本样例展示了如何使用本地参数,打印输出当前日期。创建一个 Shell 任务,并编写脚本内容为 `echo ${dt}`。点击配置栏中的**自定义参数**,配置如下图所示:
 
-![local-parameter01](/img/new_ui/dev/parameter/local_parameter01.png)
+![local-parameter01](../../../../img/new_ui/dev/parameter/local_parameter01.png)
 
 参数说明:
 
@@ -31,7 +31,7 @@
 
 保存工作流并运行,查看 Shell 任务输出日志。
 
-![local-parameter02](/img/new_ui/dev/parameter/local_parameter02.png)
+![local-parameter02](../../../../img/new_ui/dev/parameter/local_parameter02.png)
 
 > 注:本地参数可以在当前任务节点的工作流中,设置其为 OUT 则可以传递给下游的工作流使用,可以参考:[参数传递](context.md)
 
@@ -40,7 +40,7 @@
 如果你想简单 export 参数然后在下游任务中使用它们,你可以在你的任务中使用 `setValue`,你可以将参数统一在一个任务中管理。在 Shell 任务中使用语法
 `echo '${setValue(set_val=123)}'`(**不要忘记单引号**) 并添加新的 `OUT` 自定义参数来 export 它。
 
-![local-parameter-set-val](/img/new_ui/dev/parameter/local_param_set_val.png)
+![local-parameter-set-val](../../../../img/new_ui/dev/parameter/local_param_set_val.png)
 
 你可以在下游任务中使用语法 `echo '${set_val}'` 在获取设定的值。
 
@@ -50,7 +50,7 @@
 “自定义参数”模块中的值,这让程序更加容易维护。您可以在 Shell 任务中使用语法 `echo "#{setValue(set_val_param=${val})}"`(**如果你想要将任何
 变量赋值给 `setValue`** 请不要忘记使用双引号)并添加新的 `IN` 自定义参数用于输入变量 `val` 和 `OUT` 自定义参数用于 export 参数 `set_val_param`。
 
-![local-parameter-set-val-param](/img/new_ui/dev/parameter/local_param_set_val_custom.png)
+![local-parameter-set-val-param](../../../../img/new_ui/dev/parameter/local_param_set_val_custom.png)
 
 你可以在下游任务中使用语法 `echo '${set_val_param}'` 在获取设定的值。
 
@@ -69,6 +69,6 @@ echo "#{setValue(set_val_var=${lines_num})}"
 在 Shell 任务中(**如果你想要将任何变量赋值给 `setValue`** 请不要忘记使用双引号)和 `OUT` 自定义参数用于 export 参数 `set_val_var`。
 .
 
-![local-parameter-set-val-bash](/img/new_ui/dev/parameter/local_param_set_val_bash.png)
+![local-parameter-set-val-bash](../../../../img/new_ui/dev/parameter/local_param_set_val_bash.png)
 
 你可以在下游任务中使用语法 `echo '${set_val_var}'` 在获取设定的值。
diff --git a/docs/docs/zh/guide/parameter/priority.md b/docs/docs/zh/guide/parameter/priority.md
index 8bf7506c08..a9d779b2a5 100644
--- a/docs/docs/zh/guide/parameter/priority.md
+++ b/docs/docs/zh/guide/parameter/priority.md
@@ -19,21 +19,21 @@ DolphinScheduler 中所涉及的参数值的定义可能来自三种类型:
 
 1:先以 shell 节点解释第一种情况
 
-![priority-parameter01](/img/new_ui/dev/parameter/priority_parameter01.png)
+![priority-parameter01](../../../../img/new_ui/dev/parameter/priority_parameter01.png)
 
 节点 【useParam】可以使用到节点【createParam】中设置的变量。而节点 【useParam】与节点【noUseParam】中并没有依赖关系,所以并不会获取到节点【noUseParam】的变量。上图中只是以 shell 节点作为例子,其他类型节点具有相同的使用规则。
 
-![priority-parameter02](/img/new_ui/dev/parameter/priority_parameter02.png)
+![priority-parameter02](../../../../img/new_ui/dev/parameter/priority_parameter02.png)
 
 其中节点【createParam】在使用变量时直接使用即可。另外该节点设置了 "key" 和 "key1" 两个变量,这里用户用定义了一个与上游节点传递的变量名相同的变量 key1,并且赋值为 "12",但是由于我们设置的优先级的关系,这里的值 "12" 会被使用,最终上游节点设置的变量值会被抛弃。
 
 2:我们再以 sql 节点来解释另外一种情况
 
-![priority-parameter03](/img/new_ui/dev/parameter/priority_parameter03.png)
+![priority-parameter03](../../../../img/new_ui/dev/parameter/priority_parameter03.png)
 
 节点【use_create】的定义如下:
 
-![priority-parameter04](/img/new_ui/dev/parameter/priority_parameter04.png)
+![priority-parameter04](../../../../img/new_ui/dev/parameter/priority_parameter04.png)
 
 "status" 是当前节点设置的节点的自有变量。但是用户在保存工作流时也同样设置了 "status" 变量(全局参数),并且赋值为 -1。那在该 SQL 执行时,status 的值为优先级更高的 2。抛弃了全局变量中的值。
 
diff --git a/docs/docs/zh/guide/project/task-definition.md b/docs/docs/zh/guide/project/task-definition.md
index 8079484378..12b775ec49 100644
--- a/docs/docs/zh/guide/project/task-definition.md
+++ b/docs/docs/zh/guide/project/task-definition.md
@@ -3,7 +3,7 @@
 任务定义允许您在基于任务级别而不是在工作流中操作修改任务。再此之前,我们已经有了工作流级别的任务编辑器,你可以在[工作流定义](workflow-definition.md)
 单击特定的工作流,然后编辑任务的定义。当您想编辑特定的任务定义但不记得它属于哪个工作流时,这是令人沮丧的。所以我们决定在 `任务` 菜单下添加 `任务定义` 视图。
 
-![task-definition](/img/new_ui/dev/project/task-definition.jpg)
+![task-definition](../../../../img/new_ui/dev/project/task-definition.jpg)
 
 在该视图中,您可以通过单击 `操作` 列中的相关按钮来进行创建、查询、更新、删除任务定义。最令人兴奋的是您可以通过通配符进行全部任务查询,当您只
 记得任务名称但忘记它属于哪个工作流时是非常有用的。也支持通过任务名称结合使用 `任务类型` 或 `工作流程名称` 进行查询。
diff --git a/docs/docs/zh/guide/project/task-instance.md b/docs/docs/zh/guide/project/task-instance.md
index b814dce567..205086d02a 100644
--- a/docs/docs/zh/guide/project/task-instance.md
+++ b/docs/docs/zh/guide/project/task-instance.md
@@ -2,8 +2,8 @@
 
 - 点击项目管理->工作流->任务实例,进入任务实例页面,如下图所示,点击工作流实例名称,可跳转到工作流实例DAG图查看任务状态。
 
-![task-instance](/img/new_ui/dev/project/task-instance.png)
+![task-instance](../../../../img/new_ui/dev/project/task-instance.png)
 
 - 查看日志:点击操作列中的“查看日志”按钮,可以查看任务执行的日志情况。
 
-![task-log](/img/new_ui/dev/project/task-log.png)
+![task-log](../../../../img/new_ui/dev/project/task-log.png)
diff --git a/docs/docs/zh/guide/project/workflow-instance.md b/docs/docs/zh/guide/project/workflow-instance.md
index 1ca44c862d..df348ed0a0 100644
--- a/docs/docs/zh/guide/project/workflow-instance.md
+++ b/docs/docs/zh/guide/project/workflow-instance.md
@@ -4,45 +4,45 @@
 
 - 点击项目管理->工作流->工作流实例,进入工作流实例页面,如下图所示:
 
-![workflow-instance](/img/new_ui/dev/project/workflow-instance.png)
+![workflow-instance](../../../../img/new_ui/dev/project/workflow-instance.png)
           
 - 点击工作流名称,进入DAG查看页面,查看任务执行状态,如下图所示。
 
-![instance-state](/img/new_ui/dev/project/instance-state.png)
+![instance-state](../../../../img/new_ui/dev/project/instance-state.png)
 
 ## 查看任务日志
 
 - 进入工作流实例页面,点击工作流名称,进入DAG查看页面,双击任务节点,如下图所示:
 
-![instance-log01](/img/new_ui/dev/project/instance-log01.png)
+![instance-log01](../../../../img/new_ui/dev/project/instance-log01.png)
 
 - 点击"查看日志",弹出日志弹框,如下图所示,任务实例页面也可查看任务日志,参考[任务查看日志](./task-instance.md)。
 
-![instance-log02](/img/new_ui/dev/project/instance-log02.png)
+![instance-log02](../../../../img/new_ui/dev/project/instance-log02.png)
 
 ## 查看任务历史记录
 
 - 点击项目管理->工作流->工作流实例,进入工作流实例页面,点击工作流名称,进入工作流 DAG 页面;
 - 双击任务节点,如下图所示,点击"查看历史",跳转到任务实例页面,并展示该工作流实例运行的任务实例列表
 
-![instance-history](/img/new_ui/dev/project/instance-history.png)
+![instance-history](../../../../img/new_ui/dev/project/instance-history.png)
 
 ## 查看运行参数
 
 - 点击项目管理->工作流->工作流实例,进入工作流实例页面,点击工作流名称,进入工作流 DAG 页面; 
-- 点击左上角图标<img src="/img/run_params_button.png" width="35"/>,查看工作流实例的启动参数;点击图标<img src="/img/global_param.png" width="35"/>,查看工作流实例的全局参数和局部参数,如下图所示:
+- 点击左上角图标<img src="../../../../img/run_params_button.png" width="35"/>,查看工作流实例的启动参数;点击图标<img src="../../../../img/global_param.png" width="35"/>,查看工作流实例的全局参数和局部参数,如下图所示:
 
-![instance-parameter](/img/new_ui/dev/project/instance-parameter.png)
+![instance-parameter](../../../../img/new_ui/dev/project/instance-parameter.png)
 
 ## 工作流实例操作功能
 
 点击项目管理->工作流->工作流实例,进入工作流实例页面,如下图所示:          
 
-![workflow-instance](/img/new_ui/dev/project/workflow-instance.png)
+![workflow-instance](../../../../img/new_ui/dev/project/workflow-instance.png)
 
 - **编辑:** 只能编辑 成功/失败/停止 状态的流程。点击"编辑"按钮或工作流实例名称进入 DAG 编辑页面,编辑后点击"保存"按钮,弹出保存 DAG 弹框,如下图所示,修改流程定义信息,在弹框中勾选"是否更新工作流定义",保存后则将实例修改的信息更新到工作流定义;若不勾选,则不更新工作流定义。
        <p align="center">
-         <img src="/img/editDag.png" width="80%" />
+         <img src="../../../../img/editDag.png" width="80%" />
        </p>
 - **重跑:** 重新执行已经终止的流程。
 - **恢复失败:** 针对失败的流程,可以执行恢复失败操作,从失败的节点开始执行。
@@ -52,4 +52,4 @@
 - **删除:** 删除工作流实例及工作流实例下的任务实例
 - **甘特图:** Gantt 图纵轴是某个工作流实例下的任务实例的拓扑排序,横轴是任务实例的运行时间,如图示:         
 
-![instance-gantt](/img/new_ui/dev/project/instance-gantt.png)
+![instance-gantt](../../../../img/new_ui/dev/project/instance-gantt.png)
diff --git a/docs/docs/zh/guide/resource/file-manage.md b/docs/docs/zh/guide/resource/file-manage.md
index a0d2f0ab56..35eb002009 100644
--- a/docs/docs/zh/guide/resource/file-manage.md
+++ b/docs/docs/zh/guide/resource/file-manage.md
@@ -2,27 +2,31 @@
 
 当在调度过程中需要使用到第三方的 jar 或者用户需要自定义脚本的情况,可以通过在该页面完成相关操作。可创建的文件类型包括:`txt/log/sh/conf/py/java` 等。并且可以对文件进行编辑、重命名、下载和删除等操作。
 
+> **_注意:_**
+>
+> * 当您以`admin`身份等入并操作文件时,需要先给`admin`设置租户
+
 ## 基础操作
 
-![file-manage](/img/new_ui/dev/resource/file-manage.png)
+![file-manage](../../../../img/new_ui/dev/resource/file-manage.png)
 
 ### 创建文件
 
 文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql、properties
 
-![create-file](/img/new_ui/dev/resource/create-file.png)
+![create-file](../../../../img/new_ui/dev/resource/create-file.png)
 
 ### 上传文件
 
 上传文件:点击"上传文件"按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全
 
-![upload-file](/img/new_ui/dev/resource/upload-file.png)
+![upload-file](../../../../img/new_ui/dev/resource/upload-file.png)
 
 ### 文件查看
 
 对可查看的文件类型,点击文件名称,可查看文件详情
 
-![file_detail](/img/tasks/demo/file_detail.png)
+![file_detail](../../../../img/tasks/demo/file_detail.png)
 
 ### 下载文件
 
@@ -30,7 +34,7 @@
 
 ### 文件重命名
 
-![rename-file](/img/new_ui/dev/resource/rename-file.png)
+![rename-file](../../../../img/new_ui/dev/resource/rename-file.png)
 
 ### 删除文件
 
@@ -40,7 +44,7 @@
 
 点击文件列表中的”重新上传文件“按钮进行重新上传文件,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全
 
-![reuplod_file](/img/reupload_file_en.png)
+![reuplod_file](../../../../img/reupload_file_en.png)
 
 > 注意:上传、创建、重命名文件时,文件名和源文件名(上传时)均不能带有 `.` 以及 `/` 特殊符号。
 
@@ -52,7 +56,7 @@
 
 创建一个 shell 文件,输出 “hello world”。
 
-![create-shell](/img/new_ui/dev/resource/demo/file-demo01.png)
+![create-shell](../../../../img/new_ui/dev/resource/demo/file-demo01.png)
 
 ### 创建工作流执行文件
 
@@ -61,13 +65,13 @@
 - 脚本:`sh hello.sh`
 - 资源:选择 `hello.sh`
 
-![use-shell](/img/new_ui/dev/resource/demo/file-demo02.png)
+![use-shell](../../../../img/new_ui/dev/resource/demo/file-demo02.png)
 
 ### 查看结果
 
 可以在工作流实例中,查看该节点运行的日志结果。如下图:
 
-![log-shell](/img/new_ui/dev/resource/demo/file-demo03.png)
+![log-shell](../../../../img/new_ui/dev/resource/demo/file-demo03.png)
 
 
 
diff --git a/docs/docs/zh/guide/resource/task-group.md b/docs/docs/zh/guide/resource/task-group.md
index 535024a848..fc77f41373 100644
--- a/docs/docs/zh/guide/resource/task-group.md
+++ b/docs/docs/zh/guide/resource/task-group.md
@@ -6,11 +6,11 @@
 
 #### 新建任务组   
 
-![taskGroup](/img/new_ui/dev/resource/taskGroup.png)
+![taskGroup](../../../../img/new_ui/dev/resource/taskGroup.png)
 
 用户点击【资源中心】-【任务组管理】-【任务组配置】-新建任务组
 
-![create-taskGroup](/img/new_ui/dev/resource/create-taskGroup.png) 
+![create-taskGroup](../../../../img/new_ui/dev/resource/create-taskGroup.png) 
 
 您需要输入图片中信息,其中
 
@@ -22,11 +22,11 @@
 
 #### 查看任务组队列
 
-![view-queue](/img/new_ui/dev/resource/view-queue.png) 
+![view-queue](../../../../img/new_ui/dev/resource/view-queue.png) 
 
 点击按钮查看任务组使用信息
 
-![view-queue](/img/new_ui/dev/resource/view-groupQueue.png) 
+![view-queue](../../../../img/new_ui/dev/resource/view-groupQueue.png) 
 
 #### 任务组的使用
 
@@ -34,7 +34,7 @@
 
 我们以 shell 节点为例:
 
-![use-queue](/img/new_ui/dev/resource/use-queue.png)         
+![use-queue](../../../../img/new_ui/dev/resource/use-queue.png)         
 
 关于任务组的配置,您需要做的只需要配置红色框内的部分,其中:
 
@@ -54,4 +54,4 @@ Master 在分发任务时判断该任务是否配置了任务组,如果任务
 
 #### 任务组流程图
 
-![task_group](/img/task_group_process.png)
+![task_group](../../../../img/task_group_process.png)
diff --git a/docs/docs/zh/guide/resource/udf-manage.md b/docs/docs/zh/guide/resource/udf-manage.md
index 97b16f7408..27c24b3e26 100644
--- a/docs/docs/zh/guide/resource/udf-manage.md
+++ b/docs/docs/zh/guide/resource/udf-manage.md
@@ -18,7 +18,7 @@
 - 包名类名:输入 UDF 函数的全路径  
 - UDF 资源:设置创建的 UDF 对应的资源文件
 
-![create-udf](/img/new_ui/dev/resource/create-udf.png)
+![create-udf](../../../../img/new_ui/dev/resource/create-udf.png)
 
 ## 任务样例
 
@@ -26,13 +26,13 @@
 
 用户可以根据实际生产需求,自定义想要的 UDF 函数。这里编写一个在任意字符串的末尾添加 "HelloWorld" 的函数。如下图所示:
 
-![code-udf](/img/new_ui/dev/resource/demo/udf-demo01.png)
+![code-udf](../../../../img/new_ui/dev/resource/demo/udf-demo01.png)
 
 ### 配置 UDF 函数
 
 配置 UDF 函数前,需要先通过资源管理上传所需的函数 jar 包。然后进入函数管理,配置相关信息即可。如下图所示:
 
-![conf-udf](/img/new_ui/dev/resource/demo/udf-demo02.png)
+![conf-udf](../../../../img/new_ui/dev/resource/demo/udf-demo02.png)
 
 ### 使用 UDF 函数
 
@@ -43,7 +43,7 @@
 - SQL 语句:`select HwUdf("abc");` 该函数与内置函数使用方式一样,直接使用函数名称即可访问。
 - UDF 函数:选择资源中心所配置的即可。
 
-![use-udf](/img/new_ui/dev/resource/demo/udf-demo03.png)
+![use-udf](../../../../img/new_ui/dev/resource/demo/udf-demo03.png)
 
 
 
diff --git a/docs/docs/zh/guide/start/docker.md b/docs/docs/zh/guide/start/docker.md
index d346a51c0f..6ed6b6bd23 100644
--- a/docs/docs/zh/guide/start/docker.md
+++ b/docs/docs/zh/guide/start/docker.md
@@ -118,7 +118,7 @@ $ docker run -d --name dolphinscheduler-alert-server \
 访问 DolphinScheduler。访问上述链接后会跳转到登陆页面,DolphinScheduler 默认的用户和密码分别为 `admin` 和 `dolphinscheduler123`。
 想要了解更多操作请参考用户手册[快速上手](../start/quick-start.md)。
 
-![login](/img/new_ui/dev/quick-start/login.png)
+![login](../../../../img/new_ui/dev/quick-start/login.png)
 
 > 注意:如果你使用沿用已有的 PostgreSQL 和 ZooKeeper 服务方式启动服务,且服务分布在多台机器中,
 > 请将上述的地址改成你 API 容器启动的 hostname 或者 IP。
diff --git a/docs/docs/zh/guide/start/quick-start.md b/docs/docs/zh/guide/start/quick-start.md
index 5de08cc607..1b960b1b9e 100644
--- a/docs/docs/zh/guide/start/quick-start.md
+++ b/docs/docs/zh/guide/start/quick-start.md
@@ -6,38 +6,38 @@
 * 管理员用户登录
   >地址:http://localhost:12345/dolphinscheduler/ui 用户名/密码:admin/dolphinscheduler123
 
-![login](/img/new_ui/dev/quick-start/login.png)
+![login](../../../../img/new_ui/dev/quick-start/login.png)
 
 * 创建队列
 
-![create-queue](/img/new_ui/dev/quick-start/create-queue.png)
+![create-queue](../../../../img/new_ui/dev/quick-start/create-queue.png)
 
 * 创建租户
 
-![create-tenant](/img/new_ui/dev/quick-start/create-tenant.png)
+![create-tenant](../../../../img/new_ui/dev/quick-start/create-tenant.png)
 
 * 创建普通用户
 
-![create-user](/img/new_ui/dev/quick-start/create-user.png)
+![create-user](../../../../img/new_ui/dev/quick-start/create-user.png)
 
 * 创建告警组实例
 
-![create-alarmInstance](/img/new_ui/dev/quick-start/create-alarmInstance.png)
+![create-alarmInstance](../../../../img/new_ui/dev/quick-start/create-alarmInstance.png)
 
 * 创建告警组
 
-![create-alarmGroup](/img/new_ui/dev/quick-start/create-alarmGroup.png)
+![create-alarmGroup](../../../../img/new_ui/dev/quick-start/create-alarmGroup.png)
 
  * 创建 Worker 分组
 
-![create-workerGroup](/img/new_ui/dev/quick-start/create-workerGroup.png)
+![create-workerGroup](../../../../img/new_ui/dev/quick-start/create-workerGroup.png)
 
 * 创建环境
-![create-environment](/img/new_ui/dev/quick-start/create-environment.png)
+![create-environment](../../../../img/new_ui/dev/quick-start/create-environment.png)
  
  * 创建 Token 令牌
 
-![create-token](/img/new_ui/dev/quick-start/create-token.png)
+![create-token](../../../../img/new_ui/dev/quick-start/create-token.png)
 
 
 * 使用普通用户登录
@@ -45,16 +45,16 @@
 
 * 项目管理->创建项目->点击项目名称
 
-![project](/img/new_ui/dev/quick-start/project.png)
+![project](../../../../img/new_ui/dev/quick-start/project.png)
 
   * 点击工作流定义->创建工作流定义->上线工作流定义
 
 <p align="center">
-   <img src="/img/dag1.png" width="60%" />
+   <img src="../../../../img/dag1.png" width="60%" />
  </p>
 
   * 运行工作流定义->点击工作流实例->点击工作流实例名称->双击任务节点->查看任务执行日志
 
  <p align="center">
-   <img src="/img/task-log.png" width="60%" />
+   <img src="../../../../img/task-log.png" width="60%" />
 </p>
diff --git a/docs/docs/zh/guide/task/conditions.md b/docs/docs/zh/guide/task/conditions.md
index c7fef6d6f1..1c70b7872c 100644
--- a/docs/docs/zh/guide/task/conditions.md
+++ b/docs/docs/zh/guide/task/conditions.md
@@ -5,7 +5,7 @@ Conditions 是一个条件节点,根据上游任务运行状态,判断应该
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;
-- 拖动工具栏中的<img src="/img/conditions.png" width="20"/>任务节点到画板中。
+- 拖动工具栏中的<img src="../../../../img/conditions.png" width="20"/>任务节点到画板中。
 
 ## 任务参数
 
@@ -41,13 +41,13 @@ Conditions 是一个条件节点,根据上游任务运行状态,判断应该
 - Node_Success:Shell 任务,打印输出 “success”,Node_A 执行成功的分支。
 - Node_False:Shell 任务,打印输出 ”false“,Node_A 执行失败的分支。
 
-![condition_task01](/img/tasks/demo/condition_task01.png)
+![condition_task01](../../../../img/tasks/demo/condition_task01.png)
 
 ### 2、查看执行结果
 
 当完成创建工作流之后,可以上线运行该工作流。在工作流实例页面可以查看到各个任务的执行状态。如下图所示:
 
-![condition_task02](/img/tasks/demo/condition_task02.png)
+![condition_task02](../../../../img/tasks/demo/condition_task02.png)
 
 上图中,任务状态标记为绿色对号的,即为成功执行的任务节点。
 
@@ -57,5 +57,5 @@ Conditions 是一个条件节点,根据上游任务运行状态,判断应该
 - Conditions 任务以及包含该任务的工作流不支持复制操作。
 - Conditions 的前置任务不能连接其分支节点,会造成逻辑混乱,不符合 DAG 调度。如下图所示的情况是**错误**的。
 
-![condition_task03](/img/tasks/demo/condition_task03.png)
-![condition_task04](/img/tasks/demo/condition_task04.png)
+![condition_task03](../../../../img/tasks/demo/condition_task03.png)
+![condition_task04](../../../../img/tasks/demo/condition_task04.png)
diff --git a/docs/docs/zh/guide/task/datax.md b/docs/docs/zh/guide/task/datax.md
index fa1d62a42c..e130da26fa 100644
--- a/docs/docs/zh/guide/task/datax.md
+++ b/docs/docs/zh/guide/task/datax.md
@@ -7,7 +7,7 @@ DataX 任务类型,用于执行 DataX 程序。对于 DataX 节点,worker 
 ## 创建任务
 
 - 点击项目管理 -> 项目名称 -> 工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;
-- 拖动工具栏的<img src="/img/tasks/icons/datax.png" width="15"/> 任务节点到画板中。
+- 拖动工具栏的<img src="../../../../img/tasks/icons/datax.png" width="15"/> 任务节点到画板中。
 
 ## 任务参数
 
@@ -42,7 +42,7 @@ DataX 任务类型,用于执行 DataX 程序。对于 DataX 节点,worker 
 
 若生产环境中要是使用到 DataX 任务类型,则需要先配置好所需的环境。配置文件如下:`/dolphinscheduler/conf/env/dolphinscheduler_env.sh`。
 
-![datax_task01](/img/tasks/demo/datax_task01.png)
+![datax_task01](../../../../img/tasks/demo/datax_task01.png)
 
 当环境配置完成之后,需要重启 DolphinScheduler。
 
@@ -52,11 +52,11 @@ DataX 任务类型,用于执行 DataX 程序。对于 DataX 节点,worker 
 
 在编写好所需的 json 之后,可按照下图步骤进行配置节点内容。
 
-![datax_task02](/img/tasks/demo/datax_task02.png)
+![datax_task02](../../../../img/tasks/demo/datax_task02.png)
 
 ### 查看运行结果
 
-![datax_task03](/img/tasks/demo/datax_task03.png)
+![datax_task03](../../../../img/tasks/demo/datax_task03.png)
 
 ## 注意事项:
 
diff --git a/docs/docs/zh/guide/task/dependent.md b/docs/docs/zh/guide/task/dependent.md
index b3fbd91f8d..ae0606a163 100644
--- a/docs/docs/zh/guide/task/dependent.md
+++ b/docs/docs/zh/guide/task/dependent.md
@@ -7,7 +7,7 @@ Dependent 节点,就是**依赖检查节点**。比如 A 流程依赖昨天的
 ## 创建任务
 
 - 点击项目管理 -> 项目名称 -> 工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;
-- 拖动工具栏的<img src="/img/tasks/icons/dependent.png" width="15"/> 任务节点到画板中。
+- 拖动工具栏的<img src="../../../../img/tasks/icons/dependent.png" width="15"/> 任务节点到画板中。
 
 ## 任务参数
 
@@ -29,12 +29,12 @@ Dependent 节点提供了逻辑判断功能,可以按照逻辑来检测所依
 
 例如,A 流程为周报任务,B、C 流程为天任务,A 任务需要 B、C 任务在上周的每一天都执行成功,如图示:
 
-![dependent_task01](/img/tasks/demo/dependent_task01.png)
+![dependent_task01](../../../../img/tasks/demo/dependent_task01.png)
 
 例如,A 流程为周报任务,B、C 流程为天任务,A 任务需要 B 或 C 任务在上周的每一天都执行成功,如图示:
 
-![dependent_task02](/img/tasks/demo/dependent_task02.png)
+![dependent_task02](../../../../img/tasks/demo/dependent_task02.png)
 
 假如,周报 A 同时还需要自身在上周二执行成功:
 
-![dependent_task03](/img/tasks/demo/dependent_task03.png)
+![dependent_task03](../../../../img/tasks/demo/dependent_task03.png)
diff --git a/docs/docs/zh/guide/task/flink.md b/docs/docs/zh/guide/task/flink.md
index 84acd60422..212f6ee208 100644
--- a/docs/docs/zh/guide/task/flink.md
+++ b/docs/docs/zh/guide/task/flink.md
@@ -11,7 +11,7 @@ Flink 任务类型,用于执行 Flink 程序。对于 Flink 节点:
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;
-- 拖动工具栏的 <img src="/img/tasks/icons/flink.png" width="15"/> 任务节点到画板中。
+- 拖动工具栏的 <img src="../../../../img/tasks/icons/flink.png" width="15"/> 任务节点到画板中。
 
 ## 任务参数
 
@@ -54,7 +54,7 @@ Flink 任务类型,用于执行 Flink 程序。对于 Flink 节点:
 
 若生产环境中要是使用到 flink 任务类型,则需要先配置好所需的环境。配置文件如下:`bin/env/dolphinscheduler_env.sh`。
 
-![flink-configure](/img/tasks/demo/flink_task01.png)
+![flink-configure](../../../../img/tasks/demo/flink_task01.png)
 
 ####  上传主程序包
 
@@ -62,19 +62,19 @@ Flink 任务类型,用于执行 Flink 程序。对于 Flink 节点:
 
 当配置完成资源中心之后,直接使用拖拽的方式,即可上传所需目标文件。
 
-![resource_upload](/img/tasks/demo/upload_jar.png)
+![resource_upload](../../../../img/tasks/demo/upload_jar.png)
 
 #### 配置 Flink 节点
 
 根据上述参数说明,配置所需的内容即可。
 
-![demo-flink-simple](/img/tasks/demo/flink_task02.png)
+![demo-flink-simple](../../../../img/tasks/demo/flink_task02.png)
 
 ### 执行 FlinkSQL 程序
 
 根据上述参数说明,配置所需的内容即可。
 
-![demo-flink-sql-simple](/img/tasks/demo/flink_sql_test.png)
+![demo-flink-sql-simple](../../../../img/tasks/demo/flink_sql_test.png)
 
 ## 注意事项:
 
diff --git a/docs/docs/zh/guide/task/http.md b/docs/docs/zh/guide/task/http.md
index 18cf3716bc..5245c3b0cd 100644
--- a/docs/docs/zh/guide/task/http.md
+++ b/docs/docs/zh/guide/task/http.md
@@ -8,7 +8,7 @@
 
 - 点击项目管理 -> 项目名称 -> 工作流定义,点击”创建工作流”按钮,进入 DAG 编辑页面:
 
-- 拖动工具栏的 <img src="/img/tasks/icons/http.png" width="15"/> 任务节点到画板中。
+- 拖动工具栏的 <img src="../../../../img/tasks/icons/http.png" width="15"/> 任务节点到画板中。
 
 ## 任务参数
 
@@ -41,7 +41,7 @@ HTTP 定义了与服务器交互的不同方法,最基本的方法有4种,
      - userName:用户名;
      - userPassword:用户登录密码。
 
-![http_task](/img/tasks/demo/http_task01.png)
+![http_task](../../../../img/tasks/demo/http_task01.png)
 
 ## 注意事项
 
diff --git a/docs/docs/zh/guide/task/map-reduce.md b/docs/docs/zh/guide/task/map-reduce.md
index bd17583afa..cee00e927a 100644
--- a/docs/docs/zh/guide/task/map-reduce.md
+++ b/docs/docs/zh/guide/task/map-reduce.md
@@ -7,7 +7,7 @@ MapReduce(MR) 任务类型,用于执行 MapReduce 程序。对于 MapReduce 
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入 DAG 编辑页面。
-- 拖动工具栏中的 <img src="/img/tasks/icons/mr.png" width="15"/> 任务节点到画板中,如下图所示:
+- 拖动工具栏中的 <img src="../../../../img/tasks/icons/mr.png" width="15"/> 任务节点到画板中,如下图所示:
 
 ## 任务参数
 
@@ -56,7 +56,7 @@ MapReduce(MR) 任务类型,用于执行 MapReduce 程序。对于 MapReduce 
 
 若生产环境中要是使用到 MapReduce 任务类型,则需要先配置好所需的环境。配置文件如下:`bin/env/dolphinscheduler_env.sh`。
 
-![mr_configure](/img/tasks/demo/mr_task01.png)
+![mr_configure](../../../../img/tasks/demo/mr_task01.png)
 
 #### 上传主程序包
 
@@ -64,10 +64,10 @@ MapReduce(MR) 任务类型,用于执行 MapReduce 程序。对于 MapReduce 
 
 当配置完成资源中心之后,直接使用拖拽的方式,即可上传所需目标文件。
 
-![resource_upload](/img/tasks/demo/upload_jar.png)
+![resource_upload](../../../../img/tasks/demo/upload_jar.png)
 
 #### 配置 MapReduce 节点
 
 根据上述参数说明,配置所需的内容即可。
 
-![demo-mr-simple](/img/tasks/demo/mr_task02.png)
+![demo-mr-simple](../../../../img/tasks/demo/mr_task02.png)
diff --git a/docs/docs/zh/guide/task/python.md b/docs/docs/zh/guide/task/python.md
index 6ca8366e4f..aeecdfb341 100644
--- a/docs/docs/zh/guide/task/python.md
+++ b/docs/docs/zh/guide/task/python.md
@@ -8,7 +8,7 @@ Python 任务类型,用于创建 Python 类型的任务并执行一系列的 P
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入DAG编辑页面。
-- 工具栏中拖动 <img src="/img/tasks/icons/python.png" width="15"/> 到画板中,即可完成创建。
+- 工具栏中拖动 <img src="../../../../img/tasks/icons/python.png" width="15"/> 到画板中,即可完成创建。
 
 ## 任务参数
 
@@ -33,7 +33,7 @@ Python 任务类型,用于创建 Python 类型的任务并执行一系列的 P
 该样例模拟了常见的简单任务,这些任务只需要简单的一两行命令就能运行起来。我们以打印一行日志为例,该任务仅会在日志文件中打印一行
 "This is a demo of python task"
 
-![demo-python-simple](/img/tasks/demo/python_ui_next.jpg)
+![demo-python-simple](../../../../img/tasks/demo/python_ui_next.jpg)
 
 ```python
 print("This is a demo of python task")
@@ -45,7 +45,7 @@ print("This is a demo of python task")
 中定义了参数 "param_key",并将他的值设置为 "param_val"。接着在"脚本"中使用了 print 函数,将参数 "param_key" 打印了出来。当我们保存
 并运行任务后,在日志中会看到将参数 "param_key" 对应的值 "param_val" 打印出来。
 
-![demo-python-custom-param](/img/tasks/demo/python_custom_param_ui_next.jpg)
+![demo-python-custom-param](../../../../img/tasks/demo/python_custom_param_ui_next.jpg)
 
 ```python
 print("${param_key}")
diff --git a/docs/docs/zh/guide/task/shell.md b/docs/docs/zh/guide/task/shell.md
index 239c00aecf..79c7e4fab1 100644
--- a/docs/docs/zh/guide/task/shell.md
+++ b/docs/docs/zh/guide/task/shell.md
@@ -7,7 +7,7 @@ Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 She
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入 DAG 编辑页面。
-- 工具栏中拖动 <img src="/img/tasks/icons/shell.png" width="15"/> 到画板中,即可完成创建。
+- 工具栏中拖动 <img src="../../../../img/tasks/icons/shell.png" width="15"/> 到画板中,即可完成创建。
 
 ## 任务参数
 
@@ -32,7 +32,7 @@ Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 She
 该样例模拟了常见的简单任务,这些任务只需要简单的一两行命令就能运行起来。我们以打印一行日志为例,该任务仅会在日志文件中打印一行
 "This is a demo of shell task"
 
-![demo-shell-simple](/img/tasks/demo/shell.jpg)
+![demo-shell-simple](../../../../img/tasks/demo/shell.jpg)
 
 ### 使用自定义参数
 
@@ -40,7 +40,7 @@ Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 She
 中定义了参数 "param_key",并将他的值设置为 "param_val"。接着在"脚本"中声明了 echo 命令,将参数 "param_key" 打印了出来。当我们保存
 并运行任务后,在日志中会看到将参数 "param_key" 对应的值 "param_val" 打印出来。
 
-![demo-shell-custom-param](/img/tasks/demo/shell_custom_param.jpg)
+![demo-shell-custom-param](../../../../img/tasks/demo/shell_custom_param.jpg)
 
 ## 注意事项
 
diff --git a/docs/docs/zh/guide/task/spark.md b/docs/docs/zh/guide/task/spark.md
index 9079316c8b..b5ee2d84b4 100644
--- a/docs/docs/zh/guide/task/spark.md
+++ b/docs/docs/zh/guide/task/spark.md
@@ -12,7 +12,7 @@ Spark  任务类型用于执行 Spark 应用。对于 Spark 节点,worker 支
 
 - 点击项目管理 -> 项目名称 -> 工作流定义,点击”创建工作流”按钮,进入 DAG 编辑页面:
 
-- 拖动工具栏的 <img src="/img/tasks/icons/spark.png" width="15"/> 任务节点到画板中。
+- 拖动工具栏的 <img src="../../../../img/tasks/icons/spark.png" width="15"/> 任务节点到画板中。
 
 ## 任务参数
 
@@ -56,7 +56,7 @@ Spark  任务类型用于执行 Spark 应用。对于 Spark 节点,worker 支
 
 若生产环境中要是使用到 Spark 任务类型,则需要先配置好所需的环境。配置文件如下:`bin/env/dolphinscheduler_env.sh`。
 
-![spark_configure](/img/tasks/demo/spark_task01.png)
+![spark_configure](../../../../img/tasks/demo/spark_task01.png)
 
 #####  上传主程序包
 
@@ -64,13 +64,13 @@ Spark  任务类型用于执行 Spark 应用。对于 Spark 节点,worker 支
 
 当配置完成资源中心之后,直接使用拖拽的方式,即可上传所需目标文件。
 
-![resource_upload](/img/tasks/demo/upload_jar.png)
+![resource_upload](../../../../img/tasks/demo/upload_jar.png)
 
 ##### 配置 Spark 节点
 
 根据上述参数说明,配置所需的内容即可。
 
-![demo-spark-simple](/img/tasks/demo/spark_task02.png)
+![demo-spark-simple](../../../../img/tasks/demo/spark_task02.png)
 
 ### spark sql
 
@@ -78,7 +78,7 @@ Spark  任务类型用于执行 Spark 应用。对于 Spark 节点,worker 支
 
 本案例为创建一个视图表 terms 并写入三行数据和一个格式为 parquet 的表 wc 并判断该表是否存在。程序类型为 SQL。将视图表 terms 的数据插入到格式为 parquet 的表 wc。
 
-![spark_sql](/img/tasks/demo/spark_sql.png)
+![spark_sql](../../../../img/tasks/demo/spark_sql.png)
 
 ## 注意事项:
 
diff --git a/docs/docs/zh/guide/task/sql.md b/docs/docs/zh/guide/task/sql.md
index 2d94289ebc..97396c93c5 100644
--- a/docs/docs/zh/guide/task/sql.md
+++ b/docs/docs/zh/guide/task/sql.md
@@ -11,7 +11,7 @@ SQL任务类型,用于连接数据库并执行相应SQL。
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入DAG编辑页面。
-- 工具栏中拖动 <img src="/img/tasks/icons/sql.png" width="25"/> 到画板中,选择需要连接的数据源,即可完成创建。
+- 工具栏中拖动 <img src="../../../../img/tasks/icons/sql.png" width="25"/> 到画板中,选择需要连接的数据源,即可完成创建。
 
 ## 任务参数
 
@@ -37,13 +37,13 @@ SQL任务类型,用于连接数据库并执行相应SQL。
 
 该样例向hive中创建临时表`tmp_hello_world`并写入一行数据。选择SQL类型为非查询,在创建临时表之前需要确保该表不存在,所以我们使用自定义参数,在每次运行时获取当天时间作为表名后缀,这样这个任务就可以每天运行。创建的表名格式为:`tmp_hello_world_{yyyyMMdd}`。
 
-![hive-sql](/img/tasks/demo/hive-sql.png)
+![hive-sql](../../../../img/tasks/demo/hive-sql.png)
 
 #### 运行该任务成功之后在hive中查询结果
 
 登录集群使用`hive`命令或使用`beeline`、`JDBC`等方式连接`apache hive`进行查询,查询SQL为`select * from tmp_hello_world_{yyyyMMdd}`,请将`{yyyyMMdd}`替换为运行当天的日期,查询截图如下:
 
-![hive-sql](/img/tasks/demo/hive-result.png)
+![hive-sql](../../../../img/tasks/demo/hive-result.png)
 
 ### 使用前置sql和后置sql示例
 
@@ -53,4 +53,5 @@ SQL任务类型,用于连接数据库并执行相应SQL。
 
 ## 注意事项
 
-注意SQL类型的选择,如果是INSERT等操作需要选择非查询类型。
\ No newline at end of file
+* 注意SQL类型的选择,如果是INSERT等操作需要选择非查询类型。 
+* 为了兼容长会话情况,UDF函数的创建是通过CREATE OR REPLACE语句
\ No newline at end of file
diff --git a/docs/docs/zh/guide/task/sub-process.md b/docs/docs/zh/guide/task/sub-process.md
index 1e5a989b16..763d9fa69a 100644
--- a/docs/docs/zh/guide/task/sub-process.md
+++ b/docs/docs/zh/guide/task/sub-process.md
@@ -8,7 +8,7 @@
 
 - 点击项目管理 -> 项目名称 -> 工作流定义,点击”创建工作流”按钮,进入 DAG 编辑页面:
 
-- 拖动工具栏的 <img src="/img/tasks/icons/sub_process.png" width="15"/> 任务节点到画板中。
+- 拖动工具栏的 <img src="../../../../img/tasks/icons/sub_process.png" width="15"/> 任务节点到画板中。
 
 ## 任务参数
 
@@ -30,17 +30,17 @@
 
 创建一个 shell 任务,用于打印 “hello”。并为该工作流定义为 test_dag01。
 
-![subprocess_task01](/img/tasks/demo/subprocess_task01.png)
+![subprocess_task01](../../../../img/tasks/demo/subprocess_task01.png)
 
 ### 创建 sub_process 任务
 
 在使用 sub_process 的过程中,需要创建所需的子结点任务,也就是我们第一步所创建的 shell 任务。然后如下图所示,在 ⑤ 的位置选择对应的子结点即可。
 
-![subprocess_task02](/img/tasks/demo/subprocess_task02.png)
+![subprocess_task02](../../../../img/tasks/demo/subprocess_task02.png)
 
 创建 sub_process 完成之后,再创建一个对应的 shell 任务,用于打印 “world”,并将二者连接起来。保存当前工作流,并上线运行,即可得到想要的结果。
 
-![subprocess_task03](/img/tasks/demo/subprocess_task03.png)
+![subprocess_task03](../../../../img/tasks/demo/subprocess_task03.png)
 
 ## 注意事项
 
diff --git a/docs/docs/zh/guide/task/zeppelin.md b/docs/docs/zh/guide/task/zeppelin.md
index 7e42dd6863..4a3f68bac3 100644
--- a/docs/docs/zh/guide/task/zeppelin.md
+++ b/docs/docs/zh/guide/task/zeppelin.md
@@ -8,7 +8,7 @@
 ## 创建任务
 
 - 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入DAG编辑页面。
-- 工具栏中拖动 <img src="/img/tasks/icons/zeppelin.png" width="15"/> 到画板中,即可完成创建。
+- 工具栏中拖动 <img src="../../../../img/tasks/icons/zeppelin.png" width="15"/> 到画板中,即可完成创建。
 
 ## 任务参数
 
@@ -30,7 +30,7 @@
 
 这个示例展示了如何创建Zeppelin Paragraph任务节点:
 
-![demo-zeppelin-paragraph](/img/tasks/demo/zeppelin.png)
+![demo-zeppelin-paragraph](../../../../img/tasks/demo/zeppelin.png)
 
-![demo-get-zeppelin-id](/img/tasks/demo/zeppelin_id.png)
+![demo-get-zeppelin-id](../../../../img/tasks/demo/zeppelin_id.png)