You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by gi...@apache.org on 2021/11/09 08:59:39 UTC

[dolphinscheduler-website] branch asf-site updated: Automated deployment: 504cd7732af79cb8e61892498781e99eee4625e5

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

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 2012075  Automated deployment: 504cd7732af79cb8e61892498781e99eee4625e5
2012075 is described below

commit 201207508a00370fdf0fa33399f700f181c84135
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Tue Nov 9 08:58:51 2021 +0000

    Automated deployment: 504cd7732af79cb8e61892498781e99eee4625e5
---
 .asf.yaml                                          |    8 +
 .htaccess                                          |   23 +
 404.html                                           |   31 +
 asset/dolphinscheduler-netutils.jar                |  Bin 0 -> 62446 bytes
 build/blog.a65ca01.js                              |    1 +
 build/blog.acc2955.css                             |    1 +
 build/blog.md.6f0aa52.js                           |    1 +
 build/blog.md.fd8b187.css                          |    1 +
 build/community.5776767.js                         |    1 +
 build/community.ee4034d.css                        |    1 +
 build/community.md.e1524ff.js                      |    1 +
 build/development.md.fea2a50.js                    |    1 +
 build/docs.md.58e548a.js                           |    1 +
 build/download.md.4483053.js                       |    1 +
 build/home.1ccaa51.css                             |    1 +
 build/home.6807c8e.js                              |    1 +
 build/user.86938ae.css                             |    1 +
 build/user.d636172.js                              |    1 +
 build/vendor.a4fc0e8.js                            |  150 +
 build/vendor.e328afe.css                           |    1 +
 en-us/blog/DAG.html                                |    6 +-
 ...DolphinScheduler Vulnerability Explanation.html |    6 +-
 en-us/blog/FAQ.html                                |    6 +-
 .../Introducing Apache DolphinScheduler 1.3.9.html |    6 +-
 en-us/blog/Json_Split.html                         |    6 +-
 en-us/blog/architecture-design.html                |    6 +-
 en-us/blog/index.html                              |   30 +
 en-us/blog/meetup_2019_10_26.html                  |    6 +-
 en-us/blog/meetup_2019_12_08.html                  |    6 +-
 en-us/community/development/DS-License.html        |    5 +-
 en-us/community/development/api-standard.html      |    5 +-
 .../community/development/become-a-committer.html  |    5 +-
 en-us/community/development/code-conduct.html      |    5 +-
 en-us/community/development/commit-message.html    |    5 +-
 en-us/community/development/contribute.html        |    5 +-
 en-us/community/development/document.html          |    5 +-
 en-us/community/development/issue.html             |    5 +-
 en-us/community/development/microbench.html        |    5 +-
 en-us/community/development/pull-request.html      |    5 +-
 en-us/community/development/submit-code.html       |    5 +-
 en-us/community/development/subscribe.html         |    5 +-
 en-us/community/index.html                         |   30 +
 en-us/community/release-post.html                  |    5 +-
 en-us/community/release-prepare.html               |    5 +-
 en-us/community/release.html                       |    5 +-
 en-us/community/security.html                      |    5 +-
 en-us/community/team.html                          |    5 +-
 en-us/development/architecture-design.html         |    5 +-
 .../backend/mechanism/global-parameter.html        |    5 +-
 en-us/development/backend/mechanism/overview.html  |    5 +-
 .../development/backend/mechanism/task/switch.html |    5 +-
 en-us/development/backend/spi/alert.html           |    5 +-
 en-us/development/backend/spi/plugin.html          |    5 +-
 en-us/development/backend/spi/registry.html        |    5 +-
 en-us/development/backend/spi/task.html            |    5 +-
 .../development/development-environment-setup.html |    5 +-
 en-us/development/frontend-development.html        |    5 +-
 en-us/development/have-questions.html              |    5 +-
 en-us/docs/1.2.0/user_doc/backend-deployment.html  |  259 ++
 en-us/docs/1.2.0/user_doc/cluster-deployment.html  |  482 +++
 en-us/docs/1.2.0/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.2.0/user_doc/frontend-deployment.html |  126 +
 en-us/docs/1.2.0/user_doc/frontend-deployment.json |    6 +
 .../docs/1.2.0/user_doc/hardware-environment.html  |  134 +
 .../docs/1.2.0/user_doc/hardware-environment.json  |    6 +
 en-us/docs/1.2.0/user_doc/metadata-1.2.html        |  661 ++++
 en-us/docs/1.2.0/user_doc/metadata-1.2.json        |    6 +
 en-us/docs/1.2.0/user_doc/quick-start.html         |  103 +
 en-us/docs/1.2.0/user_doc/quick-start.json         |    6 +
 .../docs/1.2.0/user_doc/standalone-deployment.html |  441 +++
 .../docs/1.2.0/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.2.0/user_doc/system-manual.html       |  778 +++++
 en-us/docs/1.2.0/user_doc/system-manual.json       |    6 +
 en-us/docs/1.2.0/user_doc/upgrade.html             |   67 +
 en-us/docs/1.2.0/user_doc/upgrade.json             |    6 +
 .../1.2.1/user_doc}/architecture-design.html       |   49 +-
 en-us/docs/1.2.1/user_doc/architecture-design.json |    6 +
 en-us/docs/1.2.1/user_doc/backend-deployment.html  |  259 ++
 en-us/docs/1.2.1/user_doc/backend-deployment.json  |    6 +
 en-us/docs/1.2.1/user_doc/frontend-deployment.html |  127 +
 en-us/docs/1.2.1/user_doc/frontend-deployment.json |    6 +
 .../docs/1.2.1/user_doc/hardware-environment.html  |  134 +
 .../docs/1.2.1/user_doc/hardware-environment.json  |    6 +
 en-us/docs/1.2.1/user_doc/metadata-1.2.html        |  661 ++++
 en-us/docs/1.2.1/user_doc/metadata-1.2.json        |    6 +
 en-us/docs/1.2.1/user_doc/plugin-development.html  |   83 +
 en-us/docs/1.2.1/user_doc/plugin-development.json  |    6 +
 en-us/docs/1.2.1/user_doc/quick-start.html         |  103 +
 en-us/docs/1.2.1/user_doc/quick-start.json         |    6 +
 en-us/docs/1.2.1/user_doc/system-manual.html       |  778 +++++
 en-us/docs/1.2.1/user_doc/system-manual.json       |    6 +
 en-us/docs/1.2.1/user_doc/upgrade.html             |   67 +
 en-us/docs/1.2.1/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.1/user_doc/architecture-design.html |  354 +++
 en-us/docs/1.3.1/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.1/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.1/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.1/user_doc/configuration-file.html  | 1000 ++++++
 en-us/docs/1.3.1/user_doc/configuration-file.json  |    6 +
 .../docs/1.3.1/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.1/user_doc/hardware-environment.json  |    6 +
 en-us/docs/1.3.1/user_doc/metadata-1.3.html        |  745 +++++
 en-us/docs/1.3.1/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.1/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.1/user_doc/quick-start.json         |    6 +
 .../docs/1.3.1/user_doc/standalone-deployment.html |  397 +++
 .../docs/1.3.1/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.1/user_doc/system-manual.html       |  985 ++++++
 en-us/docs/1.3.1/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.1/user_doc/task-structure.html      | 3284 ++++++++++++++++++++
 en-us/docs/1.3.1/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.1/user_doc/upgrade.html             |  124 +
 en-us/docs/1.3.1/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.2/user_doc/architecture-design.html |  354 +++
 en-us/docs/1.3.2/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.2/user_doc/cluster-deployment.html  |  402 +++
 en-us/docs/1.3.2/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.2/user_doc/configuration-file.html  | 1000 ++++++
 en-us/docs/1.3.2/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.2/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.2/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.2/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.2/user_doc/hardware-environment.json  |    6 +
 en-us/docs/1.3.2/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.2/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.2/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.2/user_doc/quick-start.json         |    6 +
 .../docs/1.3.2/user_doc/standalone-deployment.html |  346 +++
 .../docs/1.3.2/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.2/user_doc/system-manual.html       | 1029 ++++++
 en-us/docs/1.3.2/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.2/user_doc/task-structure.html      | 3284 ++++++++++++++++++++
 en-us/docs/1.3.2/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.2/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.2/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.3/user_doc/architecture-design.html |  354 +++
 en-us/docs/1.3.3/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.3/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.3/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.3/user_doc/configuration-file.html  | 1000 ++++++
 en-us/docs/1.3.3/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.3/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.3/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.3/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.3/user_doc/hardware-environment.json  |    6 +
 en-us/docs/1.3.3/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.3/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.3/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.3/user_doc/quick-start.json         |    6 +
 .../docs/1.3.3/user_doc/standalone-deployment.html |  346 +++
 .../docs/1.3.3/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.3/user_doc/system-manual.html       | 1029 ++++++
 en-us/docs/1.3.3/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.3/user_doc/task-structure.html      | 3284 ++++++++++++++++++++
 en-us/docs/1.3.3/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.3/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.3/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.4/user_doc/architecture-design.html |  354 +++
 en-us/docs/1.3.4/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.4/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.4/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.4/user_doc/configuration-file.html  | 1002 ++++++
 en-us/docs/1.3.4/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.4/user_doc/docker-deployment.html   |  136 +
 en-us/docs/1.3.4/user_doc/docker-deployment.json   |    6 +
 en-us/docs/1.3.4/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.4/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.4/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.4/user_doc/hardware-environment.json  |    6 +
 en-us/docs/1.3.4/user_doc/load-balance.html        |   64 +
 en-us/docs/1.3.4/user_doc/load-balance.json        |    6 +
 en-us/docs/1.3.4/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.4/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.4/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.4/user_doc/quick-start.json         |    6 +
 .../docs/1.3.4/user_doc/standalone-deployment.html |  346 +++
 .../docs/1.3.4/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.4/user_doc/system-manual.html       | 1030 ++++++
 en-us/docs/1.3.4/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.4/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 en-us/docs/1.3.4/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.4/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.4/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.5/user_doc/architecture-design.html |  354 +++
 en-us/docs/1.3.5/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.5/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.5/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.5/user_doc/configuration-file.html  | 1002 ++++++
 en-us/docs/1.3.5/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.5/user_doc/docker-deployment.html   |  343 ++
 en-us/docs/1.3.5/user_doc/docker-deployment.json   |    6 +
 en-us/docs/1.3.5/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.5/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.5/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.5/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.5/user_doc/kubernetes-deployment.html |  188 ++
 .../docs/1.3.5/user_doc/kubernetes-deployment.json |    6 +
 en-us/docs/1.3.5/user_doc/load-balance.html        |   64 +
 en-us/docs/1.3.5/user_doc/load-balance.json        |    6 +
 en-us/docs/1.3.5/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.5/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.5/user_doc/open-api.html            |   70 +
 en-us/docs/1.3.5/user_doc/open-api.json            |    6 +
 en-us/docs/1.3.5/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.5/user_doc/quick-start.json         |    6 +
 .../docs/1.3.5/user_doc/standalone-deployment.html |  346 +++
 .../docs/1.3.5/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.5/user_doc/system-manual.html       | 1062 +++++++
 en-us/docs/1.3.5/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.5/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 en-us/docs/1.3.5/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.5/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.5/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.6/user_doc/ambari-integration.html  |  170 +
 en-us/docs/1.3.6/user_doc/ambari-integration.json  |    6 +
 en-us/docs/1.3.6/user_doc/architecture-design.html |  354 +++
 en-us/docs/1.3.6/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.6/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.6/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.6/user_doc/configuration-file.html  | 1002 ++++++
 en-us/docs/1.3.6/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.6/user_doc/docker-deployment.html   |  905 ++++++
 en-us/docs/1.3.6/user_doc/docker-deployment.json   |    6 +
 en-us/docs/1.3.6/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.6/user_doc/expansion-reduction.json |    6 +
 en-us/docs/1.3.6/user_doc/flink-call.html          |  127 +
 en-us/docs/1.3.6/user_doc/flink-call.json          |    6 +
 .../docs/1.3.6/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.6/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.6/user_doc/kubernetes-deployment.html | 1751 +++++++++++
 .../docs/1.3.6/user_doc/kubernetes-deployment.json |    6 +
 en-us/docs/1.3.6/user_doc/load-balance.html        |   64 +
 en-us/docs/1.3.6/user_doc/load-balance.json        |    6 +
 en-us/docs/1.3.6/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.6/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.6/user_doc/open-api.html            |   90 +
 en-us/docs/1.3.6/user_doc/open-api.json            |    6 +
 en-us/docs/1.3.6/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.6/user_doc/quick-start.json         |    6 +
 .../user_doc/skywalking-agent-deployment.html      |   77 +
 .../user_doc/skywalking-agent-deployment.json      |    6 +
 .../docs/1.3.6/user_doc/standalone-deployment.html |  349 +++
 .../docs/1.3.6/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.6/user_doc/system-manual.html       | 1044 +++++++
 en-us/docs/1.3.6/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.6/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 en-us/docs/1.3.6/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.6/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.6/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.8/user_doc/ambari-integration.html  |  168 +
 en-us/docs/1.3.8/user_doc/ambari-integration.json  |    6 +
 en-us/docs/1.3.8/user_doc/architecture-design.html |  346 +++
 en-us/docs/1.3.8/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.8/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.8/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.8/user_doc/configuration-file.html  | 1002 ++++++
 en-us/docs/1.3.8/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.8/user_doc/docker-deployment.html   |  915 ++++++
 en-us/docs/1.3.8/user_doc/docker-deployment.json   |    6 +
 en-us/docs/1.3.8/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.8/user_doc/expansion-reduction.json |    6 +
 en-us/docs/1.3.8/user_doc/flink-call.html          |  127 +
 en-us/docs/1.3.8/user_doc/flink-call.json          |    6 +
 .../docs/1.3.8/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.8/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.8/user_doc/kubernetes-deployment.html | 1751 +++++++++++
 .../docs/1.3.8/user_doc/kubernetes-deployment.json |    6 +
 en-us/docs/1.3.8/user_doc/load-balance.html        |   64 +
 en-us/docs/1.3.8/user_doc/load-balance.json        |    6 +
 en-us/docs/1.3.8/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.8/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.8/user_doc/open-api.html            |   90 +
 en-us/docs/1.3.8/user_doc/open-api.json            |    6 +
 .../1.3.8/user_doc/parameters-introduction.html    |  103 +
 .../1.3.8/user_doc/parameters-introduction.json    |    6 +
 en-us/docs/1.3.8/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.8/user_doc/quick-start.json         |    6 +
 .../user_doc/skywalking-agent-deployment.html      |   77 +
 .../user_doc/skywalking-agent-deployment.json      |    6 +
 .../docs/1.3.8/user_doc/standalone-deployment.html |  349 +++
 .../docs/1.3.8/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.8/user_doc/system-manual.html       | 1044 +++++++
 en-us/docs/1.3.8/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.8/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 en-us/docs/1.3.8/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.8/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.8/user_doc/upgrade.json             |    6 +
 en-us/docs/1.3.9/user_doc/ambari-integration.html  |  168 +
 en-us/docs/1.3.9/user_doc/ambari-integration.json  |    6 +
 en-us/docs/1.3.9/user_doc/architecture-design.html |  346 +++
 en-us/docs/1.3.9/user_doc/architecture-design.json |    6 +
 en-us/docs/1.3.9/user_doc/cluster-deployment.html  |  403 +++
 en-us/docs/1.3.9/user_doc/cluster-deployment.json  |    6 +
 en-us/docs/1.3.9/user_doc/configuration-file.html  | 1002 ++++++
 en-us/docs/1.3.9/user_doc/configuration-file.json  |    6 +
 en-us/docs/1.3.9/user_doc/docker-deployment.html   |  915 ++++++
 en-us/docs/1.3.9/user_doc/docker-deployment.json   |    6 +
 en-us/docs/1.3.9/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/1.3.9/user_doc/expansion-reduction.json |    6 +
 en-us/docs/1.3.9/user_doc/flink-call.html          |  127 +
 en-us/docs/1.3.9/user_doc/flink-call.json          |    6 +
 .../docs/1.3.9/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.9/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.9/user_doc/kubernetes-deployment.html | 1751 +++++++++++
 .../docs/1.3.9/user_doc/kubernetes-deployment.json |    6 +
 en-us/docs/1.3.9/user_doc/load-balance.html        |   64 +
 en-us/docs/1.3.9/user_doc/load-balance.json        |    6 +
 en-us/docs/1.3.9/user_doc/metadata-1.3.html        |  657 ++++
 en-us/docs/1.3.9/user_doc/metadata-1.3.json        |    6 +
 en-us/docs/1.3.9/user_doc/open-api.html            |   90 +
 en-us/docs/1.3.9/user_doc/open-api.json            |    6 +
 .../1.3.9/user_doc/parameters-introduction.html    |  103 +
 .../1.3.9/user_doc/parameters-introduction.json    |    6 +
 en-us/docs/1.3.9/user_doc/quick-start.html         |  103 +
 en-us/docs/1.3.9/user_doc/quick-start.json         |    6 +
 .../user_doc/skywalking-agent-deployment.html      |   77 +
 .../user_doc/skywalking-agent-deployment.json      |    6 +
 .../docs/1.3.9/user_doc/standalone-deployment.html |  349 +++
 .../docs/1.3.9/user_doc/standalone-deployment.json |    6 +
 en-us/docs/1.3.9/user_doc/standalone-server.html   |   62 +
 en-us/docs/1.3.9/user_doc/standalone-server.json   |    6 +
 en-us/docs/1.3.9/user_doc/system-manual.html       | 1044 +++++++
 en-us/docs/1.3.9/user_doc/system-manual.json       |    6 +
 en-us/docs/1.3.9/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 en-us/docs/1.3.9/user_doc/task-structure.json      |    6 +
 en-us/docs/1.3.9/user_doc/upgrade.html             |  128 +
 en-us/docs/1.3.9/user_doc/upgrade.json             |    6 +
 .../2.0.0/user_doc/architecture/configuration.html | 1002 ++++++
 .../2.0.0/user_doc/architecture/configuration.json |    6 +
 en-us/docs/2.0.0/user_doc/architecture/design.html |  344 ++
 en-us/docs/2.0.0/user_doc/architecture/design.json |    6 +
 .../2.0.0/user_doc/architecture/load-balance.html  |   64 +
 .../2.0.0/user_doc/architecture/load-balance.json  |    6 +
 .../docs/2.0.0/user_doc/architecture/metadata.html |  657 ++++
 .../docs/2.0.0/user_doc/architecture/metadata.json |    6 +
 .../user_doc/architecture/task-structure.html      | 3283 +++++++++++++++++++
 .../user_doc/architecture/task-structure.json      |    6 +
 en-us/docs/2.0.0/user_doc/dev_run.html             |  113 +
 en-us/docs/2.0.0/user_doc/dev_run.json             |    6 +
 en-us/docs/2.0.0/user_doc/expansion-reduction.html |  251 ++
 en-us/docs/2.0.0/user_doc/expansion-reduction.json |    6 +
 .../guide/alert/alert_plugin_user_guide.html       |   36 +
 .../guide/alert/alert_plugin_user_guide.json       |    6 +
 .../user_doc/guide/alert/enterprise-wechat.html    |   55 +
 .../user_doc/guide/alert/enterprise-wechat.json    |    6 +
 .../docs/2.0.0/user_doc/guide/datasource/hive.html |   53 +
 .../docs/2.0.0/user_doc/guide/datasource/hive.json |    6 +
 .../user_doc/guide/datasource/introduction.html    |   35 +
 .../user_doc/guide/datasource/introduction.json    |    6 +
 .../2.0.0/user_doc/guide/datasource/mysql.html     |   44 +
 .../2.0.0/user_doc/guide/datasource/mysql.json     |    6 +
 .../user_doc/guide/datasource/postgresql.html      |   44 +
 .../user_doc/guide/datasource/postgresql.json      |    6 +
 .../2.0.0/user_doc/guide/datasource/spark.html     |   44 +
 .../2.0.0/user_doc/guide/datasource/spark.json     |    6 +
 en-us/docs/2.0.0/user_doc/guide/flink-call.html    |  127 +
 en-us/docs/2.0.0/user_doc/guide/flink-call.json    |    6 +
 en-us/docs/2.0.0/user_doc/guide/homepage.html      |   33 +
 en-us/docs/2.0.0/user_doc/guide/homepage.json      |    6 +
 .../2.0.0/user_doc/guide/installation/cluster.html |   52 +
 .../2.0.0/user_doc/guide/installation/cluster.json |    6 +
 .../2.0.0/user_doc/guide/installation/docker.html  |  915 ++++++
 .../2.0.0/user_doc/guide/installation/docker.json  |    6 +
 .../user_doc/guide/installation/hardware.html      |  129 +
 .../user_doc/guide/installation/hardware.json      |    6 +
 .../user_doc/guide/installation/kubernetes.html    | 1753 +++++++++++
 .../user_doc/guide/installation/kubernetes.json    |    6 +
 .../guide/installation/pseudo-cluster.html         |  202 ++
 .../guide/installation/pseudo-cluster.json         |    6 +
 .../guide/installation/skywalking-agent.html       |   77 +
 .../guide/installation/skywalking-agent.json       |    6 +
 .../user_doc/guide/installation/standalone.html    |   57 +
 .../user_doc/guide/installation/standalone.json    |    6 +
 en-us/docs/2.0.0/user_doc/guide/introduction.html  |   31 +
 en-us/docs/2.0.0/user_doc/guide/introduction.json  |    6 +
 en-us/docs/2.0.0/user_doc/guide/monitor.html       |   72 +
 en-us/docs/2.0.0/user_doc/guide/monitor.json       |    6 +
 en-us/docs/2.0.0/user_doc/guide/open-api.html      |   90 +
 en-us/docs/2.0.0/user_doc/guide/open-api.json      |    6 +
 .../2.0.0/user_doc/guide/parameter/built-in.html   |   79 +
 .../2.0.0/user_doc/guide/parameter/built-in.json   |    6 +
 .../2.0.0/user_doc/guide/parameter/context.html    |   64 +
 .../2.0.0/user_doc/guide/parameter/context.json    |    6 +
 .../2.0.0/user_doc/guide/parameter/global.html     |   41 +
 .../2.0.0/user_doc/guide/parameter/global.json     |    6 +
 .../docs/2.0.0/user_doc/guide/parameter/local.html |   41 +
 .../docs/2.0.0/user_doc/guide/parameter/local.json |    6 +
 .../2.0.0/user_doc/guide/parameter/priority.html   |   55 +
 .../2.0.0/user_doc/guide/parameter/priority.json   |    6 +
 en-us/docs/2.0.0/user_doc/guide/project.html       |   57 +
 en-us/docs/2.0.0/user_doc/guide/project.json       |    6 +
 en-us/docs/2.0.0/user_doc/guide/quick-start.html   |  109 +
 en-us/docs/2.0.0/user_doc/guide/quick-start.json   |    6 +
 en-us/docs/2.0.0/user_doc/guide/resource.html      |  158 +
 en-us/docs/2.0.0/user_doc/guide/resource.json      |    6 +
 en-us/docs/2.0.0/user_doc/guide/security.html      |  214 ++
 en-us/docs/2.0.0/user_doc/guide/security.json      |    6 +
 en-us/docs/2.0.0/user_doc/guide/task-instance.html |   44 +
 en-us/docs/2.0.0/user_doc/guide/task-instance.json |    6 +
 .../docs/2.0.0/user_doc/guide/task/conditions.html |   64 +
 .../docs/2.0.0/user_doc/guide/task/conditions.json |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/datax.html    |   65 +
 en-us/docs/2.0.0/user_doc/guide/task/datax.json    |    6 +
 .../docs/2.0.0/user_doc/guide/task/dependent.html  |   56 +
 .../docs/2.0.0/user_doc/guide/task/dependent.json  |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/flink.html    |   51 +
 en-us/docs/2.0.0/user_doc/guide/task/flink.json    |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/http.html     |   52 +
 en-us/docs/2.0.0/user_doc/guide/task/http.json     |    6 +
 .../docs/2.0.0/user_doc/guide/task/map-reduce.html |   62 +
 .../docs/2.0.0/user_doc/guide/task/map-reduce.json |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/pigeon.html   |   45 +
 en-us/docs/2.0.0/user_doc/guide/task/pigeon.json   |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/python.html   |   45 +
 en-us/docs/2.0.0/user_doc/guide/task/python.json   |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/shell.html    |   77 +
 en-us/docs/2.0.0/user_doc/guide/task/shell.json    |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/spark.html    |   52 +
 en-us/docs/2.0.0/user_doc/guide/task/spark.json    |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/sql.html      |   53 +
 en-us/docs/2.0.0/user_doc/guide/task/sql.json      |    6 +
 .../user_doc/guide/task/stored-procedure.html      |   44 +
 .../user_doc/guide/task/stored-procedure.json      |    6 +
 .../2.0.0/user_doc/guide/task/sub-process.html     |   46 +
 .../2.0.0/user_doc/guide/task/sub-process.json     |    6 +
 en-us/docs/2.0.0/user_doc/guide/task/switch.html   |   61 +
 en-us/docs/2.0.0/user_doc/guide/task/switch.json   |    6 +
 .../2.0.0/user_doc/guide/workflow-definition.html  |  152 +
 .../2.0.0/user_doc/guide/workflow-definition.json  |    6 +
 .../2.0.0/user_doc/guide/workflow-instance.html    |   89 +
 .../2.0.0/user_doc/guide/workflow-instance.json    |    6 +
 en-us/docs/2.0.0/user_doc/integration/ambari.html  |  168 +
 en-us/docs/2.0.0/user_doc/integration/ambari.json  |    6 +
 en-us/docs/2.0.0/user_doc/upgrade.html             |  128 +
 en-us/docs/2.0.0/user_doc/upgrade.json             |    6 +
 .../dev/user_doc/architecture/configuration.html   | 1002 ++++++
 .../dev/user_doc/architecture/configuration.json   |    6 +
 en-us/docs/dev/user_doc/architecture/design.html   |  346 +++
 en-us/docs/dev/user_doc/architecture/design.json   |    6 +
 .../dev/user_doc/architecture/load-balance.html    |   64 +
 .../dev/user_doc/architecture/load-balance.json    |    6 +
 en-us/docs/dev/user_doc/architecture/metadata.html |  657 ++++
 en-us/docs/dev/user_doc/architecture/metadata.json |    6 +
 .../dev/user_doc/architecture/task-structure.html  | 3283 +++++++++++++++++++
 .../dev/user_doc/architecture/task-structure.json  |    6 +
 en-us/docs/dev/user_doc/dev_run.html               |  113 +
 en-us/docs/dev/user_doc/dev_run.json               |    6 +
 en-us/docs/dev/user_doc/expansion-reduction.html   |  251 ++
 en-us/docs/dev/user_doc/expansion-reduction.json   |    6 +
 .../guide/alert/alert_plugin_user_guide.html       |   36 +
 .../guide/alert/alert_plugin_user_guide.json       |    6 +
 .../user_doc/guide/alert/enterprise-wechat.html    |   55 +
 .../user_doc/guide/alert/enterprise-wechat.json    |    6 +
 en-us/docs/dev/user_doc/guide/datasource/hive.html |   53 +
 en-us/docs/dev/user_doc/guide/datasource/hive.json |    6 +
 .../user_doc/guide/datasource/introduction.html    |   35 +
 .../user_doc/guide/datasource/introduction.json    |    6 +
 .../docs/dev/user_doc/guide/datasource/mysql.html  |   44 +
 .../docs/dev/user_doc/guide/datasource/mysql.json  |    6 +
 .../dev/user_doc/guide/datasource/postgresql.html  |   44 +
 .../dev/user_doc/guide/datasource/postgresql.json  |    6 +
 .../docs/dev/user_doc/guide/datasource/spark.html  |   44 +
 .../docs/dev/user_doc/guide/datasource/spark.json  |    6 +
 en-us/docs/dev/user_doc/guide/flink-call.html      |  127 +
 en-us/docs/dev/user_doc/guide/flink-call.json      |    6 +
 en-us/docs/dev/user_doc/guide/homepage.html        |   33 +
 en-us/docs/dev/user_doc/guide/homepage.json        |    6 +
 .../dev/user_doc/guide/installation/cluster.html   |   52 +
 .../dev/user_doc/guide/installation/cluster.json   |    6 +
 .../dev/user_doc/guide/installation/docker.html    |  915 ++++++
 .../dev/user_doc/guide/installation/docker.json    |    6 +
 .../dev/user_doc/guide/installation/hardware.html  |  129 +
 .../dev/user_doc/guide/installation/hardware.json  |    6 +
 .../user_doc/guide/installation/kubernetes.html    | 1753 +++++++++++
 .../user_doc/guide/installation/kubernetes.json    |    6 +
 .../guide/installation/pseudo-cluster.html         |  202 ++
 .../guide/installation/pseudo-cluster.json         |    6 +
 .../guide/installation/skywalking-agent.html       |   77 +
 .../guide/installation/skywalking-agent.json       |    6 +
 .../user_doc/guide/installation/standalone.html    |   57 +
 .../user_doc/guide/installation/standalone.json    |    6 +
 en-us/docs/dev/user_doc/guide/introduction.html    |   31 +
 en-us/docs/dev/user_doc/guide/introduction.json    |    6 +
 en-us/docs/dev/user_doc/guide/monitor.html         |   72 +
 en-us/docs/dev/user_doc/guide/monitor.json         |    6 +
 en-us/docs/dev/user_doc/guide/open-api.html        |   90 +
 en-us/docs/dev/user_doc/guide/open-api.json        |    6 +
 .../dev/user_doc/guide/parameter/built-in.html     |   79 +
 .../dev/user_doc/guide/parameter/built-in.json     |    6 +
 .../docs/dev/user_doc/guide/parameter/context.html |   64 +
 .../docs/dev/user_doc/guide/parameter/context.json |    6 +
 .../docs/dev/user_doc/guide/parameter/global.html  |   41 +
 .../docs/dev/user_doc/guide/parameter/global.json  |    6 +
 en-us/docs/dev/user_doc/guide/parameter/local.html |   41 +
 en-us/docs/dev/user_doc/guide/parameter/local.json |    6 +
 .../dev/user_doc/guide/parameter/priority.html     |   55 +
 .../dev/user_doc/guide/parameter/priority.json     |    6 +
 en-us/docs/dev/user_doc/guide/project.html         |   57 +
 en-us/docs/dev/user_doc/guide/project.json         |    6 +
 en-us/docs/dev/user_doc/guide/quick-start.html     |  109 +
 en-us/docs/dev/user_doc/guide/quick-start.json     |    6 +
 en-us/docs/dev/user_doc/guide/resource.html        |  158 +
 en-us/docs/dev/user_doc/guide/resource.json        |    6 +
 en-us/docs/dev/user_doc/guide/security.html        |  214 ++
 en-us/docs/dev/user_doc/guide/security.json        |    6 +
 en-us/docs/dev/user_doc/guide/task-instance.html   |   44 +
 en-us/docs/dev/user_doc/guide/task-instance.json   |    6 +
 en-us/docs/dev/user_doc/guide/task/conditions.html |   64 +
 en-us/docs/dev/user_doc/guide/task/conditions.json |    6 +
 en-us/docs/dev/user_doc/guide/task/datax.html      |   65 +
 en-us/docs/dev/user_doc/guide/task/datax.json      |    6 +
 en-us/docs/dev/user_doc/guide/task/dependent.html  |   56 +
 en-us/docs/dev/user_doc/guide/task/dependent.json  |    6 +
 en-us/docs/dev/user_doc/guide/task/flink.html      |   51 +
 en-us/docs/dev/user_doc/guide/task/flink.json      |    6 +
 en-us/docs/dev/user_doc/guide/task/http.html       |   52 +
 en-us/docs/dev/user_doc/guide/task/http.json       |    6 +
 en-us/docs/dev/user_doc/guide/task/map-reduce.html |   62 +
 en-us/docs/dev/user_doc/guide/task/map-reduce.json |    6 +
 en-us/docs/dev/user_doc/guide/task/pigeon.html     |   45 +
 en-us/docs/dev/user_doc/guide/task/pigeon.json     |    6 +
 en-us/docs/dev/user_doc/guide/task/python.html     |   45 +
 en-us/docs/dev/user_doc/guide/task/python.json     |    6 +
 en-us/docs/dev/user_doc/guide/task/shell.html      |   77 +
 en-us/docs/dev/user_doc/guide/task/shell.json      |    6 +
 en-us/docs/dev/user_doc/guide/task/spark.html      |   52 +
 en-us/docs/dev/user_doc/guide/task/spark.json      |    6 +
 en-us/docs/dev/user_doc/guide/task/sql.html        |   53 +
 en-us/docs/dev/user_doc/guide/task/sql.json        |    6 +
 .../dev/user_doc/guide/task/stored-procedure.html  |   44 +
 .../dev/user_doc/guide/task/stored-procedure.json  |    6 +
 .../docs/dev/user_doc/guide/task/sub-process.html  |   46 +
 .../docs/dev/user_doc/guide/task/sub-process.json  |    6 +
 en-us/docs/dev/user_doc/guide/task/switch.html     |   61 +
 en-us/docs/dev/user_doc/guide/task/switch.json     |    6 +
 .../dev/user_doc/guide/workflow-definition.html    |  152 +
 .../dev/user_doc/guide/workflow-definition.json    |    6 +
 .../docs/dev/user_doc/guide/workflow-instance.html |   89 +
 .../docs/dev/user_doc/guide/workflow-instance.json |    6 +
 en-us/docs/dev/user_doc/integration/ambari.html    |  168 +
 en-us/docs/dev/user_doc/integration/ambari.json    |    6 +
 en-us/docs/dev/user_doc/upgrade.html               |  128 +
 en-us/docs/dev/user_doc/upgrade.json               |    6 +
 .../user_doc/architecture/configuration.html       | 1002 ++++++
 .../user_doc/architecture/configuration.json       |    6 +
 .../docs/latest/user_doc/architecture/design.html  |  344 ++
 .../docs/latest/user_doc/architecture/design.json  |    6 +
 .../latest/user_doc/architecture/load-balance.html |   64 +
 .../latest/user_doc/architecture/load-balance.json |    6 +
 .../latest/user_doc/architecture/metadata.html     |  657 ++++
 .../latest/user_doc/architecture/metadata.json     |    6 +
 .../user_doc/architecture/task-structure.html      | 3283 +++++++++++++++++++
 .../user_doc/architecture/task-structure.json      |    6 +
 en-us/docs/latest/user_doc/dev_run.html            |  113 +
 en-us/docs/latest/user_doc/dev_run.json            |    6 +
 .../docs/latest/user_doc/expansion-reduction.html  |  251 ++
 .../docs/latest/user_doc/expansion-reduction.json  |    6 +
 .../guide/alert/alert_plugin_user_guide.html       |   36 +
 .../guide/alert/alert_plugin_user_guide.json       |    6 +
 .../user_doc/guide/alert/enterprise-wechat.html    |   55 +
 .../user_doc/guide/alert/enterprise-wechat.json    |    6 +
 .../latest/user_doc/guide/datasource/hive.html     |   53 +
 .../latest/user_doc/guide/datasource/hive.json     |    6 +
 .../user_doc/guide/datasource/introduction.html    |   35 +
 .../user_doc/guide/datasource/introduction.json    |    6 +
 .../latest/user_doc/guide/datasource/mysql.html    |   44 +
 .../latest/user_doc/guide/datasource/mysql.json    |    6 +
 .../user_doc/guide/datasource/postgresql.html      |   44 +
 .../user_doc/guide/datasource/postgresql.json      |    6 +
 .../latest/user_doc/guide/datasource/spark.html    |   44 +
 .../latest/user_doc/guide/datasource/spark.json    |    6 +
 en-us/docs/latest/user_doc/guide/flink-call.html   |  127 +
 en-us/docs/latest/user_doc/guide/flink-call.json   |    6 +
 en-us/docs/latest/user_doc/guide/homepage.html     |   33 +
 en-us/docs/latest/user_doc/guide/homepage.json     |    6 +
 .../user_doc/guide/installation/cluster.html       |   52 +
 .../user_doc/guide/installation/cluster.json       |    6 +
 .../latest/user_doc/guide/installation/docker.html |  915 ++++++
 .../latest/user_doc/guide/installation/docker.json |    6 +
 .../user_doc/guide/installation/hardware.html      |  129 +
 .../user_doc/guide/installation/hardware.json      |    6 +
 .../user_doc/guide/installation/kubernetes.html    | 1753 +++++++++++
 .../user_doc/guide/installation/kubernetes.json    |    6 +
 .../guide/installation/pseudo-cluster.html         |  202 ++
 .../guide/installation/pseudo-cluster.json         |    6 +
 .../guide/installation/skywalking-agent.html       |   77 +
 .../guide/installation/skywalking-agent.json       |    6 +
 .../user_doc/guide/installation/standalone.html    |   57 +
 .../user_doc/guide/installation/standalone.json    |    6 +
 en-us/docs/latest/user_doc/guide/introduction.html |   31 +
 en-us/docs/latest/user_doc/guide/introduction.json |    6 +
 en-us/docs/latest/user_doc/guide/monitor.html      |   72 +
 en-us/docs/latest/user_doc/guide/monitor.json      |    6 +
 en-us/docs/latest/user_doc/guide/open-api.html     |   90 +
 en-us/docs/latest/user_doc/guide/open-api.json     |    6 +
 .../latest/user_doc/guide/parameter/built-in.html  |   79 +
 .../latest/user_doc/guide/parameter/built-in.json  |    6 +
 .../latest/user_doc/guide/parameter/context.html   |   64 +
 .../latest/user_doc/guide/parameter/context.json   |    6 +
 .../latest/user_doc/guide/parameter/global.html    |   41 +
 .../latest/user_doc/guide/parameter/global.json    |    6 +
 .../latest/user_doc/guide/parameter/local.html     |   41 +
 .../latest/user_doc/guide/parameter/local.json     |    6 +
 .../latest/user_doc/guide/parameter/priority.html  |   55 +
 .../latest/user_doc/guide/parameter/priority.json  |    6 +
 en-us/docs/latest/user_doc/guide/project.html      |   57 +
 en-us/docs/latest/user_doc/guide/project.json      |    6 +
 en-us/docs/latest/user_doc/guide/quick-start.html  |  109 +
 en-us/docs/latest/user_doc/guide/quick-start.json  |    6 +
 en-us/docs/latest/user_doc/guide/resource.html     |  158 +
 en-us/docs/latest/user_doc/guide/resource.json     |    6 +
 en-us/docs/latest/user_doc/guide/security.html     |  214 ++
 en-us/docs/latest/user_doc/guide/security.json     |    6 +
 .../docs/latest/user_doc/guide/task-instance.html  |   44 +
 .../docs/latest/user_doc/guide/task-instance.json  |    6 +
 .../latest/user_doc/guide/task/conditions.html     |   64 +
 .../latest/user_doc/guide/task/conditions.json     |    6 +
 en-us/docs/latest/user_doc/guide/task/datax.html   |   65 +
 en-us/docs/latest/user_doc/guide/task/datax.json   |    6 +
 .../docs/latest/user_doc/guide/task/dependent.html |   56 +
 .../docs/latest/user_doc/guide/task/dependent.json |    6 +
 en-us/docs/latest/user_doc/guide/task/flink.html   |   51 +
 en-us/docs/latest/user_doc/guide/task/flink.json   |    6 +
 en-us/docs/latest/user_doc/guide/task/http.html    |   52 +
 en-us/docs/latest/user_doc/guide/task/http.json    |    6 +
 .../latest/user_doc/guide/task/map-reduce.html     |   62 +
 .../latest/user_doc/guide/task/map-reduce.json     |    6 +
 en-us/docs/latest/user_doc/guide/task/pigeon.html  |   45 +
 en-us/docs/latest/user_doc/guide/task/pigeon.json  |    6 +
 en-us/docs/latest/user_doc/guide/task/python.html  |   45 +
 en-us/docs/latest/user_doc/guide/task/python.json  |    6 +
 en-us/docs/latest/user_doc/guide/task/shell.html   |   77 +
 en-us/docs/latest/user_doc/guide/task/shell.json   |    6 +
 en-us/docs/latest/user_doc/guide/task/spark.html   |   52 +
 en-us/docs/latest/user_doc/guide/task/spark.json   |    6 +
 en-us/docs/latest/user_doc/guide/task/sql.html     |   53 +
 en-us/docs/latest/user_doc/guide/task/sql.json     |    6 +
 .../user_doc/guide/task/stored-procedure.html      |   44 +
 .../user_doc/guide/task/stored-procedure.json      |    6 +
 .../latest/user_doc/guide/task/sub-process.html    |   46 +
 .../latest/user_doc/guide/task/sub-process.json    |    6 +
 en-us/docs/latest/user_doc/guide/task/switch.html  |   61 +
 en-us/docs/latest/user_doc/guide/task/switch.json  |    6 +
 .../latest/user_doc/guide/workflow-definition.html |  152 +
 .../latest/user_doc/guide/workflow-definition.json |    6 +
 .../latest/user_doc/guide/workflow-instance.html   |   89 +
 .../latest/user_doc/guide/workflow-instance.json   |    6 +
 en-us/docs/latest/user_doc/integration/ambari.html |  168 +
 en-us/docs/latest/user_doc/integration/ambari.json |    6 +
 en-us/docs/latest/user_doc/upgrade.html            |  128 +
 en-us/docs/latest/user_doc/upgrade.json            |    6 +
 en-us/docs/release/faq.html                        |  431 +++
 en-us/docs/release/faq.json                        |    6 +
 en-us/download/download.html                       |  208 ++
 en-us/download/download.json                       |    6 +
 en-us/download/download_ppt.html                   |  117 +
 en-us/download/download_ppt.json                   |    6 +
 en-us/index.html                                   |   30 +
 en-us/user/index.html                              |   30 +
 file/2019-10-26/DolphinScheduler_dailidong.pptx    |  Bin 0 -> 4115300 bytes
 file/2019-10-26/DolphinScheduler_guowei.pptx       |  Bin 0 -> 3418856 bytes
 file/2019-10-26/DolphinScheduler_qiaozhanwei.pptx  |  Bin 0 -> 2400975 bytes
 file/2019-10-26/DolphinScheduler_zhangzongyao.pptx |  Bin 0 -> 15215166 bytes
 file/2019-10-26/Dolphinescheduler_baoqiwu.pptx     |  Bin 0 -> 13195423 bytes
 file/2019-12-08/DolphinScheduler_liuxiaochun.pptx  |  Bin 0 -> 1594353 bytes
 file/2019-12-08/DolphinScheduler_yangshuang.pptx   |  Bin 0 -> 10712603 bytes
 file/2019-12-08/ShardingSphere_panjuan.pptx        |  Bin 0 -> 1431633 bytes
 file/2019-12-08/ShardingSphere_zhangyonglun.pptx   |  Bin 0 -> 3125688 bytes
 .../DolphinScheduler_Feature_Roadmap.pdf           |  Bin 0 -> 9271719 bytes
 file/2020-07-25/DolphinScheduler_lijie.pptx        |  Bin 0 -> 4740451 bytes
 file/2020-07-25/DolphinScheduler_qiaozhanwei.pptx  |  Bin 0 -> 21892500 bytes
 file/2020-09-05/DolphinScheduler_baoliang.pptx     |  Bin 0 -> 15383130 bytes
 file/2020-09-05/DolphinScheduler_liuhuijuan.pdf    |  Bin 0 -> 3143900 bytes
 file/2020-10-24/DolphinScheduler&K8s_liwenhe.pptx  |  Bin 0 -> 2604754 bytes
 .../Hudi&DolphinScheduler_yanghua&zhaoyuwei.pptx   |  Bin 0 -> 8767843 bytes
 ... - DolphinScheduler Introduction & Roadmap.pptx |  Bin 0 -> 10791288 bytes
 ...hitecture breakthrough of DolphinScheduler.pptx |  Bin 0 -> 20701110 bytes
 ...er architecture evolution - eBay ruanwenjun.key |  Bin 0 -> 21135612 bytes
 ...er architecture evolution - eBay ruanwenjun.ppt |  Bin 0 -> 3794432 bytes
 file/DolphinScheduler-Introduction.pptx            |  Bin 0 -> 16138535 bytes
 file/logo-template.pptx                            |  Bin 0 -> 47558 bytes
 img/2019-10-26-discussion.jpg                      |  Bin 0 -> 121756 bytes
 img/2019-10-26-user.jpg                            |  Bin 0 -> 175896 bytes
 img/2019-12-08/941576036700_.pic_hd.jpg            |  Bin 0 -> 297959 bytes
 img/2019-12-08/951576036704_.pic_hd.jpg            |  Bin 0 -> 4555865 bytes
 img/2019-12-08/961576036709_.pic_hd.jpg            |  Bin 0 -> 3727795 bytes
 img/2019-12-08/971576036713_.pic_hd.jpg            |  Bin 0 -> 3415673 bytes
 img/2019-12-08/981576036714_.pic.jpg               |  Bin 0 -> 70469 bytes
 img/2019-12-08/991576036717_.pic_hd.jpg            |  Bin 0 -> 4451380 bytes
 img/2020-05-26/live_online_20200526.jpeg           |  Bin 0 -> 355266 bytes
 img/2021-03-16/boyi.png                            |  Bin 0 -> 67864 bytes
 img/DAG/DAG01.png                                  |  Bin 0 -> 20119 bytes
 img/DAG/DAG02.png                                  |  Bin 0 -> 22772 bytes
 img/DAG/DAG03.png                                  |  Bin 0 -> 316889 bytes
 img/DAG/DAG04.png                                  |  Bin 0 -> 17224 bytes
 img/JsonSplit/json.png                             |  Bin 0 -> 60578 bytes
 img/JsonSplit/server.png                           |  Bin 0 -> 20050 bytes
 img/JsonSplit/snowflake.png                        |  Bin 0 -> 9403 bytes
 ...\206\346\226\271\346\241\210-1620304011852.png" |  Bin 0 -> 104322 bytes
 ...13\206\345\210\206\346\226\271\346\241\210.png" |  Bin 0 -> 105135 bytes
 img/Statistics.png                                 |  Bin 0 -> 19321 bytes
 img/addtenant-en.png                               |  Bin 0 -> 187537 bytes
 img/addtenant.png                                  |  Bin 0 -> 25570 bytes
 img/alarm-group-en.png                             |  Bin 0 -> 26338 bytes
 img/alert/alert_step_1.png                         |  Bin 0 -> 70180 bytes
 img/alert/alert_step_2.png                         |  Bin 0 -> 34429 bytes
 img/alert/alert_step_3.png                         |  Bin 0 -> 44253 bytes
 img/alert/alert_step_4.png                         |  Bin 0 -> 78671 bytes
 img/alibaba.png                                    |  Bin 0 -> 192 bytes
 img/alibaba_hover.png                              |  Bin 0 -> 391 bytes
 img/ambari-plugin/DS2_AMBARI_001.png               |  Bin 0 -> 349394 bytes
 img/ambari-plugin/DS2_AMBARI_002.png               |  Bin 0 -> 248009 bytes
 img/ambari-plugin/DS2_AMBARI_003.png               |  Bin 0 -> 121312 bytes
 img/ambari-plugin/DS2_AMBARI_004.png               |  Bin 0 -> 167975 bytes
 img/ambari-plugin/DS2_AMBARI_005.png               |  Bin 0 -> 70356 bytes
 img/ambari-plugin/DS2_AMBARI_006.png               |  Bin 0 -> 113596 bytes
 img/ambari-plugin/DS2_AMBARI_007.png               |  Bin 0 -> 189858 bytes
 img/ambari-plugin/DS2_AMBARI_008.png               |  Bin 0 -> 216633 bytes
 img/ambari-plugin/DS2_AMBARI_009.png               |  Bin 0 -> 181077 bytes
 img/ambari-plugin/DS2_AMBARI_010.png               |  Bin 0 -> 145781 bytes
 img/ambari-plugin/DS2_AMBARI_011.png               |  Bin 0 -> 213069 bytes
 img/ambari-plugin/DS2_AMBARI_012.png               |  Bin 0 -> 262212 bytes
 img/ambari-plugin/DS2_AMBARI_013.png               |  Bin 0 -> 157045 bytes
 img/ambari-plugin/DS2_AMBARI_014.png               |  Bin 0 -> 401770 bytes
 img/ambari-plugin/DS2_AMBARI_015.png               |  Bin 0 -> 192872 bytes
 img/ambari-plugin/DS2_AMBARI_016.png               |  Bin 0 -> 212242 bytes
 img/ambari-plugin/DS2_AMBARI_017.png               |  Bin 0 -> 144870 bytes
 img/ambari-plugin/DS2_AMBARI_018.png               |  Bin 0 -> 94396 bytes
 img/ambari-plugin/DS2_AMBARI_019.png               |  Bin 0 -> 143794 bytes
 img/ambari-plugin/DS2_AMBARI_020.png               |  Bin 0 -> 115413 bytes
 img/apache.jpg                                     |  Bin 0 -> 91800 bytes
 img/apachecon-na-2018.png                          |  Bin 0 -> 224617 bytes
 img/api-documentation-en.png                       |  Bin 0 -> 77247 bytes
 img/api-documentation.png                          |  Bin 0 -> 61869 bytes
 img/api/README.md                                  |    1 +
 img/api/api_call1.png                              |  Bin 0 -> 51169 bytes
 img/api/api_call2.png                              |  Bin 0 -> 49089 bytes
 img/api/api_database.png                           |  Bin 0 -> 89008 bytes
 img/api/api_document.png                           |  Bin 0 -> 168834 bytes
 img/api/api_source1.png                            |  Bin 0 -> 347165 bytes
 img/api/api_source2.png                            |  Bin 0 -> 249398 bytes
 img/api/create_project1.png                        |  Bin 0 -> 38616 bytes
 img/api/create_project2.png                        |  Bin 0 -> 38329 bytes
 img/api/create_project3.png                        |  Bin 0 -> 73852 bytes
 img/api/create_queue.png                           |  Bin 0 -> 74021 bytes
 img/api/create_source1.png                         |  Bin 0 -> 360228 bytes
 img/api/create_source2.png                         |  Bin 0 -> 278176 bytes
 img/api/create_tenant.png                          |  Bin 0 -> 82987 bytes
 img/api/create_user.png                            |  Bin 0 -> 92945 bytes
 img/api/create_workflow1.png                       |  Bin 0 -> 55287 bytes
 img/api/create_workflow2.png                       |  Bin 0 -> 96320 bytes
 img/api/create_workflow3.png                       |  Bin 0 -> 214012 bytes
 img/api/create_workflow4.png                       |  Bin 0 -> 69490 bytes
 img/api/execution_result.png                       |  Bin 0 -> 75120 bytes
 img/api/head_value.png                             |  Bin 0 -> 73525 bytes
 img/api/log.png                                    |  Bin 0 -> 154299 bytes
 img/api/search_token1.png                          |  Bin 0 -> 89089 bytes
 img/api/search_token2.png                          |  Bin 0 -> 107473 bytes
 img/api/upload_resource.png                        |  Bin 0 -> 68267 bytes
 img/api/user_authorization.png                     |  Bin 0 -> 38817 bytes
 img/api/user_login.png                             |  Bin 0 -> 184975 bytes
 img/archdiagram_es.svg                             |  280 ++
 img/archdiagram_zh.svg                             |  283 ++
 img/architecture-1.2.0.jpg                         |  Bin 0 -> 64444 bytes
 img/architecture-1.3.0.jpg                         |  Bin 0 -> 392697 bytes
 img/architecture-design/dag_examples_ch_zn.png     |  Bin 0 -> 89203 bytes
 img/architecture-design/dag_examples_en_us.png     |  Bin 0 -> 89184 bytes
 img/architecture-design/distributed_lock_ch_zn.png |  Bin 0 -> 179233 bytes
 img/architecture-design/distributed_lock_en_us.png |  Bin 0 -> 188964 bytes
 .../distributed_lock_procss_ch_zn.png              |  Bin 0 -> 345394 bytes
 .../distributed_lock_procss_en_us.png              |  Bin 0 -> 363294 bytes
 img/architecture-design/fault-tolerant_ch_zn.png   |  Bin 0 -> 177202 bytes
 img/architecture-design/fault-tolerant_en_us.png   |  Bin 0 -> 193511 bytes
 .../fault-tolerant_master_ch_zn.png                |  Bin 0 -> 156134 bytes
 .../fault-tolerant_master_en_us.png                |  Bin 0 -> 169131 bytes
 .../fault-tolerant_worker_ch_zn.png                |  Bin 0 -> 156743 bytes
 .../fault-tolerant_worker_en_us.png                |  Bin 0 -> 164622 bytes
 img/architecture-design/grpc_en_us.png             |  Bin 0 -> 68933 bytes
 img/architecture-design/lack_thread_ch_zn.png      |  Bin 0 -> 173229 bytes
 img/architecture-design/lack_thread_en_us.png      |  Bin 0 -> 195509 bytes
 img/architecture-design/process_priority_en_us.png |  Bin 0 -> 49112 bytes
 img/architecture-design/task_priority_en_us.png    |  Bin 0 -> 30544 bytes
 img/architecture-en.jpg                            |  Bin 0 -> 245445 bytes
 img/architecture.jpg                               |  Bin 0 -> 240548 bytes
 img/architecture.png                               |  Bin 0 -> 14438 bytes
 img/arrow.png                                      |  Bin 0 -> 1105 bytes
 img/auth-en.png                                    |  Bin 0 -> 262873 bytes
 img/auth-project-en.png                            |  Bin 0 -> 33776 bytes
 img/auth_project.png                               |  Bin 0 -> 6590 bytes
 img/auth_user.png                                  |  Bin 0 -> 30794 bytes
 img/banner.jpg                                     |  Bin 0 -> 123469 bytes
 img/blocking-01.png                                |  Bin 0 -> 321359 bytes
 img/blocking-02.png                                |  Bin 0 -> 180074 bytes
 img/blocking-03.png                                |  Bin 0 -> 196547 bytes
 img/blocking-04.png                                |  Bin 0 -> 85887 bytes
 img/blocking-05.png                                |  Bin 0 -> 42692 bytes
 img/blog/architecture/test                         |    1 +
 img/brhtqqzh.jpeg                                  |  Bin 0 -> 673545 bytes
 img/build_dev_video.png                            |  Bin 0 -> 706873 bytes
 img/changan-logo.png                               |  Bin 0 -> 27628 bytes
 img/checkstyle-idea.png                            |  Bin 0 -> 128175 bytes
 img/chinaunicom-logo.png                           |  Bin 0 -> 14439 bytes
 .../00282F58-D216-470A-A65D-90EE09C76DED.jpeg      |  Bin 0 -> 114187 bytes
 ...3F0CE-18FE-4163-951A-4E0734A42EC2_4_5005_c.jpeg |  Bin 0 -> 20639 bytes
 .../1989B620-63EC-45C8-B148-22CD5F2AB528.jpeg      |  Bin 0 -> 117358 bytes
 .../29CAB894-5281-4740-8E39-897E96571D6A.jpeg      |  Bin 0 -> 112774 bytes
 .../3AB6D6CE-CDB2-451E-9524-BF2224C947C0.jpeg      |  Bin 0 -> 119138 bytes
 ...2B6A2-67C8-4EAD-BE7A-992D0AE90CD1_4_5005_c.jpeg |  Bin 0 -> 20602 bytes
 .../51656174-4F3A-4A73-94FA-7E12D5B6FF27.jpeg      |  Bin 0 -> 126402 bytes
 .../6A1478C7-3824-47F5-9E48-5BC04FB20B3E.jpeg      |  Bin 0 -> 79799 bytes
 ...15483-ABF1-44C1-AC6F-CDED1623CC07_4_5005_c.jpeg |  Bin 0 -> 36405 bytes
 .../902CAC66-44A6-457E-BF87-534010FE6585.jpeg      |  Bin 0 -> 115655 bytes
 .../962BFAD9-5695-4369-B2D5-F4185C229CCB.jpeg      |  Bin 0 -> 114854 bytes
 .../B5B15323-7379-4332-AEAC-7E70DBE2F924.jpeg      |  Bin 0 -> 99007 bytes
 .../BFE0DB23-148B-4D0E-8C4D-C7DB51570593.jpeg      |  Bin 0 -> 112625 bytes
 .../CB12C170-A17C-4C1A-8078-2CC67B8BAB31.jpeg      |  Bin 0 -> 101443 bytes
 .../D48B0EAD-D0A0-40D3-AD19-0A19F83DD39E.jpeg      |  Bin 0 -> 105586 bytes
 .../F595066F-EE0B-4086-AD92-5BAF081792F9.jpeg      |  Bin 0 -> 123397 bytes
 img/cicd_workflow/feature_release.json             |    1 +
 img/cicd_workflow/packaging.json                   |    1 +
 img/cicd_workflow/rollback.json                    |    1 +
 img/code-style-idea.png                            |  Bin 0 -> 397042 bytes
 img/complement-en.png                              |  Bin 0 -> 139815 bytes
 img/complement.png                                 |  Bin 0 -> 17723 bytes
 img/complement_en.png                              |  Bin 0 -> 190707 bytes
 img/complement_en1.png                             |  Bin 0 -> 197427 bytes
 img/condition_dag_en.png                           |  Bin 0 -> 32856 bytes
 img/condition_task_en.png                          |  Bin 0 -> 26380 bytes
 img/condition_task_zh.png                          |  Bin 0 -> 25721 bytes
 img/conditions.png                                 |  Bin 0 -> 812 bytes
 img/creat_token.png                                |  Bin 0 -> 25187 bytes
 img/create-datasource-en.png                       |  Bin 0 -> 38367 bytes
 img/create-environment.png                         |  Bin 0 -> 192706 bytes
 img/create-file.png                                |  Bin 0 -> 68294 bytes
 img/create-queue-en.png                            |  Bin 0 -> 26112 bytes
 img/create-queue.png                               |  Bin 0 -> 25153 bytes
 img/create-tenant-en.png                           |  Bin 0 -> 27903 bytes
 img/create-token-en.png                            |  Bin 0 -> 326368 bytes
 img/create-token-en1.png                           |  Bin 0 -> 8779 bytes
 img/create-token.png                               |  Bin 0 -> 7699 bytes
 img/create-user-en.png                             |  Bin 0 -> 35487 bytes
 img/create_project_en.png                          |  Bin 0 -> 103247 bytes
 img/create_project_en1.png                         |  Bin 0 -> 231406 bytes
 img/current-node-en.png                            |  Bin 0 -> 46099 bytes
 img/dag0.png                                       |  Bin 0 -> 47362 bytes
 img/dag1.png                                       |  Bin 0 -> 110306 bytes
 img/dag2.png                                       |  Bin 0 -> 98406 bytes
 img/dag3.png                                       |  Bin 0 -> 96804 bytes
 img/dag4.png                                       |  Bin 0 -> 28703 bytes
 img/dag5.png                                       |  Bin 0 -> 508254 bytes
 img/dag6.png                                       |  Bin 0 -> 564481 bytes
 img/dag7.png                                       |  Bin 0 -> 566175 bytes
 img/dag8.png                                       |  Bin 0 -> 79398 bytes
 img/dag_examples_cn.jpg                            |  Bin 0 -> 51498 bytes
 img/dailidong.png                                  |  Bin 0 -> 202626 bytes
 img/datax-en.png                                   |  Bin 0 -> 563788 bytes
 img/datax.png                                      |  Bin 0 -> 571 bytes
 img/datax_edit.png                                 |  Bin 0 -> 478215 bytes
 img/db-monitor-en.png                              |  Bin 0 -> 84257 bytes
 img/delete.png                                     |  Bin 0 -> 1108 bytes
 img/delete_dependencies_en.png                     |  Bin 0 -> 127371 bytes
 img/depend-node-en.png                             |  Bin 0 -> 496668 bytes
 img/depend-node.png                                |  Bin 0 -> 123401 bytes
 img/depend-node1-en.png                            |  Bin 0 -> 516594 bytes
 img/depend-node2.png                               |  Bin 0 -> 120491 bytes
 img/depend-node3-en.png                            |  Bin 0 -> 479533 bytes
 img/depend-node3.png                               |  Bin 0 -> 140998 bytes
 img/dependent-nodes-en.png                         |  Bin 0 -> 95552 bytes
 img/dependent_edit.png                             |  Bin 0 -> 18061 bytes
 img/distributed_lock_procss.png                    |  Bin 0 -> 26481 bytes
 img/doc-img/1.2.0/deployparam-img/conf-120.png     |  Bin 0 -> 45964 bytes
 img/doc-img/1.2.0/deployparam-img/daemon-120.png   |  Bin 0 -> 18141 bytes
 img/doc-img/1.2.0/deployparam-img/deploydir.png    |  Bin 0 -> 18857 bytes
 img/doc-img/1.2.1/deployparam-img/conf.png         |  Bin 0 -> 82537 bytes
 img/doc-img/1.2.1/deployparam-img/daemon.png       |  Bin 0 -> 44443 bytes
 img/doc-img/1.2.1/deployparam-img/dir.png          |  Bin 0 -> 41337 bytes
 img/documents.png                                  |  Bin 0 -> 219 bytes
 .../1620304011852-1621754591271.png                |  Bin 0 -> 104322 bytes
 .../1620304011852.png                              |  Bin 0 -> 104322 bytes
 .../image-20210524102618970.png                    |  Bin 0 -> 43546 bytes
 .../image-20210524103609210.png                    |  Bin 0 -> 34961 bytes
 .../image-20210524104218236.png                    |  Bin 0 -> 60544 bytes
 .../image-20210524104503423.png                    |  Bin 0 -> 45135 bytes
 .../image-20210524104838911.png                    |  Bin 0 -> 44057 bytes
 .../image-20210524144950185.png                    |  Bin 0 -> 96396 bytes
 img/dolphinscheduler_json_20210601/json.png        |  Bin 0 -> 60578 bytes
 img/double-click-en.png                            |  Bin 0 -> 93728 bytes
 img/ds_gray.png                                    |  Bin 0 -> 2036 bytes
 img/ds_gray.svg                                    |   99 +
 img/easyuse.png                                    |  Bin 0 -> 5748 bytes
 img/edit-datasource-en.png                         |  Bin 0 -> 46838 bytes
 img/editDag-en.png                                 |  Bin 0 -> 421677 bytes
 img/editDag.png                                    |  Bin 0 -> 26907 bytes
 img/emailblue.png                                  |  Bin 0 -> 3063 bytes
 img/emailgray.png                                  |  Bin 0 -> 3050 bytes
 img/favicon.ico                                    |  Bin 0 -> 4286 bytes
 img/feature_hogh.png                               |  Bin 0 -> 582 bytes
 img/feature_loadbalances.png                       |  Bin 0 -> 942 bytes
 img/feature_maintenance.png                        |  Bin 0 -> 940 bytes
 img/feature_runtime.png                            |  Bin 0 -> 1079 bytes
 img/feature_service.png                            |  Bin 0 -> 996 bytes
 img/feature_transpart.png                          |  Bin 0 -> 962 bytes
 img/file-manage-en.png                             |  Bin 0 -> 95124 bytes
 img/file-manage.png                                |  Bin 0 -> 90570 bytes
 img/file-upload-en.png                             |  Bin 0 -> 35697 bytes
 img/file-view-en.png                               |  Bin 0 -> 65327 bytes
 img/file_create.png                                |  Bin 0 -> 69582 bytes
 img/file_create_en.png                             |  Bin 0 -> 477930 bytes
 img/file_detail.png                                |  Bin 0 -> 60953 bytes
 img/file_detail_en.png                             |  Bin 0 -> 494959 bytes
 img/file_rename.png                                |  Bin 0 -> 24870 bytes
 img/file_rename_en.png                             |  Bin 0 -> 385164 bytes
 img/file_upload.png                                |  Bin 0 -> 32401 bytes
 img/flink-en.png                                   |  Bin 0 -> 516614 bytes
 img/flink.png                                      |  Bin 0 -> 10080 bytes
 img/flink_edit.png                                 |  Bin 0 -> 45262 bytes
 img/gant-pic.png                                   |  Bin 0 -> 98130 bytes
 img/gantt-en.png                                   |  Bin 0 -> 108572 bytes
 img/globalParam/image-20210723101242216.png        |  Bin 0 -> 44625 bytes
 img/globalParam/image-20210723102522383.png        |  Bin 0 -> 42919 bytes
 img/globalParam/image-20210723102938239.png        |  Bin 0 -> 36581 bytes
 img/globalParam/image-20210723103316896.png        |  Bin 0 -> 37954 bytes
 img/globalParam/image-20210723103937052.png        |  Bin 0 -> 52946 bytes
 img/globalParam/image-20210723104411489.png        |  Bin 0 -> 21894 bytes
 img/globalParam/image-20210723104957031.png        |  Bin 0 -> 36588 bytes
 img/globalParam/image-20210723105026924.png        |  Bin 0 -> 37906 bytes
 img/globalParam/image-20210723105131381.png        |  Bin 0 -> 34311 bytes
 img/globalParam/image-20210723105255850.png        |  Bin 0 -> 38332 bytes
 img/global_param.png                               |  Bin 0 -> 4660 bytes
 img/global_parameter.png                           |  Bin 0 -> 94677 bytes
 img/global_parameter_en.png                        |  Bin 0 -> 219165 bytes
 img/global_parameters_en.png                       |  Bin 0 -> 29260 bytes
 img/gotoleft.png                                   |  Bin 0 -> 2170 bytes
 img/gotoright.png                                  |  Bin 0 -> 2151 bytes
 img/ha.png                                         |  Bin 0 -> 6522 bytes
 img/hell_dag.png                                   |  Bin 0 -> 54848 bytes
 img/hive-en.png                                    |  Bin 0 -> 47469 bytes
 img/hive1-en.png                                   |  Bin 0 -> 241030 bytes
 img/hive_edit.png                                  |  Bin 0 -> 37399 bytes
 img/hive_edit2.png                                 |  Bin 0 -> 43916 bytes
 img/hive_kerberos.png                              |  Bin 0 -> 14041 bytes
 img/hlogo_colorful.png                             |  Bin 0 -> 2036 bytes
 img/hlogo_colorful.svg                             |   85 +
 img/hlogo_white.png                                |  Bin 0 -> 2036 bytes
 img/hlogo_white.svg                                |   99 +
 img/home.png                                       |  Bin 0 -> 20268 bytes
 img/home_en.png                                    |  Bin 0 -> 22616 bytes
 img/http-en.png                                    |  Bin 0 -> 519526 bytes
 img/http.png                                       |  Bin 0 -> 7121 bytes
 img/http_edit.png                                  |  Bin 0 -> 43936 bytes
 img/incubator-dolphinscheduler-1.1.0.png           |  Bin 0 -> 42275 bytes
 img/instance-detail.png                            |  Bin 0 -> 98607 bytes
 img/instance-list-en.png                           |  Bin 0 -> 199051 bytes
 img/instance-list.png                              |  Bin 0 -> 163111 bytes
 img/instance-runs-en.png                           |  Bin 0 -> 117716 bytes
 img/instanceViewLog-en.png                         |  Bin 0 -> 582387 bytes
 img/instanceViewLog.png                            |  Bin 0 -> 39591 bytes
 img/ipalfish_platform/DS-framework.png             |  Bin 0 -> 42830 bytes
 img/ipalfish_platform/Data_quality_platform.png    |  Bin 0 -> 18276 bytes
 img/ipalfish_platform/Griffin-framework.png        |  Bin 0 -> 44568 bytes
 img/ipalfish_platform/ID_List_Bind.png             |  Bin 0 -> 26334 bytes
 img/ipalfish_platform/Rule_Template.png            |  Bin 0 -> 22768 bytes
 img/ipalfish_platform/Rule_entity.png              |  Bin 0 -> 24548 bytes
 img/ipalfish_platform/results_of_enforcement.png   |  Bin 0 -> 27988 bytes
 img/issue.png                                      |  Bin 0 -> 395 bytes
 img/java-program-en.png                            |  Bin 0 -> 81580 bytes
 img/kerberos-en.png                                |  Bin 0 -> 49147 bytes
 img/line.png                                       |  Bin 0 -> 883 bytes
 img/local_parameter.png                            |  Bin 0 -> 42275 bytes
 img/local_parameter_en.png                         |  Bin 0 -> 72458 bytes
 img/log_en.png                                     |  Bin 0 -> 101272 bytes
 img/login.png                                      |  Bin 0 -> 38897 bytes
 img/login_en.png                                   |  Bin 0 -> 46779 bytes
 img/mail-en.png                                    |  Bin 0 -> 224035 bytes
 img/mail_edit.png                                  |  Bin 0 -> 24806 bytes
 img/mailinglist.png                                |  Bin 0 -> 553 bytes
 img/mailinglist_hover.png                          |  Bin 0 -> 611 bytes
 img/master-jk-en.png                               |  Bin 0 -> 291918 bytes
 img/master-jk.png                                  |  Bin 0 -> 98755 bytes
 img/master-monitor-en.png                          |  Bin 0 -> 97948 bytes
 img/master-process-2.0-en.png                      |  Bin 0 -> 102987 bytes
 img/master-process-2.0-zh_cn.png                   |  Bin 0 -> 99329 bytes
 img/meetup.png                                     |  Bin 0 -> 190037 bytes
 img/meetup_20191026.jpg                            |  Bin 0 -> 123463 bytes
 img/metadata-erd/command.png                       |  Bin 0 -> 56471 bytes
 img/metadata-erd/process-task.png                  |  Bin 0 -> 291362 bytes
 img/metadata-erd/project-resource-alert.png        |  Bin 0 -> 285914 bytes
 img/metadata-erd/user-queue-datasource.png         |  Bin 0 -> 28244 bytes
 img/mr_edit.png                                    |  Bin 0 -> 80069 bytes
 img/mr_edit_en.png                                 |  Bin 0 -> 182250 bytes
 img/mr_java.png                                    |  Bin 0 -> 67717 bytes
 img/mr_java_en.png                                 |  Bin 0 -> 186447 bytes
 img/mysql-en.png                                   |  Bin 0 -> 40108 bytes
 img/mysql-jk-en.png                                |  Bin 0 -> 193968 bytes
 img/mysql-jk.png                                   |  Bin 0 -> 78546 bytes
 img/mysql_edit.png                                 |  Bin 0 -> 29707 bytes
 img/network/network_config.png                     |  Bin 0 -> 206658 bytes
 img/node-setting-en.png                            |  Bin 0 -> 53745 bytes
 img/online.png                                     |  Bin 0 -> 4629 bytes
 img/operation-en.png                               |  Bin 0 -> 36103 bytes
 img/ourusers/189.png                               |  Bin 0 -> 20631 bytes
 img/ourusers/2345@2x.png                           |  Bin 0 -> 24750 bytes
 img/ourusers/360.png                               |  Bin 0 -> 17796 bytes
 img/ourusers/IBM@2x.png                            |  Bin 0 -> 12024 bytes
 img/ourusers/ICBC@2x.png                           |  Bin 0 -> 22644 bytes
 img/ourusers/JD@2x.png                             |  Bin 0 -> 7960 bytes
 img/ourusers/accenture@2x.png                      |  Bin 0 -> 8269 bytes
 img/ourusers/asiainfo@2x.png                       |  Bin 0 -> 19422 bytes
 img/ourusers/baiwangyun@2x.png                     |  Bin 0 -> 13347 bytes
 img/ourusers/belle@2x.png                          |  Bin 0 -> 4307 bytes
 img/ourusers/bonc@2x.png                           |  Bin 0 -> 20046 bytes
 img/ourusers/changan@2x.png                        |  Bin 0 -> 35239 bytes
 img/ourusers/chinatelecom@2x.png                   |  Bin 0 -> 29096 bytes
 img/ourusers/chinaunicom@2x.png                    |  Bin 0 -> 20967 bytes
 img/ourusers/dell.png                              |  Bin 0 -> 26847 bytes
 img/ourusers/didi@2x.png                           |  Bin 0 -> 6241 bytes
 img/ourusers/duodian@2x.png                        |  Bin 0 -> 10067 bytes
 img/ourusers/edaijia@2x.png                        |  Bin 0 -> 23145 bytes
 img/ourusers/energymonst@2x.png                    |  Bin 0 -> 15755 bytes
 img/ourusers/erweihuo@2x.png                       |  Bin 0 -> 25572 bytes
 img/ourusers/fenghuangjinrong@2x.png               |  Bin 0 -> 13898 bytes
 img/ourusers/fordeal@2x.png                        |  Bin 0 -> 13452 bytes
 img/ourusers/guanyuanshuju@2x.png                  |  Bin 0 -> 19501 bytes
 img/ourusers/huawei@2x.png                         |  Bin 0 -> 49583 bytes
 img/ourusers/hundsun.png                           |  Bin 0 -> 22687 bytes
 img/ourusers/iflytek@2x.png                        |  Bin 0 -> 19037 bytes
 img/ourusers/inspur@2x.png                         |  Bin 0 -> 14265 bytes
 img/ourusers/jdt.png                               |  Bin 0 -> 14291 bytes
 img/ourusers/kingsoft@2x.png                       |  Bin 0 -> 34259 bytes
 img/ourusers/lenovo@2x.png                         |  Bin 0 -> 9518 bytes
 img/ourusers/maidanglao@2x.png                     |  Bin 0 -> 9336 bytes
 img/ourusers/mangguotv@2x.png                      |  Bin 0 -> 14852 bytes
 img/ourusers/meituan@2x.png                        |  Bin 0 -> 7619 bytes
 img/ourusers/migu@2x.png                           |  Bin 0 -> 6643 bytes
 img/ourusers/nokia@2x.png                          |  Bin 0 -> 23263 bytes
 img/ourusers/pingan@2x.png                         |  Bin 0 -> 25264 bytes
 img/ourusers/qianxin@2x.png                        |  Bin 0 -> 22781 bytes
 img/ourusers/shansong.png                          |  Bin 0 -> 17628 bytes
 img/ourusers/shein@2x.png                          |  Bin 0 -> 12930 bytes
 img/ourusers/shenmachuxing@2x.png                  |  Bin 0 -> 18757 bytes
 img/ourusers/shuidihuzhu@2x.png                    |  Bin 0 -> 10791 bytes
 img/ourusers/shunfeng@2x.png                       |  Bin 0 -> 14996 bytes
 img/ourusers/tencent@2x.png                        |  Bin 0 -> 11128 bytes
 img/ourusers/ucloud@2x.png                         |  Bin 0 -> 9033 bytes
 img/ourusers/vmware@2x.png                         |  Bin 0 -> 21268 bytes
 img/ourusers/walmart@2x.png                        |  Bin 0 -> 14755 bytes
 img/ourusers/weipinhui@2x.png                      |  Bin 0 -> 16299 bytes
 img/ourusers/xindongfang@2x.png                    |  Bin 0 -> 26445 bytes
 img/ourusers/xinlangweibo@2x.png                   |  Bin 0 -> 22211 bytes
 img/ourusers/xueqiu@2x.png                         |  Bin 0 -> 11663 bytes
 img/ourusers/yiguanshuju@2x.png                    |  Bin 0 -> 14184 bytes
 img/ourusers/yiqixiu@2x.png                        |  Bin 0 -> 6256 bytes
 img/ourusers/yuanfudao@2x.png                      |  Bin 0 -> 11115 bytes
 img/ourusers/yuanguanruanjian@2x.png               |  Bin 0 -> 26603 bytes
 img/ourusers/yunda@2x.png                          |  Bin 0 -> 24873 bytes
 img/ourusers/yuxueyuan@2x.png                      |  Bin 0 -> 24407 bytes
 img/ourusers/zhaopin.png                           |  Bin 0 -> 24028 bytes
 img/ourusers/zhaoshangyinhang@2x.png               |  Bin 0 -> 32827 bytes
 img/ourusers/zhengcaiyun.jpeg                      |  Bin 0 -> 8765 bytes
 img/ourusers/zhengcaiyun@2x.png                    |  Bin 0 -> 44838 bytes
 img/ourusers/zhongshandaxue@2x.png                 |  Bin 0 -> 34004 bytes
 img/pigeon.png                                     |  Bin 0 -> 1192 bytes
 img/postgresql-en.png                              |  Bin 0 -> 256660 bytes
 img/postgresql_edit.png                            |  Bin 0 -> 32697 bytes
 img/principal-en.png                               |  Bin 0 -> 52956 bytes
 img/procedure-en.png                               |  Bin 0 -> 165706 bytes
 img/procedure_edit.png                             |  Bin 0 -> 49986 bytes
 img/process-instances-en.png                       |  Bin 0 -> 110819 bytes
 img/process-start-flow-1.3.0.png                   |  Bin 0 -> 224425 bytes
 img/process_definition_en.png                      |  Bin 0 -> 102514 bytes
 img/process_definitions_en.png                     |  Bin 0 -> 134230 bytes
 img/project-home.png                               |  Bin 0 -> 23402 bytes
 img/project.png                                    |  Bin 0 -> 48124 bytes
 img/project_home_en.png                            |  Bin 0 -> 106896 bytes
 img/pullrequest.png                                |  Bin 0 -> 286 bytes
 img/python-en.png                                  |  Bin 0 -> 155661 bytes
 img/python-en1-2.png                               |  Bin 0 -> 133097 bytes
 img/python-program-en.png                          |  Bin 0 -> 87519 bytes
 img/python_edit.png                                |  Bin 0 -> 154450 bytes
 img/python_edit1-2.png                             |  Bin 0 -> 131129 bytes
 img/qianxin-logo.svg                               |  482 +++
 img/quick_start.png                                |  Bin 0 -> 25048 bytes
 img/redirect.png                                   |  Bin 0 -> 40279 bytes
 img/rename-en.png                                  |  Bin 0 -> 4596 bytes
 img/review_img4.jpg                                |  Bin 0 -> 226384 bytes
 img/review_img4.png                                |  Bin 0 -> 71111 bytes
 img/run-work.png                                   |  Bin 0 -> 12746 bytes
 img/run_params.png                                 |  Bin 0 -> 37494 bytes
 img/run_params_button.png                          |  Bin 0 -> 7724 bytes
 img/run_params_en.png                              |  Bin 0 -> 468680 bytes
 img/run_work_en.png                                |  Bin 0 -> 130884 bytes
 img/scaleout.png                                   |  Bin 0 -> 8296 bytes
 img/scene.png                                      |  Bin 0 -> 2865 bytes
 img/segmentfault.png                               |  Bin 0 -> 1974 bytes
 img/segmentfault_hover.png                         |  Bin 0 -> 2181 bytes
 img/shell-en.png                                   |  Bin 0 -> 65759 bytes
 img/shell.png                                      |  Bin 0 -> 3245 bytes
 img/shell_dag.png                                  |  Bin 0 -> 54848 bytes
 img/skywalking/import-dashboard-1.jpg              |  Bin 0 -> 151863 bytes
 img/slack-selected.png                             |  Bin 0 -> 2162 bytes
 img/slack.png                                      |  Bin 0 -> 2081 bytes
 img/so-icon-hover.png                              |  Bin 0 -> 691 bytes
 img/so-icon.png                                    |  Bin 0 -> 1256 bytes
 img/spark-en.png                                   |  Bin 0 -> 224331 bytes
 img/spark-submit-en.png                            |  Bin 0 -> 99468 bytes
 img/spark_datesource.png                           |  Bin 0 -> 42448 bytes
 img/spark_edit.png                                 |  Bin 0 -> 90495 bytes
 img/sparksql_kerberos.png                          |  Bin 0 -> 46706 bytes
 img/sql-en.png                                     |  Bin 0 -> 548091 bytes
 img/sql-node-en.png                                |  Bin 0 -> 205549 bytes
 img/sql-node.png                                   |  Bin 0 -> 93705 bytes
 img/sql-node2.png                                  |  Bin 0 -> 98324 bytes
 img/stackoverflow-selected.png                     |  Bin 0 -> 2775 bytes
 img/stackoverflow.png                              |  Bin 0 -> 2669 bytes
 img/start-process-en.png                           |  Bin 0 -> 28443 bytes
 img/statistics-en.png                              |  Bin 0 -> 20170 bytes
 img/sub-process-en.png                             |  Bin 0 -> 29426 bytes
 img/subprocess_edit.png                            |  Bin 0 -> 33992 bytes
 img/supplement_global_parameter.png                |  Bin 0 -> 295951 bytes
 img/supplement_global_parameter_en.png             |  Bin 0 -> 124936 bytes
 img/supplement_local_parameter.png                 |  Bin 0 -> 228552 bytes
 img/supplement_local_parameter_en.png              |  Bin 0 -> 246045 bytes
 img/switch.png                                     |  Bin 0 -> 885 bytes
 img/switch_configure.jpg                           |  Bin 0 -> 142764 bytes
 img/system/arrow_down.png                          |  Bin 0 -> 271 bytes
 img/system/arrow_right.png                         |  Bin 0 -> 253 bytes
 img/system/blog.png                                |  Bin 0 -> 372 bytes
 img/system/community.png                           |  Bin 0 -> 901 bytes
 img/system/development.png                         |  Bin 0 -> 3298 bytes
 img/system/docs.png                                |  Bin 0 -> 671 bytes
 img/system/docs_hover.png                          |  Bin 0 -> 144 bytes
 img/system/docs_normal.png                         |  Bin 0 -> 144 bytes
 img/system/download.png                            |  Bin 0 -> 6431 bytes
 img/system/menu_gray.png                           |  Bin 0 -> 130 bytes
 img/system/menu_white.png                          |  Bin 0 -> 130 bytes
 img/system/next.png                                |  Bin 0 -> 877 bytes
 img/system/prev.png                                |  Bin 0 -> 881 bytes
 img/task-execution-en.png                          |  Bin 0 -> 116317 bytes
 img/task-instances-en.png                          |  Bin 0 -> 138564 bytes
 img/task-list-en.png                               |  Bin 0 -> 279528 bytes
 img/task-list.png                                  |  Bin 0 -> 147963 bytes
 img/task-log-en.png                                |  Bin 0 -> 385429 bytes
 img/task-log.png                                   |  Bin 0 -> 104454 bytes
 img/task-log2-en.png                               |  Bin 0 -> 239927 bytes
 img/task-log2.png                                  |  Bin 0 -> 117016 bytes
 img/task_en.png                                    |  Bin 0 -> 103665 bytes
 img/task_history.png                               |  Bin 0 -> 56128 bytes
 img/task_history_en.png                            |  Bin 0 -> 593365 bytes
 img/test-api.png                                   |  Bin 0 -> 40028 bytes
 img/time-manage-list-en.png                        |  Bin 0 -> 165932 bytes
 img/time-schedule.png                              |  Bin 0 -> 16987 bytes
 img/time-schedule2.png                             |  Bin 0 -> 13113 bytes
 img/time-schedule3.png                             |  Bin 0 -> 12950 bytes
 img/timeManagement.png                             |  Bin 0 -> 11195 bytes
 img/time_schedule_en.png                           |  Bin 0 -> 172406 bytes
 img/timer-en.png                                   |  Bin 0 -> 39738 bytes
 img/timing-en.png                                  |  Bin 0 -> 35220 bytes
 img/timing.png                                     |  Bin 0 -> 11777 bytes
 img/token-en.png                                   |  Bin 0 -> 26372 bytes
 img/token-management-en.png                        |  Bin 0 -> 35282 bytes
 img/token-management.png                           |  Bin 0 -> 34871 bytes
 img/tree.png                                       |  Bin 0 -> 35173 bytes
 img/tree_en.png                                    |  Bin 0 -> 453382 bytes
 img/twitter.png                                    |  Bin 0 -> 718 bytes
 img/twitter_hover.png                              |  Bin 0 -> 748 bytes
 img/twitterblue.png                                |  Bin 0 -> 4777 bytes
 img/twittergray.png                                |  Bin 0 -> 4750 bytes
 img/udf-function.png                               |  Bin 0 -> 52432 bytes
 img/udf_edit.png                                   |  Bin 0 -> 26369 bytes
 img/udf_edit_en.png                                |  Bin 0 -> 208093 bytes
 img/unit-test/ut-communication-based-style.png     |  Bin 0 -> 35613 bytes
 img/unit-test/ut-controller-architecture.png       |  Bin 0 -> 28429 bytes
 img/unit-test/ut-nested-3a.png                     |  Bin 0 -> 16759 bytes
 img/unit-test/ut-output-based-style.png            |  Bin 0 -> 34419 bytes
 img/unit-test/ut-state-based-style.png             |  Bin 0 -> 38705 bytes
 img/use-environment.png                            |  Bin 0 -> 110154 bytes
 img/user-defined-en.png                            |  Bin 0 -> 37204 bytes
 img/user-defined1-en.png                           |  Bin 0 -> 105725 bytes
 img/user-en.png                                    |  Bin 0 -> 288550 bytes
 img/useredit2.png                                  |  Bin 0 -> 32096 bytes
 img/view-log-en.png                                |  Bin 0 -> 108760 bytes
 img/weekly-A-en.png                                |  Bin 0 -> 146251 bytes
 img/weekly-A1-en.png                               |  Bin 0 -> 129210 bytes
 img/weekly-A2-en.png                               |  Bin 0 -> 133302 bytes
 img/weibo.png                                      |  Bin 0 -> 1451 bytes
 img/weibo_hover.png                                |  Bin 0 -> 4557 bytes
 img/work_list.png                                  |  Bin 0 -> 27577 bytes
 img/work_list_en.png                               |  Bin 0 -> 428834 bytes
 img/worker-group-en.png                            |  Bin 0 -> 23686 bytes
 img/worker-jk-en.png                               |  Bin 0 -> 295298 bytes
 img/worker-jk.png                                  |  Bin 0 -> 96859 bytes
 img/worker-monitor-en.png                          |  Bin 0 -> 93679 bytes
 img/worker1.png                                    |  Bin 0 -> 23158 bytes
 img/worker_group.png                               |  Bin 0 -> 21223 bytes
 img/worker_group_en.png                            |  Bin 0 -> 22353 bytes
 img/workflow-instances-en.png                      |  Bin 0 -> 132782 bytes
 img/xdf-logo.jpeg                                  |  Bin 0 -> 36088 bytes
 img/zk-jk.png                                      |  Bin 0 -> 67871 bytes
 img/zookeeper-en.png                               |  Bin 0 -> 46925 bytes
 img/zookeeper-monitor-en.png                       |  Bin 0 -> 71534 bytes
 index.html                                         |   30 +
 sitemap.xml                                        |  146 +
 zh-cn/blog/DAG.html                                |    6 +-
 zh-cn/blog/DS_architecture_evolution.html          |    6 +-
 zh-cn/blog/DS_run_in_windows.html                  |    6 +-
 ...3\205\345\206\265\350\257\264\346\230\216.html" |    6 +-
 zh-cn/blog/about_blocking_task.html                |    6 +-
 zh-cn/blog/architecture-design.html                |    6 +-
 zh-cn/blog/cicd_workflow.html                      |    6 +-
 zh-cn/blog/dolphinscheduler_json.html              |    6 +-
 zh-cn/blog/index.html                              |   30 +
 zh-cn/blog/ipalfish_tech_platform.html             |    6 +-
 zh-cn/blog/json_split.html                         |    6 +-
 zh-cn/blog/live_online_2020_05_26.html             |    6 +-
 zh-cn/blog/meetup_2019_10_26.html                  |    6 +-
 zh-cn/blog/meetup_2019_12_08.html                  |    6 +-
 zh-cn/blog/new_committer_wenjun.html               |    6 +-
 zh-cn/blog/ut-guideline.html                       |    6 +-
 zh-cn/blog/ut-template.html                        |    6 +-
 zh-cn/community/development/DS-License.html        |    5 +-
 zh-cn/community/development/api-standard.html      |    5 +-
 .../community/development/become-a-committer.html  |    5 +-
 zh-cn/community/development/code-conduct.html      |    5 +-
 zh-cn/community/development/commit-message.html    |    5 +-
 zh-cn/community/development/contribute.html        |    5 +-
 zh-cn/community/development/document.html          |    5 +-
 zh-cn/community/development/issue.html             |    5 +-
 zh-cn/community/development/microbench.html        |    5 +-
 zh-cn/community/development/pull-request.html      |    5 +-
 zh-cn/community/development/submit-code.html       |    5 +-
 zh-cn/community/development/subscribe.html         |    5 +-
 zh-cn/community/development/unit-test.html         |    5 +-
 zh-cn/community/index.html                         |   30 +
 zh-cn/community/release-post.html                  |    5 +-
 zh-cn/community/release-prepare.html               |    5 +-
 zh-cn/community/release.html                       |    5 +-
 zh-cn/community/security.html                      |    5 +-
 zh-cn/community/team.html                          |    5 +-
 zh-cn/development/architecture-design.html         |    5 +-
 .../backend/mechanism/global-parameter.html        |    5 +-
 zh-cn/development/backend/mechanism/overview.html  |    5 +-
 .../development/backend/mechanism/task/switch.html |    5 +-
 zh-cn/development/backend/spi/alert.html           |    5 +-
 zh-cn/development/backend/spi/plugin.html          |    5 +-
 zh-cn/development/backend/spi/registry.html        |    5 +-
 zh-cn/development/backend/spi/task.html            |    5 +-
 .../development/development-environment-setup.html |    5 +-
 zh-cn/development/frontend-development.html        |    5 +-
 zh-cn/development/have-questions.html              |    5 +-
 zh-cn/docs/1.2.0/user_doc/backend-deployment.html  |  260 ++
 zh-cn/docs/1.2.0/user_doc/backend-deployment.json  |    6 +
 zh-cn/docs/1.2.0/user_doc/cluster-deployment.html  |  486 +++
 zh-cn/docs/1.2.0/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.2.0/user_doc/deployparam.html         |  450 +++
 zh-cn/docs/1.2.0/user_doc/deployparam.json         |    6 +
 zh-cn/docs/1.2.0/user_doc/frontend-deployment.html |  126 +
 zh-cn/docs/1.2.0/user_doc/frontend-deployment.json |    6 +
 .../docs/1.2.0/user_doc/hardware-environment.html  |  134 +
 .../docs/1.2.0/user_doc/hardware-environment.json  |    6 +
 .../1.2.0/user_doc/masterserver-code-analysis.html |  385 +++
 .../1.2.0/user_doc/masterserver-code-analysis.json |    6 +
 zh-cn/docs/1.2.0/user_doc/metadata-1.2.html        |  739 +++++
 zh-cn/docs/1.2.0/user_doc/metadata-1.2.json        |    6 +
 zh-cn/docs/1.2.0/user_doc/quick-start.html         |   99 +
 zh-cn/docs/1.2.0/user_doc/quick-start.json         |    6 +
 .../docs/1.2.0/user_doc/standalone-deployment.html |  443 +++
 .../docs/1.2.0/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.2.0/user_doc/system-manual.html       |  978 ++++++
 zh-cn/docs/1.2.0/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.2.0/user_doc/upgrade.html             |   67 +
 zh-cn/docs/1.2.0/user_doc/upgrade.json             |    6 +
 .../1.2.1/user_doc}/architecture-design.html       |   31 +-
 zh-cn/docs/1.2.1/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.2.1/user_doc/backend-deployment.html  |  260 ++
 zh-cn/docs/1.2.1/user_doc/backend-deployment.json  |    6 +
 zh-cn/docs/1.2.1/user_doc/cluster-deployment.html  |  376 +++
 zh-cn/docs/1.2.1/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.2.1/user_doc/deployparam.html         |  314 ++
 zh-cn/docs/1.2.1/user_doc/deployparam.json         |    6 +
 zh-cn/docs/1.2.1/user_doc/frontend-deployment.html |  126 +
 zh-cn/docs/1.2.1/user_doc/frontend-deployment.json |    6 +
 .../docs/1.2.1/user_doc/hardware-environment.html  |  134 +
 .../docs/1.2.1/user_doc/hardware-environment.json  |    6 +
 zh-cn/docs/1.2.1/user_doc/metadata-1.2.html        |  739 +++++
 zh-cn/docs/1.2.1/user_doc/metadata-1.2.json        |    6 +
 .../1.2.1/user_doc}/microbench.html                |   15 +-
 zh-cn/docs/1.2.1/user_doc/microbench.json          |    6 +
 zh-cn/docs/1.2.1/user_doc/plugin-development.html  |   83 +
 zh-cn/docs/1.2.1/user_doc/plugin-development.json  |    6 +
 zh-cn/docs/1.2.1/user_doc/quick-start.html         |   99 +
 zh-cn/docs/1.2.1/user_doc/quick-start.json         |    6 +
 .../docs/1.2.1/user_doc/standalone-deployment.html |  443 +++
 .../docs/1.2.1/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.2.1/user_doc/system-manual.html       |  978 ++++++
 zh-cn/docs/1.2.1/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.2.1/user_doc/upgrade.html             |   67 +
 zh-cn/docs/1.2.1/user_doc/upgrade.json             |    6 +
 .../1.3.1/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.1/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.1/user_doc/cluster-deployment.html  |  445 +++
 zh-cn/docs/1.3.1/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.1/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.1/user_doc/configuration-file.json  |    6 +
 .../docs/1.3.1/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.1/user_doc/hardware-environment.json  |    6 +
 zh-cn/docs/1.3.1/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.1/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.1/user_doc/quick-start.html         |   98 +
 zh-cn/docs/1.3.1/user_doc/quick-start.json         |    6 +
 .../docs/1.3.1/user_doc/standalone-deployment.html |  336 ++
 .../docs/1.3.1/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.1/user_doc/system-manual.html       |  984 ++++++
 zh-cn/docs/1.3.1/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.1/user_doc/task-structure.html      | 3284 ++++++++++++++++++++
 zh-cn/docs/1.3.1/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.1/user_doc/upgrade.html             |  124 +
 zh-cn/docs/1.3.1/user_doc/upgrade.json             |    6 +
 .../1.3.2/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.2/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.2/user_doc/cluster-deployment.html  |  445 +++
 zh-cn/docs/1.3.2/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.2/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.2/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.2/user_doc/expansion-reduction.html |  267 ++
 zh-cn/docs/1.3.2/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.2/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.2/user_doc/hardware-environment.json  |    6 +
 zh-cn/docs/1.3.2/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.2/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.2/user_doc/quick-start.html         |   98 +
 zh-cn/docs/1.3.2/user_doc/quick-start.json         |    6 +
 .../docs/1.3.2/user_doc/standalone-deployment.html |  336 ++
 .../docs/1.3.2/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.2/user_doc/system-manual.html       |  998 ++++++
 zh-cn/docs/1.3.2/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.2/user_doc/task-structure.html      | 3284 ++++++++++++++++++++
 zh-cn/docs/1.3.2/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.2/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.2/user_doc/upgrade.json             |    6 +
 .../1.3.3/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.3/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.3/user_doc/cluster-deployment.html  |  453 +++
 zh-cn/docs/1.3.3/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.3/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.3/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.3/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/1.3.3/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.3/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.3/user_doc/hardware-environment.json  |    6 +
 zh-cn/docs/1.3.3/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.3/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.3/user_doc/quick-start.html         |   99 +
 zh-cn/docs/1.3.3/user_doc/quick-start.json         |    6 +
 .../docs/1.3.3/user_doc/standalone-deployment.html |  348 +++
 .../docs/1.3.3/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.3/user_doc/system-manual.html       |  998 ++++++
 zh-cn/docs/1.3.3/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.3/user_doc/task-structure.html      | 3284 ++++++++++++++++++++
 zh-cn/docs/1.3.3/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.3/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.3/user_doc/upgrade.json             |    6 +
 .../1.3.4/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.4/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.4/user_doc/cluster-deployment.html  |  453 +++
 zh-cn/docs/1.3.4/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.4/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.4/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.4/user_doc/docker-deployment.html   |  136 +
 zh-cn/docs/1.3.4/user_doc/docker-deployment.json   |    6 +
 zh-cn/docs/1.3.4/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/1.3.4/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.4/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.4/user_doc/hardware-environment.json  |    6 +
 zh-cn/docs/1.3.4/user_doc/load-balance.html        |   64 +
 zh-cn/docs/1.3.4/user_doc/load-balance.json        |    6 +
 zh-cn/docs/1.3.4/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.4/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.4/user_doc/quick-start.html         |   99 +
 zh-cn/docs/1.3.4/user_doc/quick-start.json         |    6 +
 .../docs/1.3.4/user_doc/standalone-deployment.html |  336 ++
 .../docs/1.3.4/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.4/user_doc/system-manual.html       |  999 ++++++
 zh-cn/docs/1.3.4/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.4/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 zh-cn/docs/1.3.4/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.4/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.4/user_doc/upgrade.json             |    6 +
 .../1.3.5/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.5/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.5/user_doc/cluster-deployment.html  |  453 +++
 zh-cn/docs/1.3.5/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.5/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.5/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.5/user_doc/docker-deployment.html   |  343 ++
 zh-cn/docs/1.3.5/user_doc/docker-deployment.json   |    6 +
 zh-cn/docs/1.3.5/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/1.3.5/user_doc/expansion-reduction.json |    6 +
 .../docs/1.3.5/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.5/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.5/user_doc/kubernetes-deployment.html |  188 ++
 .../docs/1.3.5/user_doc/kubernetes-deployment.json |    6 +
 zh-cn/docs/1.3.5/user_doc/load-balance.html        |   64 +
 zh-cn/docs/1.3.5/user_doc/load-balance.json        |    6 +
 zh-cn/docs/1.3.5/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.5/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.5/user_doc/open-api.html            |   73 +
 zh-cn/docs/1.3.5/user_doc/open-api.json            |    6 +
 zh-cn/docs/1.3.5/user_doc/quick-start.html         |  100 +
 zh-cn/docs/1.3.5/user_doc/quick-start.json         |    6 +
 .../docs/1.3.5/user_doc/standalone-deployment.html |  336 ++
 .../docs/1.3.5/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.5/user_doc/system-manual.html       | 1003 ++++++
 zh-cn/docs/1.3.5/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.5/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 zh-cn/docs/1.3.5/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.5/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.5/user_doc/upgrade.json             |    6 +
 .../1.3.6/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.6/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.6/user_doc/cluster-deployment.html  |  449 +++
 zh-cn/docs/1.3.6/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.6/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.6/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.6/user_doc/docker-deployment.html   |  905 ++++++
 zh-cn/docs/1.3.6/user_doc/docker-deployment.json   |    6 +
 zh-cn/docs/1.3.6/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/1.3.6/user_doc/expansion-reduction.json |    6 +
 zh-cn/docs/1.3.6/user_doc/flink-call.html          |  126 +
 zh-cn/docs/1.3.6/user_doc/flink-call.json          |    6 +
 .../docs/1.3.6/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.6/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.6/user_doc/kubernetes-deployment.html | 1751 +++++++++++
 .../docs/1.3.6/user_doc/kubernetes-deployment.json |    6 +
 zh-cn/docs/1.3.6/user_doc/load-balance.html        |   64 +
 zh-cn/docs/1.3.6/user_doc/load-balance.json        |    6 +
 zh-cn/docs/1.3.6/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.6/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.6/user_doc/open-api.html            |   93 +
 zh-cn/docs/1.3.6/user_doc/open-api.json            |    6 +
 zh-cn/docs/1.3.6/user_doc/quick-start.html         |  105 +
 zh-cn/docs/1.3.6/user_doc/quick-start.json         |    6 +
 .../user_doc/skywalking-agent-deployment.html      |   77 +
 .../user_doc/skywalking-agent-deployment.json      |    6 +
 .../docs/1.3.6/user_doc/standalone-deployment.html |  331 ++
 .../docs/1.3.6/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.6/user_doc/system-manual.html       |  999 ++++++
 zh-cn/docs/1.3.6/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.6/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 zh-cn/docs/1.3.6/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.6/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.6/user_doc/upgrade.json             |    6 +
 .../1.3.8/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.8/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.8/user_doc/cluster-deployment.html  |  449 +++
 zh-cn/docs/1.3.8/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.8/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.8/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.8/user_doc/docker-deployment.html   |  915 ++++++
 zh-cn/docs/1.3.8/user_doc/docker-deployment.json   |    6 +
 zh-cn/docs/1.3.8/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/1.3.8/user_doc/expansion-reduction.json |    6 +
 zh-cn/docs/1.3.8/user_doc/flink-call.html          |  126 +
 zh-cn/docs/1.3.8/user_doc/flink-call.json          |    6 +
 .../docs/1.3.8/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.8/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.8/user_doc/kubernetes-deployment.html | 1751 +++++++++++
 .../docs/1.3.8/user_doc/kubernetes-deployment.json |    6 +
 zh-cn/docs/1.3.8/user_doc/load-balance.html        |   64 +
 zh-cn/docs/1.3.8/user_doc/load-balance.json        |    6 +
 zh-cn/docs/1.3.8/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.8/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.8/user_doc/open-api.html            |   93 +
 zh-cn/docs/1.3.8/user_doc/open-api.json            |    6 +
 .../1.3.8/user_doc/parameters-introduction.html    |  105 +
 .../1.3.8/user_doc/parameters-introduction.json    |    6 +
 zh-cn/docs/1.3.8/user_doc/quick-start.html         |  105 +
 zh-cn/docs/1.3.8/user_doc/quick-start.json         |    6 +
 .../user_doc/skywalking-agent-deployment.html      |   77 +
 .../user_doc/skywalking-agent-deployment.json      |    6 +
 .../docs/1.3.8/user_doc/standalone-deployment.html |  331 ++
 .../docs/1.3.8/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.8/user_doc/system-manual.html       |  999 ++++++
 zh-cn/docs/1.3.8/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.8/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 zh-cn/docs/1.3.8/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.8/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.8/user_doc/upgrade.json             |    6 +
 .../1.3.9/user_doc}/architecture-design.html       |   80 +-
 zh-cn/docs/1.3.9/user_doc/architecture-design.json |    6 +
 zh-cn/docs/1.3.9/user_doc/cluster-deployment.html  |  449 +++
 zh-cn/docs/1.3.9/user_doc/cluster-deployment.json  |    6 +
 zh-cn/docs/1.3.9/user_doc/configuration-file.html  | 1000 ++++++
 zh-cn/docs/1.3.9/user_doc/configuration-file.json  |    6 +
 zh-cn/docs/1.3.9/user_doc/docker-deployment.html   |  915 ++++++
 zh-cn/docs/1.3.9/user_doc/docker-deployment.json   |    6 +
 zh-cn/docs/1.3.9/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/1.3.9/user_doc/expansion-reduction.json |    6 +
 zh-cn/docs/1.3.9/user_doc/flink-call.html          |  126 +
 zh-cn/docs/1.3.9/user_doc/flink-call.json          |    6 +
 .../docs/1.3.9/user_doc/hardware-environment.html  |  129 +
 .../docs/1.3.9/user_doc/hardware-environment.json  |    6 +
 .../docs/1.3.9/user_doc/kubernetes-deployment.html | 1751 +++++++++++
 .../docs/1.3.9/user_doc/kubernetes-deployment.json |    6 +
 zh-cn/docs/1.3.9/user_doc/load-balance.html        |   64 +
 zh-cn/docs/1.3.9/user_doc/load-balance.json        |    6 +
 zh-cn/docs/1.3.9/user_doc/metadata-1.3.html        |  745 +++++
 zh-cn/docs/1.3.9/user_doc/metadata-1.3.json        |    6 +
 zh-cn/docs/1.3.9/user_doc/open-api.html            |   93 +
 zh-cn/docs/1.3.9/user_doc/open-api.json            |    6 +
 .../1.3.9/user_doc/parameters-introduction.html    |  105 +
 .../1.3.9/user_doc/parameters-introduction.json    |    6 +
 zh-cn/docs/1.3.9/user_doc/quick-start.html         |  105 +
 zh-cn/docs/1.3.9/user_doc/quick-start.json         |    6 +
 .../user_doc/skywalking-agent-deployment.html      |   77 +
 .../user_doc/skywalking-agent-deployment.json      |    6 +
 .../docs/1.3.9/user_doc/standalone-deployment.html |  333 ++
 .../docs/1.3.9/user_doc/standalone-deployment.json |    6 +
 zh-cn/docs/1.3.9/user_doc/standalone-server.html   |   62 +
 zh-cn/docs/1.3.9/user_doc/standalone-server.json   |    6 +
 zh-cn/docs/1.3.9/user_doc/system-manual.html       |  999 ++++++
 zh-cn/docs/1.3.9/user_doc/system-manual.json       |    6 +
 zh-cn/docs/1.3.9/user_doc/task-structure.html      | 3283 +++++++++++++++++++
 zh-cn/docs/1.3.9/user_doc/task-structure.json      |    6 +
 zh-cn/docs/1.3.9/user_doc/upgrade.html             |  128 +
 zh-cn/docs/1.3.9/user_doc/upgrade.json             |    6 +
 .../2.0.0/user_doc/architecture/configuration.html | 1000 ++++++
 .../2.0.0/user_doc/architecture/configuration.json |    6 +
 zh-cn/docs/2.0.0/user_doc/architecture/design.html |  293 ++
 zh-cn/docs/2.0.0/user_doc/architecture/design.json |    6 +
 .../2.0.0/user_doc/architecture/designplus.html    |   79 +
 .../2.0.0/user_doc/architecture/designplus.json    |    6 +
 .../docs/2.0.0/user_doc/architecture/listdocs.html |   56 +
 .../docs/2.0.0/user_doc/architecture/listdocs.json |    6 +
 .../2.0.0/user_doc/architecture/load-balance.html  |   64 +
 .../2.0.0/user_doc/architecture/load-balance.json  |    6 +
 .../docs/2.0.0/user_doc/architecture/metadata.html |  745 +++++
 .../docs/2.0.0/user_doc/architecture/metadata.json |    6 +
 .../user_doc/architecture/task-structure.html      | 3283 +++++++++++++++++++
 .../user_doc/architecture/task-structure.json      |    6 +
 zh-cn/docs/2.0.0/user_doc/expansion-reduction.html |  254 ++
 zh-cn/docs/2.0.0/user_doc/expansion-reduction.json |    6 +
 .../guide/alert/alert_plugin_user_guide.html       |   36 +
 .../guide/alert/alert_plugin_user_guide.json       |    6 +
 .../user_doc/guide/alert/enterprise-wechat.html    |   55 +
 .../user_doc/guide/alert/enterprise-wechat.json    |    6 +
 .../docs/2.0.0/user_doc/guide/datasource/hive.html |   53 +
 .../docs/2.0.0/user_doc/guide/datasource/hive.json |    6 +
 .../user_doc/guide/datasource/introduction.html    |   35 +
 .../user_doc/guide/datasource/introduction.json    |    6 +
 .../2.0.0/user_doc/guide/datasource/mysql.html     |   43 +
 .../2.0.0/user_doc/guide/datasource/mysql.json     |    6 +
 .../user_doc/guide/datasource/postgresql.html      |   43 +
 .../user_doc/guide/datasource/postgresql.json      |    6 +
 .../2.0.0/user_doc/guide/datasource/spark.html     |   48 +
 .../2.0.0/user_doc/guide/datasource/spark.json     |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/flink-call.html    |  126 +
 zh-cn/docs/2.0.0/user_doc/guide/flink-call.json    |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/homepage.html      |   33 +
 zh-cn/docs/2.0.0/user_doc/guide/homepage.json      |    6 +
 .../2.0.0/user_doc/guide/installation/cluster.html |   52 +
 .../2.0.0/user_doc/guide/installation/cluster.json |    6 +
 .../2.0.0/user_doc/guide/installation/docker.html  |  915 ++++++
 .../2.0.0/user_doc/guide/installation/docker.json  |    6 +
 .../user_doc/guide/installation/hardware.html      |  129 +
 .../user_doc/guide/installation/hardware.json      |    6 +
 .../user_doc/guide/installation/kubernetes.html    | 1749 +++++++++++
 .../user_doc/guide/installation/kubernetes.json    |    6 +
 .../guide/installation/pseudo-cluster.html         |  201 ++
 .../guide/installation/pseudo-cluster.json         |    6 +
 .../guide/installation/skywalking-agent.html       |   77 +
 .../guide/installation/skywalking-agent.json       |    6 +
 .../user_doc/guide/installation/standalone.html    |   57 +
 .../user_doc/guide/installation/standalone.json    |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/introduction.html  |   31 +
 zh-cn/docs/2.0.0/user_doc/guide/introduction.json  |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/monitor.html       |   72 +
 zh-cn/docs/2.0.0/user_doc/guide/monitor.json       |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/open-api.html      |   93 +
 zh-cn/docs/2.0.0/user_doc/guide/open-api.json      |    6 +
 .../2.0.0/user_doc/guide/parameter/built-in.html   |   83 +
 .../2.0.0/user_doc/guide/parameter/built-in.json   |    6 +
 .../2.0.0/user_doc/guide/parameter/context.html    |   66 +
 .../2.0.0/user_doc/guide/parameter/context.json    |    6 +
 .../2.0.0/user_doc/guide/parameter/global.html     |   41 +
 .../2.0.0/user_doc/guide/parameter/global.json     |    6 +
 .../docs/2.0.0/user_doc/guide/parameter/local.html |   41 +
 .../docs/2.0.0/user_doc/guide/parameter/local.json |    6 +
 .../2.0.0/user_doc/guide/parameter/priority.html   |   55 +
 .../2.0.0/user_doc/guide/parameter/priority.json   |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/project.html       |   44 +
 zh-cn/docs/2.0.0/user_doc/guide/project.json       |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/quick-start.html   |  111 +
 zh-cn/docs/2.0.0/user_doc/guide/quick-start.json   |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/resource.html      |  152 +
 zh-cn/docs/2.0.0/user_doc/guide/resource.json      |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/security.html      |  213 ++
 zh-cn/docs/2.0.0/user_doc/guide/security.json      |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task-instance.html |   44 +
 zh-cn/docs/2.0.0/user_doc/guide/task-instance.json |    6 +
 .../docs/2.0.0/user_doc/guide/task/conditions.html |   64 +
 .../docs/2.0.0/user_doc/guide/task/conditions.json |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/datax.html    |   65 +
 zh-cn/docs/2.0.0/user_doc/guide/task/datax.json    |    6 +
 .../docs/2.0.0/user_doc/guide/task/dependent.html  |   56 +
 .../docs/2.0.0/user_doc/guide/task/dependent.json  |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/flink.html    |   51 +
 zh-cn/docs/2.0.0/user_doc/guide/task/flink.json    |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/http.html     |   52 +
 zh-cn/docs/2.0.0/user_doc/guide/task/http.json     |    6 +
 .../docs/2.0.0/user_doc/guide/task/map-reduce.html |   62 +
 .../docs/2.0.0/user_doc/guide/task/map-reduce.json |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/pigeon.html   |   45 +
 zh-cn/docs/2.0.0/user_doc/guide/task/pigeon.json   |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/python.html   |   45 +
 zh-cn/docs/2.0.0/user_doc/guide/task/python.json   |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/shell.html    |   75 +
 zh-cn/docs/2.0.0/user_doc/guide/task/shell.json    |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/spark.html    |   52 +
 zh-cn/docs/2.0.0/user_doc/guide/task/spark.json    |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/sql.html      |   53 +
 zh-cn/docs/2.0.0/user_doc/guide/task/sql.json      |    6 +
 .../user_doc/guide/task/stored-procedure.html      |   44 +
 .../user_doc/guide/task/stored-procedure.json      |    6 +
 .../2.0.0/user_doc/guide/task/sub-process.html     |   46 +
 .../2.0.0/user_doc/guide/task/sub-process.json     |    6 +
 zh-cn/docs/2.0.0/user_doc/guide/task/switch.html   |   61 +
 zh-cn/docs/2.0.0/user_doc/guide/task/switch.json   |    6 +
 .../2.0.0/user_doc/guide/workflow-definition.html  |  173 ++
 .../2.0.0/user_doc/guide/workflow-definition.json  |    6 +
 .../2.0.0/user_doc/guide/workflow-instance.html    |   89 +
 .../2.0.0/user_doc/guide/workflow-instance.json    |    6 +
 zh-cn/docs/2.0.0/user_doc/upgrade.html             |  128 +
 zh-cn/docs/2.0.0/user_doc/upgrade.json             |    6 +
 .../About_DolphinScheduler.html                    |   39 +
 .../About_DolphinScheduler.json                    |    6 +
 .../dev/user_doc/architecture/configuration.html   | 1000 ++++++
 .../dev/user_doc/architecture/configuration.json   |    6 +
 .../dev/user_doc/architecture/design.html}         |   86 +-
 zh-cn/docs/dev/user_doc/architecture/design.json   |    6 +
 .../dev/user_doc/architecture/load-balance.html    |   64 +
 .../dev/user_doc/architecture/load-balance.json    |    6 +
 zh-cn/docs/dev/user_doc/architecture/metadata.html |  745 +++++
 zh-cn/docs/dev/user_doc/architecture/metadata.json |    6 +
 .../dev/user_doc/architecture/task-structure.html  | 3283 +++++++++++++++++++
 .../dev/user_doc/architecture/task-structure.json  |    6 +
 zh-cn/docs/dev/user_doc/expansion-reduction.html   |  254 ++
 zh-cn/docs/dev/user_doc/expansion-reduction.json   |    6 +
 .../guide/alert/alert_plugin_user_guide.html       |   36 +
 .../guide/alert/alert_plugin_user_guide.json       |    6 +
 .../user_doc/guide/alert/enterprise-wechat.html    |   55 +
 .../user_doc/guide/alert/enterprise-wechat.json    |    6 +
 zh-cn/docs/dev/user_doc/guide/datasource/hive.html |   53 +
 zh-cn/docs/dev/user_doc/guide/datasource/hive.json |    6 +
 .../user_doc/guide/datasource/introduction.html    |   35 +
 .../user_doc/guide/datasource/introduction.json    |    6 +
 .../docs/dev/user_doc/guide/datasource/mysql.html  |   43 +
 .../docs/dev/user_doc/guide/datasource/mysql.json  |    6 +
 .../dev/user_doc/guide/datasource/postgresql.html  |   43 +
 .../dev/user_doc/guide/datasource/postgresql.json  |    6 +
 .../docs/dev/user_doc/guide/datasource/spark.html  |   48 +
 .../docs/dev/user_doc/guide/datasource/spark.json  |    6 +
 zh-cn/docs/dev/user_doc/guide/flink-call.html      |  126 +
 zh-cn/docs/dev/user_doc/guide/flink-call.json      |    6 +
 zh-cn/docs/dev/user_doc/guide/homepage.html        |   33 +
 zh-cn/docs/dev/user_doc/guide/homepage.json        |    6 +
 .../dev/user_doc/guide/installation/cluster.html   |   52 +
 .../dev/user_doc/guide/installation/cluster.json   |    6 +
 .../dev/user_doc/guide/installation/docker.html    |  915 ++++++
 .../dev/user_doc/guide/installation/docker.json    |    6 +
 .../dev/user_doc/guide/installation/hardware.html  |  129 +
 .../dev/user_doc/guide/installation/hardware.json  |    6 +
 .../user_doc/guide/installation/kubernetes.html    | 1753 +++++++++++
 .../user_doc/guide/installation/kubernetes.json    |    6 +
 .../guide/installation/pseudo-cluster.html         |  201 ++
 .../guide/installation/pseudo-cluster.json         |    6 +
 .../guide/installation/skywalking-agent.html       |   77 +
 .../guide/installation/skywalking-agent.json       |    6 +
 .../user_doc/guide/installation/standalone.html    |   57 +
 .../user_doc/guide/installation/standalone.json    |    6 +
 zh-cn/docs/dev/user_doc/guide/introduction.html    |   31 +
 zh-cn/docs/dev/user_doc/guide/introduction.json    |    6 +
 zh-cn/docs/dev/user_doc/guide/monitor.html         |   72 +
 zh-cn/docs/dev/user_doc/guide/monitor.json         |    6 +
 zh-cn/docs/dev/user_doc/guide/open-api.html        |   93 +
 zh-cn/docs/dev/user_doc/guide/open-api.json        |    6 +
 .../dev/user_doc/guide/parameter/built-in.html     |   83 +
 .../dev/user_doc/guide/parameter/built-in.json     |    6 +
 .../docs/dev/user_doc/guide/parameter/context.html |   66 +
 .../docs/dev/user_doc/guide/parameter/context.json |    6 +
 .../docs/dev/user_doc/guide/parameter/global.html  |   41 +
 .../docs/dev/user_doc/guide/parameter/global.json  |    6 +
 zh-cn/docs/dev/user_doc/guide/parameter/local.html |   41 +
 zh-cn/docs/dev/user_doc/guide/parameter/local.json |    6 +
 .../dev/user_doc/guide/parameter/priority.html     |   55 +
 .../dev/user_doc/guide/parameter/priority.json     |    6 +
 zh-cn/docs/dev/user_doc/guide/project.html         |   44 +
 zh-cn/docs/dev/user_doc/guide/project.json         |    6 +
 zh-cn/docs/dev/user_doc/guide/quick-start.html     |  111 +
 zh-cn/docs/dev/user_doc/guide/quick-start.json     |    6 +
 zh-cn/docs/dev/user_doc/guide/resource.html        |  152 +
 zh-cn/docs/dev/user_doc/guide/resource.json        |    6 +
 zh-cn/docs/dev/user_doc/guide/security.html        |  213 ++
 zh-cn/docs/dev/user_doc/guide/security.json        |    6 +
 zh-cn/docs/dev/user_doc/guide/task-instance.html   |   44 +
 zh-cn/docs/dev/user_doc/guide/task-instance.json   |    6 +
 zh-cn/docs/dev/user_doc/guide/task/conditions.html |   64 +
 zh-cn/docs/dev/user_doc/guide/task/conditions.json |    6 +
 zh-cn/docs/dev/user_doc/guide/task/datax.html      |   65 +
 zh-cn/docs/dev/user_doc/guide/task/datax.json      |    6 +
 zh-cn/docs/dev/user_doc/guide/task/dependent.html  |   56 +
 zh-cn/docs/dev/user_doc/guide/task/dependent.json  |    6 +
 zh-cn/docs/dev/user_doc/guide/task/flink.html      |   51 +
 zh-cn/docs/dev/user_doc/guide/task/flink.json      |    6 +
 zh-cn/docs/dev/user_doc/guide/task/http.html       |   52 +
 zh-cn/docs/dev/user_doc/guide/task/http.json       |    6 +
 zh-cn/docs/dev/user_doc/guide/task/map-reduce.html |   62 +
 zh-cn/docs/dev/user_doc/guide/task/map-reduce.json |    6 +
 zh-cn/docs/dev/user_doc/guide/task/pigeon.html     |   45 +
 zh-cn/docs/dev/user_doc/guide/task/pigeon.json     |    6 +
 zh-cn/docs/dev/user_doc/guide/task/python.html     |   45 +
 zh-cn/docs/dev/user_doc/guide/task/python.json     |    6 +
 zh-cn/docs/dev/user_doc/guide/task/shell.html      |   75 +
 zh-cn/docs/dev/user_doc/guide/task/shell.json      |    6 +
 zh-cn/docs/dev/user_doc/guide/task/spark.html      |   52 +
 zh-cn/docs/dev/user_doc/guide/task/spark.json      |    6 +
 zh-cn/docs/dev/user_doc/guide/task/sql.html        |   53 +
 zh-cn/docs/dev/user_doc/guide/task/sql.json        |    6 +
 .../dev/user_doc/guide/task/stored-procedure.html  |   44 +
 .../dev/user_doc/guide/task/stored-procedure.json  |    6 +
 .../docs/dev/user_doc/guide/task/sub-process.html  |   46 +
 .../docs/dev/user_doc/guide/task/sub-process.json  |    6 +
 zh-cn/docs/dev/user_doc/guide/task/switch.html     |   61 +
 zh-cn/docs/dev/user_doc/guide/task/switch.json     |    6 +
 .../dev/user_doc/guide/workflow-definition.html    |  173 ++
 .../dev/user_doc/guide/workflow-definition.json    |    6 +
 .../docs/dev/user_doc/guide/workflow-instance.html |   89 +
 .../docs/dev/user_doc/guide/workflow-instance.json |    6 +
 zh-cn/docs/dev/user_doc/upgrade.html               |  128 +
 zh-cn/docs/dev/user_doc/upgrade.json               |    6 +
 .../user_doc/architecture/configuration.html       | 1000 ++++++
 .../user_doc/architecture/configuration.json       |    6 +
 .../docs/latest/user_doc/architecture/design.html  |  293 ++
 .../docs/latest/user_doc/architecture/design.json  |    6 +
 .../latest/user_doc/architecture/designplus.html   |   79 +
 .../latest/user_doc/architecture/designplus.json   |    6 +
 .../latest/user_doc/architecture/listdocs.html     |   56 +
 .../latest/user_doc/architecture/listdocs.json     |    6 +
 .../latest/user_doc/architecture/load-balance.html |   64 +
 .../latest/user_doc/architecture/load-balance.json |    6 +
 .../latest/user_doc/architecture/metadata.html     |  745 +++++
 .../latest/user_doc/architecture/metadata.json     |    6 +
 .../user_doc/architecture/task-structure.html      | 3283 +++++++++++++++++++
 .../user_doc/architecture/task-structure.json      |    6 +
 .../docs/latest/user_doc/expansion-reduction.html  |  254 ++
 .../docs/latest/user_doc/expansion-reduction.json  |    6 +
 .../guide/alert/alert_plugin_user_guide.html       |   36 +
 .../guide/alert/alert_plugin_user_guide.json       |    6 +
 .../user_doc/guide/alert/enterprise-wechat.html    |   55 +
 .../user_doc/guide/alert/enterprise-wechat.json    |    6 +
 .../latest/user_doc/guide/datasource/hive.html     |   53 +
 .../latest/user_doc/guide/datasource/hive.json     |    6 +
 .../user_doc/guide/datasource/introduction.html    |   35 +
 .../user_doc/guide/datasource/introduction.json    |    6 +
 .../latest/user_doc/guide/datasource/mysql.html    |   43 +
 .../latest/user_doc/guide/datasource/mysql.json    |    6 +
 .../user_doc/guide/datasource/postgresql.html      |   43 +
 .../user_doc/guide/datasource/postgresql.json      |    6 +
 .../latest/user_doc/guide/datasource/spark.html    |   48 +
 .../latest/user_doc/guide/datasource/spark.json    |    6 +
 zh-cn/docs/latest/user_doc/guide/flink-call.html   |  126 +
 zh-cn/docs/latest/user_doc/guide/flink-call.json   |    6 +
 zh-cn/docs/latest/user_doc/guide/homepage.html     |   33 +
 zh-cn/docs/latest/user_doc/guide/homepage.json     |    6 +
 .../user_doc/guide/installation/cluster.html       |   52 +
 .../user_doc/guide/installation/cluster.json       |    6 +
 .../latest/user_doc/guide/installation/docker.html |  915 ++++++
 .../latest/user_doc/guide/installation/docker.json |    6 +
 .../user_doc/guide/installation/hardware.html      |  129 +
 .../user_doc/guide/installation/hardware.json      |    6 +
 .../user_doc/guide/installation/kubernetes.html    | 1749 +++++++++++
 .../user_doc/guide/installation/kubernetes.json    |    6 +
 .../guide/installation/pseudo-cluster.html         |  201 ++
 .../guide/installation/pseudo-cluster.json         |    6 +
 .../guide/installation/skywalking-agent.html       |   77 +
 .../guide/installation/skywalking-agent.json       |    6 +
 .../user_doc/guide/installation/standalone.html    |   57 +
 .../user_doc/guide/installation/standalone.json    |    6 +
 zh-cn/docs/latest/user_doc/guide/introduction.html |   31 +
 zh-cn/docs/latest/user_doc/guide/introduction.json |    6 +
 zh-cn/docs/latest/user_doc/guide/monitor.html      |   72 +
 zh-cn/docs/latest/user_doc/guide/monitor.json      |    6 +
 zh-cn/docs/latest/user_doc/guide/open-api.html     |   93 +
 zh-cn/docs/latest/user_doc/guide/open-api.json     |    6 +
 .../latest/user_doc/guide/parameter/built-in.html  |   83 +
 .../latest/user_doc/guide/parameter/built-in.json  |    6 +
 .../latest/user_doc/guide/parameter/context.html   |   66 +
 .../latest/user_doc/guide/parameter/context.json   |    6 +
 .../latest/user_doc/guide/parameter/global.html    |   41 +
 .../latest/user_doc/guide/parameter/global.json    |    6 +
 .../latest/user_doc/guide/parameter/local.html     |   41 +
 .../latest/user_doc/guide/parameter/local.json     |    6 +
 .../latest/user_doc/guide/parameter/priority.html  |   55 +
 .../latest/user_doc/guide/parameter/priority.json  |    6 +
 zh-cn/docs/latest/user_doc/guide/project.html      |   44 +
 zh-cn/docs/latest/user_doc/guide/project.json      |    6 +
 zh-cn/docs/latest/user_doc/guide/quick-start.html  |  111 +
 zh-cn/docs/latest/user_doc/guide/quick-start.json  |    6 +
 zh-cn/docs/latest/user_doc/guide/resource.html     |  152 +
 zh-cn/docs/latest/user_doc/guide/resource.json     |    6 +
 zh-cn/docs/latest/user_doc/guide/security.html     |  213 ++
 zh-cn/docs/latest/user_doc/guide/security.json     |    6 +
 .../docs/latest/user_doc/guide/task-instance.html  |   44 +
 .../docs/latest/user_doc/guide/task-instance.json  |    6 +
 .../latest/user_doc/guide/task/conditions.html     |   64 +
 .../latest/user_doc/guide/task/conditions.json     |    6 +
 zh-cn/docs/latest/user_doc/guide/task/datax.html   |   65 +
 zh-cn/docs/latest/user_doc/guide/task/datax.json   |    6 +
 .../docs/latest/user_doc/guide/task/dependent.html |   56 +
 .../docs/latest/user_doc/guide/task/dependent.json |    6 +
 zh-cn/docs/latest/user_doc/guide/task/flink.html   |   51 +
 zh-cn/docs/latest/user_doc/guide/task/flink.json   |    6 +
 zh-cn/docs/latest/user_doc/guide/task/http.html    |   52 +
 zh-cn/docs/latest/user_doc/guide/task/http.json    |    6 +
 .../latest/user_doc/guide/task/map-reduce.html     |   62 +
 .../latest/user_doc/guide/task/map-reduce.json     |    6 +
 zh-cn/docs/latest/user_doc/guide/task/pigeon.html  |   45 +
 zh-cn/docs/latest/user_doc/guide/task/pigeon.json  |    6 +
 zh-cn/docs/latest/user_doc/guide/task/python.html  |   45 +
 zh-cn/docs/latest/user_doc/guide/task/python.json  |    6 +
 zh-cn/docs/latest/user_doc/guide/task/shell.html   |   75 +
 zh-cn/docs/latest/user_doc/guide/task/shell.json   |    6 +
 zh-cn/docs/latest/user_doc/guide/task/spark.html   |   52 +
 zh-cn/docs/latest/user_doc/guide/task/spark.json   |    6 +
 zh-cn/docs/latest/user_doc/guide/task/sql.html     |   53 +
 zh-cn/docs/latest/user_doc/guide/task/sql.json     |    6 +
 .../user_doc/guide/task/stored-procedure.html      |   44 +
 .../user_doc/guide/task/stored-procedure.json      |    6 +
 .../latest/user_doc/guide/task/sub-process.html    |   46 +
 .../latest/user_doc/guide/task/sub-process.json    |    6 +
 zh-cn/docs/latest/user_doc/guide/task/switch.html  |   61 +
 zh-cn/docs/latest/user_doc/guide/task/switch.json  |    6 +
 .../latest/user_doc/guide/workflow-definition.html |  173 ++
 .../latest/user_doc/guide/workflow-definition.json |    6 +
 .../latest/user_doc/guide/workflow-instance.html   |   89 +
 .../latest/user_doc/guide/workflow-instance.json   |    6 +
 zh-cn/docs/latest/user_doc/upgrade.html            |  128 +
 zh-cn/docs/latest/user_doc/upgrade.json            |    6 +
 zh-cn/docs/release/faq.html                        |  416 +++
 zh-cn/docs/release/faq.json                        |    6 +
 zh-cn/download/download.html                       |  208 ++
 zh-cn/download/download.json                       |    6 +
 zh-cn/download/download_ppt.html                   |  117 +
 zh-cn/download/download_ppt.json                   |    6 +
 zh-cn/index.html                                   |   30 +
 zh-cn/user/index.html                              |   30 +
 1855 files changed, 232137 insertions(+), 400 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..4e13595
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,8 @@
+# Web site staging services:
+staging:
+  profile: ~ 
+  whoami: master 
+  foo: trigger
+
+publish:
+  whoami: asf-site
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..3d90747
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,23 @@
+RedirectMatch 404 /\.htaccess
+
+<FilesMatch "\.html$">
+  FileETag None
+  Header unset ETag
+  Header unset Pragma
+  Header unset Cache-Control
+  Header set Cache-Control "no-cache, no-store, must-revalidate"
+  Header set Pragma "no-cache"
+  Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
+</FilesMatch>
+
+<IfModule mod_expires.c>
+  ExpiresActive on
+  ExpiresByType text/html                 "access plus 0 seconds"
+  ExpiresByType image/png                 "access plus 1 day"
+  ExpiresByType image/jpg                 "access plus 1 day"
+  ExpiresByType image/jpeg                "access plus 1 day"
+  ExpiresByType text/css                  "access plus 1 day"
+  ExpiresByType application/javascript    "access plus 1 day"
+  ExpiresByType application/json          "access plus 1 day"
+  ExpiresDefault                          "access plus 10 days"
+</IfModule>
\ No newline at end of file
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..108541c
--- /dev/null
+++ b/404.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>Apache DolphinScheduler is a distributed and easy-to-extend visual workflow scheduler system, dedicated to solving the complex task dependencies in data processing, making the scheduling system out of the box for data processing.</title>
+  <meta charset="UTF-8">
+  <meta name="description" content="Apache DolphinScheduler is a distributed and easy-to-extend visual workflow scheduler system, dedicated to solving the complex task dependencies in data processing, making the scheduling system out of the box for data processing.">
+  <meta name="keywords" content="Apache DolphinScheduler Official Website,dolphinscheduler.apache.org">
+  <link rel="shortcut icon" href="/img/favicon.ico">
+</head>
+<body>
+  <script src="//cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
+  <script>
+    window.rootPath = '';
+    window.defaultLanguage = 'en-us';
+    var lang = Cookies.get('docsite_language');
+    if (!lang) {
+      lang = 'en-us';
+    }
+    window.location = window.rootPath + '/' + lang;
+  </script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/asset/dolphinscheduler-netutils.jar b/asset/dolphinscheduler-netutils.jar
new file mode 100644
index 0000000..cc2fbfa
Binary files /dev/null and b/asset/dolphinscheduler-netutils.jar differ
diff --git a/build/blog.a65ca01.js b/build/blog.a65ca01.js
new file mode 100644
index 0000000..06ebd42
--- /dev/null
+++ b/build/blog.a65ca01.js
@@ -0,0 +1 @@
+webpackJsonp([2],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},400:function(e,t,n){e.exports=n(401)},401:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("functi [...]
\ No newline at end of file
diff --git a/build/blog.acc2955.css b/build/blog.acc2955.css
new file mode 100644
index 0000000..df7e89f
--- /dev/null
+++ b/build/blog.acc2955.css
@@ -0,0 +1 @@
+.page-slider{overflow:hidden}.page-slider .slider-list{overflow:visible}.page-slider .slider-list .slider-page{overflow:hidden;display:inline-block;vertical-align:top}.page-slider .slider-control{overflow:hidden}.page-slider .slider-control img{display:inline-block;width:52px;height:52px;cursor:pointer}.page-slider .slider-control .slider-control-prev{float:left}.page-slider .slider-control .slider-control-prev-hidden{display:none}.page-slider .slider-control .slider-control-next{float:r [...]
\ No newline at end of file
diff --git a/build/blog.md.6f0aa52.js b/build/blog.md.6f0aa52.js
new file mode 100644
index 0000000..44caf75
--- /dev/null
+++ b/build/blog.md.6f0aa52.js
@@ -0,0 +1 @@
+webpackJsonp([5],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},243:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new Type [...]
\ No newline at end of file
diff --git a/build/blog.md.fd8b187.css b/build/blog.md.fd8b187.css
new file mode 100644
index 0000000..9030ff0
--- /dev/null
+++ b/build/blog.md.fd8b187.css
@@ -0,0 +1 @@
+.blog-detail-page .blog-content{padding:80px 20%;margin:66px auto 0;min-width:735px}
\ No newline at end of file
diff --git a/build/community.5776767.js b/build/community.5776767.js
new file mode 100644
index 0000000..1e75250
--- /dev/null
+++ b/build/community.5776767.js
@@ -0,0 +1 @@
+webpackJsonp([3],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},411:function(e,t,n){e.exports=n(412)},412:function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("functi [...]
\ No newline at end of file
diff --git a/build/community.ee4034d.css b/build/community.ee4034d.css
new file mode 100644
index 0000000..6c7d43b
--- /dev/null
+++ b/build/community.ee4034d.css
@@ -0,0 +1 @@
+*{padding:0;margin:0}a{text-decoration:none}h1,h2,h3,h4,h5,h6{font-weight:400}.community-page .content-section{max-width:1280px;margin:0 auto;box-sizing:border-box;padding:62px 0 60px;position:relative;min-height:1100px}.community-page .content-section .doc-content{display:inline-block;vertical-align:top;box-sizing:border-box;padding:40px 6% 0;width:calc(100% - 295px)}@media screen and (max-width:640px){.community-page .content-section{padding-left:0;padding-right:20px}.community-page .c [...]
\ No newline at end of file
diff --git a/build/community.md.e1524ff.js b/build/community.md.e1524ff.js
new file mode 100644
index 0000000..60b33c4
--- /dev/null
+++ b/build/community.md.e1524ff.js
@@ -0,0 +1 @@
+webpackJsonp([8],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},408:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new Type [...]
\ No newline at end of file
diff --git a/build/development.md.fea2a50.js b/build/development.md.fea2a50.js
new file mode 100644
index 0000000..5d7fee6
--- /dev/null
+++ b/build/development.md.fea2a50.js
@@ -0,0 +1 @@
+webpackJsonp([7],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},415:function(e,t,n){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new Type [...]
\ No newline at end of file
diff --git a/build/docs.md.58e548a.js b/build/docs.md.58e548a.js
new file mode 100644
index 0000000..a4075ed
--- /dev/null
+++ b/build/docs.md.58e548a.js
@@ -0,0 +1 @@
+webpackJsonp([0],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},417:function(e,t,l){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function d(e,t){if("function"!=typeof t&&null!==t)throw new Type [...]
\ No newline at end of file
diff --git a/build/download.md.4483053.js b/build/download.md.4483053.js
new file mode 100644
index 0000000..605e145
--- /dev/null
+++ b/build/download.md.4483053.js
@@ -0,0 +1 @@
+webpackJsonp([6],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},430:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new Type [...]
\ No newline at end of file
diff --git a/build/home.1ccaa51.css b/build/home.1ccaa51.css
new file mode 100644
index 0000000..7ef7a9d
--- /dev/null
+++ b/build/home.1ccaa51.css
@@ -0,0 +1 @@
+.button{box-sizing:border-box;display:inline-block;height:48px;line-height:48px;min-width:140px;font-family:Avenir-Heavy;font-size:16px;color:#fff;text-align:center;border-radius:4px;text-decoration:none}.button-primary{background:#000f20;border:2px solid #000f20}.button-normal{background:transparent;border:2px solid #000f20;color:#000f20}*{padding:0;margin:0}a{text-decoration:none}h1,h2,h3,h4,h5,h6{font-weight:400}@keyframes slashStar{0%{opacity:1}to{opacity:0}}.home-page .top-section{p [...]
\ No newline at end of file
diff --git a/build/home.6807c8e.js b/build/home.6807c8e.js
new file mode 100644
index 0000000..3037ea6
--- /dev/null
+++ b/build/home.6807c8e.js
@@ -0,0 +1 @@
+webpackJsonp([1],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},432:function(e,t,n){e.exports=n(433)},433:function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("functi [...]
\ No newline at end of file
diff --git a/build/user.86938ae.css b/build/user.86938ae.css
new file mode 100644
index 0000000..ee14fbc
--- /dev/null
+++ b/build/user.86938ae.css
@@ -0,0 +1 @@
+*{padding:0;margin:0}a{text-decoration:none}h1,h2,h3,h4,h5,h6{font-weight:400}@keyframes slashStar{0%{opacity:1}to{opacity:0}}.user-page .top-section{position:relative}.user-page .top-section img{width:100%}.user-page .top-section .animation{position:absolute;width:6px;height:6px;border-radius:50%;background-color:#1be1f6}.user-page .top-section .animation1{left:15%;top:70%;animation:slashStar 2s ease-in-out .3s infinite}.user-page .top-section .animation2{left:34%;top:35%;animation:slas [...]
\ No newline at end of file
diff --git a/build/user.d636172.js b/build/user.d636172.js
new file mode 100644
index 0000000..a307caf
--- /dev/null
+++ b/build/user.d636172.js
@@ -0,0 +1 @@
+webpackJsonp([4],{1:function(e,t){e.exports=React},2:function(e,t){e.exports=ReactDOM},441:function(e,t,n){e.exports=n(442)},442:function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("functi [...]
\ No newline at end of file
diff --git a/build/vendor.a4fc0e8.js b/build/vendor.a4fc0e8.js
new file mode 100644
index 0000000..4990a58
--- /dev/null
+++ b/build/vendor.a4fc0e8.js
@@ -0,0 +1,150 @@
+!function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(r,a,i){for(var c,s,l,u=0,d=[];u<r.length;u++)s=r[u],o[s]&&d.push(o[s][0]),o[s]=0;for(c in a)Object.prototype.hasOwnProperty.call(a,c)&&(e[c]=a[c]);for(n&&n(r,a,i);d.length;)d.shift()();if(i)for(u=0;u<i.length;u++)l=t(t.s=i[u]);return l};var r={},o={9:0};t.m=e,t.c=r,t.d=function(e,n,r){t.o( [...]
+//! moment.js
+return si.isValid=Vt,si.abs=Cr,si.add=Pr,si.subtract=Er,si.as=Rr,si.asMilliseconds=Ia,si.asSeconds=Ua,si.asMinutes=Ba,si.asHours=qa,si.asDays=Ka,si.asWeeks=Ja,si.asMonths=Ga,si.asQuarters=Xa,si.asYears=$a,si.valueOf=Ir,si._bubble=Fr,si.clone=Br,si.get=qr,si.milliseconds=Za,si.seconds=Qa,si.minutes=ei,si.hours=ti,si.days=ni,si.weeks=Jr,si.months=ri,si.years=oi,si.humanize=Qr,si.toISOString=to,si.toString=to,si.toJSON=to,si.locale=On,si.localeData=jn,si.toIsoString=L("toIsoString() is depr [...]
+  Copyright (c) 2018 Jed Watson.
+  Licensed under the MIT License (MIT), see
+  http://jedwatson.github.io/classnames
+*/
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)){if(r.length){var i=n.apply(null,r);i&&e.push(i)}}else if("object"===o)if(r.toString===Object.prototype.toString)for(var c in r)a.call(r,c)&&r[c]&&e.push(c);else e.push(r.toString())}}return e.join(" ")}var a={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){retu [...]
+  Copyright (c) 2017 Jed Watson.
+  Licensed under the MIT License (MIT), see
+  http://jedwatson.github.io/classnames
+*/
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var i=n.apply(null,r);i&&e.push(i)}else if("object"===o)for(var c in r)a.call(r,c)&&r[c]&&e.push(c)}}return e.join(" ")}var a={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
+//! moment.js locale configuration
+var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة" [...]
+//! moment.js locale configuration
+var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d ش [...]
+//! moment.js locale configuration
+var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أق [...]
+//! moment.js locale configuration
+var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خ [...]
+//! moment.js locale configuration
+var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShor [...]
+//! moment.js locale configuration
+function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var o={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:n?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===r?n?"хвіліна":"хвіліну":"h"===r?n?"гадзіна":"гадзіну":e+" "+t(o[r],+e)}return e.defineLocale("be",{months:{ [...]
+//! moment.js locale configuration
+var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_ব [...]
+//! moment.js locale configuration
+var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বু [...]
+//! moment.js locale configuration
+var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};return e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,week [...]
+//! moment.js locale configuration
+function t(e,t,n){return e+" "+o({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){switch(r(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function r(e){return e>9?r(e%10):e}function o(e,t){return 2===t?a(e):e}function a(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}var i=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],c=/^(genver|c[ʼ\']hw [...]
+//! moment.js locale configuration
+function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2=== [...]
+//! moment.js locale configuration
+var r="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),o="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],i=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;return e.defineLocale("cs",{months:r, [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?o[n][0]:o[n][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_J [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?o[n][0]:o[n][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Jun [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?o[n][0]:o[n][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Jun [...]
+//! moment.js locale configuration
+var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];return e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މ [...]
+//! moment.js locale configuration
+function t(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typ [...]
+//! moment.js locale configuration
+var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_ju [...]
+//! moment.js locale configuration
+var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo [...]
+//! moment.js locale configuration
+var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo [...]
+//! moment.js locale configuration
+var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?o[n][2]?o[n][2]:o[n][1]:r?o[n][0]:o[n][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_ [...]
+//! moment.js locale configuration
+var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنب [...]
+//! moment.js locale configuration
+var r="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),o=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",r[7],r[8],r[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai [...]
+//! moment.js locale configuration
+var t=/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,r=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,o=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];return e.defineLocale("fr",{mon [...]
+//! moment.js locale configuration
+var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");return e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._t [...]
+//! moment.js locale configuration
+var t=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],n=["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],r=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],o=["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],a=["Do","Lu","Má","Cé","Dé","A","Sa"];return e.defineLocale("ga",{months:t,monthsShort:n,monthsParseExact:!0,weekdays: [...]
+//! moment.js locale configuration
+var t=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],n=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],r=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],o=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],a=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"];return e.defineLocale("gd",{months:t,monthsShort:n,monthsPa [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return r?o[n][0]:o[n][1]}return e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return r?o[n][0]:o[n][1]}return e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril [...]
+//! moment.js locale configuration
+var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};return e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort [...]
+//! moment.js locale configuration
+var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},r=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i],o=[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i];return e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर [...]
+//! moment.js locale configuration
+function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2=== [...]
+//! moment.js locale configuration
+var r="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_ [...]
+//! moment.js locale configuration
+function t(e){return e%100==11||e%10!=1}function n(e,n,r,o){var a=e+" ";switch(r){case"s":return n||o?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?a+(n||o?"sekúndur":"sekúndum"):a+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?a+(n||o?"mínútur":"mínútum"):n?a+"mínúta":a+"mínútu";case"hh":return t(e)?a+(n||o?"klukkustundir":"klukkustundum"):a+"klukkustund";case"d":return n?"dagur":o?"dag":"degi";case"dd":return t(e)?n?a+"dagar":a+(o?"daga":"dögum"):n?a+"da [...]
+//! moment.js locale configuration
+var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_ [...]
+//! moment.js locale configuration
+var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};return e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin [...]
+//! moment.js locale configuration
+var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};return e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekd [...]
+//! moment.js locale configuration
+var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];return e.defineLocale("ku",{months:r,monthsShort:r,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی [...]
+//! moment.js locale configuration
+var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};return e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?o[n][0]:o[n][1]}function n(e){return o(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function r(e){return o(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function o(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10,n=e/10;return o(0===t?n:t)}if(e<1e4){for(; [...]
+//! moment.js locale configuration
+var i={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_bal [...]
+//! moment.js locale configuration
+var a={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split( [...]
+//! moment.js locale configuration
+var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};return e.defineLocale("me",{months:"januar [...]
+//! moment.js locale configuration
+function t(e,t,n,r){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}return e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_ [...]
+//! moment.js locale configuration
+var n={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},r={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdays [...]
+//! moment.js locale configuration
+var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};return e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),w [...]
+//! moment.js locale configuration
+var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइ [...]
+//! moment.js locale configuration
+var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],o=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_apr [...]
+//! moment.js locale configuration
+var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],o=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_ [...]
+//! moment.js locale configuration
+var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};return e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".spli [...]
+//! moment.js locale configuration
+var r="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),o="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),a=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];return e.defineLocale("pl",{months:function(e,t){return e?/D MMMM/.test(t)?o[e.month()]:r[e.month()]:r},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_g [...]
+//! moment.js locale configuration
+function t(e,t,n){var r={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"},o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+r[n]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),wee [...]
+//! moment.js locale configuration
+function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var o={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===r?n?"минута":"минуту":e+" "+t(o[r],+e)}var r=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^ок [...]
+//! moment.js locale configuration
+var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];return e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calend [...]
+//! moment.js locale configuration
+var r="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),o="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:r,monthsShort:o,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D [...]
+//! moment.js locale configuration
+function t(e,t,n,r){var o=e+" ";switch(n){case"s":return t||r?"nekaj sekund":"nekaj sekundami";case"ss":return o+=1===e?t?"sekundo":"sekundi":2===e?t||r?"sekundi":"sekundah":e<5?t||r?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return o+=1===e?t?"minuta":"minuto":2===e?t||r?"minuti":"minutama":e<5?t||r?"minute":"minutami":t||r?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return o+=1===e?t?"ura":"uro":2===e?t||r?"uri":"urama":e<5?t| [...]
+//! moment.js locale configuration
+var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};return e.defineLocale("sr",{months:"januar_fe [...]
+//! moment.js locale configuration
+var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};return e.defineLocale("sr-cyrl",{months:"јану [...]
+//! moment.js locale configuration
+var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};return e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_ [...]
+//! moment.js locale configuration
+var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};return e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек [...]
+//! moment.js locale configuration
+var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};return e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Si [...]
+//! moment.js locale configuration
+var a="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");return e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_ [...]
+//! moment.js locale configuration
+var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_ [...]
+//! moment.js locale configuration
+function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var o={ss:n?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:n?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:n?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===r?n?"хвилина":"хвилину":"h"===r?n?"година":"годину":e+" "+t(o[r],+e)}function r(e,t){var n,r={nominative:"неділя_ [...]
+//! moment.js locale configuration
+var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];return e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar [...]
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
\ No newline at end of file
diff --git a/build/vendor.e328afe.css b/build/vendor.e328afe.css
new file mode 100644
index 0000000..935789d
--- /dev/null
+++ b/build/vendor.e328afe.css
@@ -0,0 +1 @@
+.ant-menu{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;font-variant:tabular-nums;line-height:1.5;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";margin:0;padding:0;color:rgba(0,0,0,.65);line-height:0;list-style:none;background:#fff;outline:none;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);-webkit-transition:background .3s,width .2s;transition:background .3s,width .2s;zoom:1}.ant-menu:after,.ant-menu:before{displ [...]
\ No newline at end of file
diff --git a/en-us/blog/DAG.html b/en-us/blog/DAG.html
index 0e9e8b2..f683483 100644
--- a/en-us/blog/DAG.html
+++ b/en-us/blog/DAG.html
@@ -7,7 +7,8 @@
   <meta name="description" content="DAG">
   <title>DAG</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -184,7 +185,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/DolphinScheduler Vulnerability Explanation.html b/en-us/blog/DolphinScheduler Vulnerability Explanation.html
index a1c37ef..c7de8b2 100644
--- a/en-us/blog/DolphinScheduler Vulnerability Explanation.html	
+++ b/en-us/blog/DolphinScheduler Vulnerability Explanation.html	
@@ -7,7 +7,8 @@
   <meta name="description" content="DolphinScheduler Vulnerability Explanation">
   <title>DolphinScheduler Vulnerability Explanation</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -36,7 +37,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/FAQ.html b/en-us/blog/FAQ.html
index f18bfe8..db756e6 100644
--- a/en-us/blog/FAQ.html
+++ b/en-us/blog/FAQ.html
@@ -7,7 +7,8 @@
   <meta name="description" content="FAQ">
   <title>FAQ</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -23,7 +24,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/Introducing Apache DolphinScheduler 1.3.9.html b/en-us/blog/Introducing Apache DolphinScheduler 1.3.9.html
index 359020f..38bee4a 100644
--- a/en-us/blog/Introducing Apache DolphinScheduler 1.3.9.html	
+++ b/en-us/blog/Introducing Apache DolphinScheduler 1.3.9.html	
@@ -7,7 +7,8 @@
   <meta name="description" content="Introducing Apache DolphinScheduler 1.3.9">
   <title>Introducing Apache DolphinScheduler 1.3.9</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -58,7 +59,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/Json_Split.html b/en-us/blog/Json_Split.html
index 66ee82d..aa3b6fc 100644
--- a/en-us/blog/Json_Split.html
+++ b/en-us/blog/Json_Split.html
@@ -7,7 +7,8 @@
   <meta name="description" content="Json_Split">
   <title>Json_Split</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -101,7 +102,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/architecture-design.html b/en-us/blog/architecture-design.html
index b2af459..afbb259 100644
--- a/en-us/blog/architecture-design.html
+++ b/en-us/blog/architecture-design.html
@@ -7,7 +7,8 @@
   <meta name="description" content="architecture-design">
   <title>architecture-design</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -291,7 +292,8 @@ Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span cl
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/index.html b/en-us/blog/index.html
new file mode 100644
index 0000000..a969418
--- /dev/null
+++ b/en-us/blog/index.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="blog,DolphinScheduler blog">
+  <meta name="description" content="page description">
+  <title>Apache DolphinScheduler | BLOG</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.acc2955.css">
+</head>
+<body>
+  <div id="root"><div class="blog-list-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-light [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.a65ca01.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/meetup_2019_10_26.html b/en-us/blog/meetup_2019_10_26.html
index d46dc0c..f7ed0b9 100644
--- a/en-us/blog/meetup_2019_10_26.html
+++ b/en-us/blog/meetup_2019_10_26.html
@@ -7,7 +7,8 @@
   <meta name="description" content="meetup_2019_10_26">
   <title>meetup_2019_10_26</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -27,7 +28,8 @@ Apache Dolphin Scheduler(Incubating) Meetup has been held successfully in Shangh
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/blog/meetup_2019_12_08.html b/en-us/blog/meetup_2019_12_08.html
index 91a8147..880cdf4 100644
--- a/en-us/blog/meetup_2019_12_08.html
+++ b/en-us/blog/meetup_2019_12_08.html
@@ -7,7 +7,8 @@
   <meta name="description" content="meetup_2019_12_08">
   <title>meetup_2019_12_08</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/blog.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/blog.md.fd8b187.css">
 </head>
 <body>
   <div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-lig [...]
@@ -38,7 +39,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/blog.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/blog.md.6f0aa52.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/DS-License.html b/en-us/community/development/DS-License.html
index 50ac2c4..cb35523 100644
--- a/en-us/community/development/DS-License.html
+++ b/en-us/community/development/DS-License.html
@@ -7,7 +7,7 @@
   <meta name="description" content="DS-License">
   <title>DS-License</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -43,7 +43,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/api-standard.html b/en-us/community/development/api-standard.html
index f2d76bb..6062196 100644
--- a/en-us/community/development/api-standard.html
+++ b/en-us/community/development/api-standard.html
@@ -7,7 +7,7 @@
   <meta name="description" content="api-standard">
   <title>api-standard</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -100,7 +100,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/become-a-committer.html b/en-us/community/development/become-a-committer.html
index a716794..e8123d3 100644
--- a/en-us/community/development/become-a-committer.html
+++ b/en-us/community/development/become-a-committer.html
@@ -7,7 +7,7 @@
   <meta name="description" content="become-a-committer">
   <title>become-a-committer</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -20,7 +20,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/code-conduct.html b/en-us/community/development/code-conduct.html
index 9d2e7cd..4c5c834 100644
--- a/en-us/community/development/code-conduct.html
+++ b/en-us/community/development/code-conduct.html
@@ -7,7 +7,7 @@
   <meta name="description" content="code-conduct">
   <title>code-conduct</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -113,7 +113,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/commit-message.html b/en-us/community/development/commit-message.html
index f24db1f..d68bd98 100644
--- a/en-us/community/development/commit-message.html
+++ b/en-us/community/development/commit-message.html
@@ -7,7 +7,7 @@
   <meta name="description" content="commit-message">
   <title>commit-message</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -79,7 +79,8 @@ This closes #001
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/contribute.html b/en-us/community/development/contribute.html
index 79533a6..86dd5c4 100644
--- a/en-us/community/development/contribute.html
+++ b/en-us/community/development/contribute.html
@@ -7,7 +7,7 @@
   <meta name="description" content="contribute">
   <title>contribute</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -47,7 +47,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/document.html b/en-us/community/development/document.html
index 7b00a0d..40c4558 100644
--- a/en-us/community/development/document.html
+++ b/en-us/community/development/document.html
@@ -7,7 +7,7 @@
   <meta name="description" content="document">
   <title>document</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -79,7 +79,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/issue.html b/en-us/community/development/issue.html
index 6fae519..53cea24 100644
--- a/en-us/community/development/issue.html
+++ b/en-us/community/development/issue.html
@@ -7,7 +7,7 @@
   <meta name="description" content="issue">
   <title>issue</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -134,7 +134,8 @@ or leave a message to the user who raises the issue to modify it into the corres
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/microbench.html b/en-us/community/development/microbench.html
index 0f80ff4..296a506 100644
--- a/en-us/community/development/microbench.html
+++ b/en-us/community/development/microbench.html
@@ -7,7 +7,7 @@
   <meta name="description" content="microbench">
   <title>microbench</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -97,7 +97,8 @@ EnumBenchMark.enumValuesTest           <span class="hljs-number">103</span>   av
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/pull-request.html b/en-us/community/development/pull-request.html
index 4dd15e9..4332b97 100644
--- a/en-us/community/development/pull-request.html
+++ b/en-us/community/development/pull-request.html
@@ -7,7 +7,7 @@
   <meta name="description" content="pull-request">
   <title>pull-request</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -96,7 +96,8 @@ And each Pull Request is submitted should be associated with only one issue of a
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/submit-code.html b/en-us/community/development/submit-code.html
index ddb1897..51dcb40 100644
--- a/en-us/community/development/submit-code.html
+++ b/en-us/community/development/submit-code.html
@@ -7,7 +7,7 @@
   <meta name="description" content="submit-code">
   <title>submit-code</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -90,7 +90,8 @@ git push --set-upstream origin dev-1.0
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/development/subscribe.html b/en-us/community/development/subscribe.html
index 363f0d6..65a3492 100644
--- a/en-us/community/development/subscribe.html
+++ b/en-us/community/development/subscribe.html
@@ -7,7 +7,7 @@
   <meta name="description" content="subscribe">
   <title>subscribe</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -28,7 +28,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/index.html b/en-us/community/index.html
new file mode 100644
index 0000000..6d00dda
--- /dev/null
+++ b/en-us/community/index.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="DolphinScheduler, News,Events">
+  <meta name="description" content="page description">
+  <title>Apache DolphinScheduler | Community</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+  <link rel="stylesheet" href="/build/community.ee4034d.css">
+</head>
+<body>
+  <div id="root"><div class="community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-light [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.5776767.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/community/release-post.html b/en-us/community/release-post.html
index e369163..fa6d5a8 100644
--- a/en-us/community/release-post.html
+++ b/en-us/community/release-post.html
@@ -7,7 +7,7 @@
   <meta name="description" content="release-post">
   <title>release-post</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -52,7 +52,8 @@ docker push apache/dolphinscheduler:latest
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/release-prepare.html b/en-us/community/release-prepare.html
index 2324a6f..d4e3669 100644
--- a/en-us/community/release-prepare.html
+++ b/en-us/community/release-prepare.html
@@ -7,7 +7,7 @@
   <meta name="description" content="release-prepare">
   <title>release-prepare</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -55,7 +55,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/release.html b/en-us/community/release.html
index 9366f34..43e0841 100644
--- a/en-us/community/release.html
+++ b/en-us/community/release.html
@@ -7,7 +7,7 @@
   <meta name="description" content="release">
   <title>release</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -352,7 +352,8 @@ DolphinScheduler Resources:
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/security.html b/en-us/community/security.html
index fee4a71..4165df5 100644
--- a/en-us/community/security.html
+++ b/en-us/community/security.html
@@ -7,7 +7,7 @@
   <meta name="description" content="security">
   <title>security</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -18,7 +18,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/community/team.html b/en-us/community/team.html
index 188b25c..31906fa 100644
--- a/en-us/community/team.html
+++ b/en-us/community/team.html
@@ -7,7 +7,7 @@
   <meta name="description" content="team">
   <title>team</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/community.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-me [...]
@@ -216,7 +216,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/community.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/community.md.e1524ff.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/architecture-design.html b/en-us/development/architecture-design.html
index 150eb92..39fb9b6 100644
--- a/en-us/development/architecture-design.html
+++ b/en-us/development/architecture-design.html
@@ -7,7 +7,7 @@
   <meta name="description" content="architecture-design">
   <title>architecture-design</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -291,7 +291,8 @@ Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span cl
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/mechanism/global-parameter.html b/en-us/development/backend/mechanism/global-parameter.html
index 57ad42d..f4a35cc 100644
--- a/en-us/development/backend/mechanism/global-parameter.html
+++ b/en-us/development/backend/mechanism/global-parameter.html
@@ -7,7 +7,7 @@
   <meta name="description" content="global-parameter">
   <title>global-parameter</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -60,7 +60,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/mechanism/overview.html b/en-us/development/backend/mechanism/overview.html
index 2926aa9..8ee3bcd 100644
--- a/en-us/development/backend/mechanism/overview.html
+++ b/en-us/development/backend/mechanism/overview.html
@@ -7,7 +7,7 @@
   <meta name="description" content="overview">
   <title>overview</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -20,7 +20,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/mechanism/task/switch.html b/en-us/development/backend/mechanism/task/switch.html
index 21fad34..1f94192 100644
--- a/en-us/development/backend/mechanism/task/switch.html
+++ b/en-us/development/backend/mechanism/task/switch.html
@@ -7,7 +7,7 @@
   <meta name="description" content="switch">
   <title>switch</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -22,7 +22,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/spi/alert.html b/en-us/development/backend/spi/alert.html
index 1d24617..83e1f01 100644
--- a/en-us/development/backend/spi/alert.html
+++ b/en-us/development/backend/spi/alert.html
@@ -7,7 +7,7 @@
   <meta name="description" content="alert">
   <title>alert</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -91,7 +91,8 @@ This package contains the plug-in parameter definitions. We use alpacajs, a fron
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/spi/plugin.html b/en-us/development/backend/spi/plugin.html
index b191c5b..c38994a 100644
--- a/en-us/development/backend/spi/plugin.html
+++ b/en-us/development/backend/spi/plugin.html
@@ -7,7 +7,7 @@
   <meta name="description" content="plugin">
   <title>plugin</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -68,7 +68,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/spi/registry.html b/en-us/development/backend/spi/registry.html
index 898880f..0fe0f28 100644
--- a/en-us/development/backend/spi/registry.html
+++ b/en-us/development/backend/spi/registry.html
@@ -7,7 +7,7 @@
   <meta name="description" content="registry">
   <title>registry</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -56,7 +56,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/backend/spi/task.html b/en-us/development/backend/spi/task.html
index 8a46ebc..65a0d50 100644
--- a/en-us/development/backend/spi/task.html
+++ b/en-us/development/backend/spi/task.html
@@ -7,7 +7,7 @@
   <meta name="description" content="task">
   <title>task</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -34,7 +34,8 @@ task.plugin.binding=./dolphinscheduler-task-plugin/dolphinscheduler-task-shell/p
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/development-environment-setup.html b/en-us/development/development-environment-setup.html
index 24fe0a0..b748b48 100644
--- a/en-us/development/development-environment-setup.html
+++ b/en-us/development/development-environment-setup.html
@@ -7,7 +7,7 @@
   <meta name="description" content="development-environment-setup">
   <title>development-environment-setup</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -149,7 +149,8 @@ npm run start
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/frontend-development.html b/en-us/development/frontend-development.html
index 6ef6f71..ec105f5 100644
--- a/en-us/development/frontend-development.html
+++ b/en-us/development/frontend-development.html
@@ -7,7 +7,7 @@
   <meta name="description" content="frontend-development">
   <title>frontend-development</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -514,7 +514,8 @@ Interface parameter transfer needs to be changed to the following way</p>
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/development/have-questions.html b/en-us/development/have-questions.html
index 70ee00b..d30bc4f 100644
--- a/en-us/development/have-questions.html
+++ b/en-us/development/have-questions.html
@@ -7,7 +7,7 @@
   <meta name="description" content="have-questions">
   <title>have-questions</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
   <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
@@ -73,7 +73,8 @@
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/development.md.fea2a50.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/docs/1.2.0/user_doc/backend-deployment.html b/en-us/docs/1.2.0/user_doc/backend-deployment.html
new file mode 100644
index 0000000..f0a73f2
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/backend-deployment.html
@@ -0,0 +1,259 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="backend-deployment">
+  <meta name="description" content="backend-deployment">
+  <title>backend-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>There are two deployment modes for the backend:</p>
+<ul>
+<li>automatic deployment</li>
+<li>source code compile and then deployment</li>
+</ul>
+<h2>Preparations</h2>
+<p>Download the latest version of the installation package, download address:  <a href="/en-us/download/download.html">download</a>,
+download apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-backend-bin.tar.gz</p>
+<h4>Preparations 1: Installation of basic software (self-installation of required items)</h4>
+<ul>
+<li>PostgreSQL (8.2.15+) or MySQL (5.5+) : You can choose either PostgreSQL or MySQL.</li>
+<li>JDK (1.8+) : Mandatory</li>
+<li>ZooKeeper(3.4.6+) : Mandatory</li>
+<li>pstree or psmisc : &quot;pstree&quot; is required for Mac OS and &quot;psmisc&quot; is required for Fedora/Red/Hat/CentOS/Ubuntu/Debian</li>
+<li>Hadoop (2.6+) or MinIo : Optional, if you need to use the resource upload function, You can choose either Hadoop or MinIo.</li>
+<li>Hive (1.2.1) : Optional, hive task submission needs to be installed</li>
+<li>Spark(1.x,2.x) : Optional, Spark task submission needs to be installed</li>
+</ul>
+<pre><code> Note: DolphinScheduler itself does not rely on Hadoop, Hive, Spark, PostgreSQL, but only calls their Client to run the corresponding tasks.
+</code></pre>
+<h4>Preparations 2: Create deployment users</h4>
+<ul>
+<li>Deployment users are created on all machines that require deployment scheduling, because the worker service executes jobs in <code>sudo-u {linux-user}</code>, so deployment users need sudo privileges and are confidential.</li>
+</ul>
+<pre><code>vi /etc/sudoers
+
+# For example, the deployment user is an dolphinscheduler account
+dolphinscheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
+
+# And you need to comment out the Default requiretty line
+#Default requiretty
+</code></pre>
+<h4>Preparations 3: SSH Secret-Free Configuration</h4>
+<p>Configure SSH secret-free login on deployment machines and other installation machines. If you want to install dolphinscheduler on deployment machines, you need to configure native password-free login itself.</p>
+<ul>
+<li>Connect the host and other machines SSH</li>
+</ul>
+<h4>Preparations 4: database initialization</h4>
+<ul>
+<li>
+<p>Create databases and accounts</p>
+<p>Execute the following command to create database and account</p>
+<pre><code>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
+GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
+flush privileges;
+</code></pre>
+</li>
+<li>
+<p>creates tables and imports basic data
+Modify the following attributes in ./conf/application-dao.properties</p>
+<pre><code>    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+</code></pre>
+<p>Execute scripts for creating tables and importing basic data</p>
+<pre><code>sh ./script/create-dolphinscheduler.sh
+</code></pre>
+</li>
+</ul>
+<h4>Preparations 5: Modify the deployment directory permissions and operation parameters</h4>
+<pre><code> instruction of dolphinscheduler-backend directory 
+</code></pre>
+<pre><code class="language-directory">bin : Basic service startup script
+DISCLAIMER-WIP : DISCLAIMER-WIP
+conf : Project Profile
+lib : The project relies on jar packages, including individual module jars and third-party jars
+LICENSE : LICENSE
+licenses : licenses
+NOTICE : NOTICE
+script :  Cluster Start, Stop and Service Monitor Start and Stop scripts
+sql : The project relies on SQL files
+install.sh :  One-click deployment script
+</code></pre>
+<ul>
+<li>
+<p>Modify permissions (please modify the 'deployUser' to the corresponding deployment user) so that the deployment user has operational privileges on the dolphinscheduler-backend directory</p>
+<p><code>sudo chown -R deployUser:deployUser dolphinscheduler-backend</code></p>
+</li>
+<li>
+<p>Modify the <code>.dolphinscheduler_env.sh</code> environment variable in the conf/env/directory</p>
+</li>
+<li>
+<p>Modify deployment parameters (depending on your server and business situation):</p>
+</li>
+<li>
+<p>Modify the parameters in <code>install.sh</code> to replace the values required by your business</p>
+<ul>
+<li>MonitorServerState switch variable, added in version 1.0.3, controls whether to start the self-start script (monitor master, worker status, if off-line will start automatically). The default value of &quot;false&quot; means that the self-start script is not started, and if it needs to start, it is changed to &quot;true&quot;.</li>
+<li>'hdfsStartupSate' switch variable controls whether to start hdfs
+The default value of &quot;false&quot; means not to start hdfs
+Change the variable to 'true' if you want to use hdfs, you also need to create the hdfs root path by yourself, that 'hdfsPath' in <a href="http://install.sh">install.sh</a>.</li>
+</ul>
+</li>
+<li>
+<p>If you use hdfs-related functions, you need to copy<strong>hdfs-site.xml</strong> and <strong>core-site.xml</strong> to the conf directory</p>
+</li>
+</ul>
+<h2>Deployment</h2>
+<p>Either of the following two methods can be deployed,binary file deployment is recommended, and experienced partners can use source deployment as well.</p>
+<h3>Binary file Deployment</h3>
+<ul>
+<li>
+<p>Install ZooKeeper tools</p>
+<p><code>pip install kazoo</code></p>
+</li>
+<li>
+<p>Switch to deployment user, one-click deployment</p>
+<p><code>sh install.sh</code></p>
+</li>
+<li>
+<p>Use the <code>jps</code> command to check if the services are started (<code>jps</code> comes from <code>Java JDK</code>)</p>
+</li>
+</ul>
+<pre><code class="language-aidl">    MasterServer         ----- Master Service
+    WorkerServer         ----- Worker Service
+    LoggerServer         ----- Logger Service
+    ApiApplicationServer ----- API Service
+    AlertServer          ----- Alert Service
+</code></pre>
+<p>If all services are normal, the automatic deployment is successful</p>
+<p>After successful deployment, the log can be viewed and stored in a specified folder.</p>
+<pre><code class="language-logPath"> logs/
+    ├── dolphinscheduler-alert-server.log
+    ├── dolphinscheduler-master-server.log
+    |—— dolphinscheduler-worker-server.log
+    |—— dolphinscheduler-api-server.log
+    |—— dolphinscheduler-logger-server.log
+</code></pre>
+<h3>Compile source code to deploy</h3>
+<p>After downloading the release version of the source package, uncompress it into the root directory</p>
+<ul>
+<li>
+<p>Build a tar package</p>
+<p>Execute the compilation command:</p>
+<pre><code> mvn -U clean package -Prelease -Dmaven.test.skip=true
+</code></pre>
+<p>View directory</p>
+<p>After normal compilation, <code>apache-dolphinscheduler-incubating-${latest.release.version}-dolphinscheduler-backend-bin.tar.gz</code>
+is generated in the <code>./dolphinscheduler-dist/dolphinscheduler-backend/target</code> directory</p>
+</li>
+<li>
+<p>OR build a rpm package</p>
+<p>The rpm package can be installed on the Linux platform using the rpm command or yum. The rpm package can be used to help Dolphinscheduler better integrate with other management tools, such as ambari, cloudera manager.</p>
+<p>Execute the compilation command:</p>
+<pre><code> mvn -U clean package -Prpmbuild -Dmaven.test.skip=true
+</code></pre>
+<p>View directory</p>
+<p>After normal compilation, <code>apache-dolphinscheduler-incubating-${latest.release.version}-1.noarch.rpm</code>
+is generated in the <code>./dolphinscheduler-dist/target/rpm/apache-dolphinscheduler-incubating/RPMS/noarch/</code> directory</p>
+</li>
+<li>
+<p>Decompress the compiled tar.gz package or use the rpm command to install (the rpm installation method will install dolphinscheduler in the /opt/soft directory) . The dolphinscheduler directory structure is like this:</p>
+<pre><code> ../
+    ├── bin
+    ├── conf
+    |── DISCLAIMER
+    |—— install.sh
+    |—— lib
+    |—— LICENSE
+    |—— licenses
+    |—— NOTICE
+    |—— script
+    |—— sql
+</code></pre>
+</li>
+</ul>
+<ul>
+<li>
+<p>Install ZooKeeper tools</p>
+<p><code>pip install kazoo</code></p>
+</li>
+<li>
+<p>Switch to deployment user, one-click deployment</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<h3>Start-and-stop services commonly used in systems (for service purposes, please refer to System Architecture Design for details)</h3>
+<ul>
+<li>
+<p>stop all services in the cluster</p>
+<p><code>sh ./bin/stop-all.sh</code></p>
+</li>
+<li>
+<p>start all services in the cluster</p>
+<p><code>sh ./bin/start-all.sh</code></p>
+</li>
+<li>
+<p>start and stop one master server</p>
+</li>
+</ul>
+<pre><code class="language-master">sh ./bin/dolphinscheduler-daemon.sh start master-server
+sh ./bin/dolphinscheduler-daemon.sh stop master-server
+</code></pre>
+<ul>
+<li>start and stop one worker server</li>
+</ul>
+<pre><code class="language-worker">sh ./bin/dolphinscheduler-daemon.sh start worker-server
+sh ./bin/dolphinscheduler-daemon.sh stop worker-server
+</code></pre>
+<ul>
+<li>start and stop api server</li>
+</ul>
+<pre><code class="language-Api">sh ./bin/dolphinscheduler-daemon.sh start api-server
+sh ./bin/dolphinscheduler-daemon.sh stop api-server
+</code></pre>
+<ul>
+<li>start and stop logger server</li>
+</ul>
+<pre><code class="language-Logger">sh ./bin/dolphinscheduler-daemon.sh start logger-server
+sh ./bin/dolphinscheduler-daemon.sh stop logger-server
+</code></pre>
+<ul>
+<li>start and stop alert server</li>
+</ul>
+<pre><code class="language-Alert">sh ./bin/dolphinscheduler-daemon.sh start alert-server
+sh ./bin/dolphinscheduler-daemon.sh stop alert-server
+</code></pre>
+<h2>Database Upgrade</h2>
+<p>Modify the following properties in ./conf/application-dao.properties</p>
+<pre><code>```
+    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+```
+</code></pre>
+<p>The database can be upgraded automatically by executing the following command:</p>
+<pre><code class="language-upgrade">sh ./script/upgrade-dolphinscheduler.sh
+</code></pre>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/cluster-deployment.html b/en-us/docs/1.2.0/user_doc/cluster-deployment.html
new file mode 100644
index 0000000..e6381b4
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/cluster-deployment.html
@@ -0,0 +1,482 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="cluster-deployment">
+  <meta name="description" content="cluster-deployment">
+  <title>cluster-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>DolphinScheduler Cluster deployment is divided into two parts: backend deployment and frontend deployment.</p>
+<h1>1、Backend Deployment</h1>
+<h3>1.1: Before you begin (please install requirement basic software by yourself)</h3>
+<ul>
+<li>PostgreSQL (8.2.15+) or MySQL (5.7) : Choose One</li>
+<li><a href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK</a> (1.8+) : Required. Double-check configure JAVA_HOME and PATH environment variables in /etc/profile</li>
+<li>ZooKeeper (3.4.6+) : Required</li>
+<li>pstree or psmisc : &quot;pstree&quot; is required for Mac OS and &quot;psmisc&quot; is required for Fedora/Red/Hat/CentOS/Ubuntu/Debian</li>
+<li>Hadoop (2.6+) or MinIO : Optional. If you need to upload a resource function, you can choose a local file directory as the upload folder for a single machine (this operation does not need to deploy Hadoop). Of course, you can also choose to upload to Hadoop or MinIO.</li>
+</ul>
+<pre><code class="language-markdown"> Tips: DolphinScheduler itself does not rely on Hadoop, Hive, Spark, only use their clients for the corresponding task of running.
+</code></pre>
+<h3>1.2: Download the backend package.</h3>
+<ul>
+<li>Please download the latest version of the default installation package to the server deployment directory. For example, use /opt/dolphinscheduler as the installation and deployment directory. Download address: <a href="/en-us/download/download.html">Download</a> (Take 1.2.0 for an example). Download the package and move to the installation and deployment directory. Then uncompress it.</li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Create the deployment directory. Do not choose a deployment directory with a high-privilege directory such as / root or / home.</span>
+mkdir -p /opt/dolphinscheduler;
+cd /opt/dolphinscheduler;
+<span class="hljs-meta">#</span><span class="bash"> uncompress</span>
+tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz -C /opt/dolphinscheduler;
+
+mv apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin  dolphinscheduler-backend
+</code></pre>
+<h3>1.3:Create deployment user and hosts mapping</h3>
+<ul>
+<li>Create a deployment user on the ** all ** deployment machines, and be sure to configure sudo passwordless. If we plan to deploy DolphinScheduler on 4 machines: ds1, ds2, ds3, and ds4, we first need to create a deployment user on each machine.</li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> To create a user, you need to <span class="hljs-built_in">log</span> <span class="hljs-keyword">in</span> as root and <span class="hljs-built_in">set</span> the deployment user name. Please modify it yourself. The following uses dolphinscheduler as an example.</span>
+useradd dolphinscheduler;
+<span class="hljs-meta">
+#</span><span class="bash"> Set the user password, please modify it yourself. The following takes dolphinscheduler123 as an example.</span>
+echo &quot;dolphinscheduler123&quot; | passwd --stdin dolphinscheduler
+<span class="hljs-meta">
+#</span><span class="bash"> Configure sudo passwordless</span>
+echo &#x27;dolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL&#x27; &gt;&gt; /etc/sudoers
+sed -i &#x27;s/Defaults    requirett/#Defaults    requirett/g&#x27; /etc/sudoers
+</code></pre>
+<pre><code> Notes:
+ - Because the task execution service is based on 'sudo -u {linux-user}' to switch between different Linux users to implement multi-tenant running jobs, the deployment user needs to have sudo permissions and is passwordless. The first-time learners who can ignore it if they don't understand.
+ - If find the &quot;Default requiretty&quot; in the &quot;/etc/sudoers&quot; file, also comment out.
+ - If you need to use resource upload, you need to assign the user of permission to operate the local file system, HDFS or MinIO.
+</code></pre>
+<h3>1.4 : Configure hosts mapping and ssh access and modify directory permissions.</h3>
+<ul>
+<li>
+<p>Use the first machine (hostname is ds1) as the deployment machine, configure the hosts of all machines to be deployed on ds1, and login as root on ds1.</p>
+<pre><code class="language-shell">vi /etc/hosts
+<span class="hljs-meta">
+#</span><span class="bash"> add ip hostname</span>
+192.168.xxx.xxx ds1
+192.168.xxx.xxx ds2
+192.168.xxx.xxx ds3
+192.168.xxx.xxx ds4
+</code></pre>
+<p><em>Note: Please delete or comment out the line 127.0.0.1</em></p>
+</li>
+<li>
+<p>Sync /etc/hosts on ds1 to all deployment machines</p>
+<pre><code class="language-shell">for ip in ds2 ds3;     # Please replace ds2 ds3 here with the hostname of machines you want to deploy
+do
+    sudo scp -r /etc/hosts  $ip:/etc/          # Need to enter root password during operation
+done
+</code></pre>
+<p><em>Note: can use <code>sshpass -p xxx sudo scp -r /etc/hosts $ip:/etc/</code> to avoid type password.</em></p>
+<blockquote>
+<p>Install sshpass in Centos:</p>
+<ol>
+<li>
+<p>Install epel</p>
+<p>yum install -y epel-release</p>
+<p>yum repolist</p>
+</li>
+<li>
+<p>After installing epel, you can install sshpass</p>
+<p>yum install -y sshpass</p>
+</li>
+</ol>
+</blockquote>
+</li>
+<li>
+<p>On ds1, switch to the deployment user and configure ssh passwordless login</p>
+<pre><code class="language-shell">su dolphinscheduler;
+
+ssh-keygen -t rsa -P &#x27;&#x27; -f ~/.ssh/id_rsa
+cat ~/.ssh/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys
+chmod 600 ~/.ssh/authorized_keys
+</code></pre>
+<p>Note: <em>If configure success, the dolphinscheduler user does not need to enter a password when executing the command <code>ssh localhost</code></em></p>
+</li>
+<li>
+<p>On ds1, configure the deployment user dolphinscheduler ssh to connect to other machines to be deployed.</p>
+<pre><code class="language-shell">su dolphinscheduler;
+for ip in ds2 ds3;     # Please replace ds2 ds3 here with the hostname of the machine you want to deploy.
+do
+    ssh-copy-id  $ip   # You need to manually enter the password of the dolphinscheduler user during the operation.
+done
+<span class="hljs-meta">#</span><span class="bash"> can use `sshpass -p xxx ssh-copy-id <span class="hljs-variable">$ip</span>` to avoid <span class="hljs-built_in">type</span> password.</span>
+</code></pre>
+</li>
+<li>
+<p>On ds1, modify the directory permissions so that the deployment user has operation permissions on the dolphinscheduler-backend directory.</p>
+<pre><code class="language-shell">sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-backend
+</code></pre>
+</li>
+</ul>
+<h3>1.5: Database initialization</h3>
+<ul>
+<li>Into the database. The default database is PostgreSQL. If you select MySQL, you need to add the mysql-connector-java driver package to the lib directory of DolphinScheduler.</li>
+</ul>
+<pre><code>mysql -uroot -p
+</code></pre>
+<ul>
+<li>After entering the database command line window, execute the database initialization command and set the user and password. <strong>Note: {user} and {password} need to be replaced with a specific database username and password</strong></li>
+</ul>
+<pre><code class="language-mysql">   mysql&gt; CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+   mysql&gt; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO &#x27;{user}&#x27;@&#x27;%&#x27; IDENTIFIED BY &#x27;{password}&#x27;;
+   mysql&gt; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO &#x27;{user}&#x27;@&#x27;localhost&#x27; IDENTIFIED BY &#x27;{password}&#x27;;
+   mysql&gt; flush privileges;
+</code></pre>
+<ul>
+<li>
+<p>Create tables and import basic data</p>
+<ul>
+<li>Modify the following configuration in application-dao.properties under the conf directory</li>
+</ul>
+<pre><code class="language-shell">  vi conf/application-dao.properties 
+</code></pre>
+<ul>
+<li>If you choose Mysql, please comment out the relevant configuration of PostgreSQL (vice versa), you also need to manually add the [[mysql-connector-java driver jar] (<a href="https://downloads.mysql.com/archives/c-j/">https://downloads.mysql.com/archives/c-j/</a>)] package to lib under the directory, and then configure the database connection information correctly.</li>
+</ul>
+<pre><code class="language-properties"><span class="hljs-comment">  #postgre</span>
+<span class="hljs-comment">  #spring.datasource.driver-class-name=org.postgresql.Driver</span>
+<span class="hljs-comment">  #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler</span>
+<span class="hljs-comment">  # mysql</span>
+  <span class="hljs-meta">spring.datasource.driver-class-name</span>=<span class="hljs-string">com.mysql.jdbc.Driver</span>
+  <span class="hljs-meta">spring.datasource.url</span>=<span class="hljs-string">jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&amp;characterEncoding=UTF-8  # Replace the correct IP address</span>
+  <span class="hljs-meta">spring.datasource.username</span>=<span class="hljs-string">xxx						# replace the currect {user} value</span>
+  <span class="hljs-meta">spring.datasource.password</span>=<span class="hljs-string">xxx						# replace the currect {password} value</span>
+</code></pre>
+<ul>
+<li>After modifying and saving, execute the create table and import data script in the script directory.</li>
+</ul>
+<pre><code class="language-shell">sh script/create-dolphinscheduler.sh
+</code></pre>
+</li>
+</ul>
+<p>​       <em>Note: If you execute the above script and report &quot;/bin/java: No such file or directory&quot; error, please configure JAVA_HOME and PATH variables in /etc/profile</em></p>
+<h3>1.6: Modify runtime parameters.</h3>
+<ul>
+<li>
+<p>Modify the environment variable in <code>.dolphinscheduler_env.sh</code> file which on the 'conf/env' directory (take the relevant software installed under '/opt/soft' as an example)</p>
+<pre><code class="language-shell">export HADOOP_HOME=/opt/soft/hadoop
+export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
+<span class="hljs-meta">#</span><span class="bash"><span class="hljs-built_in">export</span> SPARK_HOME1=/opt/soft/spark1</span>
+export SPARK_HOME2=/opt/soft/spark2
+export PYTHON_HOME=/opt/soft/python
+export JAVA_HOME=/opt/soft/java
+export HIVE_HOME=/opt/soft/hive
+export FLINK_HOME=/opt/soft/flink
+export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH
+</code></pre>
+<pre><code>`Note: This step is very important. For example, JAVA_HOME and PATH must be configured. Those that are not used can be ignored or commented out. If &quot;.dolphinscheduler_env.sh&quot; cannot be found, run &quot;ls -a&quot;`
+</code></pre>
+</li>
+<li>
+<p>Create Soft link jdk to /usr/bin/java (still JAVA_HOME=/opt/soft/java as an example)</p>
+<pre><code class="language-shell">sudo ln -s /opt/soft/java/bin/java /usr/bin/java
+</code></pre>
+</li>
+<li>
+<p>Modify the parameters in the one-click deployment script <code>install.sh</code>, pay special attention to the configuration of the following parameters.</p>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Choose mysql or postgresql</span>
+dbtype=&quot;mysql&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database connection address</span>
+dbhost=&quot;192.168.xx.xx:3306&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database schema name</span>
+dbname=&quot;dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database username</span>
+username=&quot;xxx&quot;    
+<span class="hljs-meta">
+#</span><span class="bash"> Database password, <span class="hljs-keyword">if</span> there are special characters, please use <span class="hljs-string">&#x27;\&#x27;</span> escape, you need to modify the specific value of {passowrd} <span class="hljs-built_in">set</span> above</span>
+passowrd=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> The directory <span class="hljs-built_in">where</span> DS is installed, such as: <span class="hljs-string">&#x27;/opt/soft/dolphinscheduler&#x27;</span>, <span class="hljs-built_in">which</span> is different from the current directory.</span>
+installPath=&quot;/opt/soft/dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> The system user created <span class="hljs-keyword">in</span> section 1.3.</span>
+deployUser=&quot;dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Zookeeper cluster address</span>
+zkQuorum=&quot;192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machines <span class="hljs-built_in">which</span> the DS service is deployed</span>
+ips=&quot;ds1,ds2,ds3,ds4&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machines <span class="hljs-built_in">which</span> the master service is deployed</span>
+masters=&quot;ds1,ds2&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machines <span class="hljs-built_in">which</span> the worker service is deployed</span>
+workers=&quot;ds3,ds4&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machines <span class="hljs-built_in">which</span> the alert service is deployed</span>
+alertServer=&quot;ds2&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machines <span class="hljs-built_in">which</span> the api service is deployed</span>
+apiServers=&quot;ds1&quot;
+<span class="hljs-meta">
+
+#</span><span class="bash"> EMail configuration, taking QQ mailbox as an example</span>
+<span class="hljs-meta">#</span><span class="bash"> EMail protocol</span>
+mailProtocol=&quot;SMTP&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> EMail server address</span>
+mailServerHost=&quot;smtp.exmail.qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> EMail server Port</span>
+mailServerPort=&quot;25&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mailSender and mailUser can be the same one.</span>
+<span class="hljs-meta">#</span><span class="bash"> Sender</span>
+mailSender=&quot;xxx@qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Receiver</span>
+mailUser=&quot;xxx@qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> EMail password</span>
+mailPassword=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Set <span class="hljs-literal">true</span> <span class="hljs-keyword">if</span> the mailbox is TLS protocol, otherwise <span class="hljs-built_in">set</span> to <span class="hljs-literal">false</span>.</span>
+starttlsEnable=&quot;true&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Mail service address value, refer to mailServerHost above.</span>
+sslTrust=&quot;smtp.exmail.qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Set <span class="hljs-literal">true</span> <span class="hljs-keyword">if</span> the mailbox is SSL protocol, otherwise <span class="hljs-built_in">set</span> to <span class="hljs-literal">false</span>. Note: starttlsEnable and sslEnable cannot be <span class="hljs-literal">true</span> at the same time.</span>
+sslEnable=&quot;false&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Download path of excel</span>
+xlsFilePath=&quot;/tmp/xls&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Where are some sql and other resource files used <span class="hljs-keyword">for</span> business uploaded. Can be <span class="hljs-built_in">set</span>: HDFS, S3, NONE. If a standalone wants to use the <span class="hljs-built_in">local</span> file system, please configure it as HDFS, because HDFS supports the <span class="hljs-built_in">local</span> file system; <span class="hljs-keyword">if</span> you <span class="hljs-keyword">do</span> not need the resource [...]
+resUploadStartupType=&quot;HDFS&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Note: If you want to upload to HDFS and the NameNode has HA enabled, you need to put core-site.xml and hdfs-site.xml <span class="hljs-keyword">in</span> the installPath/conf directory. In this example, it is placed under /opt/soft/dolphinscheduler/conf, and Configure the namenode cluster name; <span class="hljs-keyword">if</span> the NameNode is not HA, modify it to a specific IP or host name.</span>
+defaultFS=&quot;hdfs://mycluster:8020&quot;
+<span class="hljs-meta">
+
+#</span><span class="bash"> If the ResourceManager is HA, configure it as the active-standby IP or hostname of the ResourceManager node, such as <span class="hljs-string">&quot;192.168.xx.xx, 192.168.xx.xx&quot;</span>; otherwise, <span class="hljs-keyword">if</span> it is a single ResourceManager or yarn is not used at all, please configure yarnHaIps = <span class="hljs-string">&quot;&quot;</span>. That<span class="hljs-string">&#x27;s it, I don&#x27;</span>t use yarn here, the configur [...]
+yarnHaIps=&quot;&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> If it is a single ResourceManager, configure it as the ResourceManager node ip or hostname, otherwise, keep the default value. Yarn is not used here, keep the default.</span>
+singleYarnIp=&quot;ark1&quot;
+</code></pre>
+<p><em>Attention:</em></p>
+<ul>
+<li>If you need to upload resources to the Hadoop cluster, and the NameNode of the Hadoop cluster is configured with HA, you need to enable HDFS resource upload, and you need to copy the core-site.xml and hdfs-site.xml in the Hadoop cluster to /opt/ dolphinscheduler/conf. Non-NameNode HA skips the next step.</li>
+</ul>
+</li>
+</ul>
+<h3>1.7: Install python's Zookeeper tool kazoo</h3>
+<ul>
+<li>Install python's Zookeeper tool. <code>This step is only used for one-click deployment.</code></li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Install pip</span>
+sudo yum -y install python-pip;  # ubuntu: sudo apt-get install python-pip
+sudo pip install kazoo;
+</code></pre>
+<p><em>Note: If yum does not find python-pip, you can also install it by following commands</em></p>
+<pre><code class="language-shell">sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
+sudo python get-pip.py  # 如果是python3,使用sudo python3 get-pip.py 
+<span class="hljs-meta">#</span><span class="bash"> <span class="hljs-keyword">then</span></span>
+sudo pip install kazoo;
+</code></pre>
+<ul>
+<li>
+<p>Switch to the deployment user and execute the one-click deployment script</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<pre><code>Note:
+For the first deployment, the following message appears in step 3 of `3, stop server` during operation. This message can be ignored.
+sh: bin/dolphinscheduler-daemon.sh: No such file or directory
+</code></pre>
+<ul>
+<li>After the script is completed, the following 5 services will be started. Use the <code>jps</code> command to check whether the services are started (<code>jps</code> comes with <code>java JDK</code>)</li>
+</ul>
+<pre><code class="language-aidl">    MasterServer         ----- master service
+    WorkerServer         ----- worker service
+    LoggerServer         ----- logger service
+    ApiApplicationServer ----- api service
+    AlertServer          ----- alert service
+</code></pre>
+<p>If the above services are started normally, the automatic deployment is successful.</p>
+<p>After the deployment is successful, you can view the logs. The logs are stored in the logs folder.</p>
+<pre><code class="language-log"> logs/
+    ├── dolphinscheduler-alert-server.log
+    ├── dolphinscheduler-master-server.log
+    |—— dolphinscheduler-worker-server.log
+    |—— dolphinscheduler-api-server.log
+    |—— dolphinscheduler-logger-server.log
+</code></pre>
+<h1>2. Frontend Deployment</h1>
+<p>Please download the latest version of the frontend installation package to the server deployment directory, download address: [Download] (/en-us/download/download.html) (Take 1.2.0 version as an example ), Upload the tar.gz package to this directory after downloading and uncompress it.</p>
+<pre><code class="language-shell">cd /opt/dolphinscheduler;
+
+tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -C /opt/dolphinscheduler;
+
+mv apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin dolphinscheduler-ui
+</code></pre>
+<p><strong>Choose any one of the following methods, automated deployment is recommended.</strong></p>
+<h3>2.1 Automated Deployment</h3>
+<ul>
+<li>
+<p>Enter the dolphinscheduler-ui directory and execute (<code>Note: Automated deployment will automatically download nginx</code>)</p>
+<pre><code class="language-shell">cd dolphinscheduler-ui;
+sh ./install-dolphinscheduler-ui.sh;
+</code></pre>
+<ul>
+<li>After the execution, please type the frontend port during operation, the default port is 8888, if you choose the default, please press enter directly, or type another port.</li>
+<li>Then it will let you type the api-server ip that interacts with the frontend UI.</li>
+<li>Next is the port of the api-server that lets you type to interact with the frontend UI.</li>
+<li>Next is the operating system selection.</li>
+<li>Wait for deployment to complete.</li>
+</ul>
+</li>
+<li>
+<p>After deployment, in order to prevent too large resources from uploading to the resource center, it is recommended to modify the nginx upload size parameters, as follows:</p>
+<ul>
+<li>Add Nginx configuration client_max_body_size 1024m, you can add it in the http method body.</li>
+</ul>
+<pre><code class="language-shell">vi /etc/nginx/nginx.conf
+<span class="hljs-meta">
+#</span><span class="bash"> add param</span>
+client_max_body_size 1024m;
+</code></pre>
+<ul>
+<li>Then restart Nginx service</li>
+</ul>
+<pre><code class="language-shell">systemctl restart nginx
+</code></pre>
+</li>
+<li>
+<p>Visit the front page address: <a href="http://localhost:8888">http://localhost:8888</a>. If the front login page appears, the front web installation is complete.</p>
+<p>default user password:admin/dolphinscheduler123</p>
+<p align="center">
+   <img src="/img/login.png" width="60%" />
+ </p>
+</li>
+</ul>
+<h3>2.2 Manual Deployment</h3>
+<ul>
+<li>
+<p>Install nginx by yourself, download it from the official website: Or <code>yum install nginx -y</code></p>
+</li>
+<li>
+<p>Modify the nginx configuration file (Note: some place need to be modified by yourself)</p>
+</li>
+</ul>
+<pre><code class="language-html">vi /etc/nginx/nginx.conf
+
+server {
+    listen       8888; # Your Port
+    server_name  localhost;
+    #charset koi8-r;
+    #access_log  /var/log/nginx/host.access.log  main;
+    location / {
+        root   /opt/soft/dolphinscheduler-ui/dist;      # Your dist directory which 
+        index  index.html index.html;
+    }
+    location /dolphinscheduler {
+        proxy_pass http://localhost:12345;    # Your ApiApplicationServer address
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header x_real_ipP $remote_addr;
+        proxy_set_header remote_addr $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_http_version 1.1;
+        proxy_connect_timeout 4s;
+        proxy_read_timeout 30s;
+        proxy_send_timeout 12s;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection &quot;upgrade&quot;;
+    }
+    #error_page  404              /404.html;
+    # redirect server error pages to the static page /50x.html
+    #
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   /usr/share/nginx/html;
+    }
+}
+</code></pre>
+<ul>
+<li>
+<p>Then restart Nginx service</p>
+<pre><code class="language-shell">systemctl restart nginx
+</code></pre>
+</li>
+<li>
+<p>Visit the front page address: <a href="http://localhost:8888">http://localhost:8888</a>. If the front login page appears, the front web installation is complete.</p>
+<p>default user password:admin/dolphinscheduler123</p>
+<p align="center">
+   <img src="/img/login.png" width="60%" />
+ </p>
+</li>
+</ul>
+<h1>3. Start and stop service</h1>
+<ul>
+<li>
+<p>Stop all services</p>
+<p><code>sh ./bin/stop-all.sh</code></p>
+</li>
+<li>
+<p>Start all services</p>
+<p><code>sh ./bin/start-all.sh</code></p>
+</li>
+<li>
+<p>Start and stop master service</p>
+</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start master-server
+sh ./bin/dolphinscheduler-daemon.sh stop master-server
+</code></pre>
+<ul>
+<li>Start and stop worker Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start worker-server
+sh ./bin/dolphinscheduler-daemon.sh stop worker-server
+</code></pre>
+<ul>
+<li>Start and stop api Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start api-server
+sh ./bin/dolphinscheduler-daemon.sh stop api-server
+</code></pre>
+<ul>
+<li>Start and stop logger Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start logger-server
+sh ./bin/dolphinscheduler-daemon.sh stop logger-server
+</code></pre>
+<ul>
+<li>Start and stop alert service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start alert-server
+sh ./bin/dolphinscheduler-daemon.sh stop alert-server
+</code></pre>
+<p><code>Note: Please refer to the &quot;Architecture Design&quot; section for service usage</code></p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/cluster-deployment.json b/en-us/docs/1.2.0/user_doc/cluster-deployment.json
new file mode 100644
index 0000000..4c6a077
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/cluster-deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "cluster-deployment.md",
+  "__html": "<h1>Cluster Deployment</h1>\n<p>DolphinScheduler Cluster deployment is divided into two parts: backend deployment and frontend deployment.</p>\n<h1>1、Backend Deployment</h1>\n<h3>1.1: Before you begin (please install requirement basic software by yourself)</h3>\n<ul>\n<li>PostgreSQL (8.2.15+) or MySQL (5.7) : Choose One</li>\n<li><a href=\"https://www.oracle.com/technetwork/java/javase/downloads/index.html\">JDK</a> (1.8+) : Required. Double-check configure JAVA_HOME and PAT [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/cluster-deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/frontend-deployment.html b/en-us/docs/1.2.0/user_doc/frontend-deployment.html
new file mode 100644
index 0000000..3fb42d2
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/frontend-deployment.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="frontend-deployment">
+  <meta name="description" content="frontend-deployment">
+  <title>frontend-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>The front-end has three deployment modes: automated deployment, manual deployment and compiled source deployment.</p>
+<h2>Preparations</h2>
+<h4>Download the installation package</h4>
+<p>Please download the latest version of the installation package, download address: <a href="/en-us/download/download.html">download</a></p>
+<p>After downloading apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-front-bin.tar.gz,
+decompress<code>tar -zxvf apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-front-bin.tar.gz ./</code>and enter the<code>dolphinscheduler-ui</code>directory</p>
+<h2>Deployment</h2>
+<p>Automated deployment is recommended for either of the following two ways</p>
+<h3>Automated Deployment</h3>
+<blockquote>
+<p>Front-end automatic deployment based on Linux system <code>yum</code> operation, before deployment, please install and update<code>yum</code></p>
+</blockquote>
+<p>under this directory, execute<code>./install-dolphinscheduler-ui.sh</code></p>
+<h3>Manual Deployment</h3>
+<p>You can choose one of the following two deployment methods, or you can choose other deployment methods according to your production environment.</p>
+<h4>nginx deployment</h4>
+<p>Option to install epel source <code>yum install epel-release -y</code></p>
+<p>Install Nginx by yourself, download it from the official website: <a href="http://nginx.org/en/download.html">http://nginx.org/en/download.html</a> or <code>yum install nginx -y</code></p>
+<blockquote>
+<h4>Nginx configuration file address</h4>
+</blockquote>
+<pre><code>/etc/nginx/conf.d/default.conf
+</code></pre>
+<blockquote>
+<h4>Configuration information (self-modifying)</h4>
+</blockquote>
+<pre><code>server {
+    listen       8888;# access port
+    server_name  localhost;
+    #charset koi8-r;
+    #access_log  /var/log/nginx/host.access.log  main;
+    location / {
+        root   /xx/dist; # the dist directory address decompressed by the front end above (self-modifying)
+        index  index.html index.html;
+    }
+    location /dolphinscheduler {
+        proxy_pass http://192.168.xx.xx:12345; # interface address (self-modifying)
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header x_real_ipP $remote_addr;
+        proxy_set_header remote_addr $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_http_version 1.1;
+        proxy_connect_timeout 4s;
+        proxy_read_timeout 30s;
+        proxy_send_timeout 12s;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection &quot;upgrade&quot;;
+    }
+    #error_page  404              /404.html;
+    # redirect server error pages to the static page /50x.html
+    #
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   /usr/share/nginx/html;
+    }
+}
+</code></pre>
+<blockquote>
+<h4>Restart the Nginx service</h4>
+</blockquote>
+<pre><code>systemctl restart nginx
+</code></pre>
+<h4>nginx command</h4>
+<ul>
+<li>
+<p>enable <code>systemctl enable nginx</code></p>
+</li>
+<li>
+<p>restart <code>systemctl restart nginx</code></p>
+</li>
+<li>
+<p>status <code>systemctl status nginx</code></p>
+</li>
+</ul>
+<h4>jetty deployment</h4>
+<p>Enter the source package <code>dolphinscheduler-ui</code> directory and execute</p>
+<pre><code>npm install
+</code></pre>
+<blockquote>
+<h5>! ! ! Special attention here. If the project reports a &quot;node-sass error&quot; error while pulling the dependency package, execute the following command again after execution.</h5>
+</blockquote>
+<pre><code>npm install node-sass --unsafe-perm //Install node-sass dependency separately
+</code></pre>
+<pre><code>npm run build:release
+</code></pre>
+<p>Create the ui directory under the backend binary package directory</p>
+<p>Copy all files in the dolphinscheduler-ui/dist directory to the backend binary package ui directory</p>
+<p>Visit the following url, interface address (modify it yourself)
+<a href="http://192.168.xx.xx:12345/dolphinscheduler">http://192.168.xx.xx:12345/dolphinscheduler</a></p>
+<h2>FAQ</h2>
+<h4>Upload file size limit</h4>
+<p>Edit the configuration file <code>vi /etc/nginx/nginx.conf</code></p>
+<pre><code># change upload size
+client_max_body_size 1024m
+</code></pre>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/frontend-deployment.json b/en-us/docs/1.2.0/user_doc/frontend-deployment.json
new file mode 100644
index 0000000..1c432a3
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/frontend-deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "frontend-deployment.md",
+  "__html": "<h1>frontend-deployment</h1>\n<p>The front-end has three deployment modes: automated deployment, manual deployment and compiled source deployment.</p>\n<h2>Preparations</h2>\n<h4>Download the installation package</h4>\n<p>Please download the latest version of the installation package, download address: <a href=\"/en-us/download/download.html\">download</a></p>\n<p>After downloading apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-front-bin.tar.gz,\ndecompress<code>t [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/frontend-deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/hardware-environment.html b/en-us/docs/1.2.0/user_doc/hardware-environment.html
new file mode 100644
index 0000000..985be8f
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/hardware-environment.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="hardware-environment">
+  <meta name="description" content="hardware-environment">
+  <title>hardware-environment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>DolphinScheduler, as an open-source distributed workflow task scheduling system, can be well deployed and run in Intel architecture server environments and mainstream virtualization environments, and supports mainstream Linux operating system environments.</p>
+<h2>1. Linux operating system version requirements</h2>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">OS</th>
+<th style="text-align:center">Version</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">Red Hat Enterprise Linux</td>
+<td style="text-align:center">7.0 and above</td>
+</tr>
+<tr>
+<td style="text-align:left">CentOS</td>
+<td style="text-align:center">7.0 and above</td>
+</tr>
+<tr>
+<td style="text-align:left">Oracle Enterprise Linux</td>
+<td style="text-align:center">7.0 and above</td>
+</tr>
+<tr>
+<td style="text-align:left">Ubuntu LTS</td>
+<td style="text-align:center">16.04 and above</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>Attention:</strong>
+The above Linux operating systems can run on physical servers and mainstream virtualization environments such as VMware, KVM, and XEN.</p>
+</blockquote>
+<h2>2. Recommended server configuration</h2>
+<p>DolphinScheduler supports 64-bit hardware platforms with Intel x86-64 architecture. The following recommendation is made for server hardware configuration in a production environment:</p>
+<h3>Production Environment</h3>
+<table>
+<thead>
+<tr>
+<th><strong>CPU</strong></th>
+<th><strong>MEM</strong></th>
+<th><strong>HD</strong></th>
+<th><strong>NIC</strong></th>
+<th><strong>Num</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>4 core+</td>
+<td>8 GB+</td>
+<td>SAS</td>
+<td>GbE</td>
+<td>1+</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>Attention:</strong></p>
+<ul>
+<li>The above-recommended configuration is the minimum configuration for deploying DolphinScheduler. The higher configuration is strongly recommended for production environments.</li>
+<li>The hard disk size configuration is recommended by more than 50GB. The system disk and data disk are separated.</li>
+</ul>
+</blockquote>
+<h2>3. Network requirements</h2>
+<p>DolphinScheduler provides the following network port configurations for normal operation:</p>
+<table>
+<thead>
+<tr>
+<th>Server</th>
+<th>Port</th>
+<th>Desc</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>MasterServer</td>
+<td>5566</td>
+<td>Not the communication port. Require the native ports do not conflict</td>
+</tr>
+<tr>
+<td>WorkerServer</td>
+<td>7788</td>
+<td>Not the communication port. Require the native ports do not conflict</td>
+</tr>
+<tr>
+<td>ApiApplicationServer</td>
+<td>12345</td>
+<td>Backend communication port</td>
+</tr>
+<tr>
+<td>nginx</td>
+<td>8888</td>
+<td>The port for DolphinScheduler UI</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>Attention:</strong></p>
+<ul>
+<li>MasterServer and WorkerServer do not need to enable communication between the networks. As long as the local ports do not conflict.</li>
+<li>Administrators can adjust relevant ports on the network side and host-side according to the deployment plan of DolphinScheduler components in the actual environment.</li>
+</ul>
+</blockquote>
+<h2>4. Browser requirements</h2>
+<p>DolphinScheduler recommends Chrome and the latest browsers which using Chrome Kernel to access the front-end visual operator page.</p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/hardware-environment.json b/en-us/docs/1.2.0/user_doc/hardware-environment.json
new file mode 100644
index 0000000..bfd24ed
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/hardware-environment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "hardware-environment.md",
+  "__html": "<h1>Hareware Environment</h1>\n<p>DolphinScheduler, as an open-source distributed workflow task scheduling system, can be well deployed and run in Intel architecture server environments and mainstream virtualization environments, and supports mainstream Linux operating system environments.</p>\n<h2>1. Linux operating system version requirements</h2>\n<table>\n<thead>\n<tr>\n<th style=\"text-align:left\">OS</th>\n<th style=\"text-align:center\">Version</th>\n</tr>\n</thead>\n [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/hardware-environment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/metadata-1.2.html b/en-us/docs/1.2.0/user_doc/metadata-1.2.html
new file mode 100644
index 0000000..ffa7abc
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/metadata-1.2.html
@@ -0,0 +1,661 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="metadata-1.2">
+  <meta name="description" content="metadata-1.2">
+  <title>metadata-1.2</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p><a name="V5KOl"></a></p>
+<h3>Dolphin Scheduler 1.2 DB Table Overview</h3>
+<table>
+<thead>
+<tr>
+<th style="text-align:center">Table Name</th>
+<th style="text-align:center">Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:center">t_ds_access_token</td>
+<td style="text-align:center">token for access ds backend</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_alert</td>
+<td style="text-align:center">alert detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_alertgroup</td>
+<td style="text-align:center">alert group</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_command</td>
+<td style="text-align:center">command detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_datasource</td>
+<td style="text-align:center">data source</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_error_command</td>
+<td style="text-align:center">error command detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_process_definition</td>
+<td style="text-align:center">process difinition</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_process_instance</td>
+<td style="text-align:center">process instance</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_project</td>
+<td style="text-align:center">project</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_queue</td>
+<td style="text-align:center">queue</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_datasource_user</td>
+<td style="text-align:center">datasource related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_process_instance</td>
+<td style="text-align:center">sub process</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_project_user</td>
+<td style="text-align:center">project related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_resources_user</td>
+<td style="text-align:center">resource related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_udfs_user</td>
+<td style="text-align:center">UDF related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_user_alertgroup</td>
+<td style="text-align:center">alert group related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_resources</td>
+<td style="text-align:center">resoruce center file</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_schedules</td>
+<td style="text-align:center">process difinition schedule</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_session</td>
+<td style="text-align:center">user login session</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_task_instance</td>
+<td style="text-align:center">task instance</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_tenant</td>
+<td style="text-align:center">tenant</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_udfs</td>
+<td style="text-align:center">UDF resource</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_user</td>
+<td style="text-align:center">user detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_version</td>
+<td style="text-align:center">ds version</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_worker_group</td>
+<td style="text-align:center">worker group</td>
+</tr>
+</tbody>
+</table>
+<hr>
+<p><a name="XCLy1"></a></p>
+<h3>E-R Diagram</h3>
+<p><a name="5hWWZ"></a></p>
+<h4>User Queue DataSource</h4>
+<p><img src="/img/metadata-erd/user-queue-datasource.png" alt="image.png"></p>
+<ul>
+<li>Multiple users can belong to one tenant</li>
+<li>The queue field in t_ds_user table stores the queue_name information in t_ds_queue table, but t_ds_tenant stores queue information using queue_id. During the execution of the process definition, the user queue has the highest priority. If the user queue is empty, the tenant queue is used.</li>
+<li>The user_id field in the t_ds_datasource table indicates the user who created the data source. The user_id in t_ds_relation_datasource_user indicates the user who has permission to the data source.
+<a name="7euSN"></a></li>
+</ul>
+<h4>Project Resource Alert</h4>
+<p><img src="/img/metadata-erd/project-resource-alert.png" alt="image.png"></p>
+<ul>
+<li>User can have multiple projects, User project authorization completes the relationship binding using project_id and user_id in t_ds_relation_project_user table</li>
+<li>The user_id in the t_ds_projcet table represents the user who created the project, and the user_id in the t_ds_relation_project_user table represents users who have permission to the project</li>
+<li>The user_id in the t_ds_resources table represents the user who created the resource, and the user_id in t_ds_relation_resources_user represents the user who has permissions to the resource</li>
+<li>The user_id in the t_ds_udfs table represents the user who created the UDF, and the user_id in the t_ds_relation_udfs_user table represents a user who has permission to the UDF
+<a name="JEw4v"></a></li>
+</ul>
+<h4>Command Process Task</h4>
+<p><img src="/img/metadata-erd/command.png" alt="image.png"><br /><img src="/img/metadata-erd/process-task.png" alt="image.png"></p>
+<ul>
+<li>A project has multiple process definitions, a process definition can generate multiple process instances, and a process instance can generate multiple task instances</li>
+<li>The t_ds_schedulers table stores the timing schedule information for process difinition</li>
+<li>The data stored in the t_ds_relation_process_instance table is used to deal with that the process definition contains sub-processes, parent_process_instance_id field represents the id of the main process instance containing the child process, process_instance_id field represents the id of the sub-process instance, parent_task_instance_id field represents the task instance id of the sub-process node</li>
+<li>The process instance table and the task instance table correspond to the t_ds_process_instance table and the t_ds_task_instance table, respectively.</li>
+</ul>
+<hr>
+<p><a name="yd79T"></a></p>
+<h3>Core Table Schema</h3>
+<p><a name="6bVhH"></a></p>
+<h4>t_ds_process_definition</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>name</td>
+<td>varchar</td>
+<td>process definition name</td>
+</tr>
+<tr>
+<td>version</td>
+<td>int</td>
+<td>process definition version</td>
+</tr>
+<tr>
+<td>release_state</td>
+<td>tinyint</td>
+<td>process definition release state:0:offline,1:online</td>
+</tr>
+<tr>
+<td>project_id</td>
+<td>int</td>
+<td>project id</td>
+</tr>
+<tr>
+<td>user_id</td>
+<td>int</td>
+<td>process definition creator id</td>
+</tr>
+<tr>
+<td>process_definition_json</td>
+<td>longtext</td>
+<td>process definition json content</td>
+</tr>
+<tr>
+<td>description</td>
+<td>text</td>
+<td>process difinition desc</td>
+</tr>
+<tr>
+<td>global_params</td>
+<td>text</td>
+<td>global parameters</td>
+</tr>
+<tr>
+<td>flag</td>
+<td>tinyint</td>
+<td>process is available: 0 not available, 1 available</td>
+</tr>
+<tr>
+<td>locations</td>
+<td>text</td>
+<td>Node location information</td>
+</tr>
+<tr>
+<td>connects</td>
+<td>text</td>
+<td>Node connection information</td>
+</tr>
+<tr>
+<td>receivers</td>
+<td>text</td>
+<td>receivers</td>
+</tr>
+<tr>
+<td>receivers_cc</td>
+<td>text</td>
+<td>carbon copy list</td>
+</tr>
+<tr>
+<td>create_time</td>
+<td>datetime</td>
+<td>create time</td>
+</tr>
+<tr>
+<td>timeout</td>
+<td>int</td>
+<td>timeout</td>
+</tr>
+<tr>
+<td>tenant_id</td>
+<td>int</td>
+<td>tenant id</td>
+</tr>
+<tr>
+<td>update_time</td>
+<td>datetime</td>
+<td>update time</td>
+</tr>
+</tbody>
+</table>
+<p><a name="t5uxM"></a></p>
+<h4>t_ds_process_instance</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>name</td>
+<td>varchar</td>
+<td>process instance name</td>
+</tr>
+<tr>
+<td>process_definition_id</td>
+<td>int</td>
+<td>process definition id</td>
+</tr>
+<tr>
+<td>state</td>
+<td>tinyint</td>
+<td>process instance Status: 0 commit succeeded, 1 running, 2 prepare to pause, 3 pause, 4 prepare to stop, 5 stop, 6 fail, 7 succeed, 8 need fault tolerance, 9 kill, 10 wait for thread, 11 wait for dependency to complete</td>
+</tr>
+<tr>
+<td>recovery</td>
+<td>tinyint</td>
+<td>process instance failover flag:0:normal,1:failover instance</td>
+</tr>
+<tr>
+<td>start_time</td>
+<td>datetime</td>
+<td>process instance start time</td>
+</tr>
+<tr>
+<td>end_time</td>
+<td>datetime</td>
+<td>process instance end time</td>
+</tr>
+<tr>
+<td>run_times</td>
+<td>int</td>
+<td>process instance run times</td>
+</tr>
+<tr>
+<td>host</td>
+<td>varchar</td>
+<td>process instance host</td>
+</tr>
+<tr>
+<td>command_type</td>
+<td>tinyint</td>
+<td>command type:0 start ,1 Start from the current node,2 Resume a fault-tolerant process,3 Resume Pause Process, 4 Execute from the failed node,5 Complement, 6 dispatch, 7 re-run, 8 pause, 9 stop ,10 Resume waiting thread</td>
+</tr>
+<tr>
+<td>command_param</td>
+<td>text</td>
+<td>json command parameters</td>
+</tr>
+<tr>
+<td>task_depend_type</td>
+<td>tinyint</td>
+<td>task depend type. 0: only current node,1:before the node,2:later nodes</td>
+</tr>
+<tr>
+<td>max_try_times</td>
+<td>tinyint</td>
+<td>max try times</td>
+</tr>
+<tr>
+<td>failure_strategy</td>
+<td>tinyint</td>
+<td>failure strategy. 0:end the process when node failed,1:continue running the other nodes when node failed</td>
+</tr>
+<tr>
+<td>warning_type</td>
+<td>tinyint</td>
+<td>warning type. 0:no warning,1:warning if process success,2:warning if process failed,3:warning if success</td>
+</tr>
+<tr>
+<td>warning_group_id</td>
+<td>int</td>
+<td>warning group id</td>
+</tr>
+<tr>
+<td>schedule_time</td>
+<td>datetime</td>
+<td>schedule time</td>
+</tr>
+<tr>
+<td>command_start_time</td>
+<td>datetime</td>
+<td>command start time</td>
+</tr>
+<tr>
+<td>global_params</td>
+<td>text</td>
+<td>global parameters</td>
+</tr>
+<tr>
+<td>process_instance_json</td>
+<td>longtext</td>
+<td>process instance json(copy的process definition 的json)</td>
+</tr>
+<tr>
+<td>flag</td>
+<td>tinyint</td>
+<td>process instance is available: 0 not available, 1 available</td>
+</tr>
+<tr>
+<td>update_time</td>
+<td>timestamp</td>
+<td>update time</td>
+</tr>
+<tr>
+<td>is_sub_process</td>
+<td>int</td>
+<td>whether the process is sub process:  1 sub-process,0 not sub-process</td>
+</tr>
+<tr>
+<td>executor_id</td>
+<td>int</td>
+<td>executor id</td>
+</tr>
+<tr>
+<td>locations</td>
+<td>text</td>
+<td>Node location information</td>
+</tr>
+<tr>
+<td>connects</td>
+<td>text</td>
+<td>Node connection information</td>
+</tr>
+<tr>
+<td>history_cmd</td>
+<td>text</td>
+<td>history commands of process instance operation</td>
+</tr>
+<tr>
+<td>dependence_schedule_times</td>
+<td>text</td>
+<td>depend schedule fire time</td>
+</tr>
+<tr>
+<td>process_instance_priority</td>
+<td>int</td>
+<td>process instance priority. 0 Highest,1 High,2 Medium,3 Low,4 Lowest</td>
+</tr>
+<tr>
+<td>worker_group_id</td>
+<td>int</td>
+<td>worker group id</td>
+</tr>
+<tr>
+<td>timeout</td>
+<td>int</td>
+<td>time out</td>
+</tr>
+<tr>
+<td>tenant_id</td>
+<td>int</td>
+<td>tenant id</td>
+</tr>
+</tbody>
+</table>
+<p><a name="tHZsY"></a></p>
+<h4>t_ds_task_instance</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>name</td>
+<td>varchar</td>
+<td>task name</td>
+</tr>
+<tr>
+<td>task_type</td>
+<td>varchar</td>
+<td>task type</td>
+</tr>
+<tr>
+<td>process_definition_id</td>
+<td>int</td>
+<td>process definition id</td>
+</tr>
+<tr>
+<td>process_instance_id</td>
+<td>int</td>
+<td>process instance id</td>
+</tr>
+<tr>
+<td>task_json</td>
+<td>longtext</td>
+<td>task content json</td>
+</tr>
+<tr>
+<td>state</td>
+<td>tinyint</td>
+<td>Status: 0 commit succeeded, 1 running, 2 prepare to pause, 3 pause, 4 prepare to stop, 5 stop, 6 fail, 7 succeed, 8 need fault tolerance, 9 kill, 10 wait for thread, 11 wait for dependency to complete</td>
+</tr>
+<tr>
+<td>submit_time</td>
+<td>datetime</td>
+<td>task submit time</td>
+</tr>
+<tr>
+<td>start_time</td>
+<td>datetime</td>
+<td>task start time</td>
+</tr>
+<tr>
+<td>end_time</td>
+<td>datetime</td>
+<td>task end time</td>
+</tr>
+<tr>
+<td>host</td>
+<td>varchar</td>
+<td>host of task running on</td>
+</tr>
+<tr>
+<td>execute_path</td>
+<td>varchar</td>
+<td>task execute path in the host</td>
+</tr>
+<tr>
+<td>log_path</td>
+<td>varchar</td>
+<td>task log path</td>
+</tr>
+<tr>
+<td>alert_flag</td>
+<td>tinyint</td>
+<td>whether alert</td>
+</tr>
+<tr>
+<td>retry_times</td>
+<td>int</td>
+<td>task retry times</td>
+</tr>
+<tr>
+<td>pid</td>
+<td>int</td>
+<td>pid of task</td>
+</tr>
+<tr>
+<td>app_link</td>
+<td>varchar</td>
+<td>yarn app id</td>
+</tr>
+<tr>
+<td>flag</td>
+<td>tinyint</td>
+<td>taskinstance is available: 0 not available, 1 available</td>
+</tr>
+<tr>
+<td>retry_interval</td>
+<td>int</td>
+<td>retry interval when task failed</td>
+</tr>
+<tr>
+<td>max_retry_times</td>
+<td>int</td>
+<td>max retry times</td>
+</tr>
+<tr>
+<td>task_instance_priority</td>
+<td>int</td>
+<td>task instance priority:0 Highest,1 High,2 Medium,3 Low,4 Lowest</td>
+</tr>
+<tr>
+<td>worker_group_id</td>
+<td>int</td>
+<td>worker group id</td>
+</tr>
+</tbody>
+</table>
+<p><a name="gLGtm"></a></p>
+<h4>t_ds_command</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>command_type</td>
+<td>tinyint</td>
+<td>Command type: 0 start workflow, 1 start execution from current node, 2 resume fault-tolerant workflow, 3 resume pause process, 4 start execution from failed node, 5 complement, 6 schedule, 7 rerun, 8 pause, 9 stop, 10 resume waiting thread</td>
+</tr>
+<tr>
+<td>process_definition_id</td>
+<td>int</td>
+<td>process definition id</td>
+</tr>
+<tr>
+<td>command_param</td>
+<td>text</td>
+<td>json command parameters</td>
+</tr>
+<tr>
+<td>task_depend_type</td>
+<td>tinyint</td>
+<td>Node dependency type: 0 current node, 1 forward, 2 backward</td>
+</tr>
+<tr>
+<td>failure_strategy</td>
+<td>tinyint</td>
+<td>Failed policy: 0 end, 1 continue</td>
+</tr>
+<tr>
+<td>warning_type</td>
+<td>tinyint</td>
+<td>Alarm type: 0 is not sent, 1 process is sent successfully, 2 process is sent failed, 3 process is sent successfully and all failures are sent</td>
+</tr>
+<tr>
+<td>warning_group_id</td>
+<td>int</td>
+<td>warning group</td>
+</tr>
+<tr>
+<td>schedule_time</td>
+<td>datetime</td>
+<td>schedule time</td>
+</tr>
+<tr>
+<td>start_time</td>
+<td>datetime</td>
+<td>start time</td>
+</tr>
+<tr>
+<td>executor_id</td>
+<td>int</td>
+<td>executor id</td>
+</tr>
+<tr>
+<td>dependence</td>
+<td>varchar</td>
+<td>dependence</td>
+</tr>
+<tr>
+<td>update_time</td>
+<td>datetime</td>
+<td>update time</td>
+</tr>
+<tr>
+<td>process_instance_priority</td>
+<td>int</td>
+<td>process instance priority: 0 Highest,1 High,2 Medium,3 Low,4 Lowest</td>
+</tr>
+<tr>
+<td>worker_group_id</td>
+<td>int</td>
+<td>worker group id</td>
+</tr>
+</tbody>
+</table>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/metadata-1.2.json b/en-us/docs/1.2.0/user_doc/metadata-1.2.json
new file mode 100644
index 0000000..8287cc9
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/metadata-1.2.json
@@ -0,0 +1,6 @@
+{
+  "filename": "metadata-1.2.md",
+  "__html": "<h1>Dolphin Scheduler 1.2 MetaData</h1>\n<p><a name=\"V5KOl\"></a></p>\n<h3>Dolphin Scheduler 1.2 DB Table Overview</h3>\n<table>\n<thead>\n<tr>\n<th style=\"text-align:center\">Table Name</th>\n<th style=\"text-align:center\">Comment</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style=\"text-align:center\">t_ds_access_token</td>\n<td style=\"text-align:center\">token for access ds backend</td>\n</tr>\n<tr>\n<td style=\"text-align:center\">t_ds_alert</td>\n<td style=\"text-align [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/metadata-1.2.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/quick-start.html b/en-us/docs/1.2.0/user_doc/quick-start.html
new file mode 100644
index 0000000..2d1db3a
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/quick-start.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="quick-start">
+  <meta name="description" content="quick-start">
+  <title>quick-start</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<ul>
+<li>
+<p>Administrator user login</p>
+<blockquote>
+<p>Address:192.168.xx.xx:8888  Username and password:admin/dolphinscheduler123</p>
+</blockquote>
+</li>
+</ul>
+<p align="center">
+   <img src="/img/login_en.png" width="60%" />
+ </p>
+<ul>
+<li>Create queue</li>
+</ul>
+<p align="center">
+   <img src="/img/create-queue-en.png" width="60%" />
+ </p>
+<ul>
+<li>Create tenant  <p align="center">
+<img src="/img/create-tenant-en.png" width="60%" />
+</li>
+</ul>
+  </p>
+<ul>
+<li>Creating Ordinary Users</li>
+</ul>
+<p align="center">
+      <img src="/img/create-user-en.png" width="60%" />
+ </p>
+<ul>
+<li>Create an alarm group</li>
+</ul>
+ <p align="center">
+    <img src="/img/alarm-group-en.png" width="60%" />
+  </p>
+<ul>
+<li>Create an worker group</li>
+</ul>
+   <p align="center">
+      <img src="/img/worker-group-en.png" width="60%" />
+    </p>
+<ul>
+<li>
+<p>Create an token</p>
+<p align="center">
+   <img src="/img/token-en.png" width="60%" />
+ </p>
+</li>
+<li>
+<p>Log in with regular users</p>
+</li>
+</ul>
+<blockquote>
+<p>Click on the user name in the upper right corner to &quot;exit&quot; and re-use the normal user login.</p>
+</blockquote>
+<ul>
+<li>Project Management - &gt; Create Project - &gt; Click on Project Name</li>
+</ul>
+<p align="center">
+      <img src="/img/create_project_en.png" width="60%" />
+ </p>
+<ul>
+<li>Click Workflow Definition - &gt; Create Workflow Definition - &gt; Online Process Definition</li>
+</ul>
+<p align="center">
+   <img src="/img/process_definition_en.png" width="60%" />
+ </p>
+<ul>
+<li>Running Process Definition - &gt; Click Workflow Instance - &gt; Click Process Instance Name - &gt; Double-click Task Node - &gt; View Task Execution Log</li>
+</ul>
+ <p align="center">
+   <img src="/img/log_en.png" width="60%" />
+</p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/quick-start.json b/en-us/docs/1.2.0/user_doc/quick-start.json
new file mode 100644
index 0000000..8d92a8b
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/quick-start.json
@@ -0,0 +1,6 @@
+{
+  "filename": "quick-start.md",
+  "__html": "<h1>Quick Start</h1>\n<ul>\n<li>\n<p>Administrator user login</p>\n<blockquote>\n<p>Address:192.168.xx.xx:8888  Username and password:admin/dolphinscheduler123</p>\n</blockquote>\n</li>\n</ul>\n<p align=\"center\">\n   <img src=\"/img/login_en.png\" width=\"60%\" />\n </p>\n<ul>\n<li>Create queue</li>\n</ul>\n<p align=\"center\">\n   <img src=\"/img/create-queue-en.png\" width=\"60%\" />\n </p>\n<ul>\n<li>Create tenant  <p align=\"center\">\n<img src=\"/img/create-tenant-en. [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/quick-start.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/standalone-deployment.html b/en-us/docs/1.2.0/user_doc/standalone-deployment.html
new file mode 100644
index 0000000..3030b37
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/standalone-deployment.html
@@ -0,0 +1,441 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="standalone-deployment">
+  <meta name="description" content="standalone-deployment">
+  <title>standalone-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>DolphinScheduler Standalone deployment is divided into two parts: backend deployment and frontend deployment.</p>
+<h1>1. Backend Deployment</h1>
+<h3>1.1: Before you begin (please install requirement basic software by yourself)</h3>
+<ul>
+<li>PostgreSQL (8.2.15+) or MySQL (5.6 or 5.7): Choose One</li>
+<li><a href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK</a> (1.8+):  Required. Double-check configure JAVA_HOME and PATH environment variables in /etc/profile</li>
+<li>ZooKeeper (3.4.6+): Required</li>
+<li>Hadoop (2.6+) or MinIO: Optional. If you need to upload a resource function, you can choose a local file directory as the upload folder for a single machine (this operation does not need to deploy Hadoop). Of course, you can also choose to upload to Hadoop or MinIO.</li>
+</ul>
+<pre><code class="language-markdown"> Tips:DolphinScheduler itself does not rely on Hadoop, Hive, Spark, only use their clients for the corresponding task of running.
+</code></pre>
+<h3>1.2: Download the backend package.</h3>
+<ul>
+<li>Please download the latest version of the default installation package to the server deployment directory. For example, use /opt/dolphinscheduler as the installation and deployment directory. Download address: <a href="/en-us/download/download.html">Download</a> (Take 1.2.0 for an example). Download the package and move to the installation and deployment directory. Then uncompress it.</li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Create the deployment directory. Do not choose a deployment directory with a high-privilege directory such as / root or / home.</span>
+mkdir -p /opt/dolphinscheduler;
+cd /opt/dolphinscheduler;
+<span class="hljs-meta">#</span><span class="bash"> uncompress</span>
+tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz -C /opt/dolphinscheduler;
+ 
+mv apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin  dolphinscheduler-backend
+</code></pre>
+<p>###1.3: Create an individual user for deployment and grant directory operation permissions</p>
+<ul>
+<li>Create an individual user, and be sure to configure sudo passwordless. Take creating 'dolphinscheduler' user as an example.</li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> useradd need root permission</span>
+useradd dolphinscheduler;
+<span class="hljs-meta">
+#</span><span class="bash"> setup password</span>
+echo &quot;dolphinscheduler&quot; | passwd --stdin dolphinscheduler
+<span class="hljs-meta">
+#</span><span class="bash"> setup sudo passwordless</span>
+sed -i &#x27;$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL&#x27; /etc/sudoers
+sed -i &#x27;s/Defaults    requirett/#Defaults    requirett/g&#x27; /etc/sudoers
+<span class="hljs-meta">
+#</span><span class="bash"> Modify the directory permissions so that the deployment user has operation permissions on the dolphinscheduler-backend directory</span> 
+chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-backend
+</code></pre>
+<pre><code> Notes:
+ - Because the task execution service is based on 'sudo -u {linux-user}' to switch between different Linux users to implement multi-tenant running jobs, the deployment user needs to have sudo permissions and is passwordless. The first-time learners who can ignore it if they don't understand.
+ - If find the &quot;Default requiretty&quot; in the &quot;/etc/sudoers&quot; file, also comment out.
+ - If you need to use resource upload, you need to assign the user of permission to operate the local file system, HDFS or MinIO.
+</code></pre>
+<h3>1.4: ssh passwordless configuration</h3>
+<ul>
+<li>Switch to deployment user and configure ssh passwordless login</li>
+</ul>
+<pre><code class="language-shell">su dolphinscheduler;
+
+ssh-keygen -t rsa -P &#x27;&#x27; -f ~/.ssh/id_rsa
+cat ~/.ssh/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys
+chmod 600 ~/.ssh/authorized_keys
+</code></pre>
+<p>Note: <em>If configure success, the dolphinscheduler user does not need to enter a password when executing the command <code>ssh localhost</code></em></p>
+<h3>1.5: Database initialization</h3>
+<ul>
+<li>Into the database. The default database is PostgreSQL. If you select MySQL, you need to add the mysql-connector-java driver package to the lib directory of DolphinScheduler.</li>
+</ul>
+<pre><code>mysql -uroot -p
+</code></pre>
+<ul>
+<li>
+<p>After entering the database command line window, execute the database initialization command and set the user and password. <strong>Note: {user} and {password} need to be replaced with a specific database username and password</strong></p>
+<pre><code class="language-mysql">mysql&gt; CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+mysql&gt; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO &#x27;{user}&#x27;@&#x27;%&#x27; IDENTIFIED BY &#x27;{password}&#x27;;
+mysql&gt; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO &#x27;{user}&#x27;@&#x27;localhost&#x27; IDENTIFIED BY &#x27;{password}&#x27;;
+mysql&gt; flush privileges;
+</code></pre>
+</li>
+<li>
+<p>Create tables and import basic data</p>
+<ul>
+<li>
+<p>Modify the following configuration in application-dao.properties under the conf directory</p>
+<ul>
+<li>
+<pre><code class="language-shell">vi conf/application-dao.properties 
+</code></pre>
+</li>
+</ul>
+</li>
+<li>
+<p>If you choose MySQL, please comment out the relevant configuration of PostgreSQL (vice versa), you also need to manually add the [[mysql-connector-java driver jar] (<a href="https://downloads.MySQL.com/archives/c-j/">https://downloads.MySQL.com/archives/c-j/</a>)] package to lib under the directory, and then configure the database connection information correctly.</p>
+</li>
+</ul>
+<pre><code class="language-properties"><span class="hljs-comment">  # postgre</span>
+<span class="hljs-comment">  # spring.datasource.driver-class-name=org.postgresql.Driver</span>
+<span class="hljs-comment">  # spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler</span>
+<span class="hljs-comment">  # mysql</span>
+  <span class="hljs-meta">spring.datasource.driver-class-name</span>=<span class="hljs-string">com.mysql.jdbc.Driver</span>
+  <span class="hljs-meta">spring.datasource.url</span>=<span class="hljs-string">jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&amp;characterEncoding=UTF-8     # Replace the correct IP address</span>
+  <span class="hljs-meta">spring.datasource.username</span>=<span class="hljs-string">xxx						# replace the currect {user} value</span>
+  <span class="hljs-meta">spring.datasource.password</span>=<span class="hljs-string">xxx						# replace the currect {password} value</span>
+</code></pre>
+<ul>
+<li>After modifying and saving, execute the create table and import data script in the script directory.</li>
+</ul>
+<pre><code class="language-shell">sh script/create-dolphinscheduler.sh
+</code></pre>
+</li>
+</ul>
+<p>​       <em>Note: If you execute the above script and report &quot;/bin/java: No such file or directory&quot; error, please configure JAVA_HOME and PATH variables in /etc/profile</em></p>
+<h3>1.6: Modify runtime parameters.</h3>
+<ul>
+<li>
+<p>Modify the environment variable in <code>.dolphinscheduler_env.sh</code> file which on the 'conf/env' directory (take the relevant software installed under '/opt/soft' as an example)</p>
+<pre><code class="language-shell">export HADOOP_HOME=/opt/soft/hadoop
+export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
+<span class="hljs-meta">#</span><span class="bash"><span class="hljs-built_in">export</span> SPARK_HOME1=/opt/soft/spark1</span>
+export SPARK_HOME2=/opt/soft/spark2
+export PYTHON_HOME=/opt/soft/python
+export JAVA_HOME=/opt/soft/java
+export HIVE_HOME=/opt/soft/hive
+export FLINK_HOME=/opt/soft/flink
+export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH
+</code></pre>
+<p><code>Note: This step is very important. For example, JAVA_HOME and PATH must be configured. Those that are not used can be ignored or commented out. If &quot;.dolphinscheduler_env.sh&quot; cannot be found, run &quot;ls -a&quot;</code></p>
+</li>
+<li>
+<p>Create Soft link jdk to /usr/bin/java (still JAVA_HOME=/opt/soft/java as an example)</p>
+<pre><code class="language-shell">sudo ln -s /opt/soft/java/bin/java /usr/bin/java
+</code></pre>
+</li>
+<li>
+<p>Modify the parameters in the one-click deployment script <code>install.sh</code>, pay special attention to the configuration of the following parameters.</p>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Choose mysql or postgresql</span>
+dbtype=&quot;mysql&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database connection address</span>
+dbhost=&quot;localhost:3306&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database schema name</span>
+dbname=&quot;dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database username</span>
+username=&quot;xxx&quot;    
+<span class="hljs-meta">
+#</span><span class="bash"> Database password, <span class="hljs-keyword">if</span> there are special characters, please use <span class="hljs-string">&#x27;\&#x27;</span> escape, you need to modify the specific value of {passowrd} <span class="hljs-built_in">set</span> above</span>
+passowrd=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> The directory <span class="hljs-built_in">where</span> DS is installed, such as: <span class="hljs-string">&#x27;/opt/soft/dolphinscheduler&#x27;</span>, <span class="hljs-built_in">which</span> is different from the current directory.</span>
+installPath=&quot;/opt/soft/dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> The system user created <span class="hljs-keyword">in</span> section 1.3.</span>
+deployUser=&quot;dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Zookeeper connection address, standalone machine is localhost:2181, port must be provided.</span>
+zkQuorum=&quot;localhost:2181&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machine <span class="hljs-built_in">which</span> the DS service is deployed, <span class="hljs-built_in">set</span> localhost</span>
+ips=&quot;localhost&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machine <span class="hljs-built_in">which</span> the master service is deployed, <span class="hljs-built_in">set</span> localhost</span>
+masters=&quot;localhost&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machine <span class="hljs-built_in">which</span> the worker service is deployed, <span class="hljs-built_in">set</span> localhost</span>
+workers=&quot;localhost&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machine <span class="hljs-built_in">which</span> the alert service is deployed, <span class="hljs-built_in">set</span> localhost</span>
+alertServer=&quot;localhost&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> On machine <span class="hljs-built_in">which</span> the api service is deployed, <span class="hljs-built_in">set</span> localhost</span>
+apiServers=&quot;localhost&quot;
+<span class="hljs-meta">
+
+#</span><span class="bash"> EMail configuration, taking QQ mailbox as an example</span>
+<span class="hljs-meta">#</span><span class="bash"> EMail protocol</span>
+mailProtocol=&quot;SMTP&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> EMail server address</span>
+mailServerHost=&quot;smtp.exmail.qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> EMail server Port</span>
+mailServerPort=&quot;25&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mailSender and mailUser can be the same one.</span>
+<span class="hljs-meta">#</span><span class="bash"> Sender</span>
+mailSender=&quot;xxx@qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Receiver</span>
+mailUser=&quot;xxx@qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> EMail password</span>
+mailPassword=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Set <span class="hljs-literal">true</span> <span class="hljs-keyword">if</span> the mailbox is TLS protocol, otherwise <span class="hljs-built_in">set</span> to <span class="hljs-literal">false</span>.</span>
+starttlsEnable=&quot;true&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Mail service address value, refer to mailServerHost above.</span>
+sslTrust=&quot;smtp.exmail.qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Set <span class="hljs-literal">true</span> <span class="hljs-keyword">if</span> the mailbox is SSL protocol, otherwise <span class="hljs-built_in">set</span> to <span class="hljs-literal">false</span>. Note: starttlsEnable and sslEnable cannot be <span class="hljs-literal">true</span> at the same time.</span>
+sslEnable=&quot;false&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Download path of excel</span>
+xlsFilePath=&quot;/tmp/xls&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Where are some sql and other resource files used <span class="hljs-keyword">for</span> business uploaded. Can be <span class="hljs-built_in">set</span>: HDFS, S3, NONE. If a standalone wants to use the <span class="hljs-built_in">local</span> file system, please configure it as HDFS, because HDFS supports the <span class="hljs-built_in">local</span> file system; <span class="hljs-keyword">if</span> you <span class="hljs-keyword">do</span> not need the resource [...]
+resUploadStartupType=&quot;HDFS&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Take the <span class="hljs-built_in">local</span> file system as an example.</span>
+<span class="hljs-meta">#</span><span class="bash"> Note: If you want to upload resource files to HDFS and the NameNode has HA enabled, you need to put core-site.xml and hdfs-site.xml <span class="hljs-keyword">in</span> the installPath/conf directory. In this example, it is placed under /opt/soft/dolphinscheduler/conf, and Configure the namenode cluster name; <span class="hljs-keyword">if</span> the NameNode is not HA, modify it to a specific IP or host name.</span>
+defaultFS=&quot;file:///data/dolphinscheduler&quot;    # hdfs://{ip|hostname}:8020
+<span class="hljs-meta">
+
+#</span><span class="bash"> If the ResourceManager is HA, configure it as the active-standby IP or hostname of the ResourceManager node, such as <span class="hljs-string">&quot;192.168.xx.xx, 192.168.xx.xx&quot;</span>; otherwise, <span class="hljs-keyword">if</span> it is a single ResourceManager or yarn is not used at all, please configure yarnHaIps = <span class="hljs-string">&quot;&quot;</span>. That<span class="hljs-string">&#x27;s it, I don&#x27;</span>t use yarn here, the configur [...]
+yarnHaIps=&quot;&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> If it is a single ResourceManager, configure it as the ResourceManager node ip or hostname, otherwise, keep the default value. Yarn is not used here, keep the default.</span>
+singleYarnIp=&quot;ark1&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Since HDFS supports the <span class="hljs-built_in">local</span> file system, you need to ensure that the <span class="hljs-built_in">local</span> folder exists and has <span class="hljs-built_in">read</span> and write permissions.</span>
+hdfsPath=&quot;/data/dolphinscheduler&quot;
+</code></pre>
+<p><em>Note: If you plan to use the <code>Resource Center</code> function, execute the following command:</em></p>
+<pre><code class="language-shell">sudo mkdir /data/dolphinscheduler
+sudo chown -R dolphinscheduler:dolphinscheduler /data/dolphinscheduler
+</code></pre>
+</li>
+</ul>
+<h3>1.7: Install python's Zookeeper tool kazoo</h3>
+<ul>
+<li>Install python's Zookeeper tool. <code>This step is only used for one-click deployment.</code></li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Install pip</span>
+sudo yum -y install python-pip;  # ubuntu: sudo apt-get install python-pip
+sudo pip install kazoo;
+</code></pre>
+<p><em>Note: If yum does not find python-pip, you can also install it by following commands</em></p>
+<pre><code class="language-shell">sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
+sudo python get-pip.py  # python3: sudo python3 get-pip.py 
+<span class="hljs-meta">#</span><span class="bash"> <span class="hljs-keyword">then</span></span>
+sudo pip install kazoo;
+</code></pre>
+<ul>
+<li>
+<p>Switch to the deployment user and execute the one-click deployment script</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<pre><code>Note:
+For the first deployment, the following message appears in step 3 of `3, stop server` during operation. This message can be ignored.
+sh: bin/dolphinscheduler-daemon.sh: No such file or directory
+</code></pre>
+<ul>
+<li>After the script is completed, the following 5 services will be started. Use the <code>jps</code> command to check whether the services are started (<code>jps</code> comes with <code>java JDK</code>)</li>
+</ul>
+<pre><code class="language-aidl">    MasterServer         ----- master service
+    WorkerServer         ----- worker service
+    LoggerServer         ----- logger service
+    ApiApplicationServer ----- api service
+    AlertServer          ----- alert service
+</code></pre>
+<p>If the above services are started normally, the automatic deployment is successful.</p>
+<p>After the deployment is successful, you can view the logs. The logs are stored in the logs folder.</p>
+<pre><code class="language-log"> logs/
+    ├── dolphinscheduler-alert-server.log
+    ├── dolphinscheduler-master-server.log
+    |—— dolphinscheduler-worker-server.log
+    |—— dolphinscheduler-api-server.log
+    |—— dolphinscheduler-logger-server.log
+</code></pre>
+<h1>2. Frontend Deployment</h1>
+<p>Please download the latest version of the frontend installation package to the server deployment directory, download address: [Download] (/en-us/download/download.html) (Take 1.2.0 version as an example ), Upload the tar.gz package to this directory after downloading and uncompress it.</p>
+<pre><code class="language-shell">cd /opt/dolphinscheduler;
+
+tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -C /opt/dolphinscheduler;
+
+mv apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin dolphinscheduler-ui
+</code></pre>
+<p><strong>Choose any one of the following methods, automated deployment is recommended.</strong></p>
+<h3>2.1 Automated Deployment</h3>
+<ul>
+<li>
+<p>Enter the dolphinscheduler-ui directory and execute (<code>Note: Automated deployment will automatically download nginx</code>)</p>
+<pre><code class="language-shell">cd dolphinscheduler-ui;
+sh ./install-dolphinscheduler-ui.sh;
+</code></pre>
+<ul>
+<li>After the execution, please type the frontend port during operation, the default port is 8888, if you choose the default, please press enter directly, or type another port.</li>
+<li>Then it will let you type the api-server ip that interacts with the frontend UI.</li>
+<li>Next is the port of the api-server that lets you type to interact with the frontend UI.</li>
+<li>Next is the operating system selection.</li>
+<li>Wait for deployment to complete.</li>
+</ul>
+</li>
+<li>
+<p>After deployment, in order to prevent too large resources from uploading to the resource center, it is recommended to modify the nginx upload size parameters, as follows:</p>
+<ul>
+<li>Add Nginx configuration client_max_body_size 1024m, you can add it in the http method body.</li>
+</ul>
+<pre><code class="language-shell">vi /etc/nginx/nginx.conf
+<span class="hljs-meta">
+#</span><span class="bash"> add param</span>
+client_max_body_size 1024m;
+</code></pre>
+<ul>
+<li>Then restart Nginx service</li>
+</ul>
+<pre><code class="language-shell">systemctl restart nginx
+</code></pre>
+</li>
+<li>
+<p>Visit the front page address: <a href="http://localhost:8888">http://localhost:8888</a>. If the front login page appears, the front web installation is complete.</p>
+<p>default user password:admin/dolphinscheduler123</p>
+<p align="center">
+   <img src="/img/login.png" width="60%" />
+ </p>
+</li>
+</ul>
+<h3>2.2 Manual Deployment</h3>
+<ul>
+<li>
+<p>Install nginx by yourself, download it from the official website: Or <code>yum install nginx -y</code></p>
+</li>
+<li>
+<p>Modify the nginx configuration file (Note: some place need to be modified by yourself)</p>
+</li>
+</ul>
+<pre><code class="language-html">vi /etc/nginx/nginx.conf
+
+server {
+    listen       8888; # Your Port
+    server_name  localhost;
+    #charset koi8-r;
+    #access_log  /var/log/nginx/host.access.log  main;
+    location / {
+        root   /opt/soft/dolphinscheduler-ui/dist;      # Your dist directory which you uncompress
+        index  index.html index.html;
+    }
+    location /dolphinscheduler {
+        proxy_pass http://localhost:12345;    # Your ApiApplicationServer address
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header x_real_ipP $remote_addr;
+        proxy_set_header remote_addr $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_http_version 1.1;
+        proxy_connect_timeout 4s;
+        proxy_read_timeout 30s;
+        proxy_send_timeout 12s;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection &quot;upgrade&quot;;
+    }
+    #error_page  404              /404.html;
+    # redirect server error pages to the static page /50x.html
+    #
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   /usr/share/nginx/html;
+    }
+}
+</code></pre>
+<ul>
+<li>
+<p>Then restart Nginx service</p>
+<pre><code class="language-shell">systemctl restart nginx
+</code></pre>
+</li>
+<li>
+<p>Visit the front page address: <a href="http://localhost:8888">http://localhost:8888</a>. If the front login page appears, the front web installation is complete.</p>
+<p>default user password:admin/dolphinscheduler123</p>
+<p align="center">
+   <img src="/img/login.png" width="60%" />
+ </p>
+</li>
+</ul>
+<h1>3. Start and stop service</h1>
+<ul>
+<li>
+<p>Stop all services</p>
+<p><code>sh ./bin/stop-all.sh</code></p>
+</li>
+<li>
+<p>Start all services</p>
+<p><code>sh ./bin/start-all.sh</code></p>
+</li>
+<li>
+<p>Start and stop master service</p>
+</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start master-server
+sh ./bin/dolphinscheduler-daemon.sh stop master-server
+</code></pre>
+<ul>
+<li>Start and stop worker Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start worker-server
+sh ./bin/dolphinscheduler-daemon.sh stop worker-server
+</code></pre>
+<ul>
+<li>Start and stop api Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start api-server
+sh ./bin/dolphinscheduler-daemon.sh stop api-server
+</code></pre>
+<ul>
+<li>Start and stop logger Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start logger-server
+sh ./bin/dolphinscheduler-daemon.sh stop logger-server
+</code></pre>
+<ul>
+<li>Start and stop alert service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start alert-server
+sh ./bin/dolphinscheduler-daemon.sh stop alert-server
+</code></pre>
+<p><code>Note: Please refer to the &quot;Architecture Design&quot; section for service usage</code></p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/standalone-deployment.json b/en-us/docs/1.2.0/user_doc/standalone-deployment.json
new file mode 100644
index 0000000..2f6d587
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/standalone-deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "standalone-deployment.md",
+  "__html": "<h1>Standalone Deployment</h1>\n<p>DolphinScheduler Standalone deployment is divided into two parts: backend deployment and frontend deployment.</p>\n<h1>1. Backend Deployment</h1>\n<h3>1.1: Before you begin (please install requirement basic software by yourself)</h3>\n<ul>\n<li>PostgreSQL (8.2.15+) or MySQL (5.6 or 5.7): Choose One</li>\n<li><a href=\"https://www.oracle.com/technetwork/java/javase/downloads/index.html\">JDK</a> (1.8+):  Required. Double-check configure JAVA [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/standalone-deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/system-manual.html b/en-us/docs/1.2.0/user_doc/system-manual.html
new file mode 100644
index 0000000..b721325
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/system-manual.html
@@ -0,0 +1,778 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="system-manual">
+  <meta name="description" content="system-manual">
+  <title>system-manual</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<h2>Operational Guidelines</h2>
+<h3>Home page</h3>
+<p>The homepage contains task status statistics, process status statistics, and workflow definition statistics for all user projects.</p>
+<p align="center">
+      <img src="/img/home_en.png" width="80%" />
+ </p>
+<h3>Create a project</h3>
+<ul>
+<li>Click &quot;Project - &gt; Create Project&quot;, enter project name,  description, and click &quot;Submit&quot; to create a new project.</li>
+<li>Click on the project name to enter the project home page.</li>
+</ul>
+<p align="center">
+      <img src="/img/project_home_en.png" width="80%" />
+ </p>
+<blockquote>
+<p>The project home page contains task status statistics, process status statistics, and workflow definition statistics for the project.</p>
+</blockquote>
+<ul>
+<li>Task State Statistics: It refers to the statistics of the number of tasks to be run, failed, running, completed and succeeded in a given time frame.</li>
+<li>Process State Statistics: It refers to the statistics of the number of waiting, failing, running, completing and succeeding process instances in a specified time range.</li>
+<li>Process Definition Statistics: The process definition created by the user and the process definition granted by the administrator to the user are counted.</li>
+</ul>
+<h3>Creating Process definitions</h3>
+<ul>
+<li>Go to the project home page, click &quot;Process definitions&quot; and enter the list page of process definition.</li>
+<li>Click &quot;Create process&quot; to create a new process definition.</li>
+<li>Drag the &quot;SHELL&quot; node to the canvas and add a shell task.</li>
+<li>Fill in the Node Name, Description, and Script fields.</li>
+<li>Selecting &quot;task priority&quot; will give priority to high-level tasks in the execution queue. Tasks with the same priority will be executed in the first-in-first-out order.</li>
+<li>Timeout alarm. Fill in &quot;Overtime Time&quot;. When the task execution time exceeds the overtime, it can alarm and fail over time.</li>
+<li>Fill in &quot;Custom Parameters&quot; and refer to <a href="#CustomParameters">Custom Parameters</a><p align="center">
+<img src="/img/process_definitions_en.png" width="80%" />
+  </p>
+</li>
+<li>Increase the order of execution between nodes: click &quot;line connection&quot;. As shown, task 2 and task 3 are executed in parallel. When task 1 is executed, task 2 and task 3 are executed simultaneously.</li>
+</ul>
+<p align="center">
+   <img src="/img/task_en.png" width="80%" />
+ </p>
+<ul>
+<li>Delete dependencies: Click on the arrow icon to &quot;drag nodes and select items&quot;, select the connection line, click on the delete icon to delete dependencies between nodes.</li>
+</ul>
+<p align="center">
+      <img src="/img/delete_dependencies_en.png" width="80%" />
+ </p>
+<ul>
+<li>Click &quot;Save&quot;, enter the name of the process definition, the description of the process definition, and set the global parameters.</li>
+</ul>
+<p align="center">
+   <img src="/img/global_parameters_en.png" width="80%" />
+ </p>
+<ul>
+<li>For other types of nodes, refer to <a href="#TaskNodeType">task node types and parameter settings</a></li>
+</ul>
+<h3>Execution process definition</h3>
+<ul>
+<li><strong>The process definition of the off-line state can be edited, but not run</strong>, so the on-line workflow is the first step.</li>
+</ul>
+<blockquote>
+<p>Click on the Process definition, return to the list of process definitions, click on the icon &quot;online&quot;, online process definition.</p>
+</blockquote>
+<blockquote>
+<p>Before setting workflow offline, the timed tasks in timed management should be offline, so that the definition of workflow can be set offline successfully.</p>
+</blockquote>
+<ul>
+<li>Click &quot;Run&quot; to execute the process. Description of operation parameters:
+<ul>
+<li>Failure strategy:<strong>When a task node fails to execute, other parallel task nodes need to execute the strategy</strong>。”Continue &quot;Representation: Other task nodes perform normally&quot;, &quot;End&quot; Representation: Terminate all ongoing tasks and terminate the entire process.</li>
+<li>Notification strategy:When the process is over, send process execution information notification mail according to the process status.</li>
+<li>Process priority: The priority of process running is divided into five levels:the highest, the high, the medium, the low, and the lowest . High-level processes are executed first in the execution queue, and processes with the same priority are executed first in first out order.</li>
+<li>Worker group: This process can only be executed in a specified machine group. Default, by default, can be executed on any worker.</li>
+<li>Notification group: When the process ends or fault tolerance occurs, process information is sent to all members of the notification group by mail.</li>
+<li>Recipient: Enter the mailbox and press Enter key to save. When the process ends and fault tolerance occurs, an alert message is sent to the recipient list.</li>
+<li>Cc: Enter the mailbox and press Enter key to save. When the process is over and fault-tolerant occurs, alarm messages are copied to the copier list.</li>
+</ul>
+</li>
+</ul>
+<p align="center">
+   <img src="/img/start-process-en.png" width="80%" />
+ </p>
+<ul>
+<li>Complement: To implement the workflow definition of a specified date, you can select the time range of the complement (currently only support for continuous days), such as the data from May 1 to May 10, as shown in the figure:</li>
+</ul>
+<p align="center">
+   <img src="/img/complement-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Complement execution mode includes serial execution and parallel execution. In serial mode, the complement will be executed sequentially from May 1 to May 10. In parallel mode, the tasks from May 1 to May 10 will be executed simultaneously.</p>
+</blockquote>
+<h3>Timing Process Definition</h3>
+<ul>
+<li>Create Timing: &quot;Process Definition - &gt; Timing&quot;</li>
+<li>Choose start-stop time, in the start-stop time range, regular normal work, beyond the scope, will not continue to produce timed workflow instances.</li>
+</ul>
+<p align="center">
+   <img src="/img/timing-en.png" width="80%" />
+ </p>
+<ul>
+<li>Add a timer to be executed once a day at 5:00 a.m. as shown below:</li>
+</ul>
+<p align="center">
+      <img src="/img/timer-en.png" width="80%" />
+ </p>
+<ul>
+<li>Timely online,<strong>the newly created timer is offline. You need to click &quot;Timing Management - &gt;online&quot; to work properly.</strong></li>
+</ul>
+<h3>View process instances</h3>
+<blockquote>
+<p>Click on &quot;Process Instances&quot; to view the list of process instances.</p>
+</blockquote>
+<blockquote>
+<p>Click on the process name to see the status of task execution.</p>
+</blockquote>
+  <p align="center">
+   <img src="/img/process-instances-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Click on the task node, click &quot;View Log&quot; to view the task execution log.</p>
+</blockquote>
+  <p align="center">
+   <img src="/img/view-log-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Click on the task instance node, click <strong>View History</strong> to view the list of task instances that the process instance runs.</p>
+</blockquote>
+ <p align="center">
+    <img src="/img/instance-runs-en.png" width="80%" />
+  </p>
+<blockquote>
+<p>Operations on workflow instances:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/workflow-instances-en.png" width="80%" />
+</p>
+<ul>
+<li>Editor: You can edit the terminated process. When you save it after editing, you can choose whether to update the process definition or not.</li>
+<li>Rerun: A process that has been terminated can be re-executed.</li>
+<li>Recovery failure: For a failed process, a recovery failure operation can be performed, starting at the failed node.</li>
+<li>Stop: Stop the running process, the background will <code>kill</code> he worker process first, then <code>kill -9</code> operation.</li>
+<li>Pause:The running process can be <strong>suspended</strong>, the system state becomes <strong>waiting to be executed</strong>, waiting for the end of the task being executed, and suspending the next task to be executed.</li>
+<li>Restore pause: <strong>The suspended process</strong> can be restored and run directly from the suspended node</li>
+<li>Delete: Delete process instances and task instances under process instances</li>
+<li>Gantt diagram: The vertical axis of Gantt diagram is the topological ordering of task instances under a process instance, and the horizontal axis is the running time of task instances, as shown in the figure:</li>
+</ul>
+<p align="center">
+      <img src="/img/gantt-en.png" width="80%" />
+</p>
+<h3>View task instances</h3>
+<blockquote>
+<p>Click on &quot;Task Instance&quot; to enter the Task List page and query the performance of the task.</p>
+</blockquote>
+<p align="center">
+   <img src="/img/task-instances-en.png" width="80%" />
+</p>
+<blockquote>
+<p>Click &quot;View Log&quot; in the action column to view the log of task execution.</p>
+</blockquote>
+<p align="center">
+   <img src="/img/task-execution-en.png" width="80%" />
+</p>
+<h3>Create data source</h3>
+<blockquote>
+<p>Data Source Center supports MySQL, POSTGRESQL, HIVE and Spark data sources.</p>
+</blockquote>
+<h4>Create and edit MySQL data source</h4>
+<ul>
+<li>Click on &quot;Datasource - &gt; Create Datasources&quot; to create different types of datasources according to requirements.</li>
+<li>Datasource: Select MYSQL</li>
+<li>Datasource Name: Name of Input Datasource</li>
+<li>Description: Description of input datasources</li>
+<li>IP: Enter the IP to connect to MySQL</li>
+<li>Port: Enter the port to connect MySQL</li>
+<li>User name: Set the username to connect to MySQL</li>
+<li>Password: Set the password to connect to MySQL</li>
+<li>Database name: Enter the name of the database connecting MySQL</li>
+<li>Jdbc connection parameters: parameter settings for MySQL connections, filled in as JSON</li>
+</ul>
+<p align="center">
+   <img src="/img/mysql-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Click &quot;Test Connect&quot; to test whether the data source can be successfully connected.</p>
+</blockquote>
+<h4>Create and edit POSTGRESQL data source</h4>
+<ul>
+<li>Datasource: Select POSTGRESQL</li>
+<li>Datasource Name: Name of Input Data Source</li>
+<li>Description: Description of input data sources</li>
+<li>IP: Enter IP to connect to POSTGRESQL</li>
+<li>Port: Input port to connect POSTGRESQL</li>
+<li>Username: Set the username to connect to POSTGRESQL</li>
+<li>Password: Set the password to connect to POSTGRESQL</li>
+<li>Database name: Enter the name of the database connecting to POSTGRESQL</li>
+<li>Jdbc connection parameters: parameter settings for POSTGRESQL connections, filled in as JSON</li>
+</ul>
+<p align="center">
+   <img src="/img/create-datasource-en.png" width="80%" />
+ </p>
+<h4>Create and edit HIVE data source</h4>
+<p>1.Connect with HiveServer 2</p>
+ <p align="center">
+    <img src="/img/hive-en.png" width="80%" />
+  </p>
+<ul>
+<li>Datasource: Select HIVE</li>
+<li>Datasource Name: Name of Input Datasource</li>
+<li>Description: Description of input datasources</li>
+<li>IP: Enter IP to connect to HIVE</li>
+<li>Port: Input port to connect to HIVE</li>
+<li>Username: Set the username to connect to HIVE</li>
+<li>Password: Set the password to connect to HIVE</li>
+<li>Database Name: Enter the name of the database connecting to HIVE</li>
+<li>Jdbc connection parameters: parameter settings for HIVE connections, filled in in as JSON</li>
+</ul>
+<p>2.Connect using Hive Server 2 HA Zookeeper mode</p>
+ <p align="center">
+    <img src="/img/zookeeper-en.png" width="80%" />
+  </p>
+<p>Note: If <strong>kerberos</strong> is turned on, you need to fill in <strong>Principal</strong></p>
+<p align="center">
+    <img src="/img/principal-en.png" width="80%" />
+  </p>
+<h4>Create and Edit Spark Datasource</h4>
+<p align="center">
+   <img src="/img/edit-datasource-en.png" width="80%" />
+ </p>
+<ul>
+<li>Datasource: Select Spark</li>
+<li>Datasource Name: Name of Input Datasource</li>
+<li>Description: Description of input datasources</li>
+<li>IP: Enter the IP to connect to Spark</li>
+<li>Port: Input port to connect Spark</li>
+<li>Username: Set the username to connect to Spark</li>
+<li>Password: Set the password to connect to Spark</li>
+<li>Database name: Enter the name of the database connecting to Spark</li>
+<li>Jdbc Connection Parameters: Parameter settings for Spark Connections, filled in as JSON</li>
+</ul>
+<p>Note: If <strong>kerberos</strong> If Kerberos is turned on, you need to fill in  <strong>Principal</strong></p>
+<p align="center">
+    <img src="/img/kerberos-en.png" width="80%" />
+  </p>
+<h3>Upload Resources</h3>
+<ul>
+<li>Upload resource files and udf functions, all uploaded files and resources will be stored on hdfs, so the following configuration items are required:</li>
+</ul>
+<pre><code>conf/common/common.properties  
+    # Users who have permission to create directories under the HDFS root path
+    hdfs.root.user=hdfs
+    # data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。&quot;/escheduler&quot; is recommended
+    data.store2hdfs.basepath=/dolphinscheduler
+    # resource upload startup type : HDFS,S3,NONE
+    res.upload.startup.type=HDFS
+    # whether kerberos starts
+    hadoop.security.authentication.startup.state=false
+    # java.security.krb5.conf path
+    java.security.krb5.conf.path=/opt/krb5.conf
+    # loginUserFromKeytab user
+    login.user.keytab.username=hdfs-mycluster@ESZ.COM
+    # loginUserFromKeytab path
+    login.user.keytab.path=/opt/hdfs.headless.keytab
+    
+conf/common/hadoop.properties      
+    # ha or single namenode,If namenode ha needs to copy core-site.xml and hdfs-site.xml
+    # to the conf directory,support s3,for example : s3a://dolphinscheduler
+    fs.defaultFS=hdfs://mycluster:8020    
+    #resourcemanager ha note this need ips , this empty if single
+    yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx    
+    # If it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine
+    yarn.application.status.address=http://xxxx:8088/ws/v1/cluster/apps/%s
+
+</code></pre>
+<ul>
+<li>yarn.resourcemanager.ha.rm.ids and yarn.application.status.address only need to configure one address, and the other address is empty.</li>
+<li>You need to copy core-site.xml and hdfs-site.xml from the conf directory of the Hadoop cluster to the conf directory of the dolphinscheduler project and restart the api-server service.</li>
+</ul>
+<h4>File Manage</h4>
+<blockquote>
+<p>It is the management of various resource files, including creating basic txt/log/sh/conf files, uploading jar packages and other types of files, editing, downloading, deleting and other operations.</p>
+<p align="center">
+ <img src="/img/file-manage-en.png" width="80%" />
+</p>
+</blockquote>
+<ul>
+<li>Create file</li>
+</ul>
+<blockquote>
+<p>File formats support the following types:txt、log、sh、conf、cfg、py、java、sql、xml、hql</p>
+</blockquote>
+<p align="center">
+   <img src="/img/create-file.png" width="80%" />
+ </p>
+<ul>
+<li>Upload Files</li>
+</ul>
+<blockquote>
+<p>Upload Files: Click the Upload button to upload, drag the file to the upload area, and the file name will automatically complete the uploaded file name.</p>
+</blockquote>
+<p align="center">
+   <img src="/img/file-upload-en.png" width="80%" />
+ </p>
+<ul>
+<li>File View</li>
+</ul>
+<blockquote>
+<p>For viewable file types, click on the file name to view file details</p>
+</blockquote>
+<p align="center">
+   <img src="/img/file-view-en.png" width="80%" />
+ </p>
+<ul>
+<li>Download files</li>
+</ul>
+<blockquote>
+<p>You can download a file by clicking the download button in the top right corner of the file details, or by downloading the file under the download button after the file list.</p>
+</blockquote>
+<ul>
+<li>File rename</li>
+</ul>
+<p align="center">
+   <img src="/img/rename-en.png" width="80%" />
+ </p>
+<h4>Delete</h4>
+<blockquote>
+<p>File List - &gt; Click the Delete button to delete the specified file</p>
+</blockquote>
+<h4>Resource management</h4>
+<blockquote>
+<p>Resource management and file management functions are similar. The difference is that resource management is the UDF function of uploading, and file management uploads user programs, scripts and configuration files.</p>
+</blockquote>
+<ul>
+<li>Upload UDF resources</li>
+</ul>
+<blockquote>
+<p>The same as uploading files.</p>
+</blockquote>
+<h4>Function management</h4>
+<ul>
+<li>Create UDF Functions</li>
+</ul>
+<blockquote>
+<p>Click &quot;Create UDF Function&quot;, enter parameters of udf function, select UDF resources, and click &quot;Submit&quot; to create udf function.</p>
+<p>Currently only temporary udf functions for HIVE are supported</p>
+<ul>
+<li>UDF function name: name when entering UDF Function</li>
+<li>Package Name: Full Path of Input UDF Function</li>
+<li>Parameter: Input parameters used to annotate functions</li>
+<li>Database Name: Reserved Field for Creating Permanent UDF Functions</li>
+<li>UDF Resources: Set up the resource files corresponding to the created UDF</li>
+</ul>
+</blockquote>
+<p align="center">
+   <img src="/img/udf-function.png" width="80%" />
+ </p>
+<h2>Security</h2>
+<ul>
+<li>The security has the functions of queue management, tenant management, user management, warning group management, worker group manager, token manage and other functions. It can also authorize resources, data sources, projects, etc.</li>
+<li>Administrator login, default username password: admin/dolphinscheduler123</li>
+</ul>
+<h3>Create queues</h3>
+<ul>
+<li>Queues are used to execute spark, mapreduce and other programs, which require the use of &quot;queue&quot; parameters.</li>
+<li>&quot;Security&quot; - &gt; &quot;Queue Manage&quot; - &gt; &quot;Create Queue&quot;   <p align="center">
+  <img src="/img/create-queue-en.png" width="80%" />
+</p>
+</li>
+</ul>
+<h3>Create Tenants</h3>
+<ul>
+<li>The tenant corresponds to the account of Linux, which is used by the worker server to submit jobs. If Linux does not have this user, the worker would create the account when executing the task.</li>
+<li>Tenant Code:<strong>the tenant code is the only account on Linux that can't be duplicated.</strong></li>
+</ul>
+ <p align="center">
+    <img src="/img/create-tenant-en.png" width="80%" />
+  </p>
+<h3>Create Ordinary Users</h3>
+<ul>
+<li>User types are <strong>ordinary users</strong> and <strong>administrator users</strong>..</li>
+</ul>
+<pre><code>* Administrators have **authorization and user management** privileges, and no privileges to **create project and process-defined operations**.
+* Ordinary users can **create projects and create, edit, and execute process definitions**.
+* Note: **If the user switches the tenant, all resources under the tenant will be copied to the switched new tenant.**
+</code></pre>
+<p align="center">
+      <img src="/img/create-user-en.png" width="80%" />
+ </p>
+<h3>Create alarm group</h3>
+<ul>
+<li>The alarm group is a parameter set at start-up. After the process is finished, the status of the process and other information will be sent to the alarm group by mail.</li>
+<li>New and Editorial Warning Group<p align="center">
+<img src="/img/alarm-group-en.png" width="80%" />
+</p>
+</li>
+</ul>
+<h3>Create Worker Group</h3>
+<ul>
+<li>
+<p>Worker group provides a mechanism for tasks to run on a specified worker. Administrators create worker groups, which can be specified in task nodes and operation parameters. If the specified grouping is deleted or no grouping is specified, the task will run on any worker.</p>
+</li>
+<li>
+<p>Multiple IP addresses within a worker group (<strong>aliases can not be written</strong>), separated by <strong>commas in English</strong></p>
+<p align="center">
+  <img src="/img/worker-group-en.png" width="80%" />
+</p>
+</li>
+</ul>
+<h3>Token manage</h3>
+<ul>
+<li>Because the back-end interface has login check and token management, it provides a way to operate the system by calling the interface.<p align="center">
+  <img src="/img/token-en.png" width="80%" />
+</p>
+</li>
+<li>Call examples:</li>
+</ul>
+<pre><code class="language-令牌调用示例">    /**
+     * test token
+     */
+    public  void doPOSTParam()throws Exception{
+        // create HttpClient
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        // create http post request
+        HttpPost httpPost = new HttpPost(&quot;http://127.0.0.1:12345/dolphinscheduler/projects/create&quot;);
+        httpPost.setHeader(&quot;token&quot;, &quot;123&quot;);
+        // set parameters
+        List&lt;NameValuePair&gt; parameters = new ArrayList&lt;NameValuePair&gt;();
+        parameters.add(new BasicNameValuePair(&quot;projectName&quot;, &quot;qzw&quot;));
+        parameters.add(new BasicNameValuePair(&quot;desc&quot;, &quot;qzw&quot;));
+        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
+        httpPost.setEntity(formEntity);
+        CloseableHttpResponse response = null;
+        try {
+            // execute
+            response = httpclient.execute(httpPost);
+            // response status code 200
+            if (response.getStatusLine().getStatusCode() == 200) {
+                String content = EntityUtils.toString(response.getEntity(), &quot;UTF-8&quot;);
+                System.out.println(content);
+            }
+        } finally {
+            if (response != null) {
+                response.close();
+            }
+            httpclient.close();
+        }
+    }
+</code></pre>
+<h3>Grant authority</h3>
+<ul>
+<li>Granting permissions includes project permissions, resource permissions, datasource permissions, UDF Function permissions.</li>
+</ul>
+<blockquote>
+<p>Administrators can authorize projects, resources, data sources and UDF Functions that are not created by ordinary users. Because project, resource, data source and UDF Function are all authorized in the same way, the project authorization is introduced as an example.</p>
+</blockquote>
+<blockquote>
+<p>Note:For projects created by the user himself, the user has all the permissions. The list of items and the list of selected items will not be reflected</p>
+</blockquote>
+<ul>
+<li>1.Click on the authorization button of the designated person as follows:<p align="center">
+  <img src="/img/operation-en.png" width="80%" />
+</li>
+</ul>
+ </p>
+<ul>
+<li>2.Select the project button to authorize the project</li>
+</ul>
+<p align="center">
+   <img src="/img/auth-project-en.png" width="80%" />
+ </p>
+<h3>Monitor center</h3>
+<ul>
+<li>Service management is mainly to monitor and display the health status and basic information of each service in the system.</li>
+</ul>
+<h4>Master monitor</h4>
+<ul>
+<li>Mainly related information about master.</li>
+</ul>
+<p align="center">
+      <img src="/img/master-monitor-en.png" width="80%" />
+ </p>
+<h4>Worker monitor</h4>
+<ul>
+<li>Mainly related information of worker.</li>
+</ul>
+<p align="center">
+   <img src="/img/worker-monitor-en.png" width="80%" />
+ </p>
+<h4>Zookeeper monitor</h4>
+<ul>
+<li>Mainly the configuration information of each worker and master in zookpeeper.</li>
+</ul>
+<p align="center">
+   <img src="/img/zookeeper-monitor-en.png" width="80%" />
+ </p>
+<h4>DB monitor</h4>
+<ul>
+<li>Mainly the health status of DB</li>
+</ul>
+<p align="center">
+   <img src="/img/db-monitor-en.png" width="80%" />
+ </p>
+<h4>statistics Manage</h4>
+ <p align="center">
+   <img src="/img/statistics-en.png" width="80%" />
+ </p>
+<ul>
+<li>Commands to be executed: statistics on t_ds_command table</li>
+<li>Number of commands that failed to execute: statistics on the t_ds_error_command table</li>
+<li>Number of tasks to run: statistics of task_queue data in Zookeeper</li>
+<li>Number of tasks to be killed: statistics of task_kill in Zookeeper</li>
+</ul>
+<h2><span id=TaskNodeType>Task Node Type and Parameter Setting</span></h2>
+<h3>Shell</h3>
+<ul>
+<li>The shell node, when the worker executes, generates a temporary shell script, which is executed by a Linux user with the same name as the tenant.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_SHELL.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/shell-en.png" width="80%" />
+ </p>`
+<ul>
+<li>Node name: The node name in a process definition is unique</li>
+<li>Run flag: Identify whether the node can be scheduled properly, and if it does not need to be executed, you can turn on the forbidden execution switch.</li>
+<li>Description : Describes the function of the node</li>
+<li>Number of failed retries: Number of failed task submissions, support drop-down and manual filling</li>
+<li>Failure Retry Interval: Interval between tasks that fail to resubmit tasks, support drop-down and manual filling</li>
+<li>Script: User-developed SHELL program</li>
+<li>Resources: A list of resource files that need to be invoked in a script</li>
+<li>Custom parameters: User-defined parameters that are part of SHELL replace the contents of scripts with ${variables}</li>
+</ul>
+<h3>SUB_PROCESS</h3>
+<ul>
+<li>The sub-process node is to execute an external workflow definition as an task node.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SUB_PROCESS.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/sub-process-en.png" width="80%" />
+ </p>
+<ul>
+<li>Node name: The node name in a process definition is unique</li>
+<li>Run flag: Identify whether the node is scheduled properly</li>
+<li>Description: Describes the function of the node</li>
+<li>Sub-node: The process definition of the selected sub-process is selected, and the process definition of the selected sub-process can be jumped to by entering the sub-node in the upper right corner.</li>
+</ul>
+<h3>DEPENDENT</h3>
+<ul>
+<li>Dependent nodes are <strong>dependent checking nodes</strong>. For example, process A depends on the successful execution of process B yesterday, and the dependent node checks whether process B has a successful execution instance yesterday.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_DEPENDENT.png" alt="PNG"> ask node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/current-node-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Dependent nodes provide logical judgment functions, such as checking whether yesterday's B process was successful or whether the C process was successfully executed.</p>
+</blockquote>
+  <p align="center">
+   <img src="/img/weekly-A-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>For example, process A is a weekly task and process B and C are daily tasks. Task A requires that task B and C be successfully executed every day of the last week, as shown in the figure:</p>
+</blockquote>
+ <p align="center">
+   <img src="/img/weekly-A1-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>If weekly A also needs to be implemented successfully on Tuesday:</p>
+</blockquote>
+ <p align="center">
+   <img src="/img/weekly-A2-en.png" width="80%" />
+ </p>
+<h3>PROCEDURE</h3>
+<ul>
+<li>The procedure is executed according to the selected data source.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_PROCEDURE.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/node-setting-en.png" width="80%" />
+ </p>
+<ul>
+<li>Datasource: The data source type of stored procedure supports MySQL and POSTGRESQL, and chooses the corresponding data source.</li>
+<li>Method: The method name of the stored procedure</li>
+<li>Custom parameters: Custom parameter types of stored procedures support IN and OUT, and data types support nine data types: VARCHAR, INTEGER, LONG, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP and BOOLEAN.</li>
+</ul>
+<h3>SQL</h3>
+<ul>
+<li>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_SQL.png" alt="PNG"> task node in the toolbar onto the palette.</li>
+<li>Execute non-query SQL functionality<p align="center">
+  <img src="/img/dependent-nodes-en.png" width="80%" />
+</li>
+</ul>
+ </p>
+<ul>
+<li>Executing the query SQL function, you can choose to send mail in the form of tables and attachments to the designated recipients.</li>
+</ul>
+<p align="center">
+   <img src="/img/double-click-en.png" width="80%" />
+ </p>
+<ul>
+<li>Datasource: Select the corresponding datasource</li>
+<li>sql type: support query and non-query, query is select type query, there is a result set returned, you can specify mail notification as table, attachment or table attachment three templates. Non-query is not returned by result set, and is for update, delete, insert three types of operations</li>
+<li>sql parameter: input parameter format is key1 = value1; key2 = value2...</li>
+<li>sql statement: SQL statement</li>
+<li>UDF function: For HIVE type data sources, you can refer to UDF functions created in the resource center, other types of data sources do not support UDF functions for the time being.</li>
+<li>Custom parameters: SQL task type, and stored procedure is to customize the order of parameters to set values for methods. Custom parameter type and data type are the same as stored procedure task type. The difference is that the custom parameter of the SQL task type replaces the ${variable} in the SQL statement.</li>
+<li>Pre Statement: Pre-sql is executed before the sql statement</li>
+<li>Post Statement: Post-sql is executed after the sql statement</li>
+</ul>
+<h3>SPARK</h3>
+<ul>
+<li>Through SPARK node, SPARK program can be directly executed. For spark node, worker will use <code>spark-submit</code> mode to submit tasks.</li>
+</ul>
+<blockquote>
+<p>Drag the   <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_SPARK.png" alt="PNG">  task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/spark-submit-en.png" width="80%" />
+ </p>
+<ul>
+<li>Program Type: Support JAVA, Scala and Python</li>
+<li>Class of the main function: The full path of Main Class, the entry to the Spark program</li>
+<li>Master jar package: It's Spark's jar package</li>
+<li>Deployment: support three modes: yarn-cluster, yarn-client, and local</li>
+<li>Driver Kernel Number: Driver Kernel Number and Memory Number can be set</li>
+<li>Executor Number: Executor Number, Executor Memory Number and Executor Kernel Number can be set</li>
+<li>Command Line Parameters: Setting the input parameters of Spark program to support the replacement of custom parameter variables.</li>
+<li>Other parameters: support - jars, - files, - archives, - conf format</li>
+<li>Resource: If a resource file is referenced in other parameters, you need to select the specified resource.</li>
+<li>Custom parameters: User-defined parameters in MR locality that replace the contents in scripts with ${variables}</li>
+</ul>
+<p>Note: JAVA and Scala are just used for identification, no difference. If it's a Spark developed by Python, there's no class of the main function, and everything else is the same.</p>
+<h3>MapReduce(MR)</h3>
+<ul>
+<li>Using MR nodes, MR programs can be executed directly. For Mr nodes, worker submits tasks using <code>hadoop jar</code></li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_MR.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<ol>
+<li>JAVA program</li>
+</ol>
+ <p align="center">
+    <img src="/img/java-program-en.png" width="80%" />
+  </p>
+<ul>
+<li>Class of the main function: The full path of the MR program's entry Main Class</li>
+<li>Program Type: Select JAVA Language</li>
+<li>Master jar package: MR jar package</li>
+<li>Command Line Parameters: Setting the input parameters of MR program to support the replacement of custom parameter variables</li>
+<li>Other parameters: support - D, - files, - libjars, - archives format</li>
+<li>Resource: If a resource file is referenced in other parameters, you need to select the specified resource.</li>
+<li>Custom parameters: User-defined parameters in MR locality that replace the contents in scripts with ${variables}</li>
+</ul>
+<ol start="2">
+<li>Python program</li>
+</ol>
+<p align="center">
+   <img src="/img/python-program-en.png" width="80%" />
+ </p>
+<ul>
+<li>Program Type: Select Python Language</li>
+<li>Main jar package: Python jar package running MR</li>
+<li>Other parameters: support - D, - mapper, - reducer, - input - output format, where user-defined parameters can be set, such as:</li>
+<li>mapper &quot;<a href="http://mapper.py">mapper.py</a> 1&quot; - file mapper.py-reducer reducer.py-file reducer.py-input/journey/words.txt-output/journey/out/mr/${current TimeMillis}</li>
+<li>Among them, mapper. py 1 after - mapper is two parameters, the first parameter is mapper. py, and the second parameter is 1.</li>
+<li>Resource: If a resource file is referenced in other parameters, you need to select the specified resource.</li>
+<li>Custom parameters: User-defined parameters in MR locality that replace the contents in scripts with ${variables}</li>
+</ul>
+<h3>Python</h3>
+<ul>
+<li>With Python nodes, Python scripts can be executed directly. For Python nodes, worker will use <code>python **</code>to submit tasks.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_PYTHON.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/python-en1-2.png" width="80%" />
+ </p>
+<ul>
+<li>Script: User-developed Python program</li>
+<li>Resource: A list of resource files that need to be invoked in a script</li>
+<li>Custom parameters: User-defined parameters that are part of Python that replace the contents in the script with ${variables}</li>
+</ul>
+<h3>System parameter</h3>
+<table>
+    <tr><th>variable</th><th>meaning</th></tr>
+    <tr>
+        <td>${system.biz.date}</td>
+        <td>The timing time of routine dispatching instance is one day before, in yyyyyMMdd format. When data is supplemented, the date + 1</td>
+    </tr>
+    <tr>
+        <td>${system.biz.curdate}</td>
+        <td> Daily scheduling example timing time, format is yyyyyMMdd, when supplementing data, the date + 1</td>
+    </tr>
+    <tr>
+        <td>${system.datetime}</td>
+        <td>Daily scheduling example timing time, format is yyyyyMMddHmmss, when supplementing data, the date + 1</td>
+    </tr>
+</table>
+<h3>Time Customization Parameters</h3>
+<ul>
+<li>
+<p>Support code to customize the variable name, declaration: ${variable name}. It can refer to &quot;system parameters&quot; or specify &quot;constants&quot;.</p>
+</li>
+<li>
+<p>When we define this benchmark variable as [...], [yyyyMMddHHmmss] can be decomposed and combined arbitrarily, such as:[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] ,etc.</p>
+</li>
+<li>
+<p>Can also do this:</p>
+<ul>
+<li>Later N years: $[add_months (yyyyyyMMdd, 12*N)]</li>
+<li>The previous N years: $[add_months (yyyyyyMMdd, -12*N)]</li>
+<li>Later N months: $[add_months (yyyyyMMdd, N)]</li>
+<li>The first N months: $[add_months (yyyyyyMMdd, -N)]</li>
+<li>Later N weeks: $[yyyyyyMMdd + 7*N]</li>
+<li>The first N weeks: $[yyyyyMMdd-7*N]</li>
+<li>The day after that: $[yyyyyyMMdd + N]</li>
+<li>The day before yesterday: $[yyyyyMMdd-N]</li>
+<li>Later N hours: $[HHmmss + N/24]</li>
+<li>First N hours: $[HHmmss-N/24]</li>
+<li>After N minutes: $[HHmmss + N/24/60]</li>
+<li>First N minutes: $[HHmmss-N/24/60]</li>
+</ul>
+</li>
+</ul>
+<h3><span id=CustomParameters>User-defined parameters</span></h3>
+<ul>
+<li>User-defined parameters are divided into global parameters and local parameters. Global parameters are the global parameters passed when the process definition and process instance are saved. Global parameters can be referenced by local parameters of any task node in the whole process.</li>
+</ul>
+<p>For example:</p>
+<p align="center">
+   <img src="/img/user-defined-en.png" width="80%" />
+ </p>
+<ul>
+<li>global_bizdate is a global parameter, referring to system parameters.</li>
+</ul>
+<p align="center">
+   <img src="/img/user-defined1-en.png" width="80%" />
+ </p>
+<ul>
+<li>In tasks, local_param_bizdate refers to global parameters by  ${global_bizdate} for scripts, the value of variable local_param_bizdate can be referenced by ${local_param_bizdate}, or the value of local_param_bizdate can be set directly by JDBC.</li>
+</ul>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/system-manual.json b/en-us/docs/1.2.0/user_doc/system-manual.json
new file mode 100644
index 0000000..e83366c
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/system-manual.json
@@ -0,0 +1,6 @@
+{
+  "filename": "system-manual.md",
+  "__html": "<h1>System Use Manual</h1>\n<h2>Operational Guidelines</h2>\n<h3>Home page</h3>\n<p>The homepage contains task status statistics, process status statistics, and workflow definition statistics for all user projects.</p>\n<p align=\"center\">\n      <img src=\"/img/home_en.png\" width=\"80%\" />\n </p>\n<h3>Create a project</h3>\n<ul>\n<li>Click &quot;Project - &gt; Create Project&quot;, enter project name,  description, and click &quot;Submit&quot; to create a new project.</l [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/system-manual.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/upgrade.html b/en-us/docs/1.2.0/user_doc/upgrade.html
new file mode 100644
index 0000000..2e330b0
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/upgrade.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="upgrade">
+  <meta name="description" content="upgrade">
+  <title>upgrade</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<h2>1. Back up the previous version of the files and database</h2>
+<h2>2. Stop all services of dolphinscheduler</h2>
+<p><code>sh ./script/stop-all.sh</code></p>
+<h2>3. Download the new version of the installation package</h2>
+<ul>
+<li><a href="/en-us/download/download.html">download</a>, download the latest version of the front and back installation packages (backend referred to as dolphinscheduler-backend, front end referred to as dolphinscheduler-front)</li>
+<li>The following upgrade operations need to be performed in the new version of the directory</li>
+</ul>
+<h2>4. Database upgrade</h2>
+<ul>
+<li>Modify the following properties in conf/application-dao.properties</li>
+</ul>
+<pre><code>    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+</code></pre>
+<ul>
+<li>Execute database upgrade script</li>
+</ul>
+<p><code>sh ./script/upgrade-dolphinscheduler.sh</code></p>
+<h2>5. Backend service upgrade</h2>
+<ul>
+<li>
+<p>Modify the content of the <a href="http://install.sh">install.sh</a> configuration and execute the upgrade script</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<h2>6. Frontend service upgrade</h2>
+<ul>
+<li>
+<p>Overwrite the previous version of the dist directory</p>
+</li>
+<li>
+<p>Restart the nginx service</p>
+<p><code>systemctl restart nginx</code></p>
+</li>
+</ul>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.0/user_doc/upgrade.json b/en-us/docs/1.2.0/user_doc/upgrade.json
new file mode 100644
index 0000000..43402ef
--- /dev/null
+++ b/en-us/docs/1.2.0/user_doc/upgrade.json
@@ -0,0 +1,6 @@
+{
+  "filename": "upgrade.md",
+  "__html": "<h1>DolphinScheduler upgrade documentation</h1>\n<h2>1. Back up the previous version of the files and database</h2>\n<h2>2. Stop all services of dolphinscheduler</h2>\n<p><code>sh ./script/stop-all.sh</code></p>\n<h2>3. Download the new version of the installation package</h2>\n<ul>\n<li><a href=\"/en-us/download/download.html\">download</a>, download the latest version of the front and back installation packages (backend referred to as dolphinscheduler-backend, front end re [...]
+  "link": "/dist/en-us/docs/1.2.0/user_doc/upgrade.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/development/architecture-design.html b/en-us/docs/1.2.1/user_doc/architecture-design.html
similarity index 69%
copy from en-us/development/architecture-design.html
copy to en-us/docs/1.2.1/user_doc/architecture-design.html
index 150eb92..dc202c3 100644
--- a/en-us/development/architecture-design.html
+++ b/en-us/docs/1.2.1/user_doc/architecture-design.html
@@ -7,15 +7,15 @@
   <meta name="description" content="architecture-design">
   <title>architecture-design</title>
   <link rel="shortcut icon" href="/img/favicon.ico">
-  <link rel="stylesheet" href="/build/development.md.css">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
 </head>
 <body>
-  <div id="root"><div class="md2html development-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant- [...]
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
 <p>Before explaining the architecture of the schedule system, let us first understand the common nouns of the schedule system.</p>
 <h3>1.Noun Interpretation</h3>
 <p><strong>DAG:</strong> Full name Directed Acyclic Graph,referred to as DAG。Tasks in the workflow are assembled in the form of directed acyclic graphs, which are topologically traversed from nodes with zero indegrees of ingress until there are no successor nodes. For example, the following picture:</p>
 <p align="center">
-  <img src="/img/architecture-design/dag_examples_en_us.png" alt="dag示例"  width="80%" />
+  <img src="/img/dag_examples_cn.jpg" alt="dag示例"  width="60%" />
   <p align="center">
         <em>dag example</em>
   </p>
@@ -34,7 +34,7 @@
 <h3>2.System architecture</h3>
 <h4>2.1 System Architecture Diagram</h4>
 <p align="center">
-  <img src="/img/architecture-en.jpg" alt="System Architecture Diagram"  />
+  <img src="/img/architecture.jpg" alt="System Architecture Diagram"  />
   <p align="center">
         <em>System Architecture Diagram</em>
   </p>
@@ -92,7 +92,7 @@ Interfaces include workflow creation, definition, query, modification, release,
 </li>
 <li>
 <p><strong>UI</strong></p>
-<p>The front-end page of the system provides various visual operation interfaces of the system. For details, see the <a href="/en-us/docs/latest/user_doc/guide/introduction.html" target="_self">System User Manual</a> section.</p>
+<p>The front-end page of the system provides various visual operation interfaces of the system. For details, see the <a href="/en-us/docs/1.2.1/user_doc/system-manual.html" target="_self">System User Manual</a> section.</p>
 </li>
 </ul>
 </li>
@@ -114,7 +114,7 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>Another problem is that if the Scheduler is on the Master, although it can support different tasks in one DAG running on different machines, it will generate overload of the Master. If the Scheduler is on the Slave, all tasks in a DAG can only be submitted on one machine. If there are more parallel tasks, the pressure on the Slave may be larger.</li>
 </ul>
 <h6>Decentralization</h6>
- <p align="center"
+ <p align="center">
    <img src="https://analysys.github.io/easyscheduler_docs_cn/images/decentralization.png" alt="decentralized" width="50%" />
  </p>
 <ul>
@@ -137,13 +137,13 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>The core process algorithm for obtaining distributed locks is as follows</li>
 </ol>
  <p align="center">
-   <img src="/img/architecture-design/distributed_lock_en_us.png" alt="Get Distributed Lock Process" width="70%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/distributed_lock.png" alt="Get Distributed Lock Process" width="50%" />
  </p>
 <ol start="2">
 <li>Scheduler thread distributed lock implementation flow chart in DolphinScheduler:</li>
 </ol>
  <p align="center">
-   <img src="/img/architecture-design/distributed_lock_procss_en_us.png" alt="Get Distributed Lock Process" />
+   <img src="/img/distributed_lock_procss.png" alt="Get Distributed Lock Process" width="50%" />
  </p>
 <h5>Third, the thread is insufficient loop waiting problem</h5>
 <ul>
@@ -151,7 +151,7 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>If a large number of sub-processes are nested in a large DAG, the following figure will result in a &quot;dead&quot; state:</li>
 </ul>
  <p align="center">
-   <img src="/img/architecture-design/lack_thread_en_us.png" alt="Thread is not enough to wait for loop" width="70%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/lack_thread.png" alt="Thread is not enough to wait for loop" width="50%" />
  </p>
 <p>In the above figure, MainFlowThread waits for SubFlowThread1 to end, SubFlowThread1 waits for SubFlowThread2 to end, SubFlowThread2 waits for SubFlowThread3 to end, and SubFlowThread3 waits for a new thread in the thread pool, then the entire DAG process cannot end, and thus the thread cannot be released. This forms the state of the child parent process loop waiting. At this point, the scheduling cluster will no longer be available unless a new Master is started to add threads to brea [...]
 <p>It seems a bit unsatisfactory to start a new Master to break the deadlock, so we proposed the following three options to reduce this risk:</p>
@@ -167,21 +167,21 @@ Interfaces include workflow creation, definition, query, modification, release,
 <h6>1. Downtime fault tolerance</h6>
 <p>Service fault tolerance design relies on ZooKeeper's Watcher mechanism. The implementation principle is as follows:</p>
  <p align="center">
-   <img src="/img/architecture-design/fault-tolerant_en_us.png" alt="DolphinScheduler Fault Tolerant Design" width="70%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant.png" alt="DolphinScheduler Fault Tolerant Design" width="40%" />
  </p>
 <p>The Master monitors the directories of other Masters and Workers. If the remove event is detected, the process instance is fault-tolerant or the task instance is fault-tolerant according to the specific business logic.</p>
 <ul>
 <li>Master fault tolerance flow chart:</li>
 </ul>
  <p align="center">
-   <img src="/img/architecture-design/fault-tolerant_master_en_us.png" alt="Master Fault Tolerance Flowchart" width="70%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_master.png" alt="Master Fault Tolerance Flowchart" width="40%" />
  </p>
 <p>After the ZooKeeper Master is fault-tolerant, it is rescheduled by the Scheduler thread in DolphinScheduler. It traverses the DAG to find the &quot;Running&quot; and &quot;Submit Successful&quot; tasks, and monitors the status of its task instance for the &quot;Running&quot; task. You need to determine whether the Task Queue already exists. If it exists, monitor the status of the task instance. If it does not exist, resubmit the task instance.</p>
 <ul>
 <li>Worker fault tolerance flow chart:</li>
 </ul>
  <p align="center">
-   <img src="/img/architecture-design/fault-tolerant_worker_en_us.png" alt="Worker Fault Tolerance Flowchart" width="70%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_worker.png" alt="Worker Fault Tolerance Flowchart" width="40%" />
  </p>
 <p>Once the Master Scheduler thread finds the task instance as &quot;need to be fault tolerant&quot;, it takes over the task and resubmits.</p>
 <p>Note: Because the &quot;network jitter&quot; may cause the node to lose the heartbeat of ZooKeeper in a short time, the node's remove event occurs. In this case, we use the easiest way, that is, once the node has timeout connection with ZooKeeper, it will directly stop the Master or Worker service.</p>
@@ -211,13 +211,13 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>
 <p>The priority of the process definition is that some processes need to be processed before other processes. This can be configured at the start of the process or at the time of scheduled start. There are 5 levels, followed by HIGHEST, HIGH, MEDIUM, LOW, and LOWEST. As shown below</p>
 <p align="center">
-   <img src="/img/architecture-design/process_priority_en_us.png" alt="Process Priority Configuration" width="40%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/process_priority.png" alt="Process Priority Configuration" width="40%" />
  </p>
 </li>
 <li>
 <p>The priority of the task is also divided into 5 levels, followed by HIGHEST, HIGH, MEDIUM, LOW, and LOWEST. As shown below</p>
-<p align="center">`
-   <img src="/img/architecture-design/task_priority_en_us.png" alt="task priority configuration" width="35%" />
+<p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/task_priority.png" alt="task priority configuration" width="35%" />
  </p>
 </li>
 </ul>
@@ -236,7 +236,7 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>Considering the lightweightness of DolphinScheduler as much as possible, gRPC was chosen to implement remote access log information.</li>
 </ul>
  <p align="center">
-   <img src="/img/architecture-design/grpc_en_us.png" alt="grpc remote access" width="50%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png" alt="grpc remote access" width="50%" />
  </p>
 <ul>
 <li>We use a custom Logback FileAppender and Filter function to generate a log file for each task instance.</li>
@@ -245,12 +245,12 @@ Interfaces include workflow creation, definition, query, modification, release,
 <pre><code class="language-java"> <span class="hljs-comment">/**
   * task log appender
   */</span>
- Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TaskLogAppender</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">FileAppender</span>&lt;<span class="hljs-title">ILoggingEvent</span>&gt; </span>{
+ <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TaskLogAppender</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">FileAppender</span>&lt;<span class="hljs-title">ILoggingEvent</span>&gt; </span>{
  
      ...
 
     <span class="hljs-meta">@Override</span>
-    <span class="hljs-function">Protected <span class="hljs-keyword">void</span> <span class="hljs-title">append</span><span class="hljs-params">(ILoggingEvent event)</span> </span>{
+    <span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">append</span><span class="hljs-params">(ILoggingEvent event)</span> </span>{
 
         If (currentlyActiveFile == <span class="hljs-keyword">null</span>){
             currentlyActiveFile = getFile();
@@ -274,14 +274,14 @@ Interfaces include workflow creation, definition, query, modification, release,
 <pre><code class="language-java"> <span class="hljs-comment">/**
  * task log filter
  */</span>
-Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TaskLogFilter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Filter</span>&lt;<span class="hljs-title">ILoggingEvent</span>&gt; </span>{
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TaskLogFilter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Filter</span>&lt;<span class="hljs-title">ILoggingEvent</span>&gt; </span>{
 
     <span class="hljs-meta">@Override</span>
-    <span class="hljs-function">Public FilterReply <span class="hljs-title">decide</span><span class="hljs-params">(ILoggingEvent event)</span> </span>{
-        If (event.getThreadName().startsWith(<span class="hljs-string">&quot;TaskLogInfo-&quot;</span>)){
-            Return FilterReply.ACCEPT;
+    <span class="hljs-function"><span class="hljs-keyword">public</span> FilterReply <span class="hljs-title">decide</span><span class="hljs-params">(ILoggingEvent event)</span> </span>{
+        <span class="hljs-keyword">if</span> (event.getThreadName().startsWith(<span class="hljs-string">&quot;TaskLogInfo-&quot;</span>)){
+            <span class="hljs-keyword">return</span> FilterReply.ACCEPT;
         }
-        Return FilterReply.DENY;
+        <span class="hljs-keyword">return</span> FilterReply.DENY;
     }
 }
 </code></pre>
@@ -291,7 +291,8 @@ Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span cl
   <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
   <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
   <script>window.rootPath = '';</script>
-  <script src="/build/development.md.js"></script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
   <script>
     var _hmt = _hmt || [];
     (function() {
diff --git a/en-us/docs/1.2.1/user_doc/architecture-design.json b/en-us/docs/1.2.1/user_doc/architecture-design.json
new file mode 100644
index 0000000..833bca9
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/architecture-design.json
@@ -0,0 +1,6 @@
+{
+  "filename": "architecture-design.md",
+  "__html": "<h2>Architecture Design</h2>\n<p>Before explaining the architecture of the schedule system, let us first understand the common nouns of the schedule system.</p>\n<h3>1.Noun Interpretation</h3>\n<p><strong>DAG:</strong> Full name Directed Acyclic Graph,referred to as DAG。Tasks in the workflow are assembled in the form of directed acyclic graphs, which are topologically traversed from nodes with zero indegrees of ingress until there are no successor nodes. For example, the fol [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/architecture-design.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/backend-deployment.html b/en-us/docs/1.2.1/user_doc/backend-deployment.html
new file mode 100644
index 0000000..2492d5e
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/backend-deployment.html
@@ -0,0 +1,259 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="backend-deployment">
+  <meta name="description" content="backend-deployment">
+  <title>backend-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>There are two deployment modes for the backend:</p>
+<ul>
+<li>automatic deployment</li>
+<li>source code compile and then deployment</li>
+</ul>
+<h2>Preparations</h2>
+<p>Download the latest version of the installation package, download address:  <a href="/en-us/download/download.html">download</a>,
+download apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-backend-bin.tar.gz</p>
+<h4>Preparations 1: Installation of basic software (self-installation of required items)</h4>
+<ul>
+<li>PostgreSQL (8.2.15+) or MySQL (5.5+) : You can choose either PostgreSQL or MySQL.</li>
+<li>JDK (1.8+) : Mandatory</li>
+<li>ZooKeeper(3.4.6+) : Mandatory</li>
+<li>pstree or psmisc : &quot;pstree&quot; is required for Mac OS and &quot;psmisc&quot; is required for Fedora/Red/Hat/CentOS/Ubuntu/Debian</li>
+<li>Hadoop (2.6+) or MinIo : Optionally, if you need to use the resource upload function, You can choose either Hadoop or MinIo.</li>
+<li>Hive (1.2.1) : Optional, hive task submission needs to be installed</li>
+<li>Spark(1.x,2.x) : Optional, Spark task submission needs to be installed</li>
+</ul>
+<pre><code> Note: DolphinScheduler itself does not rely on Hadoop, Hive, Spark, PostgreSQL, but only calls their Client to run the corresponding tasks.
+</code></pre>
+<h4>Preparations 2: Create deployment users</h4>
+<ul>
+<li>Deployment users are created on all machines that require deployment scheduling, because the worker service executes jobs in <code>sudo-u {linux-user}</code>, so deployment users need sudo privileges and are confidential.</li>
+</ul>
+<pre><code>vi /etc/sudoers
+
+# For example, the deployment user is an dolphinscheduler account
+dolphinscheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
+
+# And you need to comment out the Default requiretty line
+#Default requiretty
+</code></pre>
+<h4>Preparations 3: SSH Secret-Free Configuration</h4>
+<p>Configure SSH secret-free login on deployment machines and other installation machines. If you want to install dolphinscheduler on deployment machines, you need to configure native password-free login itself.</p>
+<ul>
+<li>Connect the host and other machines SSH</li>
+</ul>
+<h4>Preparations 4: database initialization</h4>
+<ul>
+<li>
+<p>Create databases and accounts</p>
+<p>Execute the following command to create database and account</p>
+<pre><code>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
+GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
+flush privileges;
+</code></pre>
+</li>
+<li>
+<p>creates tables and imports basic data
+Modify the following attributes in ./conf/application-dao.properties</p>
+<pre><code>    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+</code></pre>
+<p>Execute scripts for creating tables and importing basic data</p>
+<pre><code>sh ./script/create-dolphinscheduler.sh
+</code></pre>
+</li>
+</ul>
+<h4>Preparations 5: Modify the deployment directory permissions and operation parameters</h4>
+<pre><code> instruction of dolphinscheduler-backend directory 
+</code></pre>
+<pre><code class="language-directory">bin : Basic service startup script
+DISCLAIMER-WIP : DISCLAIMER-WIP
+conf : Project Profile
+lib : The project relies on jar packages, including individual module jars and third-party jars
+LICENSE : LICENSE
+licenses : licenses
+NOTICE : NOTICE
+script :  Cluster Start, Stop and Service Monitor Start and Stop scripts
+sql : The project relies on SQL files
+install.sh :  One-click deployment script
+</code></pre>
+<ul>
+<li>
+<p>Modify permissions (please modify the 'deployUser' to the corresponding deployment user) so that the deployment user has operational privileges on the dolphinscheduler-backend directory</p>
+<p><code>sudo chown -R deployUser:deployUser dolphinscheduler-backend</code></p>
+</li>
+<li>
+<p>Modify the <code>.dolphinscheduler_env.sh</code> environment variable in the conf/env/directory</p>
+</li>
+<li>
+<p>Modify deployment parameters (depending on your server and business situation):</p>
+</li>
+<li>
+<p>Modify the parameters in <code>install.sh</code> to replace the values required by your business</p>
+<ul>
+<li>MonitorServerState switch variable, added in version 1.0.3, controls whether to start the self-start script (monitor master, worker status, if off-line will start automatically). The default value of &quot;false&quot; means that the self-start script is not started, and if it needs to start, it is changed to &quot;true&quot;.</li>
+<li>'hdfsStartupSate' switch variable controls whether to start hdfs
+The default value of &quot;false&quot; means not to start hdfs
+Change the variable to 'true' if you want to use hdfs, you also need to create the hdfs root path by yourself, that 'hdfsPath' in <a href="http://install.sh">install.sh</a>.</li>
+</ul>
+</li>
+<li>
+<p>If you use hdfs-related functions, you need to copy<strong>hdfs-site.xml</strong> and <strong>core-site.xml</strong> to the conf directory</p>
+</li>
+</ul>
+<h2>Deployment</h2>
+<p>Either of the following two methods can be deployed,binary file deployment is recommended, and experienced partners can use source deployment as well.</p>
+<h3>Binary file Deployment</h3>
+<ul>
+<li>
+<p>Install ZooKeeper tools</p>
+<p><code>pip install kazoo</code></p>
+</li>
+<li>
+<p>Switch to deployment user, one-click deployment</p>
+<p><code>sh install.sh</code></p>
+</li>
+<li>
+<p>Use the <code>jps</code> command to check if the services are started (<code>jps</code> comes from <code>Java JDK</code>)</p>
+</li>
+</ul>
+<pre><code class="language-aidl">    MasterServer         ----- Master Service
+    WorkerServer         ----- Worker Service
+    LoggerServer         ----- Logger Service
+    ApiApplicationServer ----- API Service
+    AlertServer          ----- Alert Service
+</code></pre>
+<p>If all services are normal, the automatic deployment is successful</p>
+<p>After successful deployment, the log can be viewed and stored in a specified folder.</p>
+<pre><code class="language-logPath"> logs/
+    ├── dolphinscheduler-alert-server.log
+    ├── dolphinscheduler-master-server.log
+    |—— dolphinscheduler-worker-server.log
+    |—— dolphinscheduler-api-server.log
+    |—— dolphinscheduler-logger-server.log
+</code></pre>
+<h3>Compile source code to deploy</h3>
+<p>After downloading the release version of the source package, uncompress it into the root directory</p>
+<ul>
+<li>
+<p>Build a tar package</p>
+<p>Execute the compilation command:</p>
+<pre><code> mvn -U clean package -Prelease -Dmaven.test.skip=true
+</code></pre>
+<p>View directory</p>
+<p>After normal compilation, <code>apache-dolphinscheduler-incubating-${latest.release.version}-dolphinscheduler-backend-bin.tar.gz</code>
+is generated in the <code>./dolphinscheduler-dist/dolphinscheduler-backend/target</code> directory</p>
+</li>
+<li>
+<p>OR build a rpm package</p>
+<p>The rpm package can be installed on the Linux platform using the rpm command or yum. The rpm package can be used to help Dolphinscheduler better integrate with other management tools, such as ambari, cloudera manager.</p>
+<p>Execute the compilation command:</p>
+<pre><code> mvn -U clean package -Prpmbuild -Dmaven.test.skip=true
+</code></pre>
+<p>View directory</p>
+<p>After normal compilation, <code>apache-dolphinscheduler-incubating-${latest.release.version}-1.noarch.rpm</code>
+is generated in the <code>./dolphinscheduler-dist/target/rpm/apache-dolphinscheduler-incubating/RPMS/noarch/</code> directory</p>
+</li>
+<li>
+<p>Decompress the compiled tar.gz package or use the rpm command to install (the rpm installation method will install dolphinscheduler in the /opt/soft directory) . The dolphinscheduler directory structure is like this:</p>
+<pre><code> ../
+    ├── bin
+    ├── conf
+    |── DISCLAIMER
+    |—— install.sh
+    |—— lib
+    |—— LICENSE
+    |—— licenses
+    |—— NOTICE
+    |—— script
+    |—— sql
+</code></pre>
+</li>
+</ul>
+<ul>
+<li>
+<p>Install ZooKeeper tools</p>
+<p><code>pip install kazoo</code></p>
+</li>
+<li>
+<p>Switch to deployment user, one-click deployment</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<h3>Start-and-stop services commonly used in systems (for service purposes, please refer to System Architecture Design for details)</h3>
+<ul>
+<li>
+<p>stop all services in the cluster</p>
+<p><code>sh ./bin/stop-all.sh</code></p>
+</li>
+<li>
+<p>start all services in the cluster</p>
+<p><code>sh ./bin/start-all.sh</code></p>
+</li>
+<li>
+<p>start and stop one master server</p>
+</li>
+</ul>
+<pre><code class="language-master">sh ./bin/dolphinscheduler-daemon.sh start master-server
+sh ./bin/dolphinscheduler-daemon.sh stop master-server
+</code></pre>
+<ul>
+<li>start and stop one worker server</li>
+</ul>
+<pre><code class="language-worker">sh ./bin/dolphinscheduler-daemon.sh start worker-server
+sh ./bin/dolphinscheduler-daemon.sh stop worker-server
+</code></pre>
+<ul>
+<li>start and stop api server</li>
+</ul>
+<pre><code class="language-Api">sh ./bin/dolphinscheduler-daemon.sh start api-server
+sh ./bin/dolphinscheduler-daemon.sh stop api-server
+</code></pre>
+<ul>
+<li>start and stop logger server</li>
+</ul>
+<pre><code class="language-Logger">sh ./bin/dolphinscheduler-daemon.sh start logger-server
+sh ./bin/dolphinscheduler-daemon.sh stop logger-server
+</code></pre>
+<ul>
+<li>start and stop alert server</li>
+</ul>
+<pre><code class="language-Alert">sh ./bin/dolphinscheduler-daemon.sh start alert-server
+sh ./bin/dolphinscheduler-daemon.sh stop alert-server
+</code></pre>
+<h2>Database Upgrade</h2>
+<p>Modify the following properties in ./conf/application-dao.properties</p>
+<pre><code>```
+    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+```
+</code></pre>
+<p>The database can be upgraded automatically by executing the following command:</p>
+<pre><code class="language-upgrade">sh ./script/upgrade-dolphinscheduler.sh
+</code></pre>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/backend-deployment.json b/en-us/docs/1.2.1/user_doc/backend-deployment.json
new file mode 100644
index 0000000..29c0a9a
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/backend-deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "backend-deployment.md",
+  "__html": "<h1>Backend Deployment Document</h1>\n<p>There are two deployment modes for the backend:</p>\n<ul>\n<li>automatic deployment</li>\n<li>source code compile and then deployment</li>\n</ul>\n<h2>Preparations</h2>\n<p>Download the latest version of the installation package, download address:  <a href=\"/en-us/download/download.html\">download</a>,\ndownload apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-backend-bin.tar.gz</p>\n<h4>Preparations 1: Installation of basic [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/backend-deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/frontend-deployment.html b/en-us/docs/1.2.1/user_doc/frontend-deployment.html
new file mode 100644
index 0000000..654b78e
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/frontend-deployment.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="frontend-deployment">
+  <meta name="description" content="frontend-deployment">
+  <title>frontend-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>The front-end has three deployment modes: automated deployment, manual deployment and compiled source deployment.</p>
+<h2>Preparations</h2>
+<h4>Download the installation package</h4>
+<p>Please download the latest version of the installation package, download address: <a href="/en-us/download/download.html">download</a></p>
+<p>After downloading apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-front-bin.tar.gz,
+decompress<code>tar -zxvf apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-front-bin.tar.gz ./</code>and enter the<code>dolphinscheduler-ui</code>directory</p>
+<h2>Deployment</h2>
+<p>Automated deployment is recommended for either of the following two ways</p>
+<h3>Automated Deployment</h3>
+<blockquote>
+<p>Front-end automatic deployment based on Linux system <code>yum</code> operation, before deployment, please install and update<code>yum</code></p>
+</blockquote>
+<p>under this directory, execute<code>./install-dolphinscheduler-ui.sh</code></p>
+<h3>Manual Deployment</h3>
+<p>You can choose one of the following two deployment methods, or you can choose other deployment methods according to your production environment.</p>
+<h4>nginx deployment</h4>
+<p>Option to install epel source <code>yum install epel-release -y</code></p>
+<p>Install Nginx by yourself, download it from the official website: <a href="http://nginx.org/en/download.html">http://nginx.org/en/download.html</a> or <code>yum install nginx -y</code></p>
+<blockquote>
+<h4>Nginx configuration file address</h4>
+</blockquote>
+<pre><code>/etc/nginx/conf.d/default.conf
+</code></pre>
+<blockquote>
+<h4>Configuration information (self-modifying)</h4>
+</blockquote>
+<pre><code>server {
+    listen       8888;# access port
+    server_name  localhost;
+    #charset koi8-r;
+    #access_log  /var/log/nginx/host.access.log  main;
+    location / {
+        root   /xx/dist; # the dist directory address decompressed by the front end above (self-modifying)
+        index  index.html index.html;
+    }
+    location /dolphinscheduler {
+        proxy_pass http://192.168.xx.xx:12345; # interface address (self-modifying)
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header x_real_ipP $remote_addr;
+        proxy_set_header remote_addr $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_http_version 1.1;
+        proxy_connect_timeout 4s;
+        proxy_read_timeout 30s;
+        proxy_send_timeout 12s;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection &quot;upgrade&quot;;
+    }
+    #error_page  404              /404.html;
+    # redirect server error pages to the static page /50x.html
+    #
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   /usr/share/nginx/html;
+    }
+}
+</code></pre>
+<blockquote>
+<h4>Restart the Nginx service</h4>
+</blockquote>
+<pre><code>systemctl restart nginx
+</code></pre>
+<h4>nginx command</h4>
+<ul>
+<li>
+<p>enable <code>systemctl enable nginx</code></p>
+</li>
+<li>
+<p>restart <code>systemctl restart nginx</code></p>
+</li>
+<li>
+<p>status <code>systemctl status nginx</code></p>
+</li>
+</ul>
+<h4>jetty deployment</h4>
+<p>Enter the source package <code>dolphinscheduler-ui</code> directory and execute</p>
+<pre><code>npm install
+</code></pre>
+<blockquote>
+<h5>! ! ! Special attention here. If the project reports a &quot;node-sass error&quot; error while pulling the dependency package, execute the following command again after execution.</h5>
+</blockquote>
+<pre><code>npm install node-sass --unsafe-perm //Install node-sass dependency separately
+</code></pre>
+<pre><code>npm run build:release
+</code></pre>
+<p>Create the ui directory under the backend binary package directory</p>
+<p>Copy all files in the dolphinscheduler-ui/dist directory to the backend binary package ui directory</p>
+<p>Visit the following url, interface address (modify it yourself)
+<a href="http://192.168.xx.xx:12345/dolphinscheduler">http://192.168.xx.xx:12345/dolphinscheduler</a></p>
+<p>default user password:admin/dolphinscheduler123</p>
+<h2>FAQ</h2>
+<h4>Upload file size limit</h4>
+<p>Edit the configuration file <code>vi /etc/nginx/nginx.conf</code></p>
+<pre><code># change upload size
+client_max_body_size 1024m
+</code></pre>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/frontend-deployment.json b/en-us/docs/1.2.1/user_doc/frontend-deployment.json
new file mode 100644
index 0000000..6428b91
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/frontend-deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "frontend-deployment.md",
+  "__html": "<h1>frontend-deployment</h1>\n<p>The front-end has three deployment modes: automated deployment, manual deployment and compiled source deployment.</p>\n<h2>Preparations</h2>\n<h4>Download the installation package</h4>\n<p>Please download the latest version of the installation package, download address: <a href=\"/en-us/download/download.html\">download</a></p>\n<p>After downloading apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-front-bin.tar.gz,\ndecompress<code>t [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/frontend-deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/hardware-environment.html b/en-us/docs/1.2.1/user_doc/hardware-environment.html
new file mode 100644
index 0000000..de1fdec
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/hardware-environment.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="hardware-environment">
+  <meta name="description" content="hardware-environment">
+  <title>hardware-environment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>DolphinScheduler, as an open-source distributed workflow task scheduling system, can be well deployed and run in Intel architecture server environments and mainstream virtualization environments, and supports mainstream Linux operating system environments.</p>
+<h2>1. Linux operating system version requirements</h2>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">OS</th>
+<th style="text-align:center">Version</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">Red Hat Enterprise Linux</td>
+<td style="text-align:center">7.0 and above</td>
+</tr>
+<tr>
+<td style="text-align:left">CentOS</td>
+<td style="text-align:center">7.0 and above</td>
+</tr>
+<tr>
+<td style="text-align:left">Oracle Enterprise Linux</td>
+<td style="text-align:center">7.0 and above</td>
+</tr>
+<tr>
+<td style="text-align:left">Ubuntu LTS</td>
+<td style="text-align:center">16.04 and above</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>Attention:</strong>
+The above Linux operating systems can run on physical servers and mainstream virtualization environments such as VMware, KVM, and XEN.</p>
+</blockquote>
+<h2>2. Recommended server configuration</h2>
+<p>DolphinScheduler supports 64-bit hardware platforms with Intel x86-64 architecture. The following recommendation is made for server hardware configuration in a production environment:</p>
+<h3>Production Environment</h3>
+<table>
+<thead>
+<tr>
+<th><strong>CPU</strong></th>
+<th><strong>MEM</strong></th>
+<th><strong>HD</strong></th>
+<th><strong>NIC</strong></th>
+<th><strong>Num</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>4 core+</td>
+<td>8 GB+</td>
+<td>SAS</td>
+<td>GbE</td>
+<td>1+</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>Attention:</strong></p>
+<ul>
+<li>The above-recommended configuration is the minimum configuration for deploying DolphinScheduler. The higher configuration is strongly recommended for production environments.</li>
+<li>The hard disk size configuration is recommended by more than 50GB. The system disk and data disk are separated.</li>
+</ul>
+</blockquote>
+<h2>3. Network requirements</h2>
+<p>DolphinScheduler provides the following network port configurations for normal operation:</p>
+<table>
+<thead>
+<tr>
+<th>Server</th>
+<th>Port</th>
+<th>Desc</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>MasterServer</td>
+<td>5566</td>
+<td>Not the communication port. Require the native ports do not conflict</td>
+</tr>
+<tr>
+<td>WorkerServer</td>
+<td>7788</td>
+<td>Not the communication port. Require the native ports do not conflict</td>
+</tr>
+<tr>
+<td>ApiApplicationServer</td>
+<td>12345</td>
+<td>Backend communication port</td>
+</tr>
+<tr>
+<td>nginx</td>
+<td>8888</td>
+<td>The port for DolphinScheduler UI</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>Attention:</strong></p>
+<ul>
+<li>MasterServer and WorkerServer do not need to enable communication between the networks. As long as the local ports do not conflict.</li>
+<li>Administrators can adjust relevant ports on the network side and host-side according to the deployment plan of DolphinScheduler components in the actual environment.</li>
+</ul>
+</blockquote>
+<h2>4. Browser requirements</h2>
+<p>DolphinScheduler recommends Chrome and the latest browsers which using Chrome Kernel to access the front-end visual operator page.</p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/hardware-environment.json b/en-us/docs/1.2.1/user_doc/hardware-environment.json
new file mode 100644
index 0000000..fb15f74
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/hardware-environment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "hardware-environment.md",
+  "__html": "<h1>Hareware Environment</h1>\n<p>DolphinScheduler, as an open-source distributed workflow task scheduling system, can be well deployed and run in Intel architecture server environments and mainstream virtualization environments, and supports mainstream Linux operating system environments.</p>\n<h2>1. Linux operating system version requirements</h2>\n<table>\n<thead>\n<tr>\n<th style=\"text-align:left\">OS</th>\n<th style=\"text-align:center\">Version</th>\n</tr>\n</thead>\n [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/hardware-environment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/metadata-1.2.html b/en-us/docs/1.2.1/user_doc/metadata-1.2.html
new file mode 100644
index 0000000..190cee6
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/metadata-1.2.html
@@ -0,0 +1,661 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="metadata-1.2">
+  <meta name="description" content="metadata-1.2">
+  <title>metadata-1.2</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p><a name="V5KOl"></a></p>
+<h3>Dolphin Scheduler 1.2 DB Table Overview</h3>
+<table>
+<thead>
+<tr>
+<th style="text-align:center">Table Name</th>
+<th style="text-align:center">Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:center">t_ds_access_token</td>
+<td style="text-align:center">token for access ds backend</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_alert</td>
+<td style="text-align:center">alert detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_alertgroup</td>
+<td style="text-align:center">alert group</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_command</td>
+<td style="text-align:center">command detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_datasource</td>
+<td style="text-align:center">data source</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_error_command</td>
+<td style="text-align:center">error command detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_process_definition</td>
+<td style="text-align:center">process difinition</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_process_instance</td>
+<td style="text-align:center">process instance</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_project</td>
+<td style="text-align:center">project</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_queue</td>
+<td style="text-align:center">queue</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_datasource_user</td>
+<td style="text-align:center">datasource related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_process_instance</td>
+<td style="text-align:center">sub process</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_project_user</td>
+<td style="text-align:center">project related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_resources_user</td>
+<td style="text-align:center">resource related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_udfs_user</td>
+<td style="text-align:center">UDF related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_relation_user_alertgroup</td>
+<td style="text-align:center">alert group related to user</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_resources</td>
+<td style="text-align:center">resoruce center file</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_schedules</td>
+<td style="text-align:center">process difinition schedule</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_session</td>
+<td style="text-align:center">user login session</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_task_instance</td>
+<td style="text-align:center">task instance</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_tenant</td>
+<td style="text-align:center">tenant</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_udfs</td>
+<td style="text-align:center">UDF resource</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_user</td>
+<td style="text-align:center">user detail</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_version</td>
+<td style="text-align:center">ds version</td>
+</tr>
+<tr>
+<td style="text-align:center">t_ds_worker_group</td>
+<td style="text-align:center">worker group</td>
+</tr>
+</tbody>
+</table>
+<hr>
+<p><a name="XCLy1"></a></p>
+<h3>E-R Diagram</h3>
+<p><a name="5hWWZ"></a></p>
+<h4>User Queue DataSource</h4>
+<p><img src="/img/metadata-erd/user-queue-datasource.png" alt="image.png"></p>
+<ul>
+<li>Multiple users can belong to one tenant</li>
+<li>The queue field in t_ds_user table stores the queue_name information in t_ds_queue table, but t_ds_tenant stores queue information using queue_id. During the execution of the process definition, the user queue has the highest priority. If the user queue is empty, the tenant queue is used.</li>
+<li>The user_id field in the t_ds_datasource table indicates the user who created the data source. The user_id in t_ds_relation_datasource_user indicates the user who has permission to the data source.
+<a name="7euSN"></a></li>
+</ul>
+<h4>Project Resource Alert</h4>
+<p><img src="/img/metadata-erd/project-resource-alert.png" alt="image.png"></p>
+<ul>
+<li>User can have multiple projects, User project authorization completes the relationship binding using project_id and user_id in t_ds_relation_project_user table</li>
+<li>The user_id in the t_ds_projcet table represents the user who created the project, and the user_id in the t_ds_relation_project_user table represents users who have permission to the project</li>
+<li>The user_id in the t_ds_resources table represents the user who created the resource, and the user_id in t_ds_relation_resources_user represents the user who has permissions to the resource</li>
+<li>The user_id in the t_ds_udfs table represents the user who created the UDF, and the user_id in the t_ds_relation_udfs_user table represents a user who has permission to the UDF
+<a name="JEw4v"></a></li>
+</ul>
+<h4>Command Process Task</h4>
+<p><img src="/img/metadata-erd/command.png" alt="image.png"><br /><img src="/img/metadata-erd/process-task.png" alt="image.png"></p>
+<ul>
+<li>A project has multiple process definitions, a process definition can generate multiple process instances, and a process instance can generate multiple task instances</li>
+<li>The t_ds_schedulers table stores the timing schedule information for process difinition</li>
+<li>The data stored in the t_ds_relation_process_instance table is used to deal with that the process definition contains sub-processes, parent_process_instance_id field represents the id of the main process instance containing the child process, process_instance_id field represents the id of the sub-process instance, parent_task_instance_id field represents the task instance id of the sub-process node</li>
+<li>The process instance table and the task instance table correspond to the t_ds_process_instance table and the t_ds_task_instance table, respectively.</li>
+</ul>
+<hr>
+<p><a name="yd79T"></a></p>
+<h3>Core Table Schema</h3>
+<p><a name="6bVhH"></a></p>
+<h4>t_ds_process_definition</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>name</td>
+<td>varchar</td>
+<td>process definition name</td>
+</tr>
+<tr>
+<td>version</td>
+<td>int</td>
+<td>process definition version</td>
+</tr>
+<tr>
+<td>release_state</td>
+<td>tinyint</td>
+<td>process definition release state:0:offline,1:online</td>
+</tr>
+<tr>
+<td>project_id</td>
+<td>int</td>
+<td>project id</td>
+</tr>
+<tr>
+<td>user_id</td>
+<td>int</td>
+<td>process definition creator id</td>
+</tr>
+<tr>
+<td>process_definition_json</td>
+<td>longtext</td>
+<td>process definition json content</td>
+</tr>
+<tr>
+<td>description</td>
+<td>text</td>
+<td>process difinition desc</td>
+</tr>
+<tr>
+<td>global_params</td>
+<td>text</td>
+<td>global parameters</td>
+</tr>
+<tr>
+<td>flag</td>
+<td>tinyint</td>
+<td>process is available: 0 not available, 1 available</td>
+</tr>
+<tr>
+<td>locations</td>
+<td>text</td>
+<td>Node location information</td>
+</tr>
+<tr>
+<td>connects</td>
+<td>text</td>
+<td>Node connection information</td>
+</tr>
+<tr>
+<td>receivers</td>
+<td>text</td>
+<td>receivers</td>
+</tr>
+<tr>
+<td>receivers_cc</td>
+<td>text</td>
+<td>carbon copy list</td>
+</tr>
+<tr>
+<td>create_time</td>
+<td>datetime</td>
+<td>create time</td>
+</tr>
+<tr>
+<td>timeout</td>
+<td>int</td>
+<td>timeout</td>
+</tr>
+<tr>
+<td>tenant_id</td>
+<td>int</td>
+<td>tenant id</td>
+</tr>
+<tr>
+<td>update_time</td>
+<td>datetime</td>
+<td>update time</td>
+</tr>
+</tbody>
+</table>
+<p><a name="t5uxM"></a></p>
+<h4>t_ds_process_instance</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>name</td>
+<td>varchar</td>
+<td>process instance name</td>
+</tr>
+<tr>
+<td>process_definition_id</td>
+<td>int</td>
+<td>process definition id</td>
+</tr>
+<tr>
+<td>state</td>
+<td>tinyint</td>
+<td>process instance Status: 0 commit succeeded, 1 running, 2 prepare to pause, 3 pause, 4 prepare to stop, 5 stop, 6 fail, 7 succeed, 8 need fault tolerance, 9 kill, 10 wait for thread, 11 wait for dependency to complete</td>
+</tr>
+<tr>
+<td>recovery</td>
+<td>tinyint</td>
+<td>process instance failover flag:0:normal,1:failover instance</td>
+</tr>
+<tr>
+<td>start_time</td>
+<td>datetime</td>
+<td>process instance start time</td>
+</tr>
+<tr>
+<td>end_time</td>
+<td>datetime</td>
+<td>process instance end time</td>
+</tr>
+<tr>
+<td>run_times</td>
+<td>int</td>
+<td>process instance run times</td>
+</tr>
+<tr>
+<td>host</td>
+<td>varchar</td>
+<td>process instance host</td>
+</tr>
+<tr>
+<td>command_type</td>
+<td>tinyint</td>
+<td>command type:0 start ,1 Start from the current node,2 Resume a fault-tolerant process,3 Resume Pause Process, 4 Execute from the failed node,5 Complement, 6 dispatch, 7 re-run, 8 pause, 9 stop ,10 Resume waiting thread</td>
+</tr>
+<tr>
+<td>command_param</td>
+<td>text</td>
+<td>json command parameters</td>
+</tr>
+<tr>
+<td>task_depend_type</td>
+<td>tinyint</td>
+<td>task depend type. 0: only current node,1:before the node,2:later nodes</td>
+</tr>
+<tr>
+<td>max_try_times</td>
+<td>tinyint</td>
+<td>max try times</td>
+</tr>
+<tr>
+<td>failure_strategy</td>
+<td>tinyint</td>
+<td>failure strategy. 0:end the process when node failed,1:continue running the other nodes when node failed</td>
+</tr>
+<tr>
+<td>warning_type</td>
+<td>tinyint</td>
+<td>warning type. 0:no warning,1:warning if process success,2:warning if process failed,3:warning if success</td>
+</tr>
+<tr>
+<td>warning_group_id</td>
+<td>int</td>
+<td>warning group id</td>
+</tr>
+<tr>
+<td>schedule_time</td>
+<td>datetime</td>
+<td>schedule time</td>
+</tr>
+<tr>
+<td>command_start_time</td>
+<td>datetime</td>
+<td>command start time</td>
+</tr>
+<tr>
+<td>global_params</td>
+<td>text</td>
+<td>global parameters</td>
+</tr>
+<tr>
+<td>process_instance_json</td>
+<td>longtext</td>
+<td>process instance json(copy的process definition 的json)</td>
+</tr>
+<tr>
+<td>flag</td>
+<td>tinyint</td>
+<td>process instance is available: 0 not available, 1 available</td>
+</tr>
+<tr>
+<td>update_time</td>
+<td>timestamp</td>
+<td>update time</td>
+</tr>
+<tr>
+<td>is_sub_process</td>
+<td>int</td>
+<td>whether the process is sub process:  1 sub-process,0 not sub-process</td>
+</tr>
+<tr>
+<td>executor_id</td>
+<td>int</td>
+<td>executor id</td>
+</tr>
+<tr>
+<td>locations</td>
+<td>text</td>
+<td>Node location information</td>
+</tr>
+<tr>
+<td>connects</td>
+<td>text</td>
+<td>Node connection information</td>
+</tr>
+<tr>
+<td>history_cmd</td>
+<td>text</td>
+<td>history commands of process instance operation</td>
+</tr>
+<tr>
+<td>dependence_schedule_times</td>
+<td>text</td>
+<td>depend schedule fire time</td>
+</tr>
+<tr>
+<td>process_instance_priority</td>
+<td>int</td>
+<td>process instance priority. 0 Highest,1 High,2 Medium,3 Low,4 Lowest</td>
+</tr>
+<tr>
+<td>worker_group_id</td>
+<td>int</td>
+<td>worker group id</td>
+</tr>
+<tr>
+<td>timeout</td>
+<td>int</td>
+<td>time out</td>
+</tr>
+<tr>
+<td>tenant_id</td>
+<td>int</td>
+<td>tenant id</td>
+</tr>
+</tbody>
+</table>
+<p><a name="tHZsY"></a></p>
+<h4>t_ds_task_instance</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>name</td>
+<td>varchar</td>
+<td>task name</td>
+</tr>
+<tr>
+<td>task_type</td>
+<td>varchar</td>
+<td>task type</td>
+</tr>
+<tr>
+<td>process_definition_id</td>
+<td>int</td>
+<td>process definition id</td>
+</tr>
+<tr>
+<td>process_instance_id</td>
+<td>int</td>
+<td>process instance id</td>
+</tr>
+<tr>
+<td>task_json</td>
+<td>longtext</td>
+<td>task content json</td>
+</tr>
+<tr>
+<td>state</td>
+<td>tinyint</td>
+<td>Status: 0 commit succeeded, 1 running, 2 prepare to pause, 3 pause, 4 prepare to stop, 5 stop, 6 fail, 7 succeed, 8 need fault tolerance, 9 kill, 10 wait for thread, 11 wait for dependency to complete</td>
+</tr>
+<tr>
+<td>submit_time</td>
+<td>datetime</td>
+<td>task submit time</td>
+</tr>
+<tr>
+<td>start_time</td>
+<td>datetime</td>
+<td>task start time</td>
+</tr>
+<tr>
+<td>end_time</td>
+<td>datetime</td>
+<td>task end time</td>
+</tr>
+<tr>
+<td>host</td>
+<td>varchar</td>
+<td>host of task running on</td>
+</tr>
+<tr>
+<td>execute_path</td>
+<td>varchar</td>
+<td>task execute path in the host</td>
+</tr>
+<tr>
+<td>log_path</td>
+<td>varchar</td>
+<td>task log path</td>
+</tr>
+<tr>
+<td>alert_flag</td>
+<td>tinyint</td>
+<td>whether alert</td>
+</tr>
+<tr>
+<td>retry_times</td>
+<td>int</td>
+<td>task retry times</td>
+</tr>
+<tr>
+<td>pid</td>
+<td>int</td>
+<td>pid of task</td>
+</tr>
+<tr>
+<td>app_link</td>
+<td>varchar</td>
+<td>yarn app id</td>
+</tr>
+<tr>
+<td>flag</td>
+<td>tinyint</td>
+<td>taskinstance is available: 0 not available, 1 available</td>
+</tr>
+<tr>
+<td>retry_interval</td>
+<td>int</td>
+<td>retry interval when task failed</td>
+</tr>
+<tr>
+<td>max_retry_times</td>
+<td>int</td>
+<td>max retry times</td>
+</tr>
+<tr>
+<td>task_instance_priority</td>
+<td>int</td>
+<td>task instance priority:0 Highest,1 High,2 Medium,3 Low,4 Lowest</td>
+</tr>
+<tr>
+<td>worker_group_id</td>
+<td>int</td>
+<td>worker group id</td>
+</tr>
+</tbody>
+</table>
+<p><a name="gLGtm"></a></p>
+<h4>t_ds_command</h4>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Type</th>
+<th>Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>id</td>
+<td>int</td>
+<td>primary key</td>
+</tr>
+<tr>
+<td>command_type</td>
+<td>tinyint</td>
+<td>Command type: 0 start workflow, 1 start execution from current node, 2 resume fault-tolerant workflow, 3 resume pause process, 4 start execution from failed node, 5 complement, 6 schedule, 7 rerun, 8 pause, 9 stop, 10 resume waiting thread</td>
+</tr>
+<tr>
+<td>process_definition_id</td>
+<td>int</td>
+<td>process definition id</td>
+</tr>
+<tr>
+<td>command_param</td>
+<td>text</td>
+<td>json command parameters</td>
+</tr>
+<tr>
+<td>task_depend_type</td>
+<td>tinyint</td>
+<td>Node dependency type: 0 current node, 1 forward, 2 backward</td>
+</tr>
+<tr>
+<td>failure_strategy</td>
+<td>tinyint</td>
+<td>Failed policy: 0 end, 1 continue</td>
+</tr>
+<tr>
+<td>warning_type</td>
+<td>tinyint</td>
+<td>Alarm type: 0 is not sent, 1 process is sent successfully, 2 process is sent failed, 3 process is sent successfully and all failures are sent</td>
+</tr>
+<tr>
+<td>warning_group_id</td>
+<td>int</td>
+<td>warning group</td>
+</tr>
+<tr>
+<td>schedule_time</td>
+<td>datetime</td>
+<td>schedule time</td>
+</tr>
+<tr>
+<td>start_time</td>
+<td>datetime</td>
+<td>start time</td>
+</tr>
+<tr>
+<td>executor_id</td>
+<td>int</td>
+<td>executor id</td>
+</tr>
+<tr>
+<td>dependence</td>
+<td>varchar</td>
+<td>dependence</td>
+</tr>
+<tr>
+<td>update_time</td>
+<td>datetime</td>
+<td>update time</td>
+</tr>
+<tr>
+<td>process_instance_priority</td>
+<td>int</td>
+<td>process instance priority: 0 Highest,1 High,2 Medium,3 Low,4 Lowest</td>
+</tr>
+<tr>
+<td>worker_group_id</td>
+<td>int</td>
+<td>worker group id</td>
+</tr>
+</tbody>
+</table>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/metadata-1.2.json b/en-us/docs/1.2.1/user_doc/metadata-1.2.json
new file mode 100644
index 0000000..a688b5e
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/metadata-1.2.json
@@ -0,0 +1,6 @@
+{
+  "filename": "metadata-1.2.md",
+  "__html": "<h1>Dolphin Scheduler 1.2 MetaData</h1>\n<p><a name=\"V5KOl\"></a></p>\n<h3>Dolphin Scheduler 1.2 DB Table Overview</h3>\n<table>\n<thead>\n<tr>\n<th style=\"text-align:center\">Table Name</th>\n<th style=\"text-align:center\">Comment</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style=\"text-align:center\">t_ds_access_token</td>\n<td style=\"text-align:center\">token for access ds backend</td>\n</tr>\n<tr>\n<td style=\"text-align:center\">t_ds_alert</td>\n<td style=\"text-align [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/metadata-1.2.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/plugin-development.html b/en-us/docs/1.2.1/user_doc/plugin-development.html
new file mode 100644
index 0000000..0edb37b
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/plugin-development.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="plugin-development">
+  <meta name="description" content="plugin-development">
+  <title>plugin-development</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>Remind:Currently, task plugin development does not support hot deployment.</p>
+<h3>Shell-based tasks</h3>
+<h4>YARN-based calculations (see MapReduceTask)</h4>
+<ul>
+<li>Need to be <strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>TaskManager</strong> Create a custom task in the class (also need to register the corresponding task type in TaskType)</li>
+<li>Need to inherit<strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>AbstractYarnTask</strong></li>
+<li>Constructor Scheduling <strong>AbstractYarnTask</strong> Construction method</li>
+<li>Inherit <strong>AbstractParameters</strong> Custom task parameter entity</li>
+<li>Rewrite <strong>AbstractTask</strong> of <strong>init</strong> Parsing in method<strong>Custom task parameters</strong></li>
+<li>Rewrite <strong>buildCommand</strong> Encapsulation command</li>
+</ul>
+<h4>Non-YARN-based calculations (see ShellTask)</h4>
+<ul>
+<li>
+<p>Need to be <strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>TaskManager</strong> A custom task</p>
+</li>
+<li>
+<p>Need to inherit<strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>AbstractTask</strong></p>
+</li>
+<li>
+<p>Instantiation in constructor <strong>ShellCommandExecutor</strong></p>
+<pre><code>public ShellTask(TaskProps props, Logger logger) {
+  super(props, logger);
+
+  this.taskDir = props.getTaskDir();
+
+  this.processTask = new ShellCommandExecutor(this::logHandle,
+      props.getTaskDir(), props.getTaskAppId(),
+      props.getTenantCode(), props.getEnvFile(), props.getTaskStartTime(),
+      props.getTaskTimeout(), logger);
+  this.processDao = DaoFactory.getDaoInstance(ProcessDao.class);
+}
+</code></pre>
+<p>Incoming custom tasks <strong>TaskProps</strong>And custom<strong>Logger</strong>,TaskProps Encapsulate task information, Logger is installed with custom log information</p>
+</li>
+<li>
+<p>Inherit <strong>AbstractParameters</strong> Custom task parameter entity</p>
+</li>
+<li>
+<p>Rewrite <strong>AbstractTask</strong> of <strong>init</strong> Parsing in method<strong>Custom task parameter entity</strong></p>
+</li>
+<li>
+<p>Rewrite <strong>handle</strong> method,transfer <strong>ShellCommandExecutor</strong> of <strong>run</strong> method,The first parameter is passed in<strong>command</strong>,Pass the second parameter to ProcessDao and set the corresponding <strong>exitStatusCode</strong></p>
+</li>
+</ul>
+<h3>Non-SHELL-based tasks (see SqlTask)</h3>
+<ul>
+<li>Need to be <strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>TaskManager</strong> A custom task</li>
+<li>Need to inherit<strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>AbstractTask</strong></li>
+<li>Inherit <strong>AbstractParameters</strong> Custom task parameter entity</li>
+<li>Constructor or override <strong>AbstractTask</strong> of <strong>init</strong> in the method, parse the custom task parameter entity</li>
+<li>Rewrite <strong>handle</strong> Methods to implement business logic and set the corresponding<strong>exitStatusCode</strong></li>
+</ul>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/plugin-development.json b/en-us/docs/1.2.1/user_doc/plugin-development.json
new file mode 100644
index 0000000..94ba71a
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/plugin-development.json
@@ -0,0 +1,6 @@
+{
+  "filename": "plugin-development.md",
+  "__html": "<h2>Task Plugin Development</h2>\n<p>Remind:Currently, task plugin development does not support hot deployment.</p>\n<h3>Shell-based tasks</h3>\n<h4>YARN-based calculations (see MapReduceTask)</h4>\n<ul>\n<li>Need to be <strong>org.apache.dolphinscheduler.server.worker.task</strong> Down <strong>TaskManager</strong> Create a custom task in the class (also need to register the corresponding task type in TaskType)</li>\n<li>Need to inherit<strong>org.apache.dolphinscheduler.se [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/plugin-development.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/quick-start.html b/en-us/docs/1.2.1/user_doc/quick-start.html
new file mode 100644
index 0000000..e272672
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/quick-start.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="quick-start">
+  <meta name="description" content="quick-start">
+  <title>quick-start</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<ul>
+<li>
+<p>Administrator user login</p>
+<blockquote>
+<p>Address:192.168.xx.xx:8888  Username and password:admin/dolphinscheduler123</p>
+</blockquote>
+</li>
+</ul>
+<p align="center">
+   <img src="/img/login_en.png" width="60%" />
+ </p>
+<ul>
+<li>Create queue</li>
+</ul>
+<p align="center">
+   <img src="/img/create-queue-en.png" width="60%" />
+ </p>
+<ul>
+<li>Create tenant  <p align="center">
+<img src="/img/create-tenant-en.png" width="60%" />
+</li>
+</ul>
+  </p>
+<ul>
+<li>Creating Ordinary Users</li>
+</ul>
+<p align="center">
+      <img src="/img/create-user-en.png" width="60%" />
+ </p>
+<ul>
+<li>Create an alarm group</li>
+</ul>
+ <p align="center">
+    <img src="/img/alarm-group-en.png" width="60%" />
+  </p>
+<ul>
+<li>Create an worker group</li>
+</ul>
+   <p align="center">
+      <img src="/img/worker-group-en.png" width="60%" />
+    </p>
+<ul>
+<li>
+<p>Create an token</p>
+<p align="center">
+   <img src="/img/token-en.png" width="60%" />
+ </p>
+</li>
+<li>
+<p>Log in with regular users</p>
+</li>
+</ul>
+<blockquote>
+<p>Click on the user name in the upper right corner to &quot;exit&quot; and re-use the normal user login.</p>
+</blockquote>
+<ul>
+<li>Project Management - &gt; Create Project - &gt; Click on Project Name</li>
+</ul>
+<p align="center">
+      <img src="/img/create_project_en.png" width="60%" />
+ </p>
+<ul>
+<li>Click Workflow Definition - &gt; Create Workflow Definition - &gt; Online Process Definition</li>
+</ul>
+<p align="center">
+   <img src="/img/process_definition_en.png" width="60%" />
+ </p>
+<ul>
+<li>Running Process Definition - &gt; Click Workflow Instance - &gt; Click Process Instance Name - &gt; Double-click Task Node - &gt; View Task Execution Log</li>
+</ul>
+ <p align="center">
+   <img src="/img/log_en.png" width="60%" />
+</p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/quick-start.json b/en-us/docs/1.2.1/user_doc/quick-start.json
new file mode 100644
index 0000000..f738ce8
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/quick-start.json
@@ -0,0 +1,6 @@
+{
+  "filename": "quick-start.md",
+  "__html": "<h1>Quick Start</h1>\n<ul>\n<li>\n<p>Administrator user login</p>\n<blockquote>\n<p>Address:192.168.xx.xx:8888  Username and password:admin/dolphinscheduler123</p>\n</blockquote>\n</li>\n</ul>\n<p align=\"center\">\n   <img src=\"/img/login_en.png\" width=\"60%\" />\n </p>\n<ul>\n<li>Create queue</li>\n</ul>\n<p align=\"center\">\n   <img src=\"/img/create-queue-en.png\" width=\"60%\" />\n </p>\n<ul>\n<li>Create tenant  <p align=\"center\">\n<img src=\"/img/create-tenant-en. [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/quick-start.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/system-manual.html b/en-us/docs/1.2.1/user_doc/system-manual.html
new file mode 100644
index 0000000..1350807
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/system-manual.html
@@ -0,0 +1,778 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="system-manual">
+  <meta name="description" content="system-manual">
+  <title>system-manual</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<h2>Operational Guidelines</h2>
+<h3>Home page</h3>
+<p>The homepage contains task status statistics, process status statistics, and workflow definition statistics for all user projects.</p>
+<p align="center">
+      <img src="/img/home_en.png" width="80%" />
+ </p>
+<h3>Create a project</h3>
+<ul>
+<li>Click &quot;Project - &gt; Create Project&quot;, enter project name,  description, and click &quot;Submit&quot; to create a new project.</li>
+<li>Click on the project name to enter the project home page.</li>
+</ul>
+<p align="center">
+      <img src="/img/project_home_en.png" width="80%" />
+ </p>
+<blockquote>
+<p>The project home page contains task status statistics, process status statistics, and workflow definition statistics for the project.</p>
+</blockquote>
+<ul>
+<li>Task State Statistics: It refers to the statistics of the number of tasks to be run, failed, running, completed and succeeded in a given time frame.</li>
+<li>Process State Statistics: It refers to the statistics of the number of waiting, failing, running, completing and succeeding process instances in a specified time range.</li>
+<li>Process Definition Statistics: The process definition created by the user and the process definition granted by the administrator to the user are counted.</li>
+</ul>
+<h3>Creating Process definitions</h3>
+<ul>
+<li>Go to the project home page, click &quot;Process definitions&quot; and enter the list page of process definition.</li>
+<li>Click &quot;Create process&quot; to create a new process definition.</li>
+<li>Drag the &quot;SHELL&quot; node to the canvas and add a shell task.</li>
+<li>Fill in the Node Name, Description, and Script fields.</li>
+<li>Selecting &quot;task priority&quot; will give priority to high-level tasks in the execution queue. Tasks with the same priority will be executed in the first-in-first-out order.</li>
+<li>Timeout alarm. Fill in &quot;Overtime Time&quot;. When the task execution time exceeds the overtime, it can alarm and fail over time.</li>
+<li>Fill in &quot;Custom Parameters&quot; and refer to <a href="#CustomParameters">Custom Parameters</a><p align="center">
+<img src="/img/process_definitions_en.png" width="80%" />
+  </p>
+</li>
+<li>Increase the order of execution between nodes: click &quot;line connection&quot;. As shown, task 2 and task 3 are executed in parallel. When task 1 is executed, task 2 and task 3 are executed simultaneously.</li>
+</ul>
+<p align="center">
+   <img src="/img/task_en.png" width="80%" />
+ </p>
+<ul>
+<li>Delete dependencies: Click on the arrow icon to &quot;drag nodes and select items&quot;, select the connection line, click on the delete icon to delete dependencies between nodes.</li>
+</ul>
+<p align="center">
+      <img src="/img/delete_dependencies_en.png" width="80%" />
+ </p>
+<ul>
+<li>Click &quot;Save&quot;, enter the name of the process definition, the description of the process definition, and set the global parameters.</li>
+</ul>
+<p align="center">
+   <img src="/img/global_parameters_en.png" width="80%" />
+ </p>
+<ul>
+<li>For other types of nodes, refer to <a href="#TaskNodeType">task node types and parameter settings</a></li>
+</ul>
+<h3>Execution process definition</h3>
+<ul>
+<li><strong>The process definition of the off-line state can be edited, but not run</strong>, so the on-line workflow is the first step.</li>
+</ul>
+<blockquote>
+<p>Click on the Process definition, return to the list of process definitions, click on the icon &quot;online&quot;, online process definition.</p>
+</blockquote>
+<blockquote>
+<p>Before setting workflow offline, the timed tasks in timed management should be offline, so that the definition of workflow can be set offline successfully.</p>
+</blockquote>
+<ul>
+<li>Click &quot;Run&quot; to execute the process. Description of operation parameters:
+<ul>
+<li>Failure strategy:<strong>When a task node fails to execute, other parallel task nodes need to execute the strategy</strong>。”Continue &quot;Representation: Other task nodes perform normally&quot;, &quot;End&quot; Representation: Terminate all ongoing tasks and terminate the entire process.</li>
+<li>Notification strategy:When the process is over, send process execution information notification mail according to the process status.</li>
+<li>Process priority: The priority of process running is divided into five levels:the highest, the high, the medium, the low, and the lowest . High-level processes are executed first in the execution queue, and processes with the same priority are executed first in first out order.</li>
+<li>Worker group: This process can only be executed in a specified machine group. Default, by default, can be executed on any worker.</li>
+<li>Notification group: When the process ends or fault tolerance occurs, process information is sent to all members of the notification group by mail.</li>
+<li>Recipient: Enter the mailbox and press Enter key to save. When the process ends and fault tolerance occurs, an alert message is sent to the recipient list.</li>
+<li>Cc: Enter the mailbox and press Enter key to save. When the process is over and fault-tolerant occurs, alarm messages are copied to the copier list.</li>
+</ul>
+</li>
+</ul>
+<p align="center">
+   <img src="/img/start-process-en.png" width="80%" />
+ </p>
+<ul>
+<li>Complement: To implement the workflow definition of a specified date, you can select the time range of the complement (currently only support for continuous days), such as the data from May 1 to May 10, as shown in the figure:</li>
+</ul>
+<p align="center">
+   <img src="/img/complement-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Complement execution mode includes serial execution and parallel execution. In serial mode, the complement will be executed sequentially from May 1 to May 10. In parallel mode, the tasks from May 1 to May 10 will be executed simultaneously.</p>
+</blockquote>
+<h3>Timing Process Definition</h3>
+<ul>
+<li>Create Timing: &quot;Process Definition - &gt; Timing&quot;</li>
+<li>Choose start-stop time, in the start-stop time range, regular normal work, beyond the scope, will not continue to produce timed workflow instances.</li>
+</ul>
+<p align="center">
+   <img src="/img/timing-en.png" width="80%" />
+ </p>
+<ul>
+<li>Add a timer to be executed once a day at 5:00 a.m. as shown below:</li>
+</ul>
+<p align="center">
+      <img src="/img/timer-en.png" width="80%" />
+ </p>
+<ul>
+<li>Timely online,<strong>the newly created timer is offline. You need to click &quot;Timing Management - &gt;online&quot; to work properly.</strong></li>
+</ul>
+<h3>View process instances</h3>
+<blockquote>
+<p>Click on &quot;Process Instances&quot; to view the list of process instances.</p>
+</blockquote>
+<blockquote>
+<p>Click on the process name to see the status of task execution.</p>
+</blockquote>
+  <p align="center">
+   <img src="/img/process-instances-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Click on the task node, click &quot;View Log&quot; to view the task execution log.</p>
+</blockquote>
+  <p align="center">
+   <img src="/img/view-log-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Click on the task instance node, click <strong>View History</strong> to view the list of task instances that the process instance runs.</p>
+</blockquote>
+ <p align="center">
+    <img src="/img/instance-runs-en.png" width="80%" />
+  </p>
+<blockquote>
+<p>Operations on workflow instances:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/workflow-instances-en.png" width="80%" />
+</p>
+<ul>
+<li>Editor: You can edit the terminated process. When you save it after editing, you can choose whether to update the process definition or not.</li>
+<li>Rerun: A process that has been terminated can be re-executed.</li>
+<li>Recovery failure: For a failed process, a recovery failure operation can be performed, starting at the failed node.</li>
+<li>Stop: Stop the running process, the background will <code>kill</code> he worker process first, then <code>kill -9</code> operation.</li>
+<li>Pause:The running process can be <strong>suspended</strong>, the system state becomes <strong>waiting to be executed</strong>, waiting for the end of the task being executed, and suspending the next task to be executed.</li>
+<li>Restore pause: <strong>The suspended process</strong> can be restored and run directly from the suspended node</li>
+<li>Delete: Delete process instances and task instances under process instances</li>
+<li>Gantt diagram: The vertical axis of Gantt diagram is the topological ordering of task instances under a process instance, and the horizontal axis is the running time of task instances, as shown in the figure:</li>
+</ul>
+<p align="center">
+      <img src="/img/gantt-en.png" width="80%" />
+</p>
+<h3>View task instances</h3>
+<blockquote>
+<p>Click on &quot;Task Instance&quot; to enter the Task List page and query the performance of the task.</p>
+</blockquote>
+<p align="center">
+   <img src="/img/task-instances-en.png" width="80%" />
+</p>
+<blockquote>
+<p>Click &quot;View Log&quot; in the action column to view the log of task execution.</p>
+</blockquote>
+<p align="center">
+   <img src="/img/task-execution-en.png" width="80%" />
+</p>
+<h3>Create data source</h3>
+<blockquote>
+<p>Data Source Center supports MySQL, POSTGRESQL, HIVE and Spark data sources.</p>
+</blockquote>
+<h4>Create and edit MySQL data source</h4>
+<ul>
+<li>Click on &quot;Datasource - &gt; Create Datasources&quot; to create different types of datasources according to requirements.</li>
+<li>Datasource: Select MYSQL</li>
+<li>Datasource Name: Name of Input Datasource</li>
+<li>Description: Description of input datasources</li>
+<li>IP: Enter the IP to connect to MySQL</li>
+<li>Port: Enter the port to connect MySQL</li>
+<li>User name: Set the username to connect to MySQL</li>
+<li>Password: Set the password to connect to MySQL</li>
+<li>Database name: Enter the name of the database connecting MySQL</li>
+<li>Jdbc connection parameters: parameter settings for MySQL connections, filled in as JSON</li>
+</ul>
+<p align="center">
+   <img src="/img/mysql-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Click &quot;Test Connect&quot; to test whether the data source can be successfully connected.</p>
+</blockquote>
+<h4>Create and edit POSTGRESQL data source</h4>
+<ul>
+<li>Datasource: Select POSTGRESQL</li>
+<li>Datasource Name: Name of Input Data Source</li>
+<li>Description: Description of input data sources</li>
+<li>IP: Enter IP to connect to POSTGRESQL</li>
+<li>Port: Input port to connect POSTGRESQL</li>
+<li>Username: Set the username to connect to POSTGRESQL</li>
+<li>Password: Set the password to connect to POSTGRESQL</li>
+<li>Database name: Enter the name of the database connecting to POSTGRESQL</li>
+<li>Jdbc connection parameters: parameter settings for POSTGRESQL connections, filled in as JSON</li>
+</ul>
+<p align="center">
+   <img src="/img/create-datasource-en.png" width="80%" />
+ </p>
+<h4>Create and edit HIVE data source</h4>
+<p>1.Connect with HiveServer 2</p>
+ <p align="center">
+    <img src="/img/hive-en.png" width="80%" />
+  </p>
+<ul>
+<li>Datasource: Select HIVE</li>
+<li>Datasource Name: Name of Input Datasource</li>
+<li>Description: Description of input datasources</li>
+<li>IP: Enter IP to connect to HIVE</li>
+<li>Port: Input port to connect to HIVE</li>
+<li>Username: Set the username to connect to HIVE</li>
+<li>Password: Set the password to connect to HIVE</li>
+<li>Database Name: Enter the name of the database connecting to HIVE</li>
+<li>Jdbc connection parameters: parameter settings for HIVE connections, filled in in as JSON</li>
+</ul>
+<p>2.Connect using Hive Server 2 HA Zookeeper mode</p>
+ <p align="center">
+    <img src="/img/zookeeper-en.png" width="80%" />
+  </p>
+<p>Note: If <strong>kerberos</strong> is turned on, you need to fill in <strong>Principal</strong></p>
+<p align="center">
+    <img src="/img/principal-en.png" width="80%" />
+  </p>
+<h4>Create and Edit Spark Datasource</h4>
+<p align="center">
+   <img src="/img/edit-datasource-en.png" width="80%" />
+ </p>
+<ul>
+<li>Datasource: Select Spark</li>
+<li>Datasource Name: Name of Input Datasource</li>
+<li>Description: Description of input datasources</li>
+<li>IP: Enter the IP to connect to Spark</li>
+<li>Port: Input port to connect Spark</li>
+<li>Username: Set the username to connect to Spark</li>
+<li>Password: Set the password to connect to Spark</li>
+<li>Database name: Enter the name of the database connecting to Spark</li>
+<li>Jdbc Connection Parameters: Parameter settings for Spark Connections, filled in as JSON</li>
+</ul>
+<p>Note: If <strong>kerberos</strong> If Kerberos is turned on, you need to fill in  <strong>Principal</strong></p>
+<p align="center">
+    <img src="/img/kerberos-en.png" width="80%" />
+  </p>
+<h3>Upload Resources</h3>
+<ul>
+<li>Upload resource files and udf functions, all uploaded files and resources will be stored on hdfs, so the following configuration items are required:</li>
+</ul>
+<pre><code>conf/common/common.properties  
+    # Users who have permission to create directories under the HDFS root path
+    hdfs.root.user=hdfs
+    # data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。&quot;/escheduler&quot; is recommended
+    data.store2hdfs.basepath=/dolphinscheduler
+    # resource upload startup type : HDFS,S3,NONE
+    res.upload.startup.type=HDFS
+    # whether kerberos starts
+    hadoop.security.authentication.startup.state=false
+    # java.security.krb5.conf path
+    java.security.krb5.conf.path=/opt/krb5.conf
+    # loginUserFromKeytab user
+    login.user.keytab.username=hdfs-mycluster@ESZ.COM
+    # loginUserFromKeytab path
+    login.user.keytab.path=/opt/hdfs.headless.keytab
+    
+conf/common/hadoop.properties      
+    # ha or single namenode,If namenode ha needs to copy core-site.xml and hdfs-site.xml
+    # to the conf directory,support s3,for example : s3a://dolphinscheduler
+    fs.defaultFS=hdfs://mycluster:8020    
+    #resourcemanager ha note this need ips , this empty if single
+    yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx    
+    # If it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine
+    yarn.application.status.address=http://xxxx:8088/ws/v1/cluster/apps/%s
+
+</code></pre>
+<ul>
+<li>yarn.resourcemanager.ha.rm.ids and yarn.application.status.address only need to configure one address, and the other address is empty.</li>
+<li>You need to copy core-site.xml and hdfs-site.xml from the conf directory of the Hadoop cluster to the conf directory of the dolphinscheduler project and restart the api-server service.</li>
+</ul>
+<h4>File Manage</h4>
+<blockquote>
+<p>It is the management of various resource files, including creating basic txt/log/sh/conf files, uploading jar packages and other types of files, editing, downloading, deleting and other operations.</p>
+<p align="center">
+ <img src="/img/file-manage-en.png" width="80%" />
+</p>
+</blockquote>
+<ul>
+<li>Create file</li>
+</ul>
+<blockquote>
+<p>File formats support the following types:txt、log、sh、conf、cfg、py、java、sql、xml、hql</p>
+</blockquote>
+<p align="center">
+   <img src="/img/create-file.png" width="80%" />
+ </p>
+<ul>
+<li>Upload Files</li>
+</ul>
+<blockquote>
+<p>Upload Files: Click the Upload button to upload, drag the file to the upload area, and the file name will automatically complete the uploaded file name.</p>
+</blockquote>
+<p align="center">
+   <img src="/img/file-upload-en.png" width="80%" />
+ </p>
+<ul>
+<li>File View</li>
+</ul>
+<blockquote>
+<p>For viewable file types, click on the file name to view file details</p>
+</blockquote>
+<p align="center">
+   <img src="/img/file-view-en.png" width="80%" />
+ </p>
+<ul>
+<li>Download files</li>
+</ul>
+<blockquote>
+<p>You can download a file by clicking the download button in the top right corner of the file details, or by downloading the file under the download button after the file list.</p>
+</blockquote>
+<ul>
+<li>File rename</li>
+</ul>
+<p align="center">
+   <img src="/img/rename-en.png" width="80%" />
+ </p>
+<h4>Delete</h4>
+<blockquote>
+<p>File List - &gt; Click the Delete button to delete the specified file</p>
+</blockquote>
+<h4>Resource management</h4>
+<blockquote>
+<p>Resource management and file management functions are similar. The difference is that resource management is the UDF function of uploading, and file management uploads user programs, scripts and configuration files.</p>
+</blockquote>
+<ul>
+<li>Upload UDF resources</li>
+</ul>
+<blockquote>
+<p>The same as uploading files.</p>
+</blockquote>
+<h4>Function management</h4>
+<ul>
+<li>Create UDF Functions</li>
+</ul>
+<blockquote>
+<p>Click &quot;Create UDF Function&quot;, enter parameters of udf function, select UDF resources, and click &quot;Submit&quot; to create udf function.</p>
+<p>Currently only temporary udf functions for HIVE are supported</p>
+<ul>
+<li>UDF function name: name when entering UDF Function</li>
+<li>Package Name: Full Path of Input UDF Function</li>
+<li>Parameter: Input parameters used to annotate functions</li>
+<li>Database Name: Reserved Field for Creating Permanent UDF Functions</li>
+<li>UDF Resources: Set up the resource files corresponding to the created UDF</li>
+</ul>
+</blockquote>
+<p align="center">
+   <img src="/img/udf-function.png" width="80%" />
+ </p>
+<h2>Security</h2>
+<ul>
+<li>The security has the functions of queue management, tenant management, user management, warning group management, worker group manager, token manage and other functions. It can also authorize resources, data sources, projects, etc.</li>
+<li>Administrator login, default username password: admin/dolphinscheduler123</li>
+</ul>
+<h3>Create queues</h3>
+<ul>
+<li>Queues are used to execute spark, mapreduce and other programs, which require the use of &quot;queue&quot; parameters.</li>
+<li>&quot;Security&quot; - &gt; &quot;Queue Manage&quot; - &gt; &quot;Create Queue&quot;   <p align="center">
+  <img src="/img/create-queue-en.png" width="80%" />
+</p>
+</li>
+</ul>
+<h3>Create Tenants</h3>
+<ul>
+<li>The tenant corresponds to the account of Linux, which is used by the worker server to submit jobs. If Linux does not have this user, the worker would create the account when executing the task.</li>
+<li>Tenant Code:<strong>the tenant code is the only account on Linux that can't be duplicated.</strong></li>
+</ul>
+ <p align="center">
+    <img src="/img/create-tenant-en.png" width="80%" />
+  </p>
+<h3>Create Ordinary Users</h3>
+<ul>
+<li>User types are <strong>ordinary users</strong> and <strong>administrator users</strong>..</li>
+</ul>
+<pre><code>* Administrators have **authorization and user management** privileges, and no privileges to **create project and process-defined operations**.
+* Ordinary users can **create projects and create, edit, and execute process definitions**.
+* Note: **If the user switches the tenant, all resources under the tenant will be copied to the switched new tenant.**
+</code></pre>
+<p align="center">
+      <img src="/img/create-user-en.png" width="80%" />
+ </p>
+<h3>Create alarm group</h3>
+<ul>
+<li>The alarm group is a parameter set at start-up. After the process is finished, the status of the process and other information will be sent to the alarm group by mail.</li>
+<li>New and Editorial Warning Group<p align="center">
+<img src="/img/alarm-group-en.png" width="80%" />
+</p>
+</li>
+</ul>
+<h3>Create Worker Group</h3>
+<ul>
+<li>
+<p>Worker group provides a mechanism for tasks to run on a specified worker. Administrators create worker groups, which can be specified in task nodes and operation parameters. If the specified grouping is deleted or no grouping is specified, the task will run on any worker.</p>
+</li>
+<li>
+<p>Multiple IP addresses within a worker group (<strong>aliases can not be written</strong>), separated by <strong>commas in English</strong></p>
+<p align="center">
+  <img src="/img/worker-group-en.png" width="80%" />
+</p>
+</li>
+</ul>
+<h3>Token manage</h3>
+<ul>
+<li>Because the back-end interface has login check and token management, it provides a way to operate the system by calling the interface.<p align="center">
+  <img src="/img/token-en.png" width="80%" />
+</p>
+</li>
+<li>Call examples:</li>
+</ul>
+<pre><code class="language-令牌调用示例">    /**
+     * test token
+     */
+    public  void doPOSTParam()throws Exception{
+        // create HttpClient
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        // create http post request
+        HttpPost httpPost = new HttpPost(&quot;http://127.0.0.1:12345/dolphinscheduler/projects/create&quot;);
+        httpPost.setHeader(&quot;token&quot;, &quot;123&quot;);
+        // set parameters
+        List&lt;NameValuePair&gt; parameters = new ArrayList&lt;NameValuePair&gt;();
+        parameters.add(new BasicNameValuePair(&quot;projectName&quot;, &quot;qzw&quot;));
+        parameters.add(new BasicNameValuePair(&quot;desc&quot;, &quot;qzw&quot;));
+        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
+        httpPost.setEntity(formEntity);
+        CloseableHttpResponse response = null;
+        try {
+            // execute
+            response = httpclient.execute(httpPost);
+            // response status code 200
+            if (response.getStatusLine().getStatusCode() == 200) {
+                String content = EntityUtils.toString(response.getEntity(), &quot;UTF-8&quot;);
+                System.out.println(content);
+            }
+        } finally {
+            if (response != null) {
+                response.close();
+            }
+            httpclient.close();
+        }
+    }
+</code></pre>
+<h3>Grant authority</h3>
+<ul>
+<li>Granting permissions includes project permissions, resource permissions, datasource permissions, UDF Function permissions.</li>
+</ul>
+<blockquote>
+<p>Administrators can authorize projects, resources, data sources and UDF Functions that are not created by ordinary users. Because project, resource, data source and UDF Function are all authorized in the same way, the project authorization is introduced as an example.</p>
+</blockquote>
+<blockquote>
+<p>Note:For projects created by the user himself, the user has all the permissions. The list of items and the list of selected items will not be reflected</p>
+</blockquote>
+<ul>
+<li>1.Click on the authorization button of the designated person as follows:<p align="center">
+  <img src="/img/operation-en.png" width="80%" />
+</li>
+</ul>
+ </p>
+<ul>
+<li>2.Select the project button to authorize the project</li>
+</ul>
+<p align="center">
+   <img src="/img/auth-project-en.png" width="80%" />
+ </p>
+<h3>Monitor center</h3>
+<ul>
+<li>Service management is mainly to monitor and display the health status and basic information of each service in the system.</li>
+</ul>
+<h4>Master monitor</h4>
+<ul>
+<li>Mainly related information about master.</li>
+</ul>
+<p align="center">
+      <img src="/img/master-monitor-en.png" width="80%" />
+ </p>
+<h4>Worker monitor</h4>
+<ul>
+<li>Mainly related information of worker.</li>
+</ul>
+<p align="center">
+   <img src="/img/worker-monitor-en.png" width="80%" />
+ </p>
+<h4>Zookeeper monitor</h4>
+<ul>
+<li>Mainly the configuration information of each worker and master in zookpeeper.</li>
+</ul>
+<p align="center">
+   <img src="/img/zookeeper-monitor-en.png" width="80%" />
+ </p>
+<h4>DB monitor</h4>
+<ul>
+<li>Mainly the health status of DB</li>
+</ul>
+<p align="center">
+   <img src="/img/db-monitor-en.png" width="80%" />
+ </p>
+<h4>statistics Manage</h4>
+ <p align="center">
+   <img src="/img/statistics-en.png" width="80%" />
+ </p>
+<ul>
+<li>Commands to be executed: statistics on t_ds_command table</li>
+<li>Number of commands that failed to execute: statistics on the t_ds_error_command table</li>
+<li>Number of tasks to run: statistics of task_queue data in Zookeeper</li>
+<li>Number of tasks to be killed: statistics of task_kill in Zookeeper</li>
+</ul>
+<h2><span id=TaskNodeType>Task Node Type and Parameter Setting</span></h2>
+<h3>Shell</h3>
+<ul>
+<li>The shell node, when the worker executes, generates a temporary shell script, which is executed by a Linux user with the same name as the tenant.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_SHELL.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/shell-en.png" width="80%" />
+ </p>`
+<ul>
+<li>Node name: The node name in a process definition is unique</li>
+<li>Run flag: Identify whether the node can be scheduled properly, and if it does not need to be executed, you can turn on the forbidden execution switch.</li>
+<li>Description : Describes the function of the node</li>
+<li>Number of failed retries: Number of failed task submissions, support drop-down and manual filling</li>
+<li>Failure Retry Interval: Interval between tasks that fail to resubmit tasks, support drop-down and manual filling</li>
+<li>Script: User-developed SHELL program</li>
+<li>Resources: A list of resource files that need to be invoked in a script</li>
+<li>Custom parameters: User-defined parameters that are part of SHELL replace the contents of scripts with ${variables}</li>
+</ul>
+<h3>SUB_PROCESS</h3>
+<ul>
+<li>The sub-process node is to execute an external workflow definition as an task node.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SUB_PROCESS.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/sub-process-en.png" width="80%" />
+ </p>
+<ul>
+<li>Node name: The node name in a process definition is unique</li>
+<li>Run flag: Identify whether the node is scheduled properly</li>
+<li>Description: Describes the function of the node</li>
+<li>Sub-node: The process definition of the selected sub-process is selected, and the process definition of the selected sub-process can be jumped to by entering the sub-node in the upper right corner.</li>
+</ul>
+<h3>DEPENDENT</h3>
+<ul>
+<li>Dependent nodes are <strong>dependent checking nodes</strong>. For example, process A depends on the successful execution of process B yesterday, and the dependent node checks whether process B has a successful execution instance yesterday.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_DEPENDENT.png" alt="PNG"> ask node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/current-node-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>Dependent nodes provide logical judgment functions, such as checking whether yesterday's B process was successful or whether the C process was successfully executed.</p>
+</blockquote>
+  <p align="center">
+   <img src="/img/weekly-A-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>For example, process A is a weekly task and process B and C are daily tasks. Task A requires that task B and C be successfully executed every day of the last week, as shown in the figure:</p>
+</blockquote>
+ <p align="center">
+   <img src="/img/weekly-A1-en.png" width="80%" />
+ </p>
+<blockquote>
+<p>If weekly A also needs to be implemented successfully on Tuesday:</p>
+</blockquote>
+ <p align="center">
+   <img src="/img/weekly-A2-en.png" width="80%" />
+ </p>
+<h3>PROCEDURE</h3>
+<ul>
+<li>The procedure is executed according to the selected data source.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_PROCEDURE.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/node-setting-en.png" width="80%" />
+ </p>
+<ul>
+<li>Datasource: The data source type of stored procedure supports MySQL and POSTGRESQL, and chooses the corresponding data source.</li>
+<li>Method: The method name of the stored procedure</li>
+<li>Custom parameters: Custom parameter types of stored procedures support IN and OUT, and data types support nine data types: VARCHAR, INTEGER, LONG, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP and BOOLEAN.</li>
+</ul>
+<h3>SQL</h3>
+<ul>
+<li>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_SQL.png" alt="PNG"> task node in the toolbar onto the palette.</li>
+<li>Execute non-query SQL functionality<p align="center">
+  <img src="/img/dependent-nodes-en.png" width="80%" />
+</li>
+</ul>
+ </p>
+<ul>
+<li>Executing the query SQL function, you can choose to send mail in the form of tables and attachments to the designated recipients.</li>
+</ul>
+<p align="center">
+   <img src="/img/double-click-en.png" width="80%" />
+ </p>
+<ul>
+<li>Datasource: Select the corresponding datasource</li>
+<li>sql type: support query and non-query, query is select type query, there is a result set returned, you can specify mail notification as table, attachment or table attachment three templates. Non-query is not returned by result set, and is for update, delete, insert three types of operations</li>
+<li>sql parameter: input parameter format is key1 = value1; key2 = value2...</li>
+<li>sql statement: SQL statement</li>
+<li>UDF function: For HIVE type data sources, you can refer to UDF functions created in the resource center, other types of data sources do not support UDF functions for the time being.</li>
+<li>Custom parameters: SQL task type, and stored procedure is to customize the order of parameters to set values for methods. Custom parameter type and data type are the same as stored procedure task type. The difference is that the custom parameter of the SQL task type replaces the ${variable} in the SQL statement.</li>
+<li>Pre Statement: Pre-sql is executed before the sql statement</li>
+<li>Post Statement: Post-sql is executed after the sql statement</li>
+</ul>
+<h3>SPARK</h3>
+<ul>
+<li>Through SPARK node, SPARK program can be directly executed. For spark node, worker will use <code>spark-submit</code> mode to submit tasks.</li>
+</ul>
+<blockquote>
+<p>Drag the   <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_SPARK.png" alt="PNG">  task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/spark-submit-en.png" width="80%" />
+ </p>
+<ul>
+<li>Program Type: Support JAVA, Scala and Python</li>
+<li>Class of the main function: The full path of Main Class, the entry to the Spark program</li>
+<li>Master jar package: It's Spark's jar package</li>
+<li>Deployment: support three modes: yarn-cluster, yarn-client, and local</li>
+<li>Driver Kernel Number: Driver Kernel Number and Memory Number can be set</li>
+<li>Executor Number: Executor Number, Executor Memory Number and Executor Kernel Number can be set</li>
+<li>Command Line Parameters: Setting the input parameters of Spark program to support the replacement of custom parameter variables.</li>
+<li>Other parameters: support - jars, - files, - archives, - conf format</li>
+<li>Resource: If a resource file is referenced in other parameters, you need to select the specified resource.</li>
+<li>Custom parameters: User-defined parameters in MR locality that replace the contents in scripts with ${variables}</li>
+</ul>
+<p>Note: JAVA and Scala are just used for identification, no difference. If it's a Spark developed by Python, there's no class of the main function, and everything else is the same.</p>
+<h3>MapReduce(MR)</h3>
+<ul>
+<li>Using MR nodes, MR programs can be executed directly. For Mr nodes, worker submits tasks using <code>hadoop jar</code></li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_MR.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<ol>
+<li>JAVA program</li>
+</ol>
+ <p align="center">
+    <img src="/img/java-program-en.png" width="80%" />
+  </p>
+<ul>
+<li>Class of the main function: The full path of the MR program's entry Main Class</li>
+<li>Program Type: Select JAVA Language</li>
+<li>Master jar package: MR jar package</li>
+<li>Command Line Parameters: Setting the input parameters of MR program to support the replacement of custom parameter variables</li>
+<li>Other parameters: support - D, - files, - libjars, - archives format</li>
+<li>Resource: If a resource file is referenced in other parameters, you need to select the specified resource.</li>
+<li>Custom parameters: User-defined parameters in MR locality that replace the contents in scripts with ${variables}</li>
+</ul>
+<ol start="2">
+<li>Python program</li>
+</ol>
+<p align="center">
+   <img src="/img/python-program-en.png" width="80%" />
+ </p>
+<ul>
+<li>Program Type: Select Python Language</li>
+<li>Main jar package: Python jar package running MR</li>
+<li>Other parameters: support - D, - mapper, - reducer, - input - output format, where user-defined parameters can be set, such as:</li>
+<li>mapper &quot;<a href="http://mapper.py">mapper.py</a> 1&quot; - file mapper.py-reducer reducer.py-file reducer.py-input/journey/words.txt-output/journey/out/mr/${current TimeMillis}</li>
+<li>Among them, mapper. py 1 after - mapper is two parameters, the first parameter is mapper. py, and the second parameter is 1.</li>
+<li>Resource: If a resource file is referenced in other parameters, you need to select the specified resource.</li>
+<li>Custom parameters: User-defined parameters in MR locality that replace the contents in scripts with ${variables}</li>
+</ul>
+<h3>Python</h3>
+<ul>
+<li>With Python nodes, Python scripts can be executed directly. For Python nodes, worker will use <code>python **</code>to submit tasks.</li>
+</ul>
+<blockquote>
+<p>Drag the <img src="https://analysys.github.io/easyscheduler_docs/images/toolbar_PYTHON.png" alt="PNG"> task node in the toolbar onto the palette and double-click the task node as follows:</p>
+</blockquote>
+<p align="center">
+   <img src="/img/python-en1-2.png" width="80%" />
+ </p>
+<ul>
+<li>Script: User-developed Python program</li>
+<li>Resource: A list of resource files that need to be invoked in a script</li>
+<li>Custom parameters: User-defined parameters that are part of Python that replace the contents in the script with ${variables}</li>
+</ul>
+<h3>System parameter</h3>
+<table>
+    <tr><th>variable</th><th>meaning</th></tr>
+    <tr>
+        <td>${system.biz.date}</td>
+        <td>The timing time of routine dispatching instance is one day before, in yyyyyMMdd format. When data is supplemented, the date + 1</td>
+    </tr>
+    <tr>
+        <td>${system.biz.curdate}</td>
+        <td> Daily scheduling example timing time, format is yyyyyMMdd, when supplementing data, the date + 1</td>
+    </tr>
+    <tr>
+        <td>${system.datetime}</td>
+        <td>Daily scheduling example timing time, format is yyyyyMMddHmmss, when supplementing data, the date + 1</td>
+    </tr>
+</table>
+<h3>Time Customization Parameters</h3>
+<ul>
+<li>
+<p>Support code to customize the variable name, declaration: ${variable name}. It can refer to &quot;system parameters&quot; or specify &quot;constants&quot;.</p>
+</li>
+<li>
+<p>When we define this benchmark variable as [...], [yyyyMMddHHmmss] can be decomposed and combined arbitrarily, such as:[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] ,etc.</p>
+</li>
+<li>
+<p>Can also do this:</p>
+<ul>
+<li>Later N years: $[add_months (yyyyyyMMdd, 12*N)]</li>
+<li>The previous N years: $[add_months (yyyyyyMMdd, -12*N)]</li>
+<li>Later N months: $[add_months (yyyyyMMdd, N)]</li>
+<li>The first N months: $[add_months (yyyyyyMMdd, -N)]</li>
+<li>Later N weeks: $[yyyyyyMMdd + 7*N]</li>
+<li>The first N weeks: $[yyyyyMMdd-7*N]</li>
+<li>The day after that: $[yyyyyyMMdd + N]</li>
+<li>The day before yesterday: $[yyyyyMMdd-N]</li>
+<li>Later N hours: $[HHmmss + N/24]</li>
+<li>First N hours: $[HHmmss-N/24]</li>
+<li>After N minutes: $[HHmmss + N/24/60]</li>
+<li>First N minutes: $[HHmmss-N/24/60]</li>
+</ul>
+</li>
+</ul>
+<h3><span id=CustomParameters>User-defined parameters</span></h3>
+<ul>
+<li>User-defined parameters are divided into global parameters and local parameters. Global parameters are the global parameters passed when the process definition and process instance are saved. Global parameters can be referenced by local parameters of any task node in the whole process.</li>
+</ul>
+<p>For example:</p>
+<p align="center">
+   <img src="/img/user-defined-en.png" width="80%" />
+ </p>
+<ul>
+<li>global_bizdate is a global parameter, referring to system parameters.</li>
+</ul>
+<p align="center">
+   <img src="/img/user-defined1-en.png" width="80%" />
+ </p>
+<ul>
+<li>In tasks, local_param_bizdate refers to global parameters by  ${global_bizdate} for scripts, the value of variable local_param_bizdate can be referenced by ${local_param_bizdate}, or the value of local_param_bizdate can be set directly by JDBC.</li>
+</ul>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/system-manual.json b/en-us/docs/1.2.1/user_doc/system-manual.json
new file mode 100644
index 0000000..03cd96d
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/system-manual.json
@@ -0,0 +1,6 @@
+{
+  "filename": "system-manual.md",
+  "__html": "<h1>System Use Manual</h1>\n<h2>Operational Guidelines</h2>\n<h3>Home page</h3>\n<p>The homepage contains task status statistics, process status statistics, and workflow definition statistics for all user projects.</p>\n<p align=\"center\">\n      <img src=\"/img/home_en.png\" width=\"80%\" />\n </p>\n<h3>Create a project</h3>\n<ul>\n<li>Click &quot;Project - &gt; Create Project&quot;, enter project name,  description, and click &quot;Submit&quot; to create a new project.</l [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/system-manual.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/upgrade.html b/en-us/docs/1.2.1/user_doc/upgrade.html
new file mode 100644
index 0000000..cf0ceb1
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/upgrade.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="upgrade">
+  <meta name="description" content="upgrade">
+  <title>upgrade</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<h2>1. Back up the previous version of the files and database</h2>
+<h2>2. Stop all services of dolphinscheduler</h2>
+<p><code>sh ./script/stop-all.sh</code></p>
+<h2>3. Download the new version of the installation package</h2>
+<ul>
+<li><a href="/en-us/download/download.html">download</a>, download the latest version of the front and back installation packages (backend referred to as dolphinscheduler-backend, front end referred to as dolphinscheduler-front)</li>
+<li>The following upgrade operations need to be performed in the new version of the directory</li>
+</ul>
+<h2>4. Database upgrade</h2>
+<ul>
+<li>Modify the following properties in conf/application-dao.properties</li>
+</ul>
+<pre><code>    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+</code></pre>
+<ul>
+<li>Execute database upgrade script</li>
+</ul>
+<p><code>sh ./script/upgrade-dolphinscheduler.sh</code></p>
+<h2>5. Backend service upgrade</h2>
+<ul>
+<li>
+<p>Modify the content of the <a href="http://install.sh">install.sh</a> configuration and execute the upgrade script</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<h2>6. Frontend service upgrade</h2>
+<ul>
+<li>
+<p>Overwrite the previous version of the dist directory</p>
+</li>
+<li>
+<p>Restart the nginx service</p>
+<p><code>systemctl restart nginx</code></p>
+</li>
+</ul>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.2.1/user_doc/upgrade.json b/en-us/docs/1.2.1/user_doc/upgrade.json
new file mode 100644
index 0000000..396608c
--- /dev/null
+++ b/en-us/docs/1.2.1/user_doc/upgrade.json
@@ -0,0 +1,6 @@
+{
+  "filename": "upgrade.md",
+  "__html": "<h1>DolphinScheduler upgrade documentation</h1>\n<h2>1. Back up the previous version of the files and database</h2>\n<h2>2. Stop all services of dolphinscheduler</h2>\n<p><code>sh ./script/stop-all.sh</code></p>\n<h2>3. Download the new version of the installation package</h2>\n<ul>\n<li><a href=\"/en-us/download/download.html\">download</a>, download the latest version of the front and back installation packages (backend referred to as dolphinscheduler-backend, front end re [...]
+  "link": "/dist/en-us/docs/1.2.1/user_doc/upgrade.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.3.1/user_doc/architecture-design.html b/en-us/docs/1.3.1/user_doc/architecture-design.html
new file mode 100644
index 0000000..02a391d
--- /dev/null
+++ b/en-us/docs/1.3.1/user_doc/architecture-design.html
@@ -0,0 +1,354 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="architecture-design">
+  <meta name="description" content="architecture-design">
+  <title>architecture-design</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>Before explaining the architecture of the scheduling system, let's first understand the commonly used terms of the scheduling system</p>
+<h3>1.Glossary</h3>
+<p><strong>DAG:</strong> The full name is Directed Acyclic Graph, referred to as DAG. Task tasks in the workflow are assembled in the 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:</p>
+<p align="center">
+  <img src="/img/dag_examples_cn.jpg" alt="dag example"  width="60%" />
+  <p align="center">
+        <em>dag example</em>
+  </p>
+</p>
+<p><strong>Process definition</strong>:Visualization formed by dragging task nodes and establishing task node associations<strong>DAG</strong></p>
+<p><strong>Process instance</strong>:The process instance is the instantiation of the process definition, which can be generated by manual start or scheduled scheduling. Each time the process definition runs, a process instance is generated</p>
+<p><strong>Task instance</strong>:The task instance is the instantiation of the task node in the process definition, which identifies the specific task execution status</p>
+<p><strong>Task type</strong>: Currently supports SHELL, SQL, SUB_PROCESS (sub-process), PROCEDURE, MR, SPARK, PYTHON, DEPENDENT (depends), and plans to support dynamic plug-in expansion, note: 其中子 <strong>SUB_PROCESS</strong>  It is also a separate process definition that can be started and executed separately</p>
+<p><strong>Scheduling method:</strong> The system supports scheduled scheduling and manual scheduling based on cron expressions. Command type support: start workflow, start execution from current node, resume fault-tolerant workflow, resume pause process, start execution from failed node, complement, timing, rerun, pause, stop, resume waiting thread。Among them <strong>Resume fault-tolerant workflow</strong> 和 <strong>Resume waiting thread</strong> The two command types are used by the in [...]
+<p><strong>Scheduled</strong>:System adopts <strong>quartz</strong> distributed scheduler, and supports the visual generation of cron expressions</p>
+<p><strong>Rely</strong>:The system not only supports <strong>DAG</strong> simple dependencies between the predecessor and successor nodes, but also provides <strong>task dependent</strong> nodes, supporting <strong>between processes</strong></p>
+<p><strong>Priority</strong> :Support the priority of process instances and task instances, if the priority of process instances and task instances is not set, the default is first-in first-out</p>
+<p><strong>Email alert</strong>:Support <strong>SQL task</strong> Query result email sending, process instance running result email alert and fault tolerance alert notification</p>
+<p><strong>Failure strategy</strong>:For tasks running in parallel, if a task fails, two failure strategy processing methods are provided. <strong>Continue</strong> refers to regardless of the status of the task running in parallel until the end of the process failure. <strong>End</strong> means that once a failed task is found, Kill will also run the parallel task at the same time, and the process fails and ends</p>
+<p><strong>Complement</strong>:Supplement historical data,Supports <strong>interval parallel and serial</strong> two complement methods</p>
+<h3>2.System Structure</h3>
+<h4>2.1 System architecture diagram</h4>
+<p align="center">
+  <img src="/img/architecture-1.3.0.jpg" alt="System architecture diagram"  width="70%" />
+  <p align="center">
+        <em>System architecture diagram</em>
+  </p>
+</p>
+<h4>2.2 Start process activity diagram</h4>
+<p align="center">
+  <img src="/img/process-start-flow-1.3.0.png" alt="Start process activity diagram"  width="70%" />
+  <p align="center">
+        <em>Start process activity diagram</em>
+  </p>
+</p>
+<h4>2.3 Architecture description</h4>
+<ul>
+<li>
+<p><strong>MasterServer</strong></p>
+<p>MasterServer adopts a distributed and centerless design concept. MasterServer is mainly responsible for DAG task segmentation, task submission monitoring, and monitoring the health status of other MasterServer and WorkerServer at the same time.
+When the MasterServer service starts, register a temporary node with Zookeeper, and perform fault tolerance by monitoring changes in the temporary node of Zookeeper.
+MasterServer provides monitoring services based on netty.</p>
+<h5>The service mainly includes:</h5>
+<ul>
+<li>
+<p><strong>Distributed Quartz</strong> distributed scheduling component, which is mainly responsible for the start and stop operations of scheduled tasks. When Quartz starts the task, there will be a thread pool inside the Master that is specifically responsible for the follow-up operation of the processing task</p>
+</li>
+<li>
+<p><strong>MasterSchedulerThread</strong> is a scanning thread that regularly scans the <strong>command</strong> table in the database and performs different business operations according to different <strong>command types</strong></p>
+</li>
+<li>
+<p><strong>MasterExecThread</strong> is mainly responsible for DAG task segmentation, task submission monitoring, and logical processing of various command types</p>
+</li>
+<li>
+<p><strong>MasterTaskExecThread</strong> is mainly responsible for the persistence of tasks</p>
+</li>
+</ul>
+</li>
+<li>
+<p><strong>WorkerServer</strong></p>
+<p>WorkerServer also adopts a distributed and decentralized design concept. WorkerServer is mainly responsible for task execution and providing log services.</p>
+<p>When the WorkerServer service starts, register a temporary node with Zookeeper and maintain a heartbeat.
+Server provides monitoring services based on netty. Worker</p>
+<h5>The service mainly includes:</h5>
+<ul>
+<li>
+<p><strong>Fetch TaskThread</strong> is mainly responsible for continuously getting tasks from <strong>Task Queue</strong>, and calling <strong>TaskScheduleThread</strong> corresponding executor according to different task types.</p>
+</li>
+<li>
+<p><strong>LoggerServer</strong> is an RPC service that provides functions such as log fragment viewing, refreshing and downloading</p>
+</li>
+</ul>
+</li>
+<li>
+<p><strong>ZooKeeper</strong></p>
+<p>ZooKeeper service, MasterServer and WorkerServer nodes in the system all use ZooKeeper for cluster management and fault tolerance. In addition, the system is based on ZooKeeper for event monitoring and distributed locks.</p>
+<p>We have also implemented queues based on Redis, but we hope that DolphinScheduler depends on as few components as possible, so we finally removed the Redis implementation.</p>
+</li>
+<li>
+<p><strong>Task Queue</strong></p>
+<p>Provide task queue operation, the current queue is also implemented based on Zookeeper. Because there is less information stored in the queue, there is no need to worry about too much data in the queue. In fact, we have tested the millions of data storage queues, which has no impact on system stability and performance.</p>
+</li>
+<li>
+<p><strong>Alert</strong></p>
+<p>Provide alarm related interface, the interface mainly includes <strong>alarm</strong> two types of alarm data storage, query and notification functions. Among them, there are <strong>email notification</strong> and <strong>SNMP (not yet implemented)</strong>.</p>
+</li>
+<li>
+<p><strong>API</strong></p>
+<p>The API interface layer is mainly responsible for processing requests from the front-end UI layer. The service uniformly provides RESTful APIs to provide request services to the outside world. Interfaces include workflow creation, definition, query, modification, release, logoff, manual start, stop, pause, resume, start execution from the node and so on.</p>
+</li>
+<li>
+<p><strong>UI</strong></p>
+<p>The front-end page of the system provides various visual operation interfaces of the system,See more at<a href="/en-us/docs/1.3.1/user_doc/system-manual.html" target="_self"> System User Manual </a>section。</p>
+</li>
+</ul>
+<h4>2.3 Architecture design ideas</h4>
+<h5>One、Decentralization VS centralization</h5>
+<h6>Centralized thinking</h6>
+<p>The centralized design concept is relatively simple. The nodes in the distributed cluster are divided into roles according to roles, which are roughly divided into two roles:</p>
+<p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/master_slave.png" alt="master-slave character"  width="50%" />
+ </p>
+<ul>
+<li>The role of the master is mainly responsible for task distribution and monitoring the health status of the slave, and can dynamically balance the task to the slave, so that the slave node will not be in a &quot;busy dead&quot; or &quot;idle dead&quot; state.</li>
+<li>The role of Worker is mainly responsible for task execution and maintenance and Master's heartbeat, so that Master can assign tasks to Slave.</li>
+</ul>
+<p>Problems in centralized thought design:</p>
+<ul>
+<li>Once there is a problem with the Master, the dragons are headless and the entire cluster will collapse. In order to solve this problem, most of the Master/Slave architecture models adopt the design scheme of active and standby Master, which can be hot standby or cold standby, or automatic switching or manual switching, and more and more new systems are beginning to have The ability to automatically elect and switch Master to improve the availability of the system.</li>
+<li>Another problem is that if the Scheduler is on the Master, although it can support different tasks in a DAG running on different machines, it will cause the Master to be overloaded. If the Scheduler is on the slave, all tasks in a DAG can only submit jobs on a certain machine. When there are more parallel tasks, the pressure on the slave may be greater.</li>
+</ul>
+<h6>Decentralized</h6>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/decentralization.png" alt="Decentralization"  width="50%" />
+ </p>
+<ul>
+<li>
+<p>In the decentralized design, there is usually no concept of Master/Slave, all roles are the same, the status is equal, the global Internet is a typical decentralized distributed system, any node equipment connected to the network is down, All will only affect a small range of functions.</p>
+</li>
+<li>
+<p>The core design of decentralized design is that there is no &quot;manager&quot; different from other nodes in the entire distributed system, so there is no single point of failure. However, because there is no &quot;manager&quot; node, each node needs to communicate with other nodes to obtain the necessary machine information, and the unreliability of distributed system communication greatly increases the difficulty of implementing the above functions.</p>
+</li>
+<li>
+<p>In fact, truly decentralized distributed systems are rare. Instead, dynamic centralized distributed systems are constantly pouring out. Under this architecture, the managers in the cluster are dynamically selected, rather than preset, and when the cluster fails, the nodes of the cluster will automatically hold &quot;meetings&quot; to elect new &quot;managers&quot; To preside over the work. The most typical case is Etcd implemented by ZooKeeper and Go language.</p>
+</li>
+<li>
+<p>The decentralization of DolphinScheduler is that the Master/Worker is registered in Zookeeper, and the Master cluster and Worker cluster are centerless, and the Zookeeper distributed lock is used to elect one of the Master or Worker as the &quot;manager&quot; to perform the task.</p>
+</li>
+</ul>
+<h5>Two、Distributed lock practice</h5>
+<p>DolphinScheduler uses ZooKeeper distributed lock to realize that only one Master executes Scheduler at the same time, or only one Worker executes the submission of tasks.</p>
+<ol>
+<li>The core process algorithm for acquiring distributed locks is as follows:</li>
+</ol>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/distributed_lock.png" alt="Obtain distributed lock process"  width="50%" />
+ </p>
+<ol start="2">
+<li>Flow chart of implementation of Scheduler thread distributed lock in DolphinScheduler:</li>
+</ol>
+ <p align="center">
+   <img src="/img/distributed_lock_procss.png" alt="Obtain distributed lock process"  width="50%" />
+ </p>
+<h5>Three、Insufficient thread loop waiting problem</h5>
+<ul>
+<li>If there is no sub-process in a DAG, if the number of data in the Command is greater than the threshold set by the thread pool, the process directly waits or fails.</li>
+<li>If many sub-processes are nested in a large DAG, the following figure will produce a &quot;dead&quot; state:</li>
+</ul>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/lack_thread.png" alt="Insufficient threads waiting loop problem"  width="50%" />
+ </p>
+In the above figure, MainFlowThread waits for the end of SubFlowThread1, SubFlowThread1 waits for the end of SubFlowThread2, SubFlowThread2 waits for the end of SubFlowThread3, and SubFlowThread3 waits for a new thread in the thread pool, then the entire DAG process cannot end, so that the threads cannot be released. In this way, the state of the child-parent process loop waiting is formed. At this time, unless a new Master is started to add threads to break such a "stalemate", the sched [...]
+<p>It seems a bit unsatisfactory to start a new Master to break the deadlock, so we proposed the following three solutions to reduce this risk:</p>
+<ol>
+<li>Calculate the sum of all Master threads, and then calculate the number of threads required for each DAG, that is, pre-calculate before the DAG process is executed. Because it is a multi-master thread pool, the total number of threads is unlikely to be obtained in real time.</li>
+<li>Judge the single-master thread pool. If the thread pool is full, let the thread fail directly.</li>
+<li>Add a Command type with insufficient resources. If the thread pool is insufficient, suspend the main process. In this way, there are new threads in the thread pool, which can make the process suspended by insufficient resources wake up to execute again.</li>
+</ol>
+<p>note:The Master Scheduler thread is executed by FIFO when acquiring the Command.</p>
+<p>So we chose the third way to solve the problem of insufficient threads.</p>
+<h5>Four、Fault-tolerant design</h5>
+<p>Fault tolerance is divided into service downtime fault tolerance and task retry, and service downtime fault tolerance is divided into master fault tolerance and worker fault tolerance.</p>
+<h6>1. Downtime fault tolerance</h6>
+<p>The service fault-tolerance design relies on ZooKeeper's Watcher mechanism, and the implementation principle is shown in the figure:</p>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant.png" alt="DolphinScheduler fault-tolerant design"  width="40%" />
+ </p>
+Among them, the Master monitors the directories of other Masters and Workers. If the remove event is heard, fault tolerance of the process instance or task instance will be performed according to the specific business logic.
+<ul>
+<li>Master fault tolerance flowchart:</li>
+</ul>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_master.png" alt="Master fault tolerance flowchart"  width="40%" />
+ </p>
+After the fault tolerance of ZooKeeper Master is completed, it is re-scheduled by the Scheduler thread in DolphinScheduler, traverses the DAG to find the "running" and "submit successful" tasks, monitors the status of its task instances for the "running" tasks, and "commits successful" tasks It is necessary to determine whether the task queue already exists. If it exists, the status of the task instance is also monitored. If it does not exist, resubmit the task instance.
+<ul>
+<li>Worker fault tolerance flowchart:</li>
+</ul>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_worker.png" alt="Worker fault tolerance flow chart"  width="40%" />
+ </p>
+<p>Once the Master Scheduler thread finds that the task instance is in the &quot;fault tolerant&quot; state, it takes over the task and resubmits it.</p>
+<p>Note: Due to &quot;network jitter&quot;, the node may lose its heartbeat with ZooKeeper in a short period of time, and the node's remove event may occur. For this situation, we use the simplest way, that is, once the node and ZooKeeper timeout connection occurs, then directly stop the Master or Worker service.</p>
+<h6>2.Task failed and try again</h6>
+<p>Here we must first distinguish the concepts of task failure retry, process failure recovery, and process failure rerun:</p>
+<ul>
+<li>Task failure retry is at the task level and is automatically performed by the scheduling system. For example, if a Shell task is set to retry for 3 times, it will try to run it again up to 3 times after the Shell task fails.</li>
+<li>Process failure recovery is at the process level and is performed manually. Recovery can only be performed <strong>from the failed node</strong> or <strong>from the current node</strong></li>
+<li>Process failure rerun is also at the process level and is performed manually, rerun is performed from the start node</li>
+</ul>
+<p>Next to the topic, we divide the task nodes in the workflow into two types.</p>
+<ul>
+<li>
+<p>One is a business node, which corresponds to an actual script or processing statement, such as Shell node, MR node, Spark node, and dependent node.</p>
+</li>
+<li>
+<p>There is also a logical node, which does not do actual script or statement processing, but only logical processing of the entire process flow, such as sub-process sections.</p>
+</li>
+</ul>
+<p>Each <strong>business node</strong> can be configured with the number of failed retries. When the task node fails, it will automatically retry until it succeeds or exceeds the configured number of retries. <strong>Logical node</strong> Failure retry is not supported. But the tasks in the logical node support retry.</p>
+<p>If there is a task failure in the workflow that reaches the maximum number of retries, the workflow will fail to stop, and the failed workflow can be manually rerun or process recovery operation</p>
+<h5>Five、Task priority design</h5>
+<p>In the early scheduling design, if there is no priority design and the fair scheduling design is used, the task submitted first may be completed at the same time as the task submitted later, and the process or task priority cannot be set, so We have redesigned this, and our current design is as follows:</p>
+<ul>
+<li>According to <strong>priority of different process instances</strong> priority over <strong>priority of the same process instance</strong> priority over <strong>priority of tasks within the same process</strong>priority over <strong>tasks within the same process</strong>submission order from high to Low task processing.
+<ul>
+<li>
+<p>The specific implementation is to parse the priority according to the json of the task instance, and then save the <strong>process instance priority_process instance id_task priority_task id</strong> information in the ZooKeeper task queue, when obtained from the task queue, pass String comparison can get the tasks that need to be executed first</p>
+<ul>
+<li>
+<p>The priority of the process definition is to consider that some processes need to be processed before other processes. This can be configured when the process is started or scheduled to start. There are 5 levels in total, which are HIGHEST, HIGH, MEDIUM, LOW, and LOWEST. As shown below</p>
+  <p align="center">
+     <img src="https://analysys.github.io/easyscheduler_docs_cn/images/process_priority.png" alt="Process priority configuration"  width="40%" />
+   </p>
+</li>
+<li>
+<p>The priority of the task is also divided into 5 levels, followed by HIGHEST, HIGH, MEDIUM, LOW, LOWEST. As shown below</p>
+  <p align="center">
+     <img src="https://analysys.github.io/easyscheduler_docs_cn/images/task_priority.png" alt="Task priority configuration"  width="35%" />
+   </p>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<h5>Six、Logback and netty implement log access</h5>
+<ul>
+<li>
+<p>Since Web (UI) and Worker are not necessarily on the same machine, viewing the log cannot be like querying a local file. There are two options:</p>
+</li>
+<li>
+<p>Put logs on ES search engine</p>
+</li>
+<li>
+<p>Obtain remote log information through netty communication</p>
+</li>
+<li>
+<p>In consideration of the lightness of DolphinScheduler as much as possible, so I chose gRPC to achieve remote access to log information.</p>
+</li>
+</ul>
+ <p align="center">
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png" alt="grpc remote access"  width="50%" />
+ </p>
+<ul>
+<li>We use the FileAppender and Filter functions of the custom Logback to realize that each task instance generates a log file.</li>
+<li>FileAppender is mainly implemented as follows:</li>
+</ul>
+<pre><code class="language-java"><span class="hljs-comment">/**
+ * task log appender
+ */</span>
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TaskLogAppender</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">FileAppender</span>&lt;<span class="hljs-title">ILoggingEvent</span>&gt; </span>{
+
+    ...
+
+   <span class="hljs-meta">@Override</span>
+   <span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">append</span><span class="hljs-params">(ILoggingEvent event)</span> </span>{
+
+       <span class="hljs-keyword">if</span> (currentlyActiveFile == <span class="hljs-keyword">null</span>){
+           currentlyActiveFile = getFile();
+       }
+       String activeFile = currentlyActiveFile;
+       <span class="hljs-comment">// thread name: taskThreadName-processDefineId_processInstanceId_taskInstanceId</span>
+       String threadName = event.getThreadName();
+       String[] threadNameArr = threadName.split(<span class="hljs-string">&quot;-&quot;</span>);
+       <span class="hljs-comment">// logId = processDefineId_processInstanceId_taskInstanceId</span>
+       String logId = threadNameArr[<span class="hljs-number">1</span>];
+       ...
+       <span class="hljs-keyword">super</span>.subAppend(event);
+   }
+}
+</code></pre>
+<p>Generate logs in the form of /process definition id/process instance id/task instance id.log</p>
+<ul>
+<li>
+<p>Filter to match the thread name starting with TaskLogInfo:</p>
+</li>
+<li>
+<p>TaskLogFilter is implemented as follows:</p>
+</li>
+</ul>
+<pre><code class="language-java"><span class="hljs-comment">/**
+*  task log filter
+*/</span>
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TaskLogFilter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Filter</span>&lt;<span class="hljs-title">ILoggingEvent</span>&gt; </span>{
+
+   <span class="hljs-meta">@Override</span>
+   <span class="hljs-function"><span class="hljs-keyword">public</span> FilterReply <span class="hljs-title">decide</span><span class="hljs-params">(ILoggingEvent event)</span> </span>{
+       <span class="hljs-keyword">if</span> (event.getThreadName().startsWith(<span class="hljs-string">&quot;TaskLogInfo-&quot;</span>)){
+           <span class="hljs-keyword">return</span> FilterReply.ACCEPT;
+       }
+       <span class="hljs-keyword">return</span> FilterReply.DENY;
+   }
+}
+</code></pre>
+<h3>3.Module introduction</h3>
+<ul>
+<li>
+<p>dolphinscheduler-alert alarm module, providing AlertServer service.</p>
+</li>
+<li>
+<p>dolphinscheduler-api web application module, providing ApiServer service.</p>
+</li>
+<li>
+<p>dolphinscheduler-common General constant enumeration, utility class, data structure or base class</p>
+</li>
+<li>
+<p>dolphinscheduler-dao provides operations such as database access.</p>
+</li>
+<li>
+<p>dolphinscheduler-remote client and server based on netty</p>
+</li>
+<li>
+<p>dolphinscheduler-server MasterServer and WorkerServer services</p>
+</li>
+<li>
+<p>dolphinscheduler-service service module, including Quartz, Zookeeper, log client access service, easy to call server module and api module</p>
+</li>
+<li>
+<p>dolphinscheduler-ui front-end module</p>
+</li>
+</ul>
+<h3>Sum up</h3>
+<p>From the perspective of scheduling, this article preliminarily introduces the architecture principles and implementation ideas of the big data distributed workflow scheduling system-DolphinScheduler. To be continued</p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.3.1/user_doc/architecture-design.json b/en-us/docs/1.3.1/user_doc/architecture-design.json
new file mode 100644
index 0000000..4d2d978
--- /dev/null
+++ b/en-us/docs/1.3.1/user_doc/architecture-design.json
@@ -0,0 +1,6 @@
+{
+  "filename": "architecture-design.md",
+  "__html": "<h2>System Architecture Design</h2>\n<p>Before explaining the architecture of the scheduling system, let's first understand the commonly used terms of the scheduling system</p>\n<h3>1.Glossary</h3>\n<p><strong>DAG:</strong> The full name is Directed Acyclic Graph, referred to as DAG. Task tasks in the workflow are assembled in the form of a directed acyclic graph, and topological traversal is performed from nodes with zero degrees of entry until there are no subsequent nodes [...]
+  "link": "/dist/en-us/docs/1.3.1/user_doc/architecture-design.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.3.1/user_doc/cluster-deployment.html b/en-us/docs/1.3.1/user_doc/cluster-deployment.html
new file mode 100644
index 0000000..ed361bc
--- /dev/null
+++ b/en-us/docs/1.3.1/user_doc/cluster-deployment.html
@@ -0,0 +1,403 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="cluster-deployment">
+  <meta name="description" content="cluster-deployment">
+  <title>cluster-deployment</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<h1>1、Before you begin (please install requirement basic software by yourself)</h1>
+<ul>
+<li>PostgreSQL (8.2.15+) or MySQL (5.7) : Choose One</li>
+<li><a href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK</a> (1.8+) : Required. Double-check configure JAVA_HOME and PATH environment variables in /etc/profile</li>
+<li>ZooKeeper (3.4.6+) : Required</li>
+<li>pstree or psmisc : &quot;pstree&quot; is required for Mac OS and &quot;psmisc&quot; is required for Fedora/Red/Hat/CentOS/Ubuntu/Debian</li>
+<li>Hadoop (2.6+) or MinIO : Optional. If you need to upload a resource function, you can choose a local file directory as the upload folder for a single machine (this operation does not need to deploy Hadoop). Of course, you can also choose to upload to Hadoop or MinIO.</li>
+</ul>
+<pre><code class="language-markdown"> Tips: DolphinScheduler itself does not rely on Hadoop, Hive, Spark, only use their clients for the corresponding task of running.
+</code></pre>
+<h1>2、Download the binary package.</h1>
+<ul>
+<li>Please download the latest version of the default installation package to the server deployment directory. For example, use /opt/dolphinscheduler as the installation and deployment directory. Download address: <a href="/en-us/download/download.html">Download</a>,Download the package and move to the installation and deployment directory. Then uncompress it.</li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Create the deployment directory. Do not choose a deployment directory with a high-privilege directory such as / root or / home.</span>
+mkdir -p /opt/dolphinscheduler;
+cd /opt/dolphinscheduler;
+<span class="hljs-meta">#</span><span class="bash"> uncompress</span>
+tar -zxvf apache-dolphinscheduler-incubating-1.3.1-dolphinscheduler-bin.tar.gz -C /opt/dolphinscheduler;
+
+mv apache-dolphinscheduler-incubating-1.3.1-dolphinscheduler-bin  dolphinscheduler-bin
+</code></pre>
+<h1>3、Create deployment user and hosts mapping</h1>
+<ul>
+<li>Create a deployment user on the ** all ** deployment machines, and be sure to configure sudo passwordless. If we plan to deploy DolphinScheduler on 4 machines: ds1, ds2, ds3, and ds4, we first need to create a deployment user on each machine.</li>
+</ul>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> To create a user, you need to <span class="hljs-built_in">log</span> <span class="hljs-keyword">in</span> as root and <span class="hljs-built_in">set</span> the deployment user name. Please modify it yourself. The following uses dolphinscheduler as an example.</span>
+useradd dolphinscheduler;
+<span class="hljs-meta">
+#</span><span class="bash"> Set the user password, please modify it yourself. The following takes dolphinscheduler123 as an example.</span>
+echo &quot;dolphinscheduler123&quot; | passwd --stdin dolphinscheduler
+<span class="hljs-meta">
+#</span><span class="bash"> Configure sudo passwordless</span>
+echo &#x27;dolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL&#x27; &gt;&gt; /etc/sudoers
+sed -i &#x27;s/Defaults    requirett/#Defaults    requirett/g&#x27; /etc/sudoers
+
+</code></pre>
+<pre><code> Notes:
+ - Because the task execution service is based on 'sudo -u {linux-user}' to switch between different Linux users to implement multi-tenant running jobs, the deployment user needs to have sudo permissions and is passwordless. The first-time learners who can ignore it if they don't understand.
+ - If find the &quot;Default requiretty&quot; in the &quot;/etc/sudoers&quot; file, also comment out.
+ - If you need to use resource upload, you need to assign the user of permission to operate the local file system, HDFS or MinIO.
+</code></pre>
+<h1>4、Configure hosts mapping and ssh access and modify directory permissions.</h1>
+<ul>
+<li>
+<p>Use the first machine (hostname is ds1) as the deployment machine, configure the hosts of all machines to be deployed on ds1, and login as root on ds1.</p>
+<pre><code class="language-shell">vi /etc/hosts
+<span class="hljs-meta">
+#</span><span class="bash">add ip hostname</span>
+192.168.xxx.xxx ds1
+192.168.xxx.xxx ds2
+192.168.xxx.xxx ds3
+192.168.xxx.xxx ds4
+</code></pre>
+<p><em>Note: Please delete or comment out the line 127.0.0.1</em></p>
+</li>
+<li>
+<p>Sync /etc/hosts on ds1 to all deployment machines</p>
+<pre><code class="language-shell">for ip in ds2 ds3;     # Please replace ds2 ds3 here with the hostname of machines you want to deploy
+do
+    sudo scp -r /etc/hosts  $ip:/etc/          # Need to enter root password during operation
+done
+</code></pre>
+<p><em>Note: can use <code>sshpass -p xxx sudo scp -r /etc/hosts $ip:/etc/</code> to avoid type password.</em></p>
+<blockquote>
+<p>Install sshpass in Centos:</p>
+<ol>
+<li>
+<p>Install epel</p>
+<p>yum install -y epel-release</p>
+<p>yum repolist</p>
+</li>
+<li>
+<p>After installing epel, you can install sshpass</p>
+<p>yum install -y sshpass</p>
+</li>
+</ol>
+</blockquote>
+</li>
+<li>
+<p>On ds1, switch to the deployment user and configure ssh passwordless login</p>
+<pre><code class="language-shell"> su dolphinscheduler;
+
+ssh-keygen -t rsa -P &#x27;&#x27; -f ~/.ssh/id_rsa
+cat ~/.ssh/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys
+chmod 600 ~/.ssh/authorized_keys
+</code></pre>
+</li>
+</ul>
+<p>​      Note: <em>If configure success, the dolphinscheduler user does not need to enter a password when executing the command <code>ssh localhost</code></em></p>
+<ul>
+<li>
+<p>On ds1, configure the deployment user dolphinscheduler ssh to connect to other machines to be deployed.</p>
+<pre><code class="language-shell">su dolphinscheduler;
+for ip in ds2 ds3;     # Please replace ds2 ds3 here with the hostname of the machine you want to deploy.
+do
+    ssh-copy-id  $ip   # You need to manually enter the password of the dolphinscheduler user during the operation.
+done
+<span class="hljs-meta">#</span><span class="bash"> can use `sshpass -p xxx ssh-copy-id <span class="hljs-variable">$ip</span>` to avoid <span class="hljs-built_in">type</span> password.</span>
+</code></pre>
+</li>
+<li>
+<p>On ds1, modify the directory permissions so that the deployment user has operation permissions on the dolphinscheduler-bin directory.</p>
+<pre><code class="language-shell">sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin
+</code></pre>
+</li>
+</ul>
+<h1>5、Database initialization</h1>
+<ul>
+<li>Into the database. The default database is PostgreSQL. If you select MySQL, you need to add the mysql-connector-java driver package to the lib directory of DolphinScheduler.</li>
+</ul>
+<pre><code>mysql -h192.168.xx.xx -P3306 -uroot -p
+</code></pre>
+<ul>
+<li>After entering the database command line window, execute the database initialization command and set the user and password. <strong>Note: {user} and {password} need to be replaced with a specific database username and password</strong></li>
+</ul>
+<pre><code class="language-mysql">   mysql&gt; CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+   mysql&gt; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO &#x27;{user}&#x27;@&#x27;%&#x27; IDENTIFIED BY &#x27;{password}&#x27;;
+   mysql&gt; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO &#x27;{user}&#x27;@&#x27;localhost&#x27; IDENTIFIED BY &#x27;{password}&#x27;;
+   mysql&gt; flush privileges;
+</code></pre>
+<ul>
+<li>
+<p>Create tables and import basic data</p>
+<ul>
+<li>Modify the following configuration in datasource.properties under the conf directory</li>
+</ul>
+<pre><code class="language-shell">  vi conf/datasource.properties
+</code></pre>
+<ul>
+<li>If you choose Mysql, please comment out the relevant configuration of PostgreSQL (vice versa), you also need to manually add the [[mysql-connector-java driver jar] (<a href="https://downloads.mysql.com/archives/c-j/">https://downloads.mysql.com/archives/c-j/</a>)] package to lib under the directory, and then configure the database connection information correctly.</li>
+</ul>
+<pre><code class="language-properties"><span class="hljs-comment">  #postgre</span>
+<span class="hljs-comment">  #spring.datasource.driver-class-name=org.postgresql.Driver</span>
+<span class="hljs-comment">  #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler</span>
+<span class="hljs-comment">  # mysql</span>
+  <span class="hljs-meta">spring.datasource.driver-class-name</span>=<span class="hljs-string">com.mysql.jdbc.Driver</span>
+  <span class="hljs-meta">spring.datasource.url</span>=<span class="hljs-string">jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&amp;characterEncoding=UTF-8&amp;allowMultiQueries=true     # Replace the correct IP address</span>
+  <span class="hljs-meta">spring.datasource.username</span>=<span class="hljs-string">xxx						# replace the correct {user} value</span>
+  <span class="hljs-meta">spring.datasource.password</span>=<span class="hljs-string">xxx						# replace the correct {password} value</span>
+</code></pre>
+<ul>
+<li>After modifying and saving, execute the create table and import data script in the script directory.</li>
+</ul>
+<pre><code class="language-shell">sh script/create-dolphinscheduler.sh
+</code></pre>
+</li>
+</ul>
+<p>​       <em>Note: If you execute the above script and report &quot;/bin/java: No such file or directory&quot; error, please configure JAVA_HOME and PATH variables in /etc/profile</em></p>
+<h1>6、Modify runtime parameters.</h1>
+<ul>
+<li>
+<p>Modify the environment variable in <code>dolphinscheduler_env.sh</code> file which on the 'conf/env' directory (take the relevant software installed under '/opt/soft' as an example)</p>
+<pre><code class="language-shell">    export HADOOP_HOME=/opt/soft/hadoop
+    export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
+    #export SPARK_HOME1=/opt/soft/spark1
+    export SPARK_HOME2=/opt/soft/spark2
+    export PYTHON_HOME=/opt/soft/python
+    export JAVA_HOME=/opt/soft/java
+    export HIVE_HOME=/opt/soft/hive
+    export FLINK_HOME=/opt/soft/flink
+    export DATAX_HOME=/opt/soft/datax/bin/datax.py
+    export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH
+
+    ```
+
+ `Note: This step is very important. For example, JAVA_HOME and PATH must be configured. Those that are not used can be ignored or commented out.`
+
+
+
+</code></pre>
+</li>
+<li>
+<p>Create Soft link jdk to /usr/bin/java (still JAVA_HOME=/opt/soft/java as an example)</p>
+<pre><code class="language-shell">sudo ln -s /opt/soft/java/bin/java /usr/bin/java
+</code></pre>
+</li>
+<li>
+<p>Modify the parameters in the one-click deployment config file <code>conf/config/install_config.conf</code>, pay special attention to the configuration of the following parameters.</p>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> choose mysql or postgresql</span>
+dbtype=&quot;mysql&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Database connection address and port</span>
+dbhost=&quot;192.168.xx.xx:3306&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> database name</span>
+dbname=&quot;dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> database username</span>
+username=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> database password</span>
+<span class="hljs-meta">#</span><span class="bash"> NOTICE: <span class="hljs-keyword">if</span> there are special characters, please use the \ to escape, <span class="hljs-keyword">for</span> example, `[` escape to `\[`</span>
+password=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash">Zookeeper cluster</span>
+zkQuorum=&quot;192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Note: the target installation path <span class="hljs-keyword">for</span> dolphinscheduler, please not config as the same as the current path (<span class="hljs-built_in">pwd</span>)</span>
+installPath=&quot;/opt/soft/dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> deployment user</span>
+<span class="hljs-meta">#</span><span class="bash"> Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself</span>
+deployUser=&quot;dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> alert config,take QQ email <span class="hljs-keyword">for</span> example</span>
+<span class="hljs-meta">#</span><span class="bash"> mail protocol</span>
+mailProtocol=&quot;SMTP&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mail server host</span>
+mailServerHost=&quot;smtp.qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mail server port</span>
+<span class="hljs-meta">#</span><span class="bash"> note: Different protocols and encryption methods correspond to different ports, when SSL/TLS is enabled, make sure the port is correct.</span>
+mailServerPort=&quot;25&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mail sender</span>
+mailSender=&quot;xxx@qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mail user</span>
+mailUser=&quot;xxx@qq.com&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> mail sender password</span>
+<span class="hljs-meta">#</span><span class="bash"> note: The mail.passwd is email service authorization code, not the email login password.</span>
+mailPassword=&quot;xxx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Whether TLS mail protocol is supported,<span class="hljs-literal">true</span> is supported and <span class="hljs-literal">false</span> is not supported</span>
+starttlsEnable=&quot;true&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> Whether TLS mail protocol is supported,<span class="hljs-literal">true</span> is supported and <span class="hljs-literal">false</span> is not supported。</span>
+<span class="hljs-meta">#</span><span class="bash"> note: only one of TLS and SSL can be <span class="hljs-keyword">in</span> the <span class="hljs-literal">true</span> state.</span>
+sslEnable=&quot;false&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> note: sslTrust is the same as mailServerHost</span>
+sslTrust=&quot;smtp.qq.com&quot;
+<span class="hljs-meta">
+
+#</span><span class="bash"> resource storage <span class="hljs-built_in">type</span>:HDFS,S3,NONE</span>
+resourceStorageType=&quot;HDFS&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> If resourceStorageType = HDFS, and your Hadoop Cluster NameNode has HA enabled, you need to put core-site.xml and hdfs-site.xml <span class="hljs-keyword">in</span> the installPath/conf directory. In this example, it is placed under /opt/soft/dolphinscheduler/conf, and configure the namenode cluster name; <span class="hljs-keyword">if</span> the NameNode is not HA, modify it to a specific IP or host name.</span>
+<span class="hljs-meta">#</span><span class="bash"> <span class="hljs-keyword">if</span> S3,write S3 address,HA,<span class="hljs-keyword">for</span> example :s3a://dolphinscheduler,</span>
+<span class="hljs-meta">#</span><span class="bash"> Note,s3 be sure to create the root directory /dolphinscheduler</span>
+defaultFS=&quot;hdfs://mycluster:8020&quot;
+<span class="hljs-meta">
+
+#</span><span class="bash"> <span class="hljs-keyword">if</span> not use hadoop resourcemanager, please keep default value; <span class="hljs-keyword">if</span> resourcemanager HA <span class="hljs-built_in">enable</span>, please <span class="hljs-built_in">type</span> the HA ips ; <span class="hljs-keyword">if</span> resourcemanager is single, make this value empty</span>
+yarnHaIps=&quot;192.168.xx.xx,192.168.xx.xx&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> <span class="hljs-keyword">if</span> resourcemanager HA <span class="hljs-built_in">enable</span> or not use resourcemanager, please skip this value setting; If resourcemanager is single, you only need to replace yarnIp1 to actual resourcemanager hostname.</span>
+singleYarnIp=&quot;yarnIp1&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> resource store on HDFS/S3 path, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have <span class="hljs-built_in">read</span> write permissions。/dolphinscheduler is recommended</span>
+resourceUploadPath=&quot;/dolphinscheduler&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> who have permissions to create directory under HDFS/S3 root path</span>
+<span class="hljs-meta">#</span><span class="bash"> Note: <span class="hljs-keyword">if</span> kerberos is enabled, please config hdfsRootUser=</span>
+hdfsRootUser=&quot;hdfs&quot;
+<span class="hljs-meta">
+
+
+#</span><span class="bash"> install hosts</span>
+<span class="hljs-meta">#</span><span class="bash"> Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname</span>
+ips=&quot;ds1,ds2,ds3,ds4&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> ssh port, default 22</span>
+<span class="hljs-meta">#</span><span class="bash"> Note: <span class="hljs-keyword">if</span> ssh port is not default, modify here</span>
+sshPort=&quot;22&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> run master machine</span>
+<span class="hljs-meta">#</span><span class="bash"> Note: list of hosts hostname <span class="hljs-keyword">for</span> deploying master</span>
+masters=&quot;ds1,ds2&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> run worker machine</span>
+<span class="hljs-meta">#</span><span class="bash"> note: need to write the worker group name of each worker, the default value is <span class="hljs-string">&quot;default&quot;</span></span>
+workers=&quot;ds3:default,ds4:default&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> run alert machine</span>
+<span class="hljs-meta">#</span><span class="bash"> note: list of machine hostnames <span class="hljs-keyword">for</span> deploying alert server</span>
+alertServer=&quot;ds2&quot;
+<span class="hljs-meta">
+#</span><span class="bash"> run api machine</span>
+<span class="hljs-meta">#</span><span class="bash"> note: list of machine hostnames <span class="hljs-keyword">for</span> deploying api server</span>
+apiServers=&quot;ds1&quot;
+
+</code></pre>
+<p><em>Attention:</em></p>
+<ul>
+<li>If you need to upload resources to the Hadoop cluster, and the NameNode of the Hadoop cluster is configured with HA, you need to enable HDFS resource upload, and you need to copy the core-site.xml and hdfs-site.xml in the Hadoop cluster to /opt/ dolphinscheduler/conf. Non-NameNode HA skips the next step.</li>
+</ul>
+</li>
+</ul>
+<h1>7、Automated Deployment</h1>
+<ul>
+<li>
+<p>Switch to the deployment user and execute the one-click deployment script</p>
+<p><code>sh install.sh</code></p>
+<pre><code>Note:
+For the first deployment, the following message appears in step 3 of `3, stop server` during operation. This message can be ignored.
+sh: bin/dolphinscheduler-daemon.sh: No such file or directory
+</code></pre>
+</li>
+<li>
+<p>After the script is completed, the following 5 services will be started. Use the <code>jps</code> command to check whether the services are started (<code>jps</code> comes with <code>java JDK</code>)</p>
+</li>
+</ul>
+<pre><code class="language-aidl">    MasterServer         ----- master service
+    WorkerServer         ----- worker service
+    LoggerServer         ----- logger service
+    ApiApplicationServer ----- api service
+    AlertServer          ----- alert service
+</code></pre>
+<p>If the above services are started normally, the automatic deployment is successful.</p>
+<p>After the deployment is successful, you can view the logs. The logs are stored in the logs folder.</p>
+<pre><code class="language-log"> logs/
+    ├── dolphinscheduler-alert-server.log
+    ├── dolphinscheduler-master-server.log
+    |—— dolphinscheduler-worker-server.log
+    |—— dolphinscheduler-api-server.log
+    |—— dolphinscheduler-logger-server.log
+</code></pre>
+<h1>8、login</h1>
+<ul>
+<li>
+<p>Access the address of the front page, interface IP (self-modified)
+<a href="http://192.168.xx.xx:12345/dolphinscheduler">http://192.168.xx.xx:12345/dolphinscheduler</a></p>
+ <p align="center">
+   <img src="/img/login.png" width="60%" />
+ </p>
+</li>
+</ul>
+<h1>9、Start and stop service</h1>
+<ul>
+<li>
+<p>Stop all services</p>
+<p><code>sh ./bin/stop-all.sh</code></p>
+</li>
+<li>
+<p>Start all services</p>
+<p><code>sh ./bin/start-all.sh</code></p>
+</li>
+<li>
+<p>Start and stop master service</p>
+</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start master-server
+sh ./bin/dolphinscheduler-daemon.sh stop master-server
+</code></pre>
+<ul>
+<li>Start and stop worker Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start worker-server
+sh ./bin/dolphinscheduler-daemon.sh stop worker-server
+</code></pre>
+<ul>
+<li>Start and stop api Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start api-server
+sh ./bin/dolphinscheduler-daemon.sh stop api-server
+</code></pre>
+<ul>
+<li>Start and stop logger Service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start logger-server
+sh ./bin/dolphinscheduler-daemon.sh stop logger-server
+</code></pre>
+<ul>
+<li>Start and stop alert service</li>
+</ul>
+<pre><code class="language-shell">sh ./bin/dolphinscheduler-daemon.sh start alert-server
+sh ./bin/dolphinscheduler-daemon.sh stop alert-server
+</code></pre>
+<p><code>Note: Please refer to the &quot;Architecture Design&quot; section for service usage</code></p>
+</div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><a href="/en-us/community/development/subscribe.html"><p>Email List</p></a></li><li><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterbl [...]
+  <script src="//cdn.jsdelivr.net/npm/react@15.6.2/dist/react-with-addons.min.js"></script>
+  <script src="//cdn.jsdelivr.net/npm/react-dom@15.6.2/dist/react-dom.min.js"></script>
+  <script>window.rootPath = '';</script>
+  <script src="/build/vendor.a4fc0e8.js"></script>
+  <script src="/build/docs.md.58e548a.js"></script>
+  <script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?4e7b4b400dd31fa015018a435c64d06f";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/1.3.1/user_doc/cluster-deployment.json b/en-us/docs/1.3.1/user_doc/cluster-deployment.json
new file mode 100644
index 0000000..e9ba0ff
--- /dev/null
+++ b/en-us/docs/1.3.1/user_doc/cluster-deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "cluster-deployment.md",
+  "__html": "<h1>Cluster Deployment</h1>\n<h1>1、Before you begin (please install requirement basic software by yourself)</h1>\n<ul>\n<li>PostgreSQL (8.2.15+) or MySQL (5.7) : Choose One</li>\n<li><a href=\"https://www.oracle.com/technetwork/java/javase/downloads/index.html\">JDK</a> (1.8+) : Required. Double-check configure JAVA_HOME and PATH environment variables in /etc/profile</li>\n<li>ZooKeeper (3.4.6+) : Required</li>\n<li>pstree or psmisc : &quot;pstree&quot; is required for Mac O [...]
+  "link": "/dist/en-us/docs/1.3.1/user_doc/cluster-deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/1.3.1/user_doc/configuration-file.html b/en-us/docs/1.3.1/user_doc/configuration-file.html
new file mode 100644
index 0000000..4fda122
--- /dev/null
+++ b/en-us/docs/1.3.1/user_doc/configuration-file.html
@@ -0,0 +1,1000 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+  <meta name="keywords" content="configuration-file">
+  <meta name="description" content="configuration-file">
+  <title>configuration-file</title>
+  <link rel="shortcut icon" href="/img/favicon.ico">
+  <link rel="stylesheet" href="/build/vendor.e328afe.css">
+</head>
+<body>
+  <div id="root"><div class="md2html docs-page" data-reactroot=""><header class="header-container header-container-dark"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_white.svg"/></a><div class="search search-dark"><span class="icon-search"></span></div><span class="language-switch language-switch-dark">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_white.png"/><div><ul class="ant-menu whiteClass ant-menu-li [...]
+<p>This document is a description of the dolphinscheduler configuration file, and the version is for dolphinscheduler-1.3.x.</p>
+<h1>Directory Structure</h1>
+<p>All configuration files of dolphinscheduler are currently in the [conf] directory.</p>
+<p>For a more intuitive understanding of the location of the [conf] directory and the configuration files it contains, please see the simplified description of the dolphinscheduler installation directory below.</p>
+<p>This article mainly talks about the configuration file of dolphinscheduler. I won't go into details in other parts.</p>
+<p>[Note: The following dolphinscheduler is referred to as DS.]</p>
+<pre><code>
+├─bin                               DS command storage directory
+│  ├─dolphinscheduler-daemon.sh         Activate/deactivate DS service script
+│  ├─start-all.sh                       Start all DS services according to the configuration file
+│  ├─stop-all.sh                        Close all DS services according to the configuration file
+├─conf                              Configuration file directory
+│  ├─application-api.properties         api service configuration file
+│  ├─datasource.properties              Database configuration file
+│  ├─zookeeper.properties               zookeeper configuration file
+│  ├─master.properties                  Master service configuration file
+│  ├─worker.properties                  Worker service configuration file
+│  ├─quartz.properties                  Quartz service configuration file
+│  ├─common.properties                  Public service [storage] configuration file
+│  ├─alert.properties                   alert service configuration file
+│  ├─config                             Environment variable configuration folder
+│      ├─install_config.conf                DS environment variable configuration script [for DS installation/startup]
+│  ├─env                                Run script environment variable configuration directory
+│      ├─dolphinscheduler_env.sh            Run the script to load the environment variable configuration file [such as: JAVA_HOME, HADOOP_HOME, HIVE_HOME ...]
+│  ├─org                                mybatis mapper file directory
+│  ├─i18n                               i18n configuration file directory
+│  ├─logback-api.xml                    api service log configuration file
+│  ├─logback-master.xml                 Master service log configuration file
+│  ├─logback-worker.xml                 Worker service log configuration file
+│  ├─logback-alert.xml                  alert service log configuration file
+├─sql                               DS metadata creation and upgrade sql file
+│  ├─create                             Create SQL script directory
+│  ├─upgrade                            Upgrade SQL script directory
+│  ├─dolphinscheduler-postgre.sql       Postgre database initialization script
+│  ├─dolphinscheduler_mysql.sql         mysql database initialization version
+│  ├─soft_version                       Current DS version identification file
+├─script                            DS service deployment, database creation/upgrade script directory
+│  ├─create-dolphinscheduler.sh         DS database initialization script      
+│  ├─upgrade-dolphinscheduler.sh        DS database upgrade script                
+│  ├─monitor-server.sh                  DS service monitoring startup script               
+│  ├─scp-hosts.sh                       Install file transfer script                                                    
+│  ├─remove-zk-node.sh                  Clean Zookeeper cache file script       
+├─ui                                Front-end WEB resource directory
+├─lib                               DS dependent jar storage directory
+├─install.sh                        Automatically install DS service script
+
+
+</code></pre>
+<h1>Detailed configuration file</h1>
+<table>
+<thead>
+<tr>
+<th>Serial number</th>
+<th>Service classification</th>
+<th>Configuration file</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>Activate/deactivate DS service script</td>
+<td><a href="http://dolphinscheduler-daemon.sh">dolphinscheduler-daemon.sh</a></td>
+</tr>
+<tr>
+<td>2</td>
+<td>Database connection configuration</td>
+<td>datasource.properties</td>
+</tr>
+<tr>
+<td>3</td>
+<td>Zookeeper connection configuration</td>
+<td>zookeeper.properties</td>
+</tr>
+<tr>
+<td>4</td>
+<td>Common [storage] configuration</td>
+<td>common.properties</td>
+</tr>
+<tr>
+<td>5</td>
+<td>API service configuration</td>
+<td>application-api.properties</td>
+</tr>
+<tr>
+<td>6</td>
+<td>Master service configuration</td>
+<td>master.properties</td>
+</tr>
+<tr>
+<td>7</td>
+<td>Worker service configuration</td>
+<td>worker.properties</td>
+</tr>
+<tr>
+<td>8</td>
+<td>Alert service configuration</td>
+<td>alert.properties</td>
+</tr>
+<tr>
+<td>9</td>
+<td>Quartz configuration</td>
+<td>quartz.properties</td>
+</tr>
+<tr>
+<td>10</td>
+<td>DS environment variable configuration script [for DS installation/startup]</td>
+<td>install_config.conf</td>
+</tr>
+<tr>
+<td>11</td>
+<td>Run the script to load the environment variable configuration file <br />[for example: JAVA_HOME,HADOOP_HOME, HIVE_HOME ...</td>
+<td>dolphinscheduler_env.sh</td>
+</tr>
+<tr>
+<td>12</td>
+<td>Service log configuration files</td>
+<td>api service log configuration file : logback-api.xml  <br /> Master service log configuration file  : logback-master.xml    <br /> Worker service log configuration file : logback-worker.xml  <br /> alertService log configuration file : logback-alert.xml</td>
+</tr>
+</tbody>
+</table>
+<h2><a href="http://1.dolphinscheduler-daemon.sh">1.dolphinscheduler-daemon.sh</a> [Activate/deactivate DS service script]</h2>
+<p>The <a href="http://dolphinscheduler-daemon.sh">dolphinscheduler-daemon.sh</a> script is responsible for DS startup &amp; shutdown
+<a href="http://start-all.sh/stop-all.sh">start-all.sh/stop-all.sh</a> eventually starts and shuts down the cluster through <a href="http://dolphinscheduler-daemon.sh">dolphinscheduler-daemon.sh</a>.
+At present, DS has only made a basic setting. Please set the JVM parameters according to the actual situation of their resources.</p>
+<p>The default simplified parameters are as follows:</p>
+<pre><code class="language-bash"><span class="hljs-built_in">export</span> DOLPHINSCHEDULER_OPTS=<span class="hljs-string">&quot;
+-server 
+-Xmx16g 
+-Xms1g 
+-Xss512k 
+-XX:+UseConcMarkSweepGC 
+-XX:+CMSParallelRemarkEnabled 
+-XX:+UseFastAccessorMethods 
+-XX:+UseCMSInitiatingOccupancyOnly 
+-XX:CMSInitiatingOccupancyFraction=70
+&quot;</span>
+</code></pre>
+<blockquote>
+<p>It is not recommended to set &quot;-XX:DisableExplicitGC&quot;, DS uses Netty for communication. Setting this parameter may cause memory leaks.</p>
+</blockquote>
+<h2>2.datasource.properties [Database Connectivity]</h2>
+<p>Use Druid to manage the database connection in DS.The default simplified configuration is as follows.</p>
+<table>
+<thead>
+<tr>
+<th>Parameter</th>
+<th>Defaults</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>spring.datasource.driver-class-name</td>
+<td></td>
+<td>Database driver</td>
+</tr>
+<tr>
+<td>spring.datasource.url</td>
+<td></td>
+<td>Database connection address</td>
+</tr>
+<tr>
+<td>spring.datasource.username</td>
+<td></td>
+<td>Database username</td>
+</tr>
+<tr>
+<td>spring.datasource.password</td>
+<td></td>
+<td>Database password</td>
+</tr>
+<tr>
+<td>spring.datasource.initialSize</td>
+<td>5</td>
+<td>Number of initial connection pools</td>
+</tr>
+<tr>
+<td>spring.datasource.minIdle</td>
+<td>5</td>
+<td>Minimum number of connection pools</td>
+</tr>
+<tr>
+<td>spring.datasource.maxActive</td>
+<td>5</td>
+<td>Maximum number of connection pools</td>
+</tr>
+<tr>
+<td>spring.datasource.maxWait</td>
+<td>60000</td>
+<td>Maximum waiting time</td>
+</tr>
+<tr>
+<td>spring.datasource.timeBetweenEvictionRunsMillis</td>
+<td>60000</td>
+<td>Connection detection cycle</td>
+</tr>
+<tr>
+<td>spring.datasource.timeBetweenConnectErrorMillis</td>
+<td>60000</td>
+<td>Retry interval</td>
+</tr>
+<tr>
+<td>spring.datasource.minEvictableIdleTimeMillis</td>
+<td>300000</td>
+<td>The minimum time a connection remains idle without being evicted</td>
+</tr>
+<tr>
+<td>spring.datasource.validationQuery</td>
+<td>SELECT 1</td>
+<td>SQL to check whether the connection is valid</td>
+</tr>
+<tr>
+<td>spring.datasource.validationQueryTimeout</td>
+<td>3</td>
+<td>Timeout to check if the connection is valid[seconds]</td>
+</tr>
+<tr>
+<td>spring.datasource.testWhileIdle</td>
+<td>true</td>
+<td>Check when applying for connection, if idle time is greater than timeBetweenEvictionRunsMillis,Run validationQuery to check whether the connection is valid.</td>
+</tr>
+<tr>
+<td>spring.datasource.testOnBorrow</td>
+<td>true</td>
+<td>Execute validationQuery to check whether the connection is valid when applying for connection</td>
+</tr>
+<tr>
+<td>spring.datasource.testOnReturn</td>
+<td>false</td>
+<td>When returning the connection, execute validationQuery to check whether the connection is valid</td>
+</tr>
+<tr>
+<td>spring.datasource.defaultAutoCommit</td>
+<td>true</td>
+<td>Whether to enable automatic submission</td>
+</tr>
+<tr>
+<td>spring.datasource.keepAlive</td>
+<td>true</td>
+<td>For connections within the minIdle number in the connection pool, if the idle time exceeds minEvictableIdleTimeMillis, the keepAlive operation will be performed.</td>
+</tr>
+<tr>
+<td>spring.datasource.poolPreparedStatements</td>
+<td>true</td>
+<td>Open PSCache</td>
+</tr>
+<tr>
+<td>spring.datasource.maxPoolPreparedStatementPerConnectionSize</td>
+<td>20</td>
+<td>To enable PSCache, you must configure greater than 0, when greater than 0,PoolPreparedStatements automatically trigger modification to true.</td>
+</tr>
+</tbody>
+</table>
+<h2>3.zookeeper.properties [Zookeeper connection configuration]</h2>
+<table>
+<thead>
+<tr>
+<th>Parameter</th>
+<th>Defaults</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>zookeeper.quorum</td>
+<td>localhost:2181</td>
+<td>zk cluster connection information</td>
... 238137 lines suppressed ...