You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by li...@apache.org on 2020/12/25 15:30:33 UTC

[incubator-dolphinscheduler] branch master updated: Merge from branch 1.3.3-release (#4308)

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

lidongdai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/master by this push:
     new d8f5047  Merge from branch 1.3.3-release (#4308)
d8f5047 is described below

commit d8f50479ca7373e39f3aff899711ef258bf7539a
Author: lgcareer <18...@163.com>
AuthorDate: Fri Dec 25 23:30:22 2020 +0800

    Merge from branch 1.3.3-release (#4308)
    
    * [bugfix #3045][ui]cherry pick commit from dev for Delete the pid of the master and worker processes (#3280)
    
    * Click Cancel, the node data is restored to the original data
    
    * Delete the pid of the master and worker processes
    
    * [bugFix][ui] cherry pick commit from dev for When modifying the dag, if the DAG is not saved, it cannot be formatted (#3282)
    
    * Click Cancel, the node data is restored to the original data
    
    * Delete the pid of the master and worker processes
    
    * When modifying the dag, if the DAG is not saved, it cannot be formatted
    
    * [bugFix][ui]cherry pick commit from dev for Fix the problem that the label of DAG creation task is not displayed, the workflow cannot be formatted after saving, and the drawer style is global (#3284)
    
    * Click Cancel, the node data is restored to the original data
    
    * Delete the pid of the master and worker processes
    
    * When modifying the dag, if the DAG is not saved, it cannot be formatted
    
    * Fix the problem that the label of DAG creation task is not displayed, the workflow cannot be formatted after saving, and the drawer style is global
    
    * [bugFix][ui]cherry pick commit from dev for Default assignment of delete condition judgment node (#3286)
    
    * Click Cancel, the node data is restored to the original data
    
    * Delete the pid of the master and worker processes
    
    * When modifying the dag, if the DAG is not saved, it cannot be formatted
    
    * Fix the problem that the label of DAG creation task is not displayed, the workflow cannot be formatted after saving, and the drawer style is global
    
    * Default assignment of delete condition judgment node
    
    * [Feature-2127][sql-schema] Fix the mysql version limited error (#2127) (#2915)
    
    * [bugFix][ui]Fix the log page refresh button does not rotate (#3316)
    
    * [Feature][server]support one worker can belongs different worker groups when execute install script (#3307)
    
    * fix bug#1336 serial complement data can have multiple process instances (#3317)
    
    Co-authored-by: lenboo <ba...@analysys.com.cn>
    
    * Merge pull request #3331 from lenboo/dev-complement
    
    [FIX-1336] [master] serial complement data can have multiple process instances
    
    * [bugFix][ui] Cannot select connection
    
    * fix
    
    * [bugFix-#3357][ui] Select the dag connection to pop up the label edit box (#3358)
    
    * [bugFix][ui] Cannot select connection
    
    * fix
    
    * [bug fix][ambari-plugin]cherry pr3096 that write unit into config file (#3367)
    
    * resolve #3096 fixbug ambari plugin the config options which has unit doesnt write unit into config file (#3209)
    
    Co-authored-by: zhangchunyang <zh...@analysys.com.cn>
    
    * remove 1.2.1 directory and cherry pick pr 3096
    
    * change 1.3.0 to 1.3.2 of the ambari plugin
    
    Co-authored-by: zhangchunyang <zh...@gmail.com>
    Co-authored-by: zhangchunyang <zh...@analysys.com.cn>
    
    * Remove the new label label function
    
    * fix
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * Restore constants to variables
    
    * fix bug: there exists some problems in checking task dependency
    
    * remove unused import
    
    * i18n format modification
    
    * fix
    
    * fix
    
    * refactor depend result
    
    * [Fix-3364]Running the spark task fail because the can't find the jar (#3378)
    
    * [Feature] JVM parameter optimization , related issue #3370 (#3373)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * Before creating a workflow, clear the canvas
    
    * [Fix-3256][ui] herry pick commit from dev for Fix admin user info update error (#3306)
    
    * Before creating a workflow, clear the canvas (#3388)
    
    * Before creating a workflow, clear the canvas
    
    * [Fix-3256][ui] herry pick commit from dev for Fix admin user info update error (#3306)
    
    Co-authored-by: wuchunfu <31...@qq.com>
    
    * [Feture-3327][ui]Add the function of re-uploading files in the resource center
    
    * [Feture-3327][ui]Add the function of re-uploading files in the resource center (#3394)
    
    * Before creating a workflow, clear the canvas
    
    * [Fix-3256][ui] herry pick commit from dev for Fix admin user info update error (#3306)
    
    * [Feture-3327][ui]Add the function of re-uploading files in the resource center
    
    Co-authored-by: wuchunfu <31...@qq.com>
    
    * [Improvement-3327][api]support re-upload the resource file (#3395)
    
    * [Fix-3390][server]Running hive sql task need find the hdfs path correctly (#3396)
    
    * [Fix-3390][api]Running hive sql task need find the hdfs path correctly
    
    * [Fix-3390][api]Running hive sql task need find the hdfs path correctly
    
    * update soft version
    
    * hive UDF function to modify the background color
    
    * fix
    
    * fix bug: Fix master task dependency check bug
    
    * cancel spark task version check (#3406)
    
    Co-authored-by: Eights-Li <ye...@gmail.com>
    
    * [Bug][ui]Fix front-end bug #3413
    
    * [Feature][ambari_plugin]support one worker can belongs different worker groups when execute install script (#3410)
    
    * Optimize dag
    
    * Update actions.js (#3401)
    
    * [Fix-3256][ui] Fix admin user info update error (#3425) (#3428)
    
    * [PROPOSAL-3139] Datasource selection changes from radio to select
    
    * [PROPOSAL-3139] Datasource selection changes from radio to select
    
    * [BUG FIX] issues #3256
    
    * [BUG FIX] issues #3256
    
    * [BUG FIX] issues #3256
    
    * [Fix-3256][ui] Fix admin user info update error
    
    * [Fix-3256][ui] Fix admin user info update error
    
    * [Fix-3256][ui] Fix admin user info update error
    
    * [Fix-3256][ui] Fix admin user info update error
    
    * reset createUser.vue
    
    * [Fix-3256][ui] Fix admin user info update error
    
    Co-authored-by: dailidong <da...@gmail.com>
    
    Co-authored-by: wuchunfu <31...@qq.com>
    Co-authored-by: dailidong <da...@gmail.com>
    
    * [Fix-3433][api]Fixed that release the imported process definition which version is below 1.3.0 will be failure
    
    * dag connection add check
    
    * fix
    
    * [Fix-3423][dao][sql]Fixed that the resource file of the task node can't be found when upgrade from 1.2.0 to 1.3.x (#3454)
    
    * Remove node deep monitoring
    
    * If worker group id is null,don't need to set the value of the worker group (#3460)
    
    * [Fix-3423][dao][sql]Fixed that the resource file of the task node can't be found when upgrade from 1.2.0 to 1.3.x
    
    * [Fix-3423][dao]If worker group id is null,don't need to set the value of the worker group
    
    * [ui]Code optimization
    
    * fix
    
    * fix
    
    * [fix-3058][ui]Move rtTargetArr to jsPlumbHandle.js
    
    * [optimization][ui]Prevent the shell script input box from being empty
    
    * [Fix-3462][api]If login user is admin,need list all udfs (#3465)
    
    * [Fix-3462][api]If login user is admin,need list all udfs
    
    * [Fix-3462][api]add the test on the method of QueryUdfFuncList
    
    * [Fix-3462][api]fix the code smell
    
    * [Fix-3462][api]fix the code smell
    
    * [Fix-3462][api]fix the code smell
    
    * [Fix-3463][api]Fixed that run the sql task will be failure after rename the udf resource (#3482)
    
    * [fixBug-3058][ui]Fix connection abnormalities in historical workflow instance data
    
    * [Feture-3327][ui]Add the function of re-uploading files in the udf subdirectory
    
    * fix bug: Fix master task dependency check bug (#3473)
    
    Co-authored-by: lenboo <ba...@analysys.com.cn>
    
    * [maven-release-plugin] prepare release 1.3.2
    
    * [maven-release-plugin] prepare for next development iteration
    
    * fix ci_e2e fail (#3497)
    
    * [Fix-3469][api]Should filter the resource by the different program type (#3498)
    
    * [Fix-3463][api]Fixed that run the sql task will be failure after rename the udf resource
    
    * [Fix-3469][api]Should list python file and jar file
    
    * [Fix-3469][api]Should filter the resource by the different program type
    
    * [Fix-3469][api]fix the code smell
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback (#3499)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * [maven-release-plugin] prepare release 1.3.2
    
    * [maven-release-plugin] prepare for next development iteration
    
    * [Fix-3469][ui]The value of maintenance resources and the filtering of resources according to different program types
    
    * fix
    
    * Revert "fix ci_e2e fail (#3497)"
    
    This reverts commit e367f90bb73c9682739308a0a98887a1c0f407ef.
    
    * test
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback (#3503)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    * test
    
    * test release 1.3.2 version rollback
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * [maven-release-plugin] prepare release 1.3.2
    
    * [maven-release-plugin] prepare for next development iteration
    
    * test release 1.3.2 version rollback (#3504)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    * test
    
    * test release 1.3.2 version rollback
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * [maven-release-plugin] prepare release 1.3.2
    
    * [maven-release-plugin] prepare for next development iteration
    
    * fix ds muti-level directory in zk, which lead to fail to assign work
    
    * add login user check some actions in api
    
    * [Hotfix][ci] Fix e2e ci docker image build error
    
    * modify tag 1.3.0 to HEAD
    
    * modify tag 1.3.0 to HEAD (#3525)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    * test
    
    * test release 1.3.2 version rollback
    
    * modify tag 1.3.0 to HEAD
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * remove OGNL part of the mybaits notice (#3526)
    
    * [maven-release-plugin] prepare release 1.3.2
    
    * [maven-release-plugin] prepare for next development iteration
    
    * release 1.3.2 version rollback (#3527)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    * test
    
    * test release 1.3.2 version rollback
    
    * modify tag 1.3.0 to HEAD
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * [ui]Script input box to modify the delay loading time
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * modify general user can't create token
    
    * [ui]It is forbidden to select non-existent resources and modify the tree display data format
    
    * modify general user can't create token (#3533)
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * [Feature] JVM parameter optimization , related issue #3370
    
    * test release 1.3.2 version rollback
    
    * test release 1.3.2 version rollback
    
    * test
    
    * test release 1.3.2 version rollback
    
    * modify tag 1.3.0 to HEAD
    
    * modify general user can't create token
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * if task is null , set task type is null instead of "null"
    
    * [Fix-3536][api]If user didn't have tenant,create resource directory will NPE (#3537)
    
    * [Fix-3536][api]If user didn't have tenant,create resource will NPE
    
    * [Fix-3536][api]If user didn't have tenant,create resource directory will NPE
    
    * modify general user can't create,delete,update token (#3538)
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * [ui]Resource delete OK button to increase loading, change the number of homepage display cursor
    
    * fix
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry (#3748)
    
    * [fixbug][ui]Repair the master and worker management instrument display
    
    * [Fix-3238][docker]Fix that can not create folder in docker with standalone mode (#3741)
    
    * [fixbug][ui]Remove non-existent or deleted resources disabled
    
    * [fixBug-3621][ui]If the workflow instance status is executing status, it is forbidden to select
    
    * [fix-3553][ui]Repair click workflow connection, select the entire path
    
    * fix
    
    * fix
    
    * [Fix-3238][docker]Fix that can not create folder in docker with standalone mode
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry (#3776)
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    
    * The batch delete function in the workflow definition and workflow instance pages cannot be canceled if selected.
    
    * [Improvement-3720][ui] js mailbox verification fix
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect (#3784)
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * The batch delete function in the workflow definition and workflow instance pages cannot be canceled if selected.
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    Co-authored-by: zhuangchong <zh...@163.com>
    Co-authored-by: JinyLeeChina <42...@users.noreply.github.com>
    
    * [Fix-3124][docker]Fix that can not build a docker image on windows (#3765)
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect (#3786)
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * The batch delete function in the workflow definition and workflow instance pages cannot be canceled if selected.
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    Co-authored-by: zhuangchong <zh...@163.com>
    Co-authored-by: JinyLeeChina <42...@users.noreply.github.com>
    
    * [Fix-3258][Security][Worker group manage] Connot get create time and update time,report DateTimeParseException (#3787)
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * [Fix-3616][Server] when worker akc/response master exception , async retry
    
    * The batch delete function in the workflow definition and workflow instance pages cannot be canceled if selected.
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    * [Fix-3549] [Server][sqlTask]The alias column in the query SQL does not take effect
    
    * [BugFixed] issue #3258 (#3265)
    
    * 'ExecutionStatus'
    
    * '3258'
    
    * Update WorkerGroupServiceTest.java
    
    * Delete UserState.java
    
    * Delete ResourceSyncService.java
    
    * Delete core-site.xml
    
    * Delete hdfs-site.xml
    
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: qiaozhanwei <qi...@outlook.com>
    
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    Co-authored-by: zhuangchong <zh...@163.com>
    Co-authored-by: JinyLeeChina <42...@users.noreply.github.com>
    Co-authored-by: dailidong <da...@gmail.com>
    
    * [fixBug-3792][ui]Click on the sidebar to adapt the width of the pie chart on the project homepage
    
    * [Bug-3713][HadoopUtils] catfile method Stream not closed  (#3715)
    
    * fix bug
    
    Delete invalid field: executorcores
    
    Modify verification prompt
    
    * fix bug
    
    Delete invalid field: executorcores
    
    Modify verification prompt
    
    * fix bug
    
    Delete invalid field: executorcores
    
    Modify verification prompt
    
    * dag  add close button
    
    * reset last version
    
    * reset last version
    
    * dag add close buttion
    
    dag add close buttion
    
    * update  CLICK_SAVE_WORKFLOW_BUTTON  xpath
    
    * updae CLICK_SAVE_WORKFLOW_BUTTON xpath
    
    * updae CLICK_SAVE_WORKFLOW_BUTTON xpath
    
    * updae CLICK_SAVE_WORKFLOW_BUTTON xpath
    
    * Update CreateWorkflowLocator.java
    
    modify submit workflow button
    
    * Update CreateWorkflowLocator.java
    
    * Update CreateWorkflowLocator.java
    
    modify CLICK_ADD_BUTTON
    
    * Update CreateWorkflowLocator.java
    
    delete print
    
    * Update CreateWorkflowLocator.java
    
    1
    
    * Update CreateWorkflowLocator.java
    
    1
    
    * Setting '-XX:+DisableExplicitGC ' causes netty memory leaks
    
    in addition
    
    update '- XX: largepagesizeinbytes = 128M' to '- XX: largepagesizeinbytes = 10M'
    
    * Update dag.vue
    
    * Update dag.vue
    
    * Update dag.vue
    
    * Update CreateWorkflowLocator.java
    
    * Revert "Setting '-XX:+DisableExplicitGC ' causes netty memory leaks"
    
    This reverts commit 3a2cba7a
    
    * Setting '-XX:+DisableExplicitGC ' causes netty memory leaks
    
    in addition
    
    update '- XX: largepagesizeinbytes = 128M' to '- XX: largepagesizeinbytes = 10M'
    
    * Update dolphinscheduler-daemon.sh
    
    * catfile method Stream not closed
    
    * catfile method Stream not closed
    
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: xingchun-chen <55...@users.noreply.github.com>
    
    * [Fix-#3713][common]Fix that catfile method Stream not closed
    
    * [Fix-#3713][common]Fix that catfile method Stream not closed (#3810)
    
    * [Bug-3713][HadoopUtils] catfile method Stream not closed  (#3715)
    
    * fix bug
    
    Delete invalid field: executorcores
    
    Modify verification prompt
    
    * fix bug
    
    Delete invalid field: executorcores
    
    Modify verification prompt
    
    * fix bug
    
    Delete invalid field: executorcores
    
    Modify verification prompt
    
    * dag  add close button
    
    * reset last version
    
    * reset last version
    
    * dag add close buttion
    
    dag add close buttion
    
    * update  CLICK_SAVE_WORKFLOW_BUTTON  xpath
    
    * updae CLICK_SAVE_WORKFLOW_BUTTON xpath
    
    * updae CLICK_SAVE_WORKFLOW_BUTTON xpath
    
    * updae CLICK_SAVE_WORKFLOW_BUTTON xpath
    
    * Update CreateWorkflowLocator.java
    
    modify submit workflow button
    
    * Update CreateWorkflowLocator.java
    
    * Update CreateWorkflowLocator.java
    
    modify CLICK_ADD_BUTTON
    
    * Update CreateWorkflowLocator.java
    
    delete print
    
    * Update CreateWorkflowLocator.java
    
    1
    
    * Update CreateWorkflowLocator.java
    
    1
    
    * Setting '-XX:+DisableExplicitGC ' causes netty memory leaks
    
    in addition
    
    update '- XX: largepagesizeinbytes = 128M' to '- XX: largepagesizeinbytes = 10M'
    
    * Update dag.vue
    
    * Update dag.vue
    
    * Update dag.vue
    
    * Update CreateWorkflowLocator.java
    
    * Revert "Setting '-XX:+DisableExplicitGC ' causes netty memory leaks"
    
    This reverts commit 3a2cba7a
    
    * Setting '-XX:+DisableExplicitGC ' causes netty memory leaks
    
    in addition
    
    update '- XX: largepagesizeinbytes = 128M' to '- XX: largepagesizeinbytes = 10M'
    
    * Update dolphinscheduler-daemon.sh
    
    * catfile method Stream not closed
    
    * catfile method Stream not closed
    
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: xingchun-chen <55...@users.noreply.github.com>
    
    * [Fix-#3713][common]Fix that catfile method Stream not closed
    
    Co-authored-by: BoYiZhang <39...@users.noreply.github.com>
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: xingchun-chen <55...@users.noreply.github.com>
    
    * [Fix-#3487][api、dao] cherry pick from dev to fix that create folder duplicate name under multithreading
    
    * [Hotfix-3131][api] Fix the new tenant already exists prompt (#3132)
    
    * Bugfix: Fix the new tenant already exists prompt
    
    * Feature: Add test cases
    
    * Update TenantServiceTest.java
    
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: qiaozhanwei <qi...@outlook.com>
    
    * Set up JDK 11 for SonarCloud in github action. (#3052)
    
    * Set up JDK 11 for SonarCloud in github action.
    
    * Fix javadoc error with JDK 11.
    
    * Prevent Javadoc from stopping if it finds any html errors.
    
    * [fixBug-3621][ui]Select the batch checkbox to unfilter the instances in the executing state
    
    * add verify tenant name cannot contain special characters.
    
    * [fixBug-3840][ui]The tenant code only allows letters or a combination of letters and numbers
    
    * fix
    
    * fix
    
    * fix
    
    * [Fix-#3702][api] When re-upload the resource file but don't change the name or desc,it need replace the origin resource file. (#3862)
    
    * [Fix-#3702][api] When re-upload the resource file but don't change the name or desc,it will not replace the origin resource file.
    
    * [Fix-#3702][api] When re-upload the resource file but don't change the name or desc,it will not replace the origin resource file.
    
    * [fixbug-3621][ui]Workflow instance ready to stop and ready to suspend state prohibits checking
    
    * [fixbug-3887][ui]Fix missing English translation of re-upload files
    
    * add process define name verify. (#3879)
    
    * Revert "[1.3.3-release][fix-3835][ui] When the tenantName contains "<", the tenant drop-down list is blankadd verify tenant name cannot contain special characters."
    
    * revert pr 3872
    
    * [FIX-3617][Service]after subtask fault tolerance, 2 task instances are generated (#3830)
    
    * fix bug(#3617): after subtask fault tolerance, 2 task instances are generated.
    
    * delete unused code
    
    * update code smell
    
    * refactor sub work command process
    
    * add process service ut
    
    * add license header
    
    * fix some code smell
    
    * chang ut java8 to java11
    
    * update sonar to java11
    
    * copy ut config from dev
    
    * remove checkstyle
    
    * revert to 1.3.3
    
    * change proess service test to executor service
    
    * add process service test
    
    * add process service test
    
    * revert
    
    * revert
    
    * add comments
    
    * change dev to 1.3.3-release
    
    * revert
    
    Co-authored-by: baoliang <ba...@analysys.com.cn>
    
    * [Fix-#3487][sql] add dolphinscheduler_dml.sql under 1.3.3_schema (#3907)
    
    * [FIX-3836][1.3.3-release-API] process definition validation name interface prompt information error  (#3899)
    
    * fix bug : error message
    
    * fix code smell
    
    * fix code smell
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat (#3913)
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat
    
    Co-authored-by: Kirs <ac...@163.com>
    
    * Repair check box cannot be canceled
    
    * [fix-3843][api] When update workflow definition,if name already exists, the prompt is not friendly
    
    * [fix-3843][api] When update workflow definition,if name already exists, the prompt is not friendly
    
    * [fix-#3843][api]When update workflow definition,if name already exists, the prompt is not friendly (#3918)
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat
    
    * [FIX_#3789][remote]cherry pick from dev to support netty heart beat
    
    * [fix-3843][api] When update workflow definition,if name already exists, the prompt is not friendly
    
    * [fix-3843][api] When update workflow definition,if name already exists, the prompt is not friendly
    
    Co-authored-by: Kirs <ac...@163.com>
    
    * [Fix-#3487][sql] update uc_dolphin_T_t_ds_resources_un
    
    * Workflow definition name re-modified and added check
    
    * [fix-#3843][api]When update workflow definition,if name already exists, the prompt is not friendly.
    
    * update code.
    
    * [#3931][ui]Field name optimization for spark, flink, and mr
    
    * change version from 1.3.2-SNAPSHOT to 1.3.3-SNAPSHOT (#3934)
    
    * [maven-release-plugin] prepare release 1.3.3
    
    * [maven-release-plugin] prepare for next development iteration
    
    * [ambari-plugin]change version 1.3.2 to 1.3.3 (#3935)
    
    * fix bug:3615 After the task is executed successfully, but the next task has not been submitted, stop the master
    
    * [fixBug-3964][ui]Switch back and forth over timeout alarm, the selected value is empty
    
    * solve too many files, close logClientService (#3971)
    
    * fix #3966 sub process doesnot send alert mail after process instance ending. (#3972)
    
    Co-authored-by: baoliang <ba...@analysys.com.cn>
    
    * [Fix-#3618][server] resolve task executed finished but not release the file handle (#3975)
    
    * [Fix-#3618][server] resolve task executed finished but not release the file handle
    
    * [Fix-#3618][server] resolve task executed finished but not release the file handle
    
    * [Fix-#3958][api] files should not be created successfully in the directory of the authorized file
    
    * [FIX-3966] The timeout warning does not take effect in sub_process (#3982)
    
    * fix #3966 sub process doesnot send alert mail after process instance ending.
    
    * fix bug 3964: sub_process The timeout warning does not take effect
    add timeout warning for sub_process/dependent task.
    
    * fix code smell
    
    * fix code smell
    
    * fix code smell
    
    * update worker group inherit from parent
    
    Co-authored-by: baoliang <ba...@analysys.com.cn>
    
    * fix import dolphinscheduler_mysql.sql insert admin user data
    
    * [FIX-3929] condition task would post wrong tasks when failover. (#3999)
    
    * fix #3966 sub process doesnot send alert mail after process instance ending.
    
    * fix bug 3964: sub_process The timeout warning does not take effect
    add timeout warning for sub_process/dependent task.
    
    * fix code smell
    
    * fix code smell
    
    * fix code smell
    
    * update worker group inherit from parent
    
    * remove stdout in logback configuration
    
    * fix bug #3929 condition task would post error when failover.
    
    * remove unused test
    
    * add comments
    
    * add skip node judge
    
    Co-authored-by: baoliang <ba...@analysys.com.cn>
    
    * [FIX-3929]  because of no lock, start up failover would dispatch two same tasks. (#4004)
    
    * fix #3966 sub process doesnot send alert mail after process instance ending.
    
    * fix bug 3964: sub_process The timeout warning does not take effect
    add timeout warning for sub_process/dependent task.
    
    * fix code smell
    
    * fix code smell
    
    * fix code smell
    
    * update worker group inherit from parent
    
    * remove stdout in logback configuration
    
    * fix bug #3929 condition task would post error when failover.
    
    * remove unused test
    
    * add comments
    
    * add skip node judge
    
    * fix bug 3929: because of no lock, start up failover would dispatch two same tasks.
    
    Co-authored-by: baoliang <ba...@analysys.com.cn>
    
    * revert pom version to 1.3.3-release
    
    * [maven-release-plugin] prepare release 1.3.3
    
    * [maven-release-plugin] prepare for next development iteration
    
    * [release]revert pom version to 1.3.3-release
    
    * fix bug 4010: remove failed condition tasks from error-task-list. (#4011)
    
    Co-authored-by: baoliang <ba...@analysys.com.cn>
    
    * [maven-release-plugin] prepare release 1.3.3
    
    * [maven-release-plugin] prepare for next development iteration
    
    * Remove unavailable files
    
    Co-authored-by: break60 <79...@qq.com>
    Co-authored-by: Yichao Yang <10...@qq.com>
    Co-authored-by: lenboo <ba...@analysys.com.cn>
    Co-authored-by: bao liang <29...@users.noreply.github.com>
    Co-authored-by: xingchun-chen <55...@users.noreply.github.com>
    Co-authored-by: zhangchunyang <zh...@gmail.com>
    Co-authored-by: zhangchunyang <zh...@analysys.com.cn>
    Co-authored-by: qiaozhanwei <qi...@analysys.com.cn>
    Co-authored-by: qiaozhanwei <qi...@outlook.com>
    Co-authored-by: wuchunfu <31...@qq.com>
    Co-authored-by: Yelli <am...@my.com>
    Co-authored-by: Eights-Li <ye...@gmail.com>
    Co-authored-by: JinyLeeChina <42...@users.noreply.github.com>
    Co-authored-by: dailidong <da...@gmail.com>
    Co-authored-by: XiaotaoYi <v-...@hotmail.com>
    Co-authored-by: zhuangchong <zh...@163.com>
    Co-authored-by: BoYiZhang <39...@users.noreply.github.com>
    Co-authored-by: muzhongjiang <mu...@163.com>
    Co-authored-by: Jave-Chen <ba...@gmail.com>
    Co-authored-by: zhuangchong <zh...@163.com>
    Co-authored-by: zhuangchong <37...@users.noreply.github.com>
    Co-authored-by: Kirs <ac...@163.com>
    Co-authored-by: lgcareer <lg...@apache.org>
    Co-authored-by: wulingqi <wu...@baijiahulian.com>
---
 .asf.yaml                                          |    18 -
 .github/ISSUE_TEMPLATE/bug_report.md               |    15 +-
 .github/ISSUE_TEMPLATE/feature_request.md          |     4 +-
 .github/ISSUE_TEMPLATE/question.md                 |    23 +
 .github/PULL_REQUEST_TEMPLATE.md                   |    32 +
 .github/workflows/ci_backend.yml                   |    64 +
 .github/workflows/ci_e2e.yml                       |    74 +
 .github/workflows/ci_frontend.yml                  |    71 +
 .github/workflows/ci_ut.yml                        |    93 +
 .gitignore                                         |   136 +-
 .mvn/jvm.config                                    |     1 +
 .mvn/wrapper/MavenWrapperDownloader.java           |   117 +
 .mvn/wrapper/maven-wrapper.properties              |     2 +
 CONTRIBUTING.md                                    |   137 +-
 DISCLAIMER                                         |     5 +
 LICENSE                                            |    17 +
 NOTICE                                             |    54 +-
 README.md                                          |   117 +-
 README_zh_CN.md                                    |   100 +
 ambari_plugin/README.md                            |   132 +
 .../common-services/DOLPHIN/1.3.3/alerts.json      |   158 +
 .../DOLPHIN/1.3.3/configuration/dolphin-alert.xml  |   137 +
 .../configuration/dolphin-application-api.xml      |    87 +
 .../DOLPHIN/1.3.3/configuration/dolphin-common.xml |   158 +
 .../1.3.3/configuration/dolphin-datasource.xml     |   206 +
 .../DOLPHIN/1.3.3/configuration/dolphin-env.xml    |   123 +
 .../DOLPHIN/1.3.3/configuration/dolphin-master.xml |    88 +
 .../DOLPHIN/1.3.3/configuration/dolphin-quartz.xml |   126 +
 .../DOLPHIN/1.3.3/configuration/dolphin-worker.xml |    67 +
 .../1.3.3/configuration/dolphin-zookeeper.xml      |    76 +
 .../common-services/DOLPHIN/1.3.3/metainfo.xml     |   137 +
 .../alerts/alert_dolphin_scheduler_status.py       |   124 +
 .../1.3.3/package/scripts/dolphin_alert_service.py |    62 +
 .../1.3.3/package/scripts/dolphin_api_service.py   |    71 +
 .../DOLPHIN/1.3.3/package/scripts/dolphin_env.py   |   123 +
 .../package/scripts/dolphin_logger_service.py      |    61 +
 .../package/scripts/dolphin_master_service.py      |    62 +
 .../package/scripts/dolphin_worker_service.py      |    61 +
 .../DOLPHIN/1.3.3/package/scripts/params.py        |   155 +
 .../DOLPHIN/1.3.3/package/scripts/service_check.py |    31 +
 .../DOLPHIN/1.3.3/package/scripts/status_params.py |    23 +
 .../1.3.3/package/templates/alert.properties.j2    |    20 +
 .../templates/application-api.properties.j2        |    20 +
 .../1.3.3/package/templates/common.properties.j2   |    20 +
 .../package/templates/datasource.properties.j2     |    20 +
 .../1.3.3/package/templates/dolphin-daemon.sh.j2   |   116 +
 .../1.3.3/package/templates/master.properties.j2   |    20 +
 .../1.3.3/package/templates/quartz.properties.j2   |    20 +
 .../1.3.3/package/templates/worker.properties.j2   |    20 +
 .../package/templates/zookeeper.properties.j2      |    20 +
 .../DOLPHIN/1.3.3/quicklinks/quicklinks.json       |    26 +
 .../DOLPHIN/1.3.3/themes/theme.json                |   661 ++
 ambari_plugin/statcks/DOLPHIN/metainfo.xml         |    26 +
 .../mysql/escheduler_dml.sql => docker/README.md   |     0
 docker/build/Dockerfile                            |    82 +
 docker/build/README.md                             |   328 +
 docker/build/README_zh_CN.md                       |   328 +
 docker/build/checkpoint.sh                         |    27 +
 .../conf/dolphinscheduler/alert.properties.tpl     |    50 +
 .../application-api.properties.tpl                 |    45 +
 .../conf/dolphinscheduler/common.properties.tpl    |    78 +
 .../dolphinscheduler/datasource.properties.tpl     |    71 +
 .../dolphinscheduler/env/dolphinscheduler_env.sh   |    20 +
 .../dolphinscheduler/logback/logback-alert.xml     |    52 +
 .../conf/dolphinscheduler/logback/logback-api.xml  |    62 +
 .../dolphinscheduler/logback/logback-master.xml    |    82 +
 .../dolphinscheduler/logback/logback-worker.xml    |    83 +
 .../conf/dolphinscheduler/master.properties.tpl    |    40 +
 .../conf/dolphinscheduler/quartz.properties.tpl    |    54 +
 .../conf/dolphinscheduler/worker.properties.tpl    |    37 +
 .../conf/dolphinscheduler/zookeeper.properties.tpl |    29 +
 docker/build/conf/nginx/dolphinscheduler.conf      |    48 +
 docker/build/conf/zookeeper/zoo.cfg                |    45 +
 docker/build/hooks/build                           |    53 +
 docker/build/hooks/build.bat                       |    61 +
 docker/build/hooks/push                            |    24 +
 docker/build/hooks/push.bat                        |    23 +
 docker/build/startup-init-conf.sh                  |   104 +
 docker/build/startup.sh                            |   178 +
 docker/docker-swarm/check                          |    35 +
 docker/docker-swarm/docker-compose.yml             |   242 +
 docker/docker-swarm/docker-stack.yml               |   227 +
 docker/docker-swarm/dolphinscheduler_env.sh        |    20 +
 docker/kubernetes/dolphinscheduler/Chart.yaml      |    52 +
 docker/kubernetes/dolphinscheduler/README.md       |   228 +
 .../kubernetes/dolphinscheduler/requirements.yaml  |    25 +
 .../dolphinscheduler/templates/NOTES.txt           |    44 +
 .../dolphinscheduler/templates/_helpers.tpl        |   133 +
 .../configmap-dolphinscheduler-alert.yaml          |    41 +
 .../configmap-dolphinscheduler-master.yaml         |    36 +
 .../configmap-dolphinscheduler-worker.yaml         |    39 +
 .../deployment-dolphinscheduler-alert.yaml         |   234 +
 .../templates/deployment-dolphinscheduler-api.yaml |   167 +
 .../deployment-dolphinscheduler-frontend.yaml      |   102 +
 .../dolphinscheduler/templates/ingress.yaml        |    43 +
 .../templates/pvc-dolphinscheduler-alert.yaml      |    35 +
 .../templates/pvc-dolphinscheduler-api.yaml        |    35 +
 .../templates/pvc-dolphinscheduler-frontend.yaml   |    35 +
 .../templates/secret-external-postgresql.yaml      |    29 +
 .../statefulset-dolphinscheduler-master.yaml       |   257 +
 .../statefulset-dolphinscheduler-worker.yaml       |   292 +
 .../templates/svc-dolphinscheduler-api.yaml        |    35 +
 .../templates/svc-dolphinscheduler-frontend.yaml   |    35 +
 .../svc-dolphinscheduler-master-headless.yaml      |    36 +
 .../svc-dolphinscheduler-worker-headless.yaml      |    40 +
 docker/kubernetes/dolphinscheduler/values.yaml     |   362 +
 docs/zh_CN/1.0.1-release.md                        |    16 -
 docs/zh_CN/1.0.2-release.md                        |    49 -
 docs/zh_CN/1.0.3-release.md                        |    53 -
 docs/zh_CN/1.1.0-release.md                        |    55 -
 docs/zh_CN/EasyScheduler-FAQ.md                    |   287 -
 docs/zh_CN/README.md                               |    66 -
 docs/zh_CN/SUMMARY.md                              |    45 -
 docs/zh_CN/book.json                               |    23 -
 docs/zh_CN/images/addtenant.png                    |   Bin 15441 -> 0 bytes
 docs/zh_CN/images/architecture.jpg                 |   Bin 270550 -> 0 bytes
 docs/zh_CN/images/auth_project.png                 |   Bin 17445 -> 0 bytes
 docs/zh_CN/images/auth_user.png                    |   Bin 10254 -> 0 bytes
 docs/zh_CN/images/cdh_hive_error.png               |   Bin 106578 -> 0 bytes
 docs/zh_CN/images/complement.png                   |   Bin 58442 -> 0 bytes
 docs/zh_CN/images/complement_data.png              |   Bin 51964 -> 0 bytes
 docs/zh_CN/images/create-queue.png                 |   Bin 84759 -> 0 bytes
 docs/zh_CN/images/dag1.png                         |   Bin 284687 -> 0 bytes
 docs/zh_CN/images/dag2.png                         |   Bin 248387 -> 0 bytes
 docs/zh_CN/images/dag3.png                         |   Bin 273150 -> 0 bytes
 docs/zh_CN/images/dag4.png                         |   Bin 24671 -> 0 bytes
 docs/zh_CN/images/dag_examples_cn.jpg              |   Bin 83335 -> 0 bytes
 docs/zh_CN/images/dag_examples_en.jpg              |   Bin 206865 -> 0 bytes
 docs/zh_CN/images/decentralization.png             |   Bin 73788 -> 0 bytes
 docs/zh_CN/images/definition_create.png            |   Bin 98363 -> 0 bytes
 docs/zh_CN/images/definition_edit.png              |   Bin 17822 -> 0 bytes
 docs/zh_CN/images/definition_list.png              |   Bin 101977 -> 0 bytes
 docs/zh_CN/images/depend-node.png                  |   Bin 248273 -> 0 bytes
 docs/zh_CN/images/depend-node2.png                 |   Bin 248408 -> 0 bytes
 docs/zh_CN/images/depend-node3.png                 |   Bin 219891 -> 0 bytes
 docs/zh_CN/images/dependent_edit.png               |   Bin 65166 -> 0 bytes
 docs/zh_CN/images/dependent_edit2.png              |   Bin 102250 -> 0 bytes
 docs/zh_CN/images/dependent_edit3.png              |   Bin 79104 -> 0 bytes
 docs/zh_CN/images/dependent_edit4.png              |   Bin 92018 -> 0 bytes
 docs/zh_CN/images/distributed_lock.png             |   Bin 82747 -> 0 bytes
 docs/zh_CN/images/distributed_lock_procss.png      |   Bin 76178 -> 0 bytes
 docs/zh_CN/images/fault-tolerant.png               |   Bin 86403 -> 0 bytes
 docs/zh_CN/images/fault-tolerant_master.png        |   Bin 31767 -> 0 bytes
 docs/zh_CN/images/fault-tolerant_worker.png        |   Bin 80142 -> 0 bytes
 docs/zh_CN/images/favicon.ico                      |   Bin 4286 -> 0 bytes
 docs/zh_CN/images/file-manage.png                  |   Bin 118982 -> 0 bytes
 docs/zh_CN/images/file_create.png                  |   Bin 48006 -> 0 bytes
 docs/zh_CN/images/file_detail.png                  |   Bin 169913 -> 0 bytes
 docs/zh_CN/images/file_rename.png                  |   Bin 9581 -> 0 bytes
 docs/zh_CN/images/file_upload.png                  |   Bin 14500 -> 0 bytes
 docs/zh_CN/images/gant-pic.png                     |   Bin 183552 -> 0 bytes
 docs/zh_CN/images/gantt.png                        |   Bin 54791 -> 0 bytes
 docs/zh_CN/images/global_parameter.png             |   Bin 116141 -> 0 bytes
 docs/zh_CN/images/grpc.png                         |   Bin 30154 -> 0 bytes
 docs/zh_CN/images/hive_edit.png                    |   Bin 46641 -> 0 bytes
 docs/zh_CN/images/hive_edit2.png                   |   Bin 48423 -> 0 bytes
 docs/zh_CN/images/hive_kerberos.png                |   Bin 37052 -> 0 bytes
 docs/zh_CN/images/instance-detail.png              |   Bin 251067 -> 0 bytes
 docs/zh_CN/images/instance-list.png                |   Bin 197387 -> 0 bytes
 docs/zh_CN/images/lack_thread.png                  |   Bin 91362 -> 0 bytes
 docs/zh_CN/images/local_parameter.png              |   Bin 25661 -> 0 bytes
 docs/zh_CN/images/login.jpg                        |   Bin 49053 -> 0 bytes
 docs/zh_CN/images/login.png                        |   Bin 14225 -> 0 bytes
 docs/zh_CN/images/logo.png                         |   Bin 8906 -> 0 bytes
 docs/zh_CN/images/logout.png                       |   Bin 8842 -> 0 bytes
 docs/zh_CN/images/mail_edit.png                    |   Bin 14438 -> 0 bytes
 docs/zh_CN/images/master-jk.png                    |   Bin 116984 -> 0 bytes
 docs/zh_CN/images/master.png                       |   Bin 156740 -> 0 bytes
 docs/zh_CN/images/master_slave.png                 |   Bin 22103 -> 0 bytes
 docs/zh_CN/images/master_worker_lack_res.png       |   Bin 108776 -> 0 bytes
 docs/zh_CN/images/mr_edit.png                      |   Bin 136183 -> 0 bytes
 docs/zh_CN/images/mr_java.png                      |   Bin 135161 -> 0 bytes
 docs/zh_CN/images/mysql-jk.png                     |   Bin 87327 -> 0 bytes
 docs/zh_CN/images/mysql_edit.png                   |   Bin 48390 -> 0 bytes
 docs/zh_CN/images/postgresql_edit.png              |   Bin 32368 -> 0 bytes
 docs/zh_CN/images/postgressql_edit.png             |   Bin 44511 -> 0 bytes
 docs/zh_CN/images/procedure_edit.png               |   Bin 89355 -> 0 bytes
 docs/zh_CN/images/process-list-pause.png           |   Bin 236945 -> 0 bytes
 docs/zh_CN/images/process-list-recovery-pause.png  |   Bin 197991 -> 0 bytes
 docs/zh_CN/images/process-list-stop.png            |   Bin 230541 -> 0 bytes
 docs/zh_CN/images/process-list.png                 |   Bin 167105 -> 0 bytes
 docs/zh_CN/images/process-list2.png                |   Bin 263752 -> 0 bytes
 docs/zh_CN/images/process-list3.png                |   Bin 235051 -> 0 bytes
 docs/zh_CN/images/process-list4.png                |   Bin 225510 -> 0 bytes
 docs/zh_CN/images/process_instance.png             |   Bin 134309 -> 0 bytes
 docs/zh_CN/images/process_instance_edit.png        |   Bin 17982 -> 0 bytes
 docs/zh_CN/images/process_priority.png             |   Bin 66317 -> 0 bytes
 docs/zh_CN/images/project.png                      |   Bin 138997 -> 0 bytes
 docs/zh_CN/images/project_edit.png                 |   Bin 9767 -> 0 bytes
 docs/zh_CN/images/project_index.png                |   Bin 122208 -> 0 bytes
 docs/zh_CN/images/python_edit.png                  |   Bin 467741 -> 0 bytes
 docs/zh_CN/images/run-work.png                     |   Bin 43151 -> 0 bytes
 docs/zh_CN/images/scheduler.png                    |   Bin 31707 -> 0 bytes
 docs/zh_CN/images/scheduler2.png                   |   Bin 19009 -> 0 bytes
 docs/zh_CN/images/shell_edit.png                   |   Bin 157618 -> 0 bytes
 docs/zh_CN/images/spark_datesource.png             |   Bin 29955 -> 0 bytes
 docs/zh_CN/images/spark_edit.png                   |   Bin 123946 -> 0 bytes
 docs/zh_CN/images/sparksql_kerberos.png            |   Bin 37390 -> 0 bytes
 docs/zh_CN/images/sql-node.png                     |   Bin 286443 -> 0 bytes
 docs/zh_CN/images/sql-node2.png                    |   Bin 298536 -> 0 bytes
 docs/zh_CN/images/sql_edit.png                     |   Bin 162274 -> 0 bytes
 docs/zh_CN/images/start_from_current.png           |   Bin 62858 -> 0 bytes
 docs/zh_CN/images/start_from_current2.png          |   Bin 33259 -> 0 bytes
 docs/zh_CN/images/start_process.png                |   Bin 26647 -> 0 bytes
 docs/zh_CN/images/subprocess_edit.png              |   Bin 76964 -> 0 bytes
 docs/zh_CN/images/task-list.png                    |   Bin 146188 -> 0 bytes
 docs/zh_CN/images/task-log.png                     |   Bin 185585 -> 0 bytes
 docs/zh_CN/images/task-log2.png                    |   Bin 137479 -> 0 bytes
 docs/zh_CN/images/task_history.png                 |   Bin 109027 -> 0 bytes
 docs/zh_CN/images/task_list.png                    |   Bin 81986 -> 0 bytes
 docs/zh_CN/images/task_log.png                     |   Bin 108881 -> 0 bytes
 docs/zh_CN/images/task_log2.png                    |   Bin 94446 -> 0 bytes
 docs/zh_CN/images/task_priority.png                |   Bin 48178 -> 0 bytes
 docs/zh_CN/images/time-schedule.png                |   Bin 55284 -> 0 bytes
 docs/zh_CN/images/time-schedule2.png               |   Bin 44594 -> 0 bytes
 docs/zh_CN/images/toolbar_DEPENDENT.png            |   Bin 2896 -> 0 bytes
 docs/zh_CN/images/toolbar_MR.png                   |   Bin 3675 -> 0 bytes
 docs/zh_CN/images/toolbar_PROCEDURE.png            |   Bin 3464 -> 0 bytes
 docs/zh_CN/images/toolbar_PYTHON.png               |   Bin 3554 -> 0 bytes
 docs/zh_CN/images/toolbar_SHELL.png                |   Bin 3297 -> 0 bytes
 docs/zh_CN/images/toolbar_SPARK.png                |   Bin 4188 -> 0 bytes
 docs/zh_CN/images/toolbar_SQL.png                  |   Bin 3014 -> 0 bytes
 docs/zh_CN/images/toolbar_SUB_PROCESS.png          |   Bin 2377 -> 0 bytes
 docs/zh_CN/images/tree_view.png                    |   Bin 81493 -> 0 bytes
 docs/zh_CN/images/udf_edit.png                     |   Bin 26472 -> 0 bytes
 docs/zh_CN/images/user_manager.png                 |   Bin 18714 -> 0 bytes
 docs/zh_CN/images/useredit.png                     |   Bin 11625 -> 0 bytes
 docs/zh_CN/images/useredit2.png                    |   Bin 17285 -> 0 bytes
 docs/zh_CN/images/userinfo.png                     |   Bin 17066 -> 0 bytes
 docs/zh_CN/images/variable_view.png                |   Bin 17287 -> 0 bytes
 docs/zh_CN/images/variable_view2.png               |   Bin 28679 -> 0 bytes
 docs/zh_CN/images/worker-jk.png                    |   Bin 121978 -> 0 bytes
 docs/zh_CN/images/worker.png                       |   Bin 152826 -> 0 bytes
 docs/zh_CN/images/worker1.png                      |   Bin 90514 -> 0 bytes
 docs/zh_CN/images/zk-jk.png                        |   Bin 86904 -> 0 bytes
 docs/zh_CN/styles/website.css                      |    22 -
 ...217\222\344\273\266\345\274\200\345\217\221.md" |    54 -
 ...274\200\345\217\221\346\226\207\346\241\243.md" |   644 --
 ...203\250\347\275\262\346\226\207\346\241\243.md" |   101 -
 ...215\207\347\272\247\346\226\207\346\241\243.md" |    38 -
 ...274\200\345\217\221\346\226\207\346\241\243.md" |    48 -
 ...203\250\347\275\262\346\226\207\346\241\243.md" |   213 -
 ...277\253\351\200\237\344\270\212\346\211\213.md" |    50 -
 ...275\277\347\224\250\346\211\213\345\206\214.md" |   679 --
 ...236\266\346\236\204\350\256\276\350\256\241.md" |   304 -
 dolphinscheduler-alert/pom.xml                     |   118 +
 .../apache/dolphinscheduler/alert/AlertServer.java |    92 +
 .../alert/manager/EmailManager.java                |    54 +
 .../alert/manager/EnterpriseWeChatManager.java     |    59 +
 .../dolphinscheduler/alert/manager/MsgManager.java |    36 +
 .../alert/plugin/EmailAlertPlugin.java             |   133 +
 .../dolphinscheduler/alert/runner/AlertSender.java |   100 +
 .../alert/template/AlertTemplate.java              |    44 +
 .../alert/template/AlertTemplateFactory.java       |    39 +
 .../alert/template/impl/DefaultHTMLTemplate.java   |   147 +
 .../dolphinscheduler/alert/utils/Constants.java    |   180 +
 .../alert/utils/EnterpriseWeChatUtils.java         |   270 +
 .../dolphinscheduler/alert/utils/ExcelUtils.java   |   139 +
 .../dolphinscheduler/alert/utils/FuncUtils.java    |    42 +
 .../dolphinscheduler/alert/utils/JSONUtils.java    |    69 +
 .../dolphinscheduler/alert/utils/MailUtils.java    |   344 +
 .../alert/utils/PropertyUtils.java                 |   250 +
 .../src/main/resources/alert.properties            |    49 +
 .../src/main/resources/logback-alert.xml           |    52 +
 .../alert/plugin/EmailAlertPluginTest.java         |    80 +
 .../alert/template/AlertTemplateFactoryTest.java   |    65 +
 .../template/impl/DefaultHTMLTemplateTest.java     |    96 +
 .../alert/utils/EnterpriseWeChatUtilsTest.java     |   273 +
 .../alert/utils/ExcelUtilsTest.java                |   102 +
 .../alert/utils/FuncUtilsTest.java                 |    60 +
 .../alert/utils/JSONUtilsTest.java                 |   112 +
 .../alert/utils/MailUtilsTest.java                 |   189 +
 .../alert/utils/PropertyUtilsTest.java             |   215 +
 dolphinscheduler-api/pom.xml                       |   252 +
 .../dolphinscheduler/api/ApiApplicationServer.java |    40 +
 .../api/configuration/AppConfiguration.java        |   116 +
 .../ServiceModelToSwagger2MapperImpl.java          |   285 +
 .../api/configuration/SwaggerConfig.java           |    57 +
 .../api/controller/AccessTokenController.java      |   180 +
 .../api/controller/AlertGroupController.java       |   242 +
 .../api/controller/BaseController.java             |   271 +
 .../api/controller/DataAnalysisController.java     |   184 +
 .../api/controller/DataSourceController.java       |   428 +
 .../api/controller/ExecutorController.java         |   205 +
 .../api/controller/LoggerController.java           |   106 +
 .../api/controller/LoginController.java            |   134 +
 .../api/controller/MonitorController.java          |   116 +
 .../controller/ProcessDefinitionController.java    |   498 +
 .../api/controller/ProcessInstanceController.java  |   365 +
 .../api/controller/ProjectController.java          |   270 +
 .../api/controller/QueueController.java            |   187 +
 .../api/controller/ResourcesController.java        |   743 ++
 .../api/controller/SchedulerController.java        |   312 +
 .../api/controller/TaskInstanceController.java     |   106 +
 .../api/controller/TaskRecordController.java       |   123 +
 .../api/controller/TenantController.java           |   222 +
 .../api/controller/UsersController.java            |   411 +
 .../api/controller/WorkerGroupController.java      |   108 +
 .../api/dto/CommandStateCount.java                 |    60 +
 .../dolphinscheduler/api/dto/DefineUserDto.java    |    55 +
 .../dolphinscheduler/api/dto/ProcessMeta.java      |   231 +
 .../dolphinscheduler/api/dto/ScheduleParam.java    |    71 +
 .../dolphinscheduler/api/dto/TaskCountDto.java     |   130 +
 .../dolphinscheduler/api/dto/TaskStateCount.java   |    50 +
 .../dolphinscheduler/api/dto/gantt/GanttDto.java   |    98 +
 .../dolphinscheduler/api/dto/gantt/Task.java       |   129 +
 .../api/dto/resources/Directory.java               |    29 +
 .../api/dto/resources/FileLeaf.java                |    24 +
 .../api/dto/resources/ResourceComponent.java       |   193 +
 .../api/dto/resources/filter/IFilter.java          |    28 +
 .../api/dto/resources/filter/ResourceFilter.java   |   111 +
 .../dto/resources/visitor/ResourceTreeVisitor.java |   130 +
 .../api/dto/resources/visitor/Visitor.java         |    30 +
 .../api/dto/treeview/Instance.java                 |   164 +
 .../api/dto/treeview/TreeViewDto.java              |    83 +
 .../dolphinscheduler/api/enums/ExecuteType.java    |    44 +
 .../apache/dolphinscheduler/api/enums/Status.java  |   278 +
 .../api/exceptions/ApiException.java               |    34 +
 .../api/exceptions/ApiExceptionHandler.java        |    49 +
 .../api/exceptions/ServiceException.java           |    56 +
 .../api/interceptor/LoginHandlerInterceptor.java   |    82 +
 .../api/security/AuthenticationType.java           |    37 +
 .../api/security/Authenticator.java                |    40 +
 .../api/security/PasswordAuthenticator.java        |    76 +
 .../api/security/SecurityConfig.java               |    67 +
 .../api/service/AccessTokenService.java            |   197 +
 .../api/service/AlertGroupService.java             |   256 +
 .../api/service/BaseDAGService.java                |    54 +
 .../dolphinscheduler/api/service/BaseService.java  |   154 +
 .../api/service/DataAnalysisService.java           |   379 +
 .../api/service/DataSourceService.java             |   715 ++
 .../api/service/ExecutorService.java               |   598 +
 .../api/service/LoggerService.java                 |   114 +
 .../api/service/MonitorService.java                |   156 +
 .../api/service/ProcessDefinitionService.java      |  1467 +++
 .../api/service/ProcessInstanceService.java        |   627 ++
 .../api/service/ProjectService.java                |   417 +
 .../dolphinscheduler/api/service/QueueService.java |   294 +
 .../api/service/ResourcesService.java              |  1352 +++
 .../api/service/SchedulerService.java              |   610 ++
 .../api/service/SessionService.java                |   154 +
 .../api/service/TaskInstanceService.java           |   141 +
 .../api/service/TaskRecordService.java             |    82 +
 .../api/service/TenantService.java                 |   351 +
 .../api/service/UdfFuncService.java                |   335 +
 .../api/service/UserAlertGroupService.java         |    38 +
 .../dolphinscheduler/api/service/UsersService.java |   891 ++
 .../api/service/WorkerGroupService.java            |   157 +
 .../dolphinscheduler/api/utils/CheckUtils.java     |   159 +
 .../dolphinscheduler/api/utils/FileUtils.java      |   106 +
 .../api/utils/FourLetterWordMain.java              |    95 +
 .../dolphinscheduler/api/utils/PageInfo.java       |   117 +
 .../apache/dolphinscheduler/api/utils/Result.java  |   129 +
 .../dolphinscheduler/api/utils/ZooKeeperState.java |   225 +
 .../api/utils/ZookeeperMonitor.java                |   106 +
 .../api/utils/exportprocess/DataSourceParam.java   |    83 +
 .../api/utils/exportprocess/DependentParam.java    |   112 +
 .../utils/exportprocess/ProcessAddTaskParam.java   |    39 +
 .../utils/exportprocess/TaskNodeParamFactory.java  |    38 +
 .../src/main/resources/application-api.properties  |    43 +
 .../src/main/resources/i18n/messages.properties    |   256 +
 .../main/resources/i18n/messages_en_US.properties  |   256 +
 .../main/resources/i18n/messages_zh_CN.properties  |   255 +
 .../src/main/resources/logback-api.xml             |    62 +
 .../dolphinscheduler/api/HttpClientTest.java       |   157 +
 .../api/controller/AbstractControllerTest.java     |    81 +
 .../api/controller/AccessTokenControllerTest.java  |   142 +
 .../api/controller/AlertGroupControllerTest.java   |   170 +
 .../api/controller/DataAnalysisControllerTest.java |   137 +
 .../api/controller/DataSourceControllerTest.java   |   269 +
 .../api/controller/ExecutorControllerTest.java     |   123 +
 .../api/controller/LoggerControllerTest.java       |    83 +
 .../api/controller/LoginControllerTest.java        |    75 +
 .../api/controller/MonitorControllerTest.java      |   109 +
 .../ProcessDefinitionControllerTest.java           |   379 +
 .../controller/ProcessInstanceControllerTest.java  |   199 +
 .../api/controller/ProjectControllerTest.java      |   218 +
 .../api/controller/QueueControllerTest.java        |   134 +
 .../api/controller/ResourcesControllerTest.java    |   480 +
 .../api/controller/SchedulerControllerTest.java    |   197 +
 .../api/controller/TaskInstanceControllerTest.java |    65 +
 .../api/controller/TaskRecordControllerTest.java   |    89 +
 .../api/controller/TenantControllerTest.java       |   171 +
 .../api/controller/UsersControllerTest.java        |   271 +
 .../api/controller/WorkerGroupControllerTest.java  |   101 +
 .../dto/resources/filter/ResourceFilterTest.java   |    62 +
 .../resources/visitor/ResourceTreeVisitorTest.java |    82 +
 .../api/enums/ExecuteTypeTest.java                 |    32 +
 .../dolphinscheduler/api/enums/StatusTest.java     |    44 +
 .../api/exceptions/ApiExceptionHandlerTest.java    |    54 +
 .../api/exceptions/ServiceExceptionTest.java       |    46 +
 .../interceptor/LoginHandlerInterceptorTest.java   |    71 +
 .../api/security/PasswordAuthenticatorTest.java    |    96 +
 .../api/security/SecurityConfigTest.java           |    43 +
 .../api/service/AccessTokenServiceTest.java        |   190 +
 .../api/service/AlertGroupServiceTest.java         |   228 +
 .../api/service/BaseDAGServiceTest.java            |    50 +
 .../api/service/BaseServiceTest.java               |   140 +
 .../api/service/DataAnalysisServiceTest.java       |   189 +
 .../api/service/DataSourceServiceTest.java         |   100 +
 .../api/service/ExecutorService2Test.java          |   262 +
 .../api/service/ExecutorServiceTest.java           |    72 +
 .../api/service/LoggerServiceTest.java             |   103 +
 .../api/service/MonitorServiceTest.java            |   101 +
 .../api/service/ProcessDefinitionServiceTest.java  |   876 ++
 .../api/service/ProcessInstanceServiceTest.java    |   517 +
 .../api/service/ProjectServiceTest.java            |   356 +
 .../api/service/QueueServiceTest.java              |   208 +
 .../api/service/ResourcesServiceTest.java          |   675 ++
 .../api/service/SchedulerServiceTest.java          |    58 +
 .../api/service/SessionServiceTest.java            |   149 +
 .../api/service/TaskInstanceServiceTest.java       |   192 +
 .../api/service/TenantServiceTest.java             |   274 +
 .../api/service/UdfFuncServiceTest.java            |   228 +
 .../api/service/UserAlertGroupServiceTest.java     |    53 +
 .../api/service/UsersServiceTest.java              |   519 +
 .../api/service/WorkerGroupServiceTest.java        |   118 +
 .../dolphinscheduler/api/utils/CheckUtilsTest.java |   227 +
 .../dolphinscheduler/api/utils/FileUtilsTest.java  |   124 +
 .../api/utils/FourLetterWordMainTest.java          |   217 +
 .../dolphinscheduler/api/utils/ResultTest.java     |    48 +
 .../api/utils/ZookeeperMonitorUtilsTest.java       |    46 +
 .../utils/exportprocess/DataSourceParamTest.java   |    86 +
 .../utils/exportprocess/DependentParamTest.java    |   112 +
 dolphinscheduler-common/pom.xml                    |   592 +
 .../apache/dolphinscheduler/common/Constants.java  |   973 ++
 .../apache/dolphinscheduler/common/IStoppable.java |    29 +
 .../dolphinscheduler/common/enums/AlertStatus.java |    49 +
 .../dolphinscheduler/common/enums/AlertType.java   |    48 +
 .../common/enums/AuthorizationType.java            |    54 +
 .../dolphinscheduler/common/enums/CommandType.java |    77 +
 .../dolphinscheduler/common/enums/CycleEnum.java   |    28 +
 .../dolphinscheduler/common/enums/DataType.java    |    35 +
 .../common/enums/DbConnectType.java                |    44 +
 .../dolphinscheduler/common/enums/DbType.java      |    70 +
 .../common/enums/DependResult.java                 |    31 +
 .../common/enums/DependentRelation.java            |    25 +
 .../dolphinscheduler/common/enums/Direct.java      |    27 +
 .../dolphinscheduler/common/enums/Event.java       |    23 +
 .../common/enums/ExecutionStatus.java              |   147 +
 .../common/enums/FailureStrategy.java              |    49 +
 .../apache/dolphinscheduler/common/enums/Flag.java |    54 +
 .../common/enums/HttpCheckCondition.java           |    30 +
 .../dolphinscheduler/common/enums/HttpMethod.java  |    31 +
 .../common/enums/HttpParametersType.java           |    29 +
 .../dolphinscheduler/common/enums/Priority.java    |    54 +
 .../dolphinscheduler/common/enums/ProgramType.java |    30 +
 .../dolphinscheduler/common/enums/QueryType.java   |    33 +
 .../common/enums/ReleaseState.java                 |    59 +
 .../common/enums/ResUploadType.java                |    29 +
 .../common/enums/ResourceType.java                 |    48 +
 .../dolphinscheduler/common/enums/RunMode.java     |    48 +
 .../dolphinscheduler/common/enums/ShowType.java    |    53 +
 .../common/enums/SparkVersion.java                 |    46 +
 .../common/enums/TaskDependType.java               |    50 +
 .../common/enums/TaskRecordStatus.java             |    35 +
 .../common/enums/TaskStateType.java                |    66 +
 .../common/enums/TaskTimeoutStrategy.java          |    60 +
 .../dolphinscheduler/common/enums/TaskType.java    |    75 +
 .../dolphinscheduler/common/enums/UdfType.java     |    58 +
 .../dolphinscheduler/common/enums/UserType.java    |    49 +
 .../dolphinscheduler/common/enums/WarningType.java |    53 +
 .../dolphinscheduler/common/enums/ZKNodeType.java  |    31 +
 .../apache/dolphinscheduler/common/graph/DAG.java  |   519 +
 .../common/model/DateInterval.java                 |    70 +
 .../common/model/DependentItem.java                |    90 +
 .../common/model/DependentTaskModel.java           |    44 +
 .../dolphinscheduler/common/model/Server.java      |   130 +
 .../dolphinscheduler/common/model/TaskNode.java    |   357 +
 .../common/model/TaskNodeRelation.java             |    79 +
 .../common/model/WorkerServerModel.java            |   122 +
 .../common/plugin/FilePluginManager.java           |   107 +
 .../common/plugin/PluginClassLoader.java           |   154 +
 .../common/plugin/PluginManager.java               |    33 +
 .../common/process/HttpProperty.java               |   125 +
 .../common/process/ProcessDag.java                 |    85 +
 .../dolphinscheduler/common/process/Property.java  |   144 +
 .../common/process/ResourceInfo.java               |    45 +
 .../common/shell/AbstractShell.java                |   345 +
 .../common/shell/ShellExecutor.java                |   177 +
 .../common/task/AbstractParameters.java            |    70 +
 .../dolphinscheduler/common/task/IParameters.java  |    40 +
 .../common/task/TaskTimeoutParameter.java          |    81 +
 .../task/conditions/ConditionsParameters.java      |    80 +
 .../common/task/datax/DataxParameters.java         |   222 +
 .../common/task/dependent/DependentParameters.java |    59 +
 .../common/task/flink/FlinkParameters.java         |   218 +
 .../common/task/http/HttpParameters.java           |   109 +
 .../common/task/mr/MapreduceParameters.java        |   145 +
 .../common/task/procedure/ProcedureParameters.java |    90 +
 .../common/task/python/PythonParameters.java       |    61 +
 .../common/task/shell/ShellParameters.java         |    65 +
 .../common/task/spark/SparkParameters.java         |   231 +
 .../dolphinscheduler/common/task/sql/SqlBinds.java |    42 +
 .../common/task/sql/SqlParameters.java             |   214 +
 .../dolphinscheduler/common/task/sql/SqlType.java  |    27 +
 .../common/task/sqoop/SqoopParameters.java         |   118 +
 .../task/sqoop/sources/SourceHdfsParameter.java    |    36 +
 .../task/sqoop/sources/SourceHiveParameter.java    |    72 +
 .../task/sqoop/sources/SourceMysqlParameter.java   |   136 +
 .../task/sqoop/targets/TargetHdfsParameter.java    |    97 +
 .../task/sqoop/targets/TargetHiveParameter.java    |   120 +
 .../task/sqoop/targets/TargetMysqlParameter.java   |   132 +
 .../task/subprocess/SubProcessParameters.java      |    49 +
 .../dolphinscheduler/common/thread/Stopper.java    |    39 +
 .../common/thread/ThreadPoolExecutors.java         |   310 +
 .../common/thread/ThreadUtils.java                 |   236 +
 .../common/utils/CollectionUtils.java              |   274 +
 .../dolphinscheduler/common/utils/CommonUtils.java |    93 +
 .../common/utils/ConnectionUtils.java              |    50 +
 .../dolphinscheduler/common/utils/DateUtils.java   |     1 +
 .../common/utils/DependentUtils.java               |   150 +
 .../common/utils/EncryptionUtils.java              |    36 +
 .../dolphinscheduler/common/utils/EnumUtils.java   |    45 +
 .../dolphinscheduler/common/utils/FileUtils.java   |   429 +
 .../dolphinscheduler/common/utils/HadoopUtils.java |   658 ++
 .../dolphinscheduler/common/utils/HttpUtils.java   |    98 +
 .../dolphinscheduler/common/utils/IOUtils.java     |    36 +
 .../dolphinscheduler/common/utils/IpUtils.java     |    60 +
 .../dolphinscheduler/common/utils/JSONUtils.java   |   264 +
 .../dolphinscheduler/common/utils/LoggerUtils.java |    96 +
 .../dolphinscheduler/common/utils/OSUtils.java     |   457 +
 .../common/utils/ParameterUtils.java               |   256 +
 .../common/utils/Preconditions.java                |    72 +
 .../common/utils/PropertyUtils.java                |   243 +
 .../dolphinscheduler/common/utils/ResInfo.java     |   115 +
 .../dolphinscheduler/common/utils/SchemaUtils.java |   145 +
 .../common/utils/ScriptRunner.java                 |   263 +
 .../common/utils/SensitiveLogUtils.java            |    39 +
 .../dolphinscheduler/common/utils/StringUtils.java |    40 +
 .../common/utils/TaskParametersUtils.java          |    88 +
 .../common/utils/dependent/DependentDateUtils.java |   203 +
 .../utils/placeholder/BusinessTimeUtils.java       |    75 +
 .../common/utils/placeholder/PlaceholderUtils.java |   104 +
 .../placeholder/PropertyPlaceholderHelper.java     |   255 +
 .../utils/placeholder/TimePlaceholderUtils.java    |   521 +
 .../src/main/resources/common.properties           |    66 +
 .../dolphinscheduler/common/ConstantsTest.java     |    40 +
 .../dolphinscheduler/common/graph/DAGTest.java     |   364 +
 .../dolphinscheduler/common/os/OSUtilsTest.java    |    81 +
 .../dolphinscheduler/common/os/OshiTest.java       |   112 +
 .../common/plugin/FilePluginManagerTest.java       |    72 +
 .../common/plugin/PluginClassLoaderTest.java       |    61 +
 .../common/shell/ShellExecutorTest.java            |    44 +
 .../common/task/EntityTestUtils.java               |    81 +
 .../common/task/FlinkParametersTest.java           |    57 +
 .../common/task/SqoopParameterEntityTest.java      |    52 +
 .../threadutils/ThreadPoolExecutorsTest.java       |    56 +
 .../common/threadutils/ThreadUtilsTest.java        |   190 +
 .../common/utils/CollectionUtilsTest.java          |   145 +
 .../common/utils/CommonUtilsTest.java              |    92 +
 .../common/utils/DateUtilsTest.java                |   153 +
 .../common/utils/DependentUtilsTest.java           |   405 +
 .../common/utils/EncryptionUtilsTest.java          |    33 +
 .../common/utils/FileUtilsTest.java                |    70 +
 .../common/utils/HadoopUtilsTest.java              |   214 +
 .../common/utils/HttpUtilsTest.java                |    46 +
 .../dolphinscheduler/common/utils/IpUtilsTest.java |    55 +
 .../common/utils/JSONUtilsTest.java                |   158 +
 .../common/utils/LoggerUtilsTest.java              |    43 +
 .../dolphinscheduler/common/utils/OSUtilsTest.java |   123 +
 .../common/utils/ParameterUtilsTest.java           |   130 +
 .../common/utils/PreconditionsTest.java            |    67 +
 .../common/utils/PropertyUtilsTest.java            |    31 +
 .../common/utils/SchemaUtilsTest.java              |   116 +
 .../common/utils/ScriptRunnerTest.java             |    70 +
 .../common/utils/SensitiveLogUtilsTest.java        |    37 +
 .../dolphinscheduler/common/utils/StringTest.java  |    54 +
 .../common/utils/StringUtilsTest.java              |    64 +
 .../common/utils/TaskParametersUtilsTest.java      |    45 +
 .../placeholder/TimePlaceholderUtilsTest.java      |    68 +
 dolphinscheduler-dao/pom.xml                       |   160 +
 .../dolphinscheduler/dao/AbstractBaseDao.java      |    29 +
 .../org/apache/dolphinscheduler/dao/AlertDao.java  |   182 +
 .../apache/dolphinscheduler/dao/DaoFactory.java    |    62 +
 .../apache/dolphinscheduler/dao/MonitorDBDao.java  |    84 +
 .../apache/dolphinscheduler/dao/TaskRecordDao.java |   282 +
 .../dao/datasource/BaseDataSource.java             |   217 +
 .../dao/datasource/ClickHouseDataSource.java       |    42 +
 .../dao/datasource/ConnectionFactory.java          |   147 +
 .../dao/datasource/DB2ServerDataSource.java        |    43 +
 .../dao/datasource/DataSourceFactory.java          |   103 +
 .../dao/datasource/HiveDataSource.java             |    43 +
 .../dao/datasource/MySQLDataSource.java            |    91 +
 .../dao/datasource/OracleDataSource.java           |    54 +
 .../dao/datasource/PostgreDataSource.java          |    43 +
 .../dao/datasource/SQLServerDataSource.java        |    88 +
 .../dao/datasource/SparkDataSource.java            |    43 +
 .../dao/datasource/SpringConnectionFactory.java    |   145 +
 .../dolphinscheduler/dao/entity/AccessToken.java   |   175 +
 .../apache/dolphinscheduler/dao/entity/Alert.java  |   287 +
 .../dolphinscheduler/dao/entity/AlertGroup.java    |   157 +
 .../dolphinscheduler/dao/entity/Command.java       |   357 +
 .../dolphinscheduler/dao/entity/CommandCount.java  |    84 +
 .../dao/entity/CycleDependency.java                |    93 +
 .../dolphinscheduler/dao/entity/DataSource.java    |   192 +
 .../dao/entity/DatasourceUser.java                 |   121 +
 .../dao/entity/DefinitionGroupByUser.java          |    62 +
 .../dolphinscheduler/dao/entity/ErrorCommand.java  |   296 +
 .../dao/entity/ExecuteStatusCount.java             |    61 +
 .../dolphinscheduler/dao/entity/MonitorRecord.java |   129 +
 .../dolphinscheduler/dao/entity/ProcessData.java   |   115 +
 .../dao/entity/ProcessDefinition.java              |   413 +
 .../dao/entity/ProcessInstance.java                |   639 ++
 .../dao/entity/ProcessInstanceMap.java             |   113 +
 .../dolphinscheduler/dao/entity/Project.java       |   205 +
 .../dolphinscheduler/dao/entity/ProjectUser.java   |   139 +
 .../apache/dolphinscheduler/dao/entity/Queue.java  |   124 +
 .../dolphinscheduler/dao/entity/Resource.java      |   279 +
 .../dolphinscheduler/dao/entity/ResourcesUser.java |   121 +
 .../dolphinscheduler/dao/entity/Schedule.java      |   307 +
 .../dolphinscheduler/dao/entity/Session.java       |   115 +
 .../dolphinscheduler/dao/entity/TaskInstance.java  |   564 +
 .../dolphinscheduler/dao/entity/TaskRecord.java    |   256 +
 .../apache/dolphinscheduler/dao/entity/Tenant.java |   181 +
 .../dolphinscheduler/dao/entity/UDFUser.java       |   121 +
 .../dolphinscheduler/dao/entity/UdfFunc.java       |   230 +
 .../apache/dolphinscheduler/dao/entity/User.java   |   266 +
 .../dao/entity/UserAlertGroup.java                 |   139 +
 .../dolphinscheduler/dao/entity/WorkerGroup.java   |    70 +
 .../dolphinscheduler/dao/entity/WorkerServer.java  |   127 +
 .../dao/entity/ZookeeperRecord.java                |   217 +
 .../dao/mapper/AccessTokenMapper.java              |    42 +
 .../dao/mapper/AlertGroupMapper.java               |    71 +
 .../dolphinscheduler/dao/mapper/AlertMapper.java   |    38 +
 .../dolphinscheduler/dao/mapper/CommandMapper.java |    55 +
 .../dao/mapper/DataSourceMapper.java               |    91 +
 .../dao/mapper/DataSourceUserMapper.java           |    44 +
 .../dao/mapper/ErrorCommandMapper.java             |    43 +
 .../dao/mapper/ProcessDefinitionMapper.java        |   121 +
 .../dao/mapper/ProcessInstanceMapMapper.java       |    61 +
 .../dao/mapper/ProcessInstanceMapper.java          |   196 +
 .../dolphinscheduler/dao/mapper/ProjectMapper.java |    77 +
 .../dao/mapper/ProjectUserMapper.java              |    45 +
 .../dolphinscheduler/dao/mapper/QueueMapper.java   |    49 +
 .../dao/mapper/ResourceMapper.java                 |   147 +
 .../dao/mapper/ResourceUserMapper.java             |    46 +
 .../dao/mapper/ScheduleMapper.java                 |    70 +
 .../dolphinscheduler/dao/mapper/SessionMapper.java |    45 +
 .../dao/mapper/TaskInstanceMapper.java             |    72 +
 .../dolphinscheduler/dao/mapper/TenantMapper.java  |    53 +
 .../dolphinscheduler/dao/mapper/UDFUserMapper.java |    43 +
 .../dolphinscheduler/dao/mapper/UdfFuncMapper.java |   111 +
 .../dao/mapper/UserAlertGroupMapper.java           |    45 +
 .../dolphinscheduler/dao/mapper/UserMapper.java    |   112 +
 .../dao/upgrade/DolphinSchedulerManager.java       |   132 +
 .../dao/upgrade/MysqlUpgradeDao.java               |    97 +
 .../dao/upgrade/PostgresqlUpgradeDao.java          |   128 +
 .../dao/upgrade/ProcessDefinitionDao.java          |    92 +
 .../dolphinscheduler/dao/upgrade/ResourceDao.java  |    67 +
 .../dolphinscheduler/dao/upgrade/UpgradeDao.java   |   533 +
 .../dao/upgrade/WorkerGroupDao.java                |    65 +
 .../dao/upgrade/shell/CreateDolphinScheduler.java  |    48 +
 .../dao/upgrade/shell/InitDolphinScheduler.java    |    42 +
 .../dao/upgrade/shell/UpgradeDolphinScheduler.java |    47 +
 .../dao/utils/BaseDBPerformance.java               |    36 +
 .../dolphinscheduler/dao/utils/BeanContext.java    |    69 +
 .../dolphinscheduler/dao/utils/DagHelper.java      |   484 +
 .../dao/utils/MysqlPerformance.java                |    92 +
 .../dao/utils/PostgrePerformance.java              |    84 +
 .../dolphinscheduler/dao/utils/PropertyUtils.java  |   162 +
 .../dao/utils/ResourceProcessDefinitionUtils.java  |    61 +
 .../src/main/resources/datasource.properties       |    63 +
 .../dao/mapper/AccessTokenMapper.xml               |    33 +
 .../dao/mapper/AlertGroupMapper.xml                |    47 +
 .../dolphinscheduler/dao/mapper/AlertMapper.xml    |    26 +
 .../dolphinscheduler/dao/mapper/CommandMapper.xml  |    43 +
 .../dao/mapper/DataSourceMapper.xml                |    92 +
 .../dao/mapper/DataSourceUserMapper.xml            |    30 +
 .../dao/mapper/ErrorCommandMapper.xml              |    36 +
 .../dao/mapper/ProcessDefinitionMapper.xml         |   111 +
 .../dao/mapper/ProcessInstanceMapMapper.xml        |    43 +
 .../dao/mapper/ProcessInstanceMapper.xml           |   186 +
 .../dolphinscheduler/dao/mapper/ProjectMapper.xml  |    68 +
 .../dao/mapper/ProjectUserMapper.xml               |    36 +
 .../dolphinscheduler/dao/mapper/QueueMapper.xml    |    42 +
 .../dolphinscheduler/dao/mapper/ResourceMapper.xml |   147 +
 .../dao/mapper/ResourceUserMapper.xml              |    45 +
 .../dolphinscheduler/dao/mapper/ScheduleMapper.xml |    63 +
 .../dolphinscheduler/dao/mapper/SessionMapper.xml  |    32 +
 .../dao/mapper/TaskInstanceMapper.xml              |   132 +
 .../dolphinscheduler/dao/mapper/TenantMapper.xml   |    41 +
 .../dolphinscheduler/dao/mapper/UDFUserMapper.xml  |    29 +
 .../dolphinscheduler/dao/mapper/UdfFuncMapper.xml  |   127 +
 .../dao/mapper/UserAlertGroupMapper.xml            |    31 +
 .../dolphinscheduler/dao/mapper/UserMapper.xml     |    84 +
 .../apache/dolphinscheduler/dao/AlertDaoTest.java  |    50 +
 .../dao/datasource/BaseDataSourceTest.java         |   115 +
 .../dao/datasource/MySQLDataSourceTest.java        |    64 +
 .../dao/entity/TaskInstanceTest.java               |    49 +
 .../dao/mapper/AccessTokenMapperTest.java          |   243 +
 .../dao/mapper/AlertGroupMapperTest.java           |   355 +
 .../dao/mapper/AlertMapperTest.java                |   176 +
 .../dolphinscheduler/dao/mapper/Application.java   |    31 +
 .../dao/mapper/CommandMapperTest.java              |   262 +
 .../dao/mapper/ConnectionFactoryTest.java          |    37 +
 .../dao/mapper/DataSourceMapperTest.java           |   403 +
 .../dao/mapper/DataSourceUserMapperTest.java       |   113 +
 .../dao/mapper/ErrorCommandMapperTest.java         |   105 +
 .../dao/mapper/ProcessDefinitionMapperTest.java    |   254 +
 .../dao/mapper/ProcessInstanceMapMapperTest.java   |   139 +
 .../dao/mapper/ProcessInstanceMapperTest.java      |   332 +
 .../dao/mapper/ProjectMapperTest.java              |   199 +
 .../dao/mapper/ProjectUserMapperTest.java          |   118 +
 .../dao/mapper/QueueMapperTest.java                |   126 +
 .../dao/mapper/ResourceMapperTest.java             |   387 +
 .../dao/mapper/ResourceUserMapperTest.java         |   121 +
 .../dao/mapper/ScheduleMapperTest.java             |   210 +
 .../dao/mapper/SessionMapperTest.java              |   101 +
 .../dao/mapper/TaskInstanceMapperTest.java         |   300 +
 .../dao/mapper/TenantMapperTest.java               |   149 +
 .../dao/mapper/UDFUserMapperTest.java              |   193 +
 .../dao/mapper/UdfFuncMapperTest.java              |   319 +
 .../dao/mapper/UserAlertGroupMapperTest.java       |   196 +
 .../dao/mapper/UserMapperTest.java                 |   365 +
 .../dao/upgrade/ProcessDefinitionDaoTest.java      |    65 +
 .../dao/upgrade/UpgradeDaoTest.java                |    36 +
 .../dao/upgrade/WokrerGrouopDaoTest.java           |    51 +
 .../dolphinscheduler/dao/utils/DagHelperTest.java  |   361 +
 .../utils/ResourceProcessDefinitionUtilsTest.java  |    41 +
 dolphinscheduler-dist/pom.xml                      |   432 +
 dolphinscheduler-dist/release-docs/LICENSE         |   514 +
 dolphinscheduler-dist/release-docs/NOTICE          |  1955 ++++
 .../release-docs/licenses/LICENSE-HikariCP.txt     |   191 +
 .../release-docs/licenses/LICENSE-activation.txt   |   116 +
 .../release-docs/licenses/LICENSE-ant-1.6.5.txt    |   203 +
 .../release-docs/licenses/LICENSE-apache-el.txt    |   202 +
 .../licenses/LICENSE-apacheds-i18n.txt             |   202 +
 .../licenses/LICENSE-apacheds-kerberos-codec.txt   |   202 +
 .../release-docs/licenses/LICENSE-api-asn1-api.txt |   202 +
 .../release-docs/licenses/LICENSE-api-util.txt     |   202 +
 .../release-docs/licenses/LICENSE-asm.txt          |    29 +
 .../licenses/LICENSE-aspectjweaver.txt             |    86 +
 .../licenses/LICENSE-audience-annotations.txt      |   202 +
 .../release-docs/licenses/LICENSE-avro.txt         |   202 +
 .../release-docs/licenses/LICENSE-aws-sdk-java.txt |    63 +
 .../release-docs/licenses/LICENSE-bonecp.txt       |   201 +
 .../release-docs/licenses/LICENSE-byte-buddy.txt   |   202 +
 .../release-docs/licenses/LICENSE-classmate.txt    |     7 +
 .../licenses/LICENSE-clickhouse-jdbc.txt           |    13 +
 .../release-docs/licenses/LICENSE-commons-cli.txt  |   202 +
 .../licenses/LICENSE-commons-codec.txt             |   202 +
 .../licenses/LICENSE-commons-collections.txt       |   202 +
 .../licenses/LICENSE-commons-collections4.txt      |   202 +
 .../licenses/LICENSE-commons-compress.txt          |     0
 .../licenses/LICENSE-commons-configuration.txt     |   202 +
 .../licenses/LICENSE-commons-daemon.txt            |   202 +
 .../release-docs/licenses/LICENSE-commons-dbcp.txt |   202 +
 .../licenses/LICENSE-commons-email.txt             |   202 +
 .../licenses/LICENSE-commons-httpclient.txt        |   176 +
 .../release-docs/licenses/LICENSE-commons-io.txt   |   203 +
 .../licenses/LICENSE-commons-lang-2.6.txt          |   202 +
 .../licenses/LICENSE-commons-logging.txt           |   202 +
 .../licenses/LICENSE-commons-math3.txt             |   387 +
 .../release-docs/licenses/LICENSE-commons-net.txt  |   202 +
 .../release-docs/licenses/LICENSE-commons-pool.txt |   202 +
 .../release-docs/licenses/LICENSE-core-3.1.1.txt   |    70 +
 .../release-docs/licenses/LICENSE-cron-utils.txt   |   202 +
 .../licenses/LICENSE-curator-client.txt            |   202 +
 .../licenses/LICENSE-curator-framwork.txt          |   202 +
 .../licenses/LICENSE-curator-recipes.txt           |   202 +
 .../licenses/LICENSE-datanucleus-api-jdo.txt       |   191 +
 .../licenses/LICENSE-datanucleus-core.txt          |   191 +
 .../licenses/LICENSE-datanucleus-rdbms.txt         |   191 +
 .../release-docs/licenses/LICENSE-derby.txt        |   202 +
 .../release-docs/licenses/LICENSE-druid.txt        |    13 +
 .../licenses/LICENSE-error_prone_annotations.txt   |   202 +
 .../release-docs/licenses/LICENSE-fastjson.txt     |   203 +
 .../release-docs/licenses/LICENSE-gson.txt         |   203 +
 .../release-docs/licenses/LICENSE-guava.txt        |   203 +
 .../licenses/LICENSE-guice-servlet.txt             |   202 +
 .../release-docs/licenses/LICENSE-guice.txt        |   202 +
 .../release-docs/licenses/LICENSE-h2-1.4.200.txt   |   552 +
 .../licenses/LICENSE-hadoop-annotations.txt        |  1562 +++
 .../release-docs/licenses/LICENSE-hadoop-auth.txt  |  1562 +++
 .../release-docs/licenses/LICENSE-hadoop-aws.txt   |  1562 +++
 .../licenses/LICENSE-hadoop-client.txt             |  1562 +++
 .../licenses/LICENSE-hadoop-common.txt             |  1562 +++
 .../release-docs/licenses/LICENSE-hadoop-hdfs.txt  |  1562 +++
 .../LICENSE-hadoop-mapreduce-client-app.txt        |  1562 +++
 .../LICENSE-hadoop-mapreduce-client-common.txt     |  1562 +++
 .../LICENSE-hadoop-mapreduce-client-core.txt       |  1562 +++
 .../LICENSE-hadoop-mapreduce-client-jobclient.txt  |  1562 +++
 .../LICENSE-hadoop-mapreduce-client-shuffle.txt    |  1562 +++
 .../licenses/LICENSE-hadoop-yarn-api.txt           |  1562 +++
 .../licenses/LICENSE-hadoop-yarn-client.txt        |  1562 +++
 .../licenses/LICENSE-hadoop-yarn-common.txt        |  1562 +++
 .../licenses/LICENSE-hadoop-yarn-server-common.txt |  1562 +++
 .../licenses/LICENSE-hamcrest-core.txt             |    27 +
 .../licenses/LICENSE-hibernate-validator.txt       |   203 +
 .../release-docs/licenses/LICENSE-hive-common.txt  |   202 +
 .../release-docs/licenses/LICENSE-hive-jdbc.txt    |   202 +
 .../licenses/LICENSE-hive-metastore.txt            |   202 +
 .../release-docs/licenses/LICENSE-hive-orc.txt     |   202 +
 .../release-docs/licenses/LICENSE-hive-serde.txt   |   202 +
 .../licenses/LICENSE-hive-service-rpc.txt          |   202 +
 .../release-docs/licenses/LICENSE-hive-service.txt |   202 +
 .../licenses/LICENSE-hive-storage-api.txt          |   202 +
 .../release-docs/licenses/LICENSE-htrace-core.txt  |   202 +
 .../release-docs/licenses/LICENSE-httpclient.txt   |   202 +
 .../release-docs/licenses/LICENSE-httpcore.txt     |   266 +
 .../release-docs/licenses/LICENSE-httpmime.txt     |   202 +
 .../licenses/LICENSE-jackson-annotations.txt       |     8 +
 .../licenses/LICENSE-jackson-core-asl.txt          |    13 +
 .../release-docs/licenses/LICENSE-jackson-core.txt |     8 +
 .../licenses/LICENSE-jackson-databind.txt          |     8 +
 .../licenses/LICENSE-jackson-datatype-jdk8.txt     |   201 +
 .../licenses/LICENSE-jackson-datatype-jsr310.txt   |     8 +
 .../licenses/LICENSE-jackson-jaxrs.txt             |    13 +
 .../licenses/LICENSE-jackson-mapper-asl.txt        |    13 +
 .../LICENSE-jackson-module-parameter-names.txt     |   202 +
 .../release-docs/licenses/LICENSE-jackson-xc.txt   |     8 +
 .../licenses/LICENSE-jamon-runtime.txt             |   469 +
 .../licenses/LICENSE-java-xmlbuilder.txt           |   202 +
 .../licenses/LICENSE-javax.activation-api.txt      |   758 ++
 .../licenses/LICENSE-javax.annotation-api.txt      |   263 +
 .../release-docs/licenses/LICENSE-javax.inject.txt |   201 +
 .../release-docs/licenses/LICENSE-javax.jdo.txt    |   191 +
 .../release-docs/licenses/LICENSE-javax.mail.txt   |   759 ++
 .../licenses/LICENSE-javax.servlet-api.txt         |   263 +
 .../release-docs/licenses/LICENSE-javolution.txt   |    27 +
 .../release-docs/licenses/LICENSE-jaxb-api.txt     |   274 +
 .../release-docs/licenses/LICENSE-jaxb-impl.txt    |   274 +
 .../licenses/LICENSE-jboss-logging.txt             |   202 +
 .../release-docs/licenses/LICENSE-jdo-api.txt      |   202 +
 .../licenses/LICENSE-jersey-client.txt             |   759 ++
 .../release-docs/licenses/LICENSE-jersey-core.txt  |   759 ++
 .../release-docs/licenses/LICENSE-jersey-guice.txt |   759 ++
 .../release-docs/licenses/LICENSE-jersey-json.txt  |   759 ++
 .../licenses/LICENSE-jersey-server.txt             |   759 ++
 .../release-docs/licenses/LICENSE-jets3t.txt       |   202 +
 .../release-docs/licenses/LICENSE-jettison.txt     |   201 +
 .../licenses/LICENSE-jetty-continuation.txt        |   414 +
 .../release-docs/licenses/LICENSE-jetty-http.txt   |   414 +
 .../release-docs/licenses/LICENSE-jetty-io.txt     |   414 +
 .../licenses/LICENSE-jetty-security.txt            |   414 +
 .../release-docs/licenses/LICENSE-jetty-server.txt |   414 +
 .../licenses/LICENSE-jetty-servlet.txt             |   414 +
 .../licenses/LICENSE-jetty-servlets.txt            |   414 +
 .../LICENSE-jetty-util-9.4.14.v20181114.txt        |   414 +
 .../release-docs/licenses/LICENSE-jetty-util.txt   |   202 +
 .../release-docs/licenses/LICENSE-jetty-webapp.txt |   414 +
 .../release-docs/licenses/LICENSE-jetty-xml.txt    |   414 +
 .../release-docs/licenses/LICENSE-jetty.txt        |   202 +
 .../release-docs/licenses/LICENSE-jline.txt        |    32 +
 .../release-docs/licenses/LICENSE-jna-platform.txt |    22 +
 .../release-docs/licenses/LICENSE-jna.txt          |    22 +
 .../release-docs/licenses/LICENSE-joda-time-.txt   |   202 +
 .../release-docs/licenses/LICENSE-jpam.txt         |    15 +
 .../release-docs/licenses/LICENSE-jsch.txt         |    30 +
 .../licenses/LICENSE-jsp-api-2.1-6.1.14.txt        |    53 +
 .../release-docs/licenses/LICENSE-jsp-api.txt      |   202 +
 .../release-docs/licenses/LICENSE-jsqlparser.txt   |   201 +
 .../release-docs/licenses/LICENSE-jsr305.txt       |   201 +
 .../release-docs/licenses/LICENSE-jta.txt          |   119 +
 .../release-docs/licenses/LICENSE-jul-to-slf4j.txt |    21 +
 .../release-docs/licenses/LICENSE-junit.txt        |   213 +
 .../licenses/LICENSE-leveldbjni-all.txt            |    27 +
 .../release-docs/licenses/LICENSE-libfb303.txt     |   202 +
 .../release-docs/licenses/LICENSE-libthrift.txt    |   253 +
 .../licenses/LICENSE-log4j-1.2-api.txt             |   202 +
 .../licenses/LICENSE-log4j-api-2.11.2.txt          |    53 +
 .../licenses/LICENSE-log4j-core-2.11.2.txt         |   202 +
 .../release-docs/licenses/LICENSE-log4j.txt        |   202 +
 .../licenses/LICENSE-logback-classic.txt           |    18 +
 .../release-docs/licenses/LICENSE-logback-core.txt |    18 +
 .../release-docs/licenses/LICENSE-lz4.txt          |   202 +
 .../release-docs/licenses/LICENSE-mapstruct.txt    |    41 +
 .../release-docs/licenses/LICENSE-mssql-jdbc.txt   |    14 +
 .../licenses/LICENSE-mybatis-plus-annotation.txt   |   201 +
 .../licenses/LICENSE-mybatis-plus-boot-starter.txt |   201 +
 .../licenses/LICENSE-mybatis-plus-core.txt         |   201 +
 .../licenses/LICENSE-mybatis-plus-extension.txt    |   201 +
 .../release-docs/licenses/LICENSE-mybatis-plus.txt |   201 +
 .../licenses/LICENSE-mybatis-spring.txt            |   202 +
 .../release-docs/licenses/LICENSE-mybatis.txt      |   202 +
 .../release-docs/licenses/LICENSE-netty-all.txt    |   201 +
 .../release-docs/licenses/LICENSE-netty.txt        |   201 +
 .../release-docs/licenses/LICENSE-opencsv.txt      |   201 +
 .../release-docs/licenses/LICENSE-oshi-core.txt    |    16 +
 .../release-docs/licenses/LICENSE-paranamer.txt    |    28 +
 .../licenses/LICENSE-parquet-hadoop-bundle.txt     |   248 +
 .../release-docs/licenses/LICENSE-poi.txt          |   537 +
 .../release-docs/licenses/LICENSE-postgresql.txt   |    23 +
 .../licenses/LICENSE-protobuf-java.txt             |    42 +
 .../release-docs/licenses/LICENSE-quartz-jobs.txt  |   202 +
 .../release-docs/licenses/LICENSE-quartz.txt       |   202 +
 .../release-docs/licenses/LICENSE-slf4j-api.txt    |    22 +
 .../release-docs/licenses/LICENSE-snakeyaml.txt    |   176 +
 .../release-docs/licenses/LICENSE-snappy-java.txt  |   201 +
 .../release-docs/licenses/LICENSE-snappy.txt       |   202 +
 .../release-docs/licenses/LICENSE-spring-aop.txt   |   279 +
 .../release-docs/licenses/LICENSE-spring-beans.txt |   279 +
 .../licenses/LICENSE-spring-boot-autoconfigure.txt |   202 +
 .../licenses/LICENSE-spring-boot-starter-aop.txt   |   202 +
 .../licenses/LICENSE-spring-boot-starter-jdbc.txt  |   202 +
 .../licenses/LICENSE-spring-boot-starter-jetty.txt |   202 +
 .../licenses/LICENSE-spring-boot-starter-json.txt  |   202 +
 .../LICENSE-spring-boot-starter-logging.txt        |   202 +
 .../licenses/LICENSE-spring-boot-starter-web.txt   |   202 +
 .../licenses/LICENSE-spring-boot-starter.txt       |   202 +
 .../release-docs/licenses/LICENSE-spring-boot.txt  |   202 +
 .../licenses/LICENSE-spring-context.txt            |   279 +
 .../release-docs/licenses/LICENSE-spring-core.txt  |   279 +
 .../licenses/LICENSE-spring-expression.txt         |   279 +
 .../release-docs/licenses/LICENSE-spring-jcl.txt   |   279 +
 .../release-docs/licenses/LICENSE-spring-jdbc.txt  |   279 +
 .../licenses/LICENSE-spring-plugin-core.txt        |   216 +
 .../licenses/LICENSE-spring-plugin-metadata.txt    |   216 +
 .../release-docs/licenses/LICENSE-spring-tx.txt    |   279 +
 .../release-docs/licenses/LICENSE-spring-web.txt   |   279 +
 .../licenses/LICENSE-spring-webmvc.txt             |   279 +
 .../licenses/LICENSE-springfox-core.txt            |   201 +
 .../licenses/LICENSE-springfox-schema.txt          |   201 +
 .../licenses/LICENSE-springfox-spi.txt             |   201 +
 .../licenses/LICENSE-springfox-spring-web.txt      |   201 +
 .../licenses/LICENSE-springfox-swagger-common.txt  |   201 +
 .../licenses/LICENSE-springfox-swagger-ui.txt      |   201 +
 .../licenses/LICENSE-springfox-swagger2.txt        |   201 +
 .../licenses/LICENSE-swagger-annotations.txt       |    11 +
 .../licenses/LICENSE-swagger-bootstrap-ui.txt      |   191 +
 .../licenses/LICENSE-swagger-models.txt            |    11 +
 .../release-docs/licenses/LICENSE-tephra-api.txt   |   176 +
 .../release-docs/licenses/LICENSE-threetenbp.txt   |    31 +
 .../licenses/LICENSE-transaction-api.txt           |   119 +
 .../licenses/LICENSE-validation-api.txt            |     4 +
 .../release-docs/licenses/LICENSE-xercesImpl.txt   |   202 +
 .../release-docs/licenses/LICENSE-xml-apis.txt     |   202 +
 .../release-docs/licenses/LICENSE-xmlenc.txt       |    22 +
 .../release-docs/licenses/LICENSE-zookeeper.txt    |   201 +
 .../licenses/ui-licenses/LICENSE-ans-ui            |    65 +
 .../licenses/ui-licenses/LICENSE-axios             |    19 +
 .../licenses/ui-licenses/LICENSE-bootstrap         |    21 +
 .../licenses/ui-licenses/LICENSE-canvg             |    22 +
 .../licenses/ui-licenses/LICENSE-clipboard         |     8 +
 .../licenses/ui-licenses/LICENSE-codemirror        |    21 +
 .../release-docs/licenses/ui-licenses/LICENSE-d3   |    26 +
 .../licenses/ui-licenses/LICENSE-dayjs             |    21 +
 .../licenses/ui-licenses/LICENSE-echarts           |   201 +
 .../licenses/ui-licenses/LICENSE-html2canvas       |    22 +
 .../licenses/ui-licenses/LICENSE-jquery            |    36 +
 .../licenses/ui-licenses/LICENSE-jquery-ui         |    43 +
 .../licenses/ui-licenses/LICENSE-js-cookie         |    21 +
 .../licenses/ui-licenses/LICENSE-jsplumb           |   305 +
 .../licenses/ui-licenses/LICENSE-lodash            |    47 +
 .../release-docs/licenses/ui-licenses/LICENSE-vue  |    21 +
 .../licenses/ui-licenses/LICENSE-vue-router        |    21 +
 .../licenses/ui-licenses/LICENSE-vue-treeselect    |    20 +
 .../release-docs/licenses/ui-licenses/LICENSE-vuex |    21 +
 .../licenses/ui-licenses/LICENSE-vuex-router-sync  |    21 +
 .../src/main/assembly/dolphinscheduler-binary.xml  |   228 +
 .../src/main/assembly/dolphinscheduler-nginx.xml   |   236 +
 .../src/main/assembly/dolphinscheduler-src.xml     |    87 +
 dolphinscheduler-plugin-api/pom.xml                |    50 +
 .../dolphinscheduler/plugin/api/AlertPlugin.java   |    45 +
 .../dolphinscheduler/plugin/model/AlertData.java   |   129 +
 .../dolphinscheduler/plugin/model/AlertInfo.java   |    61 +
 .../dolphinscheduler/plugin/model/PluginName.java  |    45 +
 .../plugin/spi/AlertPluginProvider.java            |    33 +
 .../plugin/utils/PropertyUtils.java                |   190 +
 .../plugin/model/AlertDataTest.java                |    80 +
 .../plugin/model/AlertInfoTest.java                |    54 +
 .../plugin/utils/PropertyUtilsTest.java            |    83 +
 .../src/test/resources/plugin.properties           |    22 +
 dolphinscheduler-remote/pom.xml                    |    56 +
 .../remote/NettyRemotingClient.java                |   428 +
 .../remote/NettyRemotingServer.java                |   240 +
 .../remote/codec/NettyDecoder.java                 |   109 +
 .../remote/codec/NettyEncoder.java                 |    52 +
 .../dolphinscheduler/remote/command/Command.java   |   107 +
 .../remote/command/CommandHeader.java              |    64 +
 .../remote/command/CommandType.java                |   115 +
 .../remote/command/DBTaskAckCommand.java           |    72 +
 .../remote/command/DBTaskResponseCommand.java      |    71 +
 .../dolphinscheduler/remote/command/Ping.java      |    71 +
 .../dolphinscheduler/remote/command/Pong.java      |    75 +
 .../remote/command/TaskExecuteAckCommand.java      |     1 +
 .../remote/command/TaskExecuteRequestCommand.java  |     1 +
 .../remote/command/TaskExecuteResponseCommand.java |     1 +
 .../dolphinscheduler/remote/command/TaskInfo.java  |   250 +
 .../remote/command/TaskKillRequestCommand.java     |     1 +
 .../remote/command/TaskKillResponseCommand.java    |     1 +
 .../command/log/GetLogBytesRequestCommand.java     |    63 +
 .../command/log/GetLogBytesResponseCommand.java    |    65 +
 .../command/log/RemoveTaskLogRequestCommand.java   |    63 +
 .../command/log/RemoveTaskLogResponseCommand.java  |    63 +
 .../command/log/RollViewLogRequestCommand.java     |    91 +
 .../command/log/RollViewLogResponseCommand.java    |    64 +
 .../remote/command/log/ViewLogRequestCommand.java  |    63 +
 .../remote/command/log/ViewLogResponseCommand.java |    64 +
 .../remote/config/NettyClientConfig.java           |   103 +
 .../remote/config/NettyServerConfig.java           |   116 +
 .../remote/exceptions/RemotingException.java       |    59 +
 .../exceptions/RemotingTimeoutException.java       |    38 +
 .../RemotingTooMuchRequestException.java           |    27 +
 .../remote/future/InvokeCallback.java              |    31 +
 .../remote/future/ReleaseSemaphore.java            |    41 +
 .../remote/future/ResponseFuture.java              |   212 +
 .../remote/handler/NettyClientHandler.java         |   203 +
 .../remote/handler/NettyServerHandler.java         |   192 +
 .../remote/processor/NettyRequestProcessor.java    |    33 +
 .../remote/utils/CallerThreadExecutePolicy.java    |    38 +
 .../remote/utils/ChannelUtils.java                 |    57 +
 .../dolphinscheduler/remote/utils/Constants.java   |    58 +
 .../remote/utils/FastJsonSerializer.java           |    60 +
 .../apache/dolphinscheduler/remote/utils/Host.java |   127 +
 .../dolphinscheduler/remote/utils/IPUtils.java     |   142 +
 .../remote/utils/NamedThreadFactory.java           |    61 +
 .../dolphinscheduler/remote/utils/NettyUtils.java  |    62 +
 .../apache/dolphinscheduler/remote/utils/Pair.java |    57 +
 .../remote/FastJsonSerializerTest.java             |    58 +
 .../remote/NettyRemotingClientTest.java            |   111 +
 .../remote/RemoveTaskLogRequestCommandTest.java    |    35 +
 .../remote/RemoveTaskLogResponseCommandTest.java   |    34 +
 .../remote/ResponseFutureTest.java                 |    60 +
 dolphinscheduler-server/pom.xml                    |   192 +
 .../builder/TaskExecutionContextBuilder.java       |   140 +
 .../server/entity/DataxTaskExecutionContext.java   |   116 +
 .../entity/DependenceTaskExecutionContext.java     |    43 +
 .../entity/ProcedureTaskExecutionContext.java      |    46 +
 .../server/entity/SQLTaskExecutionContext.java     |    78 +
 .../server/entity/SqoopTaskExecutionContext.java   |   116 +
 .../server/entity/TaskExecutionContext.java        |   498 +
 .../server/entity/TaskPriority.java                |   147 +
 .../server/log/LoggerRequestProcessor.java         |   187 +
 .../dolphinscheduler/server/log/LoggerServer.java  |    92 +
 .../server/log/MasterLogFilter.java                |    49 +
 .../server/log/SensitiveDataConverter.java         |    90 +
 .../server/log/TaskLogAppender.java                |    39 +
 .../server/log/TaskLogDiscriminator.java           |    77 +
 .../dolphinscheduler/server/log/TaskLogFilter.java |    51 +
 .../server/log/WorkerLogFilter.java                |    49 +
 .../server/master/MasterServer.java                |   196 +
 .../master/cache/TaskInstanceCacheManager.java     |    64 +
 .../cache/impl/TaskInstanceCacheManagerImpl.java   |   119 +
 .../server/master/config/MasterConfig.java         |   140 +
 .../master/consumer/TaskPriorityQueueConsumer.java |   403 +
 .../server/master/dispatch/ExecutorDispatcher.java |   121 +
 .../master/dispatch/context/ExecutionContext.java  |    86 +
 .../server/master/dispatch/enums/ExecutorType.java |    27 +
 .../dispatch/exceptions/ExecuteException.java      |    50 +
 .../dispatch/executor/AbstractExecutorManager.java |    46 +
 .../master/dispatch/executor/ExecutorManager.java  |    57 +
 .../dispatch/executor/NettyExecutorManager.java    |   200 +
 .../master/dispatch/host/CommonHostManager.java    |    88 +
 .../server/master/dispatch/host/HostManager.java   |    36 +
 .../master/dispatch/host/HostManagerConfig.java    |    64 +
 .../dispatch/host/LowerWeightHostManager.java      |   180 +
 .../master/dispatch/host/RandomHostManager.java    |    48 +
 .../dispatch/host/RoundRobinHostManager.java       |    49 +
 .../master/dispatch/host/assign/HostSelector.java  |    39 +
 .../master/dispatch/host/assign/HostWeight.java    |    73 +
 .../host/assign/LowerWeightRoundRobin.java         |    52 +
 .../dispatch/host/assign/RandomSelector.java       |    54 +
 .../dispatch/host/assign/RoundRobinSelector.java   |    52 +
 .../master/dispatch/host/assign/Selector.java      |    35 +
 .../server/master/future/TaskFuture.java           |   174 +
 .../server/master/processor/TaskAckProcessor.java  |    89 +
 .../processor/TaskKillResponseProcessor.java       |    53 +
 .../master/processor/TaskResponseProcessor.java    |    86 +
 .../master/processor/queue/TaskResponseEvent.java  |   209 +
 .../processor/queue/TaskResponseService.java       |   181 +
 .../server/master/registry/MasterRegistry.java     |   141 +
 .../master/runner/ConditionsTaskExecThread.java    |   156 +
 .../master/runner/DependentTaskExecThread.java     |   221 +
 .../master/runner/MasterBaseTaskExecThread.java    |   364 +
 .../server/master/runner/MasterExecThread.java     |  1131 ++
 .../master/runner/MasterSchedulerService.java      |   163 +
 .../server/master/runner/MasterTaskExecThread.java |   226 +
 .../master/runner/SubProcessTaskExecThread.java    |   181 +
 .../server/monitor/AbstractMonitor.java            |   126 +
 .../dolphinscheduler/server/monitor/Monitor.java   |    33 +
 .../server/monitor/MonitorServer.java              |    63 +
 .../dolphinscheduler/server/monitor/RunConfig.java |    98 +
 .../server/monitor/ZKMonitorImpl.java              |    62 +
 .../server/registry/HeartBeatTask.java             |    87 +
 .../server/registry/ZookeeperNodeManager.java      |   272 +
 .../server/registry/ZookeeperRegistryCenter.java   |   197 +
 .../server/utils/AlertManager.java                 |   267 +
 .../dolphinscheduler/server/utils/DataxUtils.java  |   129 +
 .../server/utils/DependentExecute.java             |   288 +
 .../server/utils/FlinkArgsUtils.java               |   124 +
 .../dolphinscheduler/server/utils/ParamUtils.java  |   130 +
 .../server/utils/ProcessUtils.java                 |   407 +
 .../server/utils/RemoveZKNode.java                 |    59 +
 .../server/utils/SparkArgsUtils.java               |   125 +
 .../dolphinscheduler/server/utils/UDFUtils.java    |   102 +
 .../server/worker/WorkerServer.java                |   154 +
 .../server/worker/cache/ResponceCache.java         |    94 +
 .../cache/TaskExecutionContextCacheManager.java    |    48 +
 .../impl/TaskExecutionContextCacheManagerImpl.java |    68 +
 .../server/worker/config/WorkerConfig.java         |   110 +
 .../worker/processor/DBTaskAckProcessor.java       |    56 +
 .../worker/processor/DBTaskResponseProcessor.java  |    58 +
 .../worker/processor/NettyRemoteChannel.java       |    84 +
 .../worker/processor/TaskCallbackService.java      |   189 +
 .../worker/processor/TaskExecuteProcessor.java     |   174 +
 .../server/worker/processor/TaskKillProcessor.java |   193 +
 .../server/worker/registry/WorkerRegistry.java     |   170 +
 .../worker/runner/RetryReportTaskStatusThread.java |    94 +
 .../server/worker/runner/TaskExecuteThread.java    |   253 +
 .../worker/task/AbstractCommandExecutor.java       |   560 +
 .../server/worker/task/AbstractTask.java           |   272 +
 .../server/worker/task/AbstractYarnTask.java       |    95 +
 .../server/worker/task/CommandExecuteResult.java   |    69 +
 .../server/worker/task/PythonCommandExecutor.java  |   175 +
 .../server/worker/task/ShellCommandExecutor.java   |   119 +
 .../server/worker/task/TaskManager.java            |    76 +
 .../server/worker/task/TaskProps.java              |   343 +
 .../server/worker/task/datax/DataxTask.java        |   541 +
 .../server/worker/task/flink/FlinkTask.java        |   147 +
 .../server/worker/task/http/HttpTask.java          |   333 +
 .../server/worker/task/mr/MapReduceTask.java       |   185 +
 .../worker/task/processdure/ProcedureTask.java     |   395 +
 .../server/worker/task/python/PythonTask.java      |   140 +
 .../server/worker/task/shell/ShellTask.java        |   178 +
 .../server/worker/task/spark/SparkTask.java        |   154 +
 .../server/worker/task/sql/SqlTask.java            |   501 +
 .../server/worker/task/sqoop/SqoopTask.java        |    89 +
 .../task/sqoop/generator/CommonGenerator.java      |    45 +
 .../task/sqoop/generator/ISourceGenerator.java     |    34 +
 .../task/sqoop/generator/ITargetGenerator.java     |    34 +
 .../task/sqoop/generator/SqoopJobGenerator.java    |   110 +
 .../generator/sources/HdfsSourceGenerator.java     |    57 +
 .../generator/sources/HiveSourceGenerator.java     |    62 +
 .../generator/sources/MysqlSourceGenerator.java    |   119 +
 .../generator/targets/HdfsTargetGenerator.java     |    76 +
 .../generator/targets/HiveTargetGenerator.java     |    86 +
 .../generator/targets/MysqlTargetGenerator.java    |    95 +
 .../dolphinscheduler/server/zk/ZKMasterClient.java |   358 +
 .../src/main/resources/config/install_config.conf  |   140 +
 .../src/main/resources/logback-master.xml          |    81 +
 .../src/main/resources/logback-worker.xml          |    82 +
 .../src/main/resources/master.properties           |    45 +
 .../src/main/resources/worker.properties           |    34 +
 .../server/log/LoggerServerTest.java               |    62 +
 .../server/log/MasterLogFilterTest.java            |   118 +
 .../server/log/SensitiveDataConverterTest.java     |   179 +
 .../server/log/TaskLogDiscriminatorTest.java       |   153 +
 .../server/log/TaskLogFilterTest.java              |   119 +
 .../server/log/WorkerLogFilterTest.java            |   119 +
 .../server/master/AlertManagerTest.java            |   107 +
 .../server/master/ConditionsTaskTest.java          |   132 +
 .../server/master/DependentTaskTest.java           |   224 +
 .../server/master/MasterCommandTest.java           |   114 +
 .../server/master/MasterExecThreadTest.java        |   155 +
 .../dolphinscheduler/server/master/ParamsTest.java |   102 +
 .../consumer/TaskPriorityQueueConsumerTest.java    |   262 +
 .../master/dispatch/ExecutorDispatcherTest.java    |    82 +
 .../executor/NettyExecutorManagerTest.java         |   104 +
 .../dispatch/host/RoundRobinHostManagerTest.java   |    78 +
 .../host/assign/LowerWeightRoundRobinTest.java     |    41 +
 .../dispatch/host/assign/RandomSelectorTest.java   |    51 +
 .../host/assign/RoundRobinSelectorTest.java        |    55 +
 .../processor/queue/TaskResponseServiceTest.java   |    66 +
 .../server/master/registry/MasterRegistryTest.java |    72 +
 .../master/runner/MasterTaskExecThreadTest.java    |   113 +
 .../server/registry/DependencyConfig.java          |   157 +
 .../server/registry/ZookeeperNodeManagerTest.java  |   107 +
 .../server/utils/DataxUtilsTest.java               |   108 +
 .../server/utils/ExecutionContextTestUtils.java    |    54 +
 .../server/utils/FlinkArgsUtilsTest.java           |   131 +
 .../server/utils/ParamUtilsTest.java               |   135 +
 .../server/utils/ProcessUtilsTest.java             |    50 +
 .../server/utils/SparkArgsUtilsTest.java           |   128 +
 .../server/worker/EnvFileTest.java                 |    80 +
 .../worker/processor/TaskCallbackServiceTest.java  |   211 +
 .../processor/TaskCallbackServiceTestConfig.java   |   126 +
 .../server/worker/registry/WorkerRegistryTest.java |   170 +
 .../worker/shell/ShellCommandExecutorTest.java     |   105 +
 .../server/worker/sql/SqlExecutorTest.java         |   148 +
 .../server/worker/task/datax/DataxTaskTest.java    |   396 +
 .../server/worker/task/shell/ShellTaskTest.java    |   240 +
 .../server/worker/task/spark/SparkTaskTest.java    |   141 +
 .../server/worker/task/sqoop/SqoopTaskTest.java    |   132 +
 .../dolphinscheduler/server/zk/SpringZKServer.java |   178 +
 dolphinscheduler-service/pom.xml                   |    97 +
 .../service/bean/SpringApplicationContext.java     |    39 +
 .../service/log/LogClientService.java              |   176 +
 .../dolphinscheduler/service/log/LogPromise.java   |   109 +
 .../service/permission/PermissionCheck.java        |   192 +
 .../service/process/ProcessService.java            |  1903 ++++
 .../service/quartz/DruidConnectionProvider.java    |    51 +
 .../service/quartz/ProcessScheduleJob.java         |   119 +
 .../service/quartz/QuartzExecutors.java            |   342 +
 .../service/quartz/cron/AbstractCycle.java         |   172 +
 .../service/quartz/cron/CronUtils.java             |   232 +
 .../service/quartz/cron/CycleFactory.java          |   278 +
 .../service/quartz/cron/CycleLinks.java            |    77 +
 .../service/queue/TaskPriorityQueue.java           |    44 +
 .../service/queue/TaskPriorityQueueImpl.java       |   104 +
 .../service/zk/AbstractListener.java               |    36 +
 .../service/zk/AbstractZKClient.java               |   335 +
 .../service/zk/DefaultEnsembleProvider.java        |    58 +
 .../dolphinscheduler/service/zk/ZKServer.java      |   165 +
 .../service/zk/ZookeeperCachedOperator.java        |    92 +
 .../service/zk/ZookeeperConfig.java                |   118 +
 .../service/zk/ZookeeperOperator.java              |   242 +
 .../src/main/resources/quartz.properties           |    54 +
 .../src/main/resources/zookeeper.properties        |    29 +
 .../service/process/ProcessServiceTest.java        |   107 +
 .../service/quartz/cron/CronUtilsTest.java         |   198 +
 .../service/zk/DefaultEnsembleProviderTest.java    |    65 +
 .../dolphinscheduler/service/zk/ZKServerTest.java  |    35 +
 .../src/test/java/queue/TaskUpdateQueueTest.java   |    59 +
 {escheduler-ui => dolphinscheduler-ui}/.babelrc    |     0
 dolphinscheduler-ui/.editorconfig                  |    35 +
 dolphinscheduler-ui/.env                           |    20 +
 dolphinscheduler-ui/.eslintrc.yml                  |    34 +
 dolphinscheduler-ui/_test_/.babelrc                |     8 +
 dolphinscheduler-ui/_test_/Counter.spec.js         |    55 +
 dolphinscheduler-ui/_test_/package.json            |    43 +
 dolphinscheduler-ui/_test_/test.spec.js            |    34 +
 dolphinscheduler-ui/build/config.js                |   228 +
 dolphinscheduler-ui/build/webpack.config.dev.js    |    60 +
 dolphinscheduler-ui/build/webpack.config.prod.js   |    73 +
 .../build/webpack.config.release.js                |    26 +
 dolphinscheduler-ui/favicon.png                    |   Bin 0 -> 4286 bytes
 dolphinscheduler-ui/install-dolphinscheduler-ui.sh |   234 +
 dolphinscheduler-ui/package.json                   |    80 +
 dolphinscheduler-ui/pom.xml                        |   207 +
 dolphinscheduler-ui/src/components/Counter.vue     |    53 +
 dolphinscheduler-ui/src/components/Message.vue     |    28 +
 dolphinscheduler-ui/src/images/favicon.ico         |   Bin 0 -> 4286 bytes
 dolphinscheduler-ui/src/js/conf/home/App.vue       |    31 +
 dolphinscheduler-ui/src/js/conf/home/index.js      |    89 +
 .../src/js/conf/home/pages/dag/_source/config.js   |   302 +
 .../src/js/conf/home/pages/dag/_source/dag.js      |   365 +
 .../src/js/conf/home/pages/dag/_source/dag.scss    |   568 +
 .../src/js/conf/home/pages/dag/_source/dag.vue     |   663 ++
 .../dag/_source/formModel/_source/selectInput.vue  |   117 +
 .../dag/_source/formModel/_source/timeoutAlarm.vue |   129 +
 .../dag/_source/formModel/_source/workerGroups.vue |    72 +
 .../pages/dag/_source/formModel/formModel.scss     |   123 +
 .../home/pages/dag/_source/formModel/formModel.vue |   749 ++
 .../conf/home/pages/dag/_source/formModel/log.vue  |   385 +
 .../dag/_source/formModel/tasks/_source/commcon.js |   262 +
 .../_source/formModel/tasks/_source/datasource.vue |   166 +
 .../formModel/tasks/_source/dependItemList.vue     |   333 +
 .../_source/formModel/tasks/_source/httpParams.vue |   242 +
 .../_source/formModel/tasks/_source/listBox.vue    |    62 +
 .../formModel/tasks/_source/localParams.vue        |   244 +
 .../_source/formModel/tasks/_source/nodeStatus.vue |   226 +
 .../_source/formModel/tasks/_source/resources.vue  |   123 +
 .../_source/formModel/tasks/_source/scriptBox.vue  |   124 +
 .../_source/formModel/tasks/_source/sqlType.vue    |    73 +
 .../formModel/tasks/_source/statementList.vue      |   160 +
 .../dag/_source/formModel/tasks/_source/udfs.vue   |   135 +
 .../dag/_source/formModel/tasks/conditions.vue     |   282 +
 .../pages/dag/_source/formModel/tasks/datax.vue    |   477 +
 .../dag/_source/formModel/tasks/dependent.vue      |   273 +
 .../pages/dag/_source/formModel/tasks/flink.vue    |   591 +
 .../pages/dag/_source/formModel/tasks/http.vue     |   211 +
 .../home/pages/dag/_source/formModel/tasks/mr.vue  |   459 +
 .../dag/_source/formModel/tasks/procedure.vue      |   167 +
 .../pages/dag/_source/formModel/tasks/python.vue   |   347 +
 .../pages/dag/_source/formModel/tasks/shell.vue    |   405 +
 .../pages/dag/_source/formModel/tasks/spark.vue    |   638 ++
 .../home/pages/dag/_source/formModel/tasks/sql.vue |   517 +
 .../pages/dag/_source/formModel/tasks/sqoop.vue    |  1035 ++
 .../dag/_source/formModel/tasks/sub_process.vue    |   129 +
 .../home/pages/dag/_source/jumpAffirm/index.js     |   122 +
 .../pages/dag/_source/jumpAffirm/jumpAffirm.vue    |    55 +
 .../home/pages/dag/_source/plugIn/downChart.js     |   122 +
 .../conf/home/pages/dag/_source/plugIn/dragZoom.js |    38 +
 .../home/pages/dag/_source/plugIn/jsPlumbHandle.js |   821 ++
 .../js/conf/home/pages/dag/_source/plugIn/util.js  |   172 +
 .../home/pages/dag/_source/startingParam/index.vue |   140 +
 .../pages/dag/_source/udp/_source/selectTenant.vue |    82 +
 .../src/js/conf/home/pages/dag/_source/udp/udp.vue |   276 +
 .../conf/home/pages/dag/_source/variable/index.vue |    50 +
 .../pages/dag/_source/variable/variablesView.vue   |   184 +
 .../js/conf/home/pages/dag/definitionDetails.vue   |   107 +
 .../src/js/conf/home/pages/dag}/img/dag_bg.png     |   Bin
 .../conf/home/pages/dag/img/toobar_CONDITIONS.png  |   Bin 0 -> 1367 bytes
 .../js/conf/home/pages/dag/img/toobar_FLINK.png    |   Bin 0 -> 2058 bytes
 .../src/js/conf/home/pages/dag/img/toobar_HTTP.png |   Bin 0 -> 386 bytes
 .../js/conf/home/pages/dag/img/toolbar_DATAX.png   |   Bin 0 -> 571 bytes
 .../conf/home/pages/dag/img}/toolbar_DEPENDENT.png |   Bin
 .../src/js/conf/home/pages/dag/img/toolbar_ETL.png |   Bin 0 -> 3117 bytes
 .../src/js/conf/home/pages/dag/img}/toolbar_MR.png |   Bin
 .../conf/home/pages/dag/img}/toolbar_PROCEDURE.png |   Bin
 .../js/conf/home/pages/dag/img}/toolbar_PYTHON.png |   Bin
 .../js/conf/home/pages/dag/img}/toolbar_SHELL.png  |   Bin
 .../js/conf/home/pages/dag/img}/toolbar_SPARK.png  |   Bin
 .../js/conf/home/pages/dag/img}/toolbar_SQL.png    |   Bin
 .../js/conf/home/pages/dag/img/toolbar_SQOOP.png   |   Bin 0 -> 1157 bytes
 .../home/pages/dag/img}/toolbar_SUB_PROCESS.png    |   Bin
 .../src/js/conf/home/pages/dag/index.vue           |    90 +
 .../src/js/conf/home/pages/dag/instanceDetails.vue |   119 +
 .../src/js/conf/home/pages/datasource/index.vue    |    24 +
 .../pages/list/_source/createDataSource.vue        |   511 +
 .../pages/datasource/pages/list/_source/list.vue   |   182 +
 .../home/pages/datasource/pages/list/index.vue     |   156 +
 .../src/js/conf/home/pages/home/index.vue          |    31 +
 .../src/js/conf/home/pages/monitor/index.vue       |    33 +
 .../pages/monitor/pages/servers/_source/gauge.vue  |    79 +
 .../monitor/pages/servers/_source/gaugeOption.js   |   140 +
 .../pages/servers/_source/zookeeperDirectories.vue |   112 +
 .../pages/servers/_source/zookeeperList.vue        |   140 +
 .../home/pages/monitor/pages/servers/alert.vue     |    65 +
 .../home/pages/monitor/pages/servers/apiserver.vue |    56 +
 .../conf/home/pages/monitor/pages/servers/db.vue   |   151 +
 .../home/pages/monitor/pages/servers/master.vue    |   112 +
 .../home/pages/monitor/pages/servers/rpcserver.vue |    56 +
 .../home/pages/monitor/pages/servers/servers.scss  |   134 +
 .../pages/monitor/pages/servers/statistics.vue     |   131 +
 .../home/pages/monitor/pages/servers/worker.vue    |   132 +
 .../home/pages/monitor/pages/servers/zookeeper.vue |    67 +
 .../src/js/conf/home/pages/projects/index.vue      |    71 +
 .../pages/_source/instanceConditions/common.js     |    68 +
 .../pages/_source/instanceConditions/index.vue     |   133 +
 .../_source/taskRecordList/_source/conditions.vue  |   157 +
 .../pages/_source/taskRecordList/_source/list.vue  |   119 +
 .../pages/_source/taskRecordList/index.vue         |   115 +
 .../home/pages/projects/pages/definition/index.vue |    24 +
 .../pages/definition/pages/create/index.vue        |    27 +
 .../pages/definition/pages/details/index.vue       |    27 +
 .../pages/definition/pages/list/_source/email.vue  |   370 +
 .../pages/definition/pages/list/_source/list.vue   |   436 +
 .../pages/definition/pages/list/_source/start.vue  |   347 +
 .../pages/definition/pages/list/_source/timing.vue |   435 +
 .../pages/definition/pages/list/_source/util.js    |    60 +
 .../projects/pages/definition/pages/list/index.vue |   179 +
 .../pages/definition/pages/tree/_source/tree.js    |   293 +
 .../pages/definition/pages/tree/_source/util.js    |    72 +
 .../pages/definition/pages/tree/img/dag_bg.png     |   Bin
 .../projects/pages/definition/pages/tree/index.vue |   261 +
 .../pages/definition/timing/_source/list.vue       |   329 +
 .../projects/pages/definition/timing/index.vue     |    32 +
 .../projects/pages/historyTaskRecord/index.vue     |    34 +
 .../projects/pages/index/_source/chartConfig.js    |    98 +
 .../pages/index/_source/commandStateCount.vue      |    94 +
 .../pages/index/_source/defineUserCount.vue        |    88 +
 .../pages/index/_source/processStateCount.vue      |   145 +
 .../projects/pages/index/_source/queueCount.vue    |   101 +
 .../pages/index/_source/taskCtatusCount.vue        |   150 +
 .../conf/home/pages/projects/pages/index/index.vue |   148 +
 .../home/pages/projects/pages/instance/index.vue   |    24 +
 .../pages/instance/pages/details/index.vue         |    30 +
 .../pages/instance/pages/gantt/_source/gantt.js    |   182 +
 .../pages/instance/pages/gantt}/img/dag_bg.png     |   Bin
 .../projects/pages/instance/pages/gantt/index.vue  |   180 +
 .../pages/instance/pages/list/_source/list.vue     |   578 +
 .../projects/pages/instance/pages/list/index.vue   |   229 +
 .../projects/pages/list/_source/createProject.vue  |   115 +
 .../pages/projects/pages/list/_source/list.vue     |   186 +
 .../conf/home/pages/projects/pages/list/index.vue  |   140 +
 .../projects/pages/taskInstance/_source/list.vue   |   179 +
 .../pages/projects/pages/taskInstance/index.vue    |   192 +
 .../home/pages/projects/pages/taskRecord/index.vue |    34 +
 .../home/pages/projects/pages/timing/index.vue     |    31 +
 .../src/js/conf/home/pages/resource/index.vue      |    32 +
 .../conf/home/pages/resource/pages/file/index.vue  |    27 +
 .../pages/file/pages/_source/codemirror.js         |     0
 .../resource/pages/file/pages/_source/common.js    |    23 +
 .../resource/pages/file/pages/create/index.vue     |   195 +
 .../pages/file/pages/createFolder/index.vue        |   144 +
 .../pages/file/pages/createUdfFolder/index.vue     |   131 +
 .../file/pages/details/_source/down_error.png      |   Bin
 .../pages/file/pages/details/_source/noType.vue    |    38 +
 .../pages/file/pages/details/_source/utils.js      |    37 +
 .../resource/pages/file/pages/details/index.vue    |   255 +
 .../pages/resource/pages/file/pages/edit/index.vue |   234 +
 .../pages/file/pages/list/_source/list.vue         |   260 +
 .../pages/file/pages/list/_source/rename.vue       |   118 +
 .../pages/resource/pages/file/pages/list/index.vue |   139 +
 .../resource/pages/file/pages/subFile/index.vue    |   196 +
 .../pages/file/pages/subFileFolder/index.vue       |   144 +
 .../pages/file/pages/subdirectory/_source/list.vue |   271 +
 .../file/pages/subdirectory/_source/rename.vue     |   120 +
 .../pages/file/pages/subdirectory/index.vue        |   182 +
 .../conf/home/pages/resource/pages/udf/index.vue   |    24 +
 .../pages/udf/pages/createUdfFolder/index.vue      |   128 +
 .../pages/udf/pages/function/_source/createUdf.vue |   336 +
 .../pages/udf/pages/function/_source/list.vue      |   200 +
 .../resource/pages/udf/pages/function/index.vue    |   150 +
 .../pages/udf/pages/resource/_source/list.vue      |   238 +
 .../pages/udf/pages/resource/_source/rename.vue    |   119 +
 .../resource/pages/udf/pages/resource/index.vue    |   138 +
 .../udf/pages/subUdfDirectory/_source/list.vue     |   239 +
 .../udf/pages/subUdfDirectory/_source/rename.vue   |   120 +
 .../pages/udf/pages/subUdfDirectory/index.vue      |   183 +
 .../pages/udf/pages/subUdfFolder/index.vue         |   128 +
 .../src/js/conf/home/pages/security/index.vue      |    32 +
 .../security/pages/queue/_source/createQueue.vue   |   155 +
 .../pages/security/pages/queue/_source/list.vue    |   143 +
 .../conf/home/pages/security/pages/queue/index.vue |   157 +
 .../pages/tenement/_source/createTenement.vue      |   197 +
 .../pages/security/pages/tenement/_source/list.vue |   164 +
 .../home/pages/security/pages/tenement/index.vue   |   161 +
 .../conf/home/pages/security/pages/token/index.vue |    29 +
 .../security/pages/users/_source/createUser.vue    |   304 +
 .../pages/security/pages/users/_source/list.vue    |   465 +
 .../conf/home/pages/security/pages/users/index.vue |   159 +
 .../pages/warningGroups/_source/createWarning.vue  |   145 +
 .../security/pages/warningGroups/_source/list.vue  |   205 +
 .../pages/security/pages/warningGroups/index.vue   |   161 +
 .../pages/workerGroups/_source/createWorker.vue    |   149 +
 .../security/pages/workerGroups/_source/list.vue   |   113 +
 .../pages/security/pages/workerGroups/index.vue    |   146 +
 .../src/js/conf/home/pages/user/index.vue          |    33 +
 .../home/pages/user/pages/account/_source/info.vue |   156 +
 .../conf/home/pages/user/pages/account/index.vue   |    35 +
 .../pages/user/pages/password/_source/info.vue     |   136 +
 .../conf/home/pages/user/pages/password/index.vue  |    35 +
 .../pages/user/pages/token/_source/createToken.vue |   177 +
 .../home/pages/user/pages/token/_source/list.vue   |   140 +
 .../js/conf/home/pages/user/pages/token/index.vue  |   161 +
 .../src/js/conf/home/router/index.js               |   521 +
 .../src/js/conf/home/store/dag/actions.js          |   772 ++
 .../src/js/conf/home/store/dag}/getters.js         |     0
 .../src/js/conf/home/store/dag}/index.js           |     0
 .../src/js/conf/home/store/dag/mutations.js        |   156 +
 .../src/js/conf/home/store/dag/state.js            |   112 +
 .../src/js/conf/home/store/datasource/actions.js   |   129 +
 .../src/js/conf/home/store/datasource}/getters.js  |     0
 .../src/js/conf/home/store/datasource}/index.js    |     0
 .../js/conf/home/store/datasource}/mutations.js    |     0
 .../src/js/conf/home/store/datasource/state.js     |     0
 .../src/js/conf/home/store/index.js                |    37 +
 .../src/js/conf/home/store/monitor/actions.js      |    57 +
 .../src/js/conf/home/store/monitor}/getters.js     |     0
 .../src/js/conf/home/store/monitor}/index.js       |     0
 .../src/js/conf/home/store/monitor}/mutations.js   |     0
 .../src/js/conf/home/store/monitor}/state.js       |     0
 .../src/js/conf/home/store/projects/actions.js     |   129 +
 .../src/js/conf/home/store/projects}/getters.js    |     0
 .../src/js/conf/home/store/projects}/index.js      |     0
 .../src/js/conf/home/store/projects/mutations.js   |    25 +
 .../src/js/conf/home/store/projects/state.js       |    19 +
 .../src/js/conf/home/store/resource/actions.js     |   197 +
 .../src/js/conf/home/store/resource/getters.js     |     0
 .../src/js/conf/home/store/resource/index.js       |     0
 .../src/js/conf/home/store/resource}/mutations.js  |     0
 .../src/js/conf/home/store/resource}/state.js      |     0
 .../src/js/conf/home/store/security/actions.js     |   531 +
 .../src/js/conf/home/store/security}/getters.js    |     0
 .../src/js/conf/home/store/security}/index.js      |     0
 .../src/js/conf/home/store/security}/mutations.js  |     0
 .../src/js/conf/home/store/security/state.js       |    20 +
 .../src/js/conf/home/store/user/actions.js         |   123 +
 .../src/js/conf/home/store/user}/getters.js        |     0
 .../src/js/conf/home/store/user}/index.js          |     0
 .../src/js/conf/home/store/user/mutations.js       |     0
 .../src/js/conf/home/store/user/state.js           |     0
 dolphinscheduler-ui/src/js/conf/login/App.vue      |   204 +
 .../src/js/conf/login/img/login-logo.svg           |    99 +
 dolphinscheduler-ui/src/js/conf/login/index.js     |    57 +
 .../src/js/module/ana-charts/common.js             |    77 +
 .../src/js/module/ana-charts/index.js              |    78 +
 .../src/js/module/ana-charts/packages/bar/index.js |   326 +
 .../src/js/module/ana-charts/packages/base.js      |    76 +
 .../js/module/ana-charts/packages/funnel/index.js  |   144 +
 .../js/module/ana-charts/packages/line/index.js    |   204 +
 .../src/js/module/ana-charts/packages/pie/index.js |   121 +
 .../js/module/ana-charts/packages/radar/index.js   |   129 +
 .../js/module/ana-charts/packages/scatter/index.js |   149 +
 dolphinscheduler-ui/src/js/module/axios/index.js   |   183 +
 dolphinscheduler-ui/src/js/module/axios/jsonp.js   |   120 +
 .../src/js/module/axios/querystring.js             |    61 +
 .../js/module/components/conditions/conditions.vue |    80 +
 .../src/js/module/components/crontab/index.js      |    22 +
 .../crontab/source/_source/i18n/config.js          |    39 +
 .../crontab/source/_source/i18n/index.js           |    27 +
 .../crontab/source/_source/i18n/locale/en_US.js    |    76 +
 .../crontab/source/_source/i18n/locale/zh_CN.js    |    76 +
 .../components/crontab/source/_source/i18n/util.js |    50 +
 .../crontab/source/_source/input-number.vue        |   122 +
 .../components/crontab/source/_times/day.vue       |   526 +
 .../components/crontab/source/_times/hour.vue      |   263 +
 .../components/crontab/source/_times/minute.vue    |   264 +
 .../components/crontab/source/_times/month.vue     |   263 +
 .../components/crontab/source/_times/second.vue    |   271 +
 .../components/crontab/source/_times/year.vue      |   262 +
 .../js/module/components/crontab/source/app.vue    |   206 +
 .../js/module/components/crontab/source/index.scss |    46 +
 .../module/components/crontab/source/util/index.js |   213 +
 .../components/fileUpdate/definitionUpdate.vue     |   281 +
 .../components/fileUpdate/fileChildReUpdate.vue    |   336 +
 .../components/fileUpdate/fileChildUpdate.vue      |   318 +
 .../module/components/fileUpdate/fileReUpload.vue  |   335 +
 .../js/module/components/fileUpdate/fileUpdate.vue |   316 +
 .../components/fileUpdate/resourceChildUpdate.vue  |   318 +
 .../js/module/components/fileUpdate/udfUpdate.vue  |   212 +
 .../src/js/module/components/layout/layout.vue     |    55 +
 .../src/js/module/components/listBoxF/listBoxF.vue |    75 +
 .../listConstruction/listConstruction.vue          |    45 +
 .../src/js/module/components/nav/logo.svg          |    99 +
 .../src/js/module/components/nav/nav.vue           |   653 ++
 .../module/components/noData/images/errorTip.png   |   Bin
 .../src/js/module/components/noData/noData.vue     |    57 +
 .../src/js/module/components/popup/popup.vue       |   105 +
 .../src/js/module/components/priority/priority.vue |   144 +
 .../module/components/progressBar/progressBar.vue  |    83 +
 .../components/secondaryMenu/_source/close.png     |   Bin
 .../components/secondaryMenu/_source/menu.js       |   247 +
 .../components/secondaryMenu/_source/open.png      |   Bin
 .../components/secondaryMenu/secondaryMenu.vue     |   204 +
 .../src/js/module/components/spin/spin.vue         |    80 +
 .../components/tooltipsJSON/tooltipsJSON.vue       |    61 +
 .../src/js/module/components/transfer/resource.vue |   335 +
 .../src/js/module/components/transfer/transfer.vue |   213 +
 .../src/js/module/download/index.js                |    44 +
 .../src/js/module/echarts/themeData.json           |     0
 .../src/js/module/filter/filter.js                 |     0
 .../src/js/module/filter/formatDate.js             |     0
 .../src/js/module/i18n/config.js                   |     0
 dolphinscheduler-ui/src/js/module/i18n/index.js    |    74 +
 .../src/js/module/i18n/locale/en_US.js             |   610 ++
 .../src/js/module/i18n/locale/zh_CN.js             |   614 ++
 dolphinscheduler-ui/src/js/module/io/index.js      |    95 +
 .../src/js/module/mixin/disabledState.js           |    37 +
 .../src/js/module/mixin/listUrlParamHandle.js      |    55 +
 .../src/js/module/permissions/index.js             |    63 +
 .../src/js/module/util/clickoutside.js             |    47 +
 dolphinscheduler-ui/src/js/module/util/index.js    |    93 +
 .../src/js/module/util/localStorage.js             |     0
 .../src/js/module/util/routerUtil.js               |    22 +
 dolphinscheduler-ui/src/js/module/util/util.js     |    76 +
 dolphinscheduler-ui/src/lib/external/config.js     |    23 +
 dolphinscheduler-ui/src/lib/external/email.js      |    17 +
 .../src/sass/common/_scrollbar.scss                |     0
 dolphinscheduler-ui/src/sass/common/_table.scss    |   173 +
 dolphinscheduler-ui/src/sass/common/index.scss     |   359 +
 dolphinscheduler-ui/src/sass/conf/home/index.scss  |   100 +
 .../src/sass/conf/login/index.scss                 |     0
 dolphinscheduler-ui/src/view/home/index.html       |    51 +
 dolphinscheduler-ui/src/view/login/index.html      |    41 +
 e2e/pom.xml                                        |   153 +
 .../dolphinscheduler/constant/TestConstant.java    |    35 +
 .../dolphinscheduler/util/PropertiesReader.java    |    49 +
 .../apache/dolphinscheduler/util/RedisUtil.java    |   204 +
 .../apache/dolphinscheduler/base/BaseDriver.java   |   148 +
 .../org/apache/dolphinscheduler/base/BaseTest.java |   106 +
 .../dolphinscheduler/common/BrowserCommon.java     |   390 +
 .../apache/dolphinscheduler/common/PageCommon.java |    50 +
 .../apache/dolphinscheduler/data/LoginData.java    |    43 +
 .../data/project/CreateProjectData.java            |    26 +
 .../data/project/CreateWorkflowData.java           |    77 +
 .../data/security/TenantManageData.java            |    49 +
 .../data/security/UserManageData.java              |    31 +
 .../dolphinscheduler/locator/LoginLocator.java     |    33 +
 .../locator/project/CreateProjectLocator.java      |    47 +
 .../locator/project/CreateWorkflowLocator.java     |   183 +
 .../locator/security/TenantManageLocator.java      |    41 +
 .../locator/security/UserManageLocator.java        |    48 +
 .../apache/dolphinscheduler/page/LoginPage.java    |    70 +
 .../page/project/CreateProjectPage.java            |    74 +
 .../page/project/CreateWorkflowPage.java           |   201 +
 .../page/security/TenantManagePage.java            |    79 +
 .../page/security/UserManagePage.java              |    72 +
 .../dolphinscheduler/testcase/LoginTest.java       |    41 +
 .../testcase/deleteData/DeleteProjectTest.java     |    39 +
 .../testcase/deleteData/DeleteTenantTest.java      |    38 +
 .../testcase/deleteData/DeleteUserTest.java        |    42 +
 .../testcase/deleteData/DeleteWorkflowTest.java    |    43 +
 .../testcase/project/CreateProjectTest.java        |    40 +
 .../testcase/project/CreateWorkflowTest.java       |    45 +
 .../testcase/security/TenantManageTest.java        |    36 +
 .../testcase/security/UserManageTest.java          |    36 +
 e2e/src/test/resources/config/config.properties    |    58 +
 e2e/testng.xml                                     |    44 +
 escheduler-alert/pom.xml                           |   140 -
 escheduler-alert/src/main/assembly/package.xml     |    40 -
 .../main/java/cn/escheduler/alert/AlertServer.java |    79 -
 .../cn/escheduler/alert/manager/EmailManager.java  |    55 -
 .../alert/manager/EnterpriseWeChatManager.java     |    57 -
 .../cn/escheduler/alert/manager/MsgManager.java    |    36 -
 .../cn/escheduler/alert/runner/AlertSender.java    |   142 -
 .../java/cn/escheduler/alert/utils/Constants.java  |   151 -
 .../alert/utils/EnterpriseWeChatUtils.java         |   248 -
 .../java/cn/escheduler/alert/utils/ExcelUtils.java |   131 -
 .../java/cn/escheduler/alert/utils/FuncUtils.java  |    35 -
 .../java/cn/escheduler/alert/utils/JSONUtils.java  |    68 -
 .../java/cn/escheduler/alert/utils/MailUtils.java  |   454 -
 .../cn/escheduler/alert/utils/PropertyUtils.java   |   193 -
 .../src/main/resources/alert.properties            |    30 -
 .../src/main/resources/alert_logback.xml           |    31 -
 .../mail_templates/alert_mail_template.ftl         |     1 -
 .../alert/utils/EnterpriseWeChatUtilsTest.java     |   117 -
 .../cn/escheduler/alert/utils/MailUtilsTest.java   |   229 -
 escheduler-api/pom.xml                             |   213 -
 escheduler-api/src/main/assembly/package.xml       |    74 -
 .../cn/escheduler/api/ApiApplicationServer.java    |    37 -
 .../escheduler/api/CombinedApplicationServer.java  |    54 -
 .../api/configuration/AppConfiguration.java        |   115 -
 .../ServiceModelToSwagger2MapperImpl.java          |   509 -
 .../api/configuration/SwaggerConfig.java           |    55 -
 .../api/controller/AccessTokenController.java      |   187 -
 .../api/controller/AlertGroupController.java       |   253 -
 .../escheduler/api/controller/BaseController.java  |   272 -
 .../api/controller/DataAnalysisController.java     |   200 -
 .../api/controller/DataSourceController.java       |   465 -
 .../api/controller/ExecutorController.java         |   201 -
 .../api/controller/LoggerController.java           |   108 -
 .../escheduler/api/controller/LoginController.java |   150 -
 .../api/controller/MonitorController.java          |   139 -
 .../controller/ProcessDefinitionController.java    |   433 -
 .../api/controller/ProcessInstanceController.java  |   367 -
 .../api/controller/ProjectController.java          |   253 -
 .../escheduler/api/controller/QueueController.java |   202 -
 .../api/controller/ResourcesController.java        |   715 --
 .../api/controller/SchedulerController.java        |   336 -
 .../api/controller/TaskInstanceController.java     |    98 -
 .../api/controller/TaskRecordController.java       |   118 -
 .../api/controller/TenantController.java           |   248 -
 .../escheduler/api/controller/UsersController.java |   456 -
 .../api/controller/WorkerGroupController.java      |   171 -
 .../cn/escheduler/api/dto/CommandStateCount.java   |    60 -
 .../java/cn/escheduler/api/dto/DefineUserDto.java  |    55 -
 .../java/cn/escheduler/api/dto/ScheduleParam.java  |    72 -
 .../java/cn/escheduler/api/dto/TaskCountDto.java   |   135 -
 .../java/cn/escheduler/api/dto/TaskStateCount.java |    50 -
 .../java/cn/escheduler/api/dto/gantt/GanttDto.java |   103 -
 .../java/cn/escheduler/api/dto/gantt/Task.java     |   138 -
 .../cn/escheduler/api/dto/treeview/Instance.java   |   171 -
 .../escheduler/api/dto/treeview/TreeViewDto.java   |    84 -
 .../java/cn/escheduler/api/enums/ExecuteType.java  |    40 -
 .../main/java/cn/escheduler/api/enums/Status.java  |   265 -
 .../api/interceptor/DruidStatFilter.java           |    29 -
 .../api/interceptor/DruidStatViewServlet.java      |    34 -
 .../api/interceptor/LoginHandlerInterceptor.java   |   111 -
 .../main/java/cn/escheduler/api/log/LogClient.java |   134 -
 .../escheduler/api/service/AccessTokenService.java |   185 -
 .../escheduler/api/service/AlertGroupService.java  |   294 -
 .../cn/escheduler/api/service/BaseDAGService.java  |    89 -
 .../cn/escheduler/api/service/BaseService.java     |   113 -
 .../api/service/DataAnalysisService.java           |   386 -
 .../escheduler/api/service/DataSourceService.java  |   696 --
 .../cn/escheduler/api/service/ExecutorService.java |   536 -
 .../cn/escheduler/api/service/LoggerService.java   |    86 -
 .../cn/escheduler/api/service/MonitorService.java  |   122 -
 .../api/service/ProcessDefinitionService.java      |   851 --
 .../api/service/ProcessInstanceService.java        |   685 --
 .../cn/escheduler/api/service/ProjectService.java  |   376 -
 .../cn/escheduler/api/service/QueueService.java    |   256 -
 .../escheduler/api/service/ResourcesService.java   |   894 --
 .../escheduler/api/service/SchedulerService.java   |   582 -
 .../cn/escheduler/api/service/ServerService.java   |    77 -
 .../cn/escheduler/api/service/SessionService.java  |   133 -
 .../api/service/TaskInstanceService.java           |   132 -
 .../escheduler/api/service/TaskRecordService.java  |    85 -
 .../cn/escheduler/api/service/TenantService.java   |   309 -
 .../cn/escheduler/api/service/UdfFuncService.java  |   329 -
 .../cn/escheduler/api/service/UsersService.java    |   672 --
 .../escheduler/api/service/WorkerGroupService.java |   155 -
 .../java/cn/escheduler/api/utils/CheckUtils.java   |   163 -
 .../java/cn/escheduler/api/utils/Constants.java    |   129 -
 .../java/cn/escheduler/api/utils/FileUtils.java    |    79 -
 .../java/cn/escheduler/api/utils/PageInfo.java     |   117 -
 .../main/java/cn/escheduler/api/utils/Result.java  |    82 -
 .../cn/escheduler/api/utils/ZooKeeperState.java    |   211 -
 .../cn/escheduler/api/utils/ZookeeperMonitor.java  |   107 -
 .../src/main/resources/apiserver_logback.xml       |    42 -
 .../src/main/resources/application.properties      |    19 -
 .../src/main/resources/combined_logback.xml        |    54 -
 .../src/main/resources/i18n/messages.properties    |   229 -
 .../main/resources/i18n/messages_en_US.properties  |   229 -
 .../main/resources/i18n/messages_zh_CN.properties  |   227 -
 .../java/cn/escheduler/api/HttpClientTest.java     |   160 -
 .../api/controller/DataAnalysisControllerTest.java |    95 -
 .../api/controller/DataSourceControllerTest.java   |    94 -
 .../api/controller/ExecutorControllerTest.java     |    89 -
 .../api/controller/LoggerControllerTest.java       |    77 -
 .../api/controller/LoginControllerTest.java        |    74 -
 .../api/controller/MonitorControllerTest.java      |   105 -
 .../ProcessDefinitionControllerTest.java           |   102 -
 .../controller/ProcessInstanceControllerTest.java  |    72 -
 .../api/controller/ProjectControllerTest.java      |    75 -
 .../api/controller/QueueControllerTest.java        |   146 -
 .../api/controller/ResourcesControllerTest.java    |    96 -
 .../api/controller/SchedulerControllerTest.java    |    80 -
 .../api/controller/TaskInstanceControllerTest.java |    81 -
 .../api/controller/TenantControllerTest.java       |    69 -
 .../api/controller/UsersControllerTest.java        |    68 -
 .../api/service/DataAnalysisServiceTest.java       |    51 -
 .../api/service/DataSourceServiceTest.java         |    51 -
 .../api/service/ExecutorServiceTest.java           |    65 -
 .../escheduler/api/service/LoggerServiceTest.java  |    49 -
 .../api/service/ProcessDefinitionServiceTest.java  |    89 -
 .../api/service/ProcessInstanceServiceTest.java    |    90 -
 .../api/service/ResourcesServiceTest.java          |    52 -
 .../api/service/SchedulerServiceTest.java          |    57 -
 .../escheduler/api/service/SessionServiceTest.java |    50 -
 .../api/service/TaskInstanceServiceTest.java       |    57 -
 .../escheduler/api/service/TenantServiceTest.java  |    52 -
 .../escheduler/api/service/UdfFuncServiceTest.java |    58 -
 .../escheduler/api/service/UsersServiceTest.java   |    53 -
 .../api/utils/ZookeeperMonitorUtilsTest.java       |    29 -
 escheduler-common/pom.xml                          |   439 -
 .../main/java/cn/escheduler/common/Constants.java  |   904 --
 .../main/java/cn/escheduler/common/IStoppable.java |    29 -
 .../cn/escheduler/common/enums/AlertStatus.java    |    27 -
 .../java/cn/escheduler/common/enums/AlertType.java |    27 -
 .../cn/escheduler/common/enums/CommandType.java    |    40 -
 .../java/cn/escheduler/common/enums/CycleEnum.java |    28 -
 .../java/cn/escheduler/common/enums/DataType.java  |    35 -
 .../java/cn/escheduler/common/enums/DbType.java    |    33 -
 .../cn/escheduler/common/enums/DependResult.java   |    31 -
 .../cn/escheduler/common/enums/DependStrategy.java |    29 -
 .../escheduler/common/enums/DependentRelation.java |    25 -
 .../java/cn/escheduler/common/enums/Direct.java    |    27 -
 .../escheduler/common/enums/ExecutionStatus.java   |   101 -
 .../escheduler/common/enums/FailureStrategy.java   |    30 -
 .../main/java/cn/escheduler/common/enums/Flag.java |    33 -
 .../java/cn/escheduler/common/enums/Priority.java  |    31 -
 .../cn/escheduler/common/enums/ProgramType.java    |    30 -
 .../cn/escheduler/common/enums/ReleaseState.java   |    40 -
 .../cn/escheduler/common/enums/ResUploadType.java  |    29 -
 .../cn/escheduler/common/enums/ResourceType.java   |    27 -
 .../java/cn/escheduler/common/enums/RunMode.java   |    28 -
 .../common/enums/SelfDependStrategy.java           |    29 -
 .../java/cn/escheduler/common/enums/ShowType.java  |    34 -
 .../cn/escheduler/common/enums/TaskDependType.java |    30 -
 .../escheduler/common/enums/TaskRecordStatus.java  |    35 -
 .../cn/escheduler/common/enums/TaskStateType.java  |    67 -
 .../common/enums/TaskTimeoutStrategy.java          |    29 -
 .../java/cn/escheduler/common/enums/TaskType.java  |    40 -
 .../java/cn/escheduler/common/enums/UdfType.java   |    27 -
 .../java/cn/escheduler/common/enums/UserType.java  |    28 -
 .../cn/escheduler/common/enums/WarningType.java    |    31 -
 .../cn/escheduler/common/enums/ZKNodeType.java     |    15 -
 .../main/java/cn/escheduler/common/graph/DAG.java  |   519 -
 .../escheduler/common/job/db/BaseDataSource.java   |   112 -
 .../common/job/db/ClickHouseDataSource.java        |    75 -
 .../common/job/db/DataSourceFactory.java           |    56 -
 .../escheduler/common/job/db/HiveDataSource.java   |    84 -
 .../escheduler/common/job/db/MySQLDataSource.java  |    73 -
 .../escheduler/common/job/db/OracleDataSource.java |    75 -
 .../common/job/db/PostgreDataSource.java           |    77 -
 .../common/job/db/SQLServerDataSource.java         |    71 -
 .../escheduler/common/job/db/SparkDataSource.java  |    80 -
 .../cn/escheduler/common/model/DateInterval.java   |    62 -
 .../cn/escheduler/common/model/DependentItem.java  |    80 -
 .../common/model/DependentTaskModel.java           |    44 -
 .../java/cn/escheduler/common/model/TaskNode.java  |   324 -
 .../escheduler/common/model/TaskNodeRelation.java  |    67 -
 .../cn/escheduler/common/process/ProcessDag.java   |    85 -
 .../cn/escheduler/common/process/Property.java     |   143 -
 .../cn/escheduler/common/process/ResourceInfo.java |    37 -
 .../cn/escheduler/common/queue/ITaskQueue.java     |    95 -
 .../escheduler/common/queue/TaskQueueFactory.java  |    61 -
 .../escheduler/common/queue/TaskQueueZkImpl.java   |   433 -
 .../cn/escheduler/common/shell/AbstractShell.java  |   341 -
 .../cn/escheduler/common/shell/ShellExecutor.java  |   175 -
 .../escheduler/common/task/AbstractParameters.java |    69 -
 .../cn/escheduler/common/task/IParameters.java     |    38 -
 .../common/task/TaskTimeoutParameter.java          |    81 -
 .../common/task/dependent/DependentParameters.java |    58 -
 .../common/task/mr/MapreduceParameters.java        |   145 -
 .../common/task/procedure/ProcedureParameters.java |    89 -
 .../common/task/python/PythonParameters.java       |    67 -
 .../common/task/shell/ShellParameters.java         |    70 -
 .../common/task/spark/SparkParameters.java         |   220 -
 .../common/task/sql/LoggableStatement.java         |   559 -
 .../cn/escheduler/common/task/sql/SqlBinds.java    |    42 -
 .../escheduler/common/task/sql/SqlParameters.java  |   213 -
 .../cn/escheduler/common/task/sql/SqlType.java     |    27 -
 .../task/subprocess/SubProcessParameters.java      |    48 -
 .../java/cn/escheduler/common/thread/Stopper.java  |    39 -
 .../common/thread/ThreadPoolExecutors.java         |   310 -
 .../cn/escheduler/common/thread/ThreadUtils.java   |   202 -
 .../java/cn/escheduler/common/utils/Bytes.java     |   697 --
 .../escheduler/common/utils/CollectionUtils.java   |   292 -
 .../cn/escheduler/common/utils/CommonUtils.java    |    77 -
 .../java/cn/escheduler/common/utils/DateUtils.java |   356 -
 .../cn/escheduler/common/utils/DependentUtils.java |   144 -
 .../escheduler/common/utils/EncryptionUtils.java   |    37 -
 .../cn/escheduler/common/utils/EnumFieldUtil.java  |    36 -
 .../java/cn/escheduler/common/utils/FileUtils.java |   428 -
 .../cn/escheduler/common/utils/HadoopUtils.java    |   571 -
 .../java/cn/escheduler/common/utils/HttpUtils.java |   100 -
 .../java/cn/escheduler/common/utils/IpUtils.java   |    64 -
 .../java/cn/escheduler/common/utils/JSONUtils.java |   255 -
 .../cn/escheduler/common/utils/MysqlUtils.java     |   104 -
 .../java/cn/escheduler/common/utils/OSUtils.java   |   297 -
 .../cn/escheduler/common/utils/ParameterUtils.java |   176 -
 .../cn/escheduler/common/utils/PropertyUtils.java  |   215 -
 .../cn/escheduler/common/utils/SchemaUtils.java    |   150 -
 .../cn/escheduler/common/utils/ScriptRunner.java   |   317 -
 .../common/utils/TaskParametersUtils.java          |    74 -
 .../common/utils/dependent/DependentDateUtils.java |   169 -
 .../utils/placeholder/BusinessTimeUtils.java       |    72 -
 .../common/utils/placeholder/PlaceholderUtils.java |    99 -
 .../placeholder/PropertyPlaceholderHelper.java     |   254 -
 .../utils/placeholder/TimePlaceholderUtils.java    |   512 -
 .../cn/escheduler/common/zk/AbstractZKClient.java  |   429 -
 .../src/main/resources/common/common.properties    |    42 -
 .../main/resources/common/hadoop/hadoop.properties |    18 -
 .../src/main/resources/quartz.properties           |    39 -
 .../src/main/resources/zookeeper.properties        |    25 -
 .../java/cn/escheduler/common/graph/DAGTest.java   |   355 -
 .../java/cn/escheduler/common/os/OSUtilsTest.java  |   146 -
 .../java/cn/escheduler/common/os/OshiTest.java     |   112 -
 .../escheduler/common/queue/TaskQueueImplTest.java |   111 -
 .../escheduler/common/shell/ShellExecutorTest.java |    76 -
 .../threadutils/ThreadPoolExecutorsTest.java       |    53 -
 .../java/cn/escheduler/common/utils/BytesTest.java |   442 -
 .../common/utils/CollectionUtilsTest.java          |   152 -
 .../escheduler/common/utils/CommonUtilsTest.java   |    61 -
 .../cn/escheduler/common/utils/DateUtilsTest.java  |   202 -
 .../common/utils/DependentUtilsTest.java           |   200 -
 .../cn/escheduler/common/utils/FileUtilsTest.java  |    28 -
 .../escheduler/common/utils/HadoopUtilsTest.java   |    89 -
 .../common/utils/HttpUtilsTestInner.java           |    46 -
 .../cn/escheduler/common/utils/IpUtilsTest.java    |    41 -
 .../cn/escheduler/common/utils/JSONUtilsTest.java  |    92 -
 .../escheduler/common/utils/PropertyUtilsTest.java |    31 -
 .../cn/escheduler/common/utils/StringTest.java     |    60 -
 .../placeholder/TimePlaceholderUtilsTest.java      |    70 -
 escheduler-dao/pom.xml                             |   167 -
 .../java/cn/escheduler/dao/AbstractBaseDao.java    |    27 -
 .../src/main/java/cn/escheduler/dao/AlertDao.java  |   168 -
 .../main/java/cn/escheduler/dao/DaoFactory.java    |    63 -
 .../main/java/cn/escheduler/dao/MonitorDBDao.java  |   145 -
 .../main/java/cn/escheduler/dao/ProcessDao.java    |  1755 ---
 .../src/main/java/cn/escheduler/dao/ServerDao.java |   162 -
 .../main/java/cn/escheduler/dao/TaskRecordDao.java |   300 -
 .../dao/datasource/ConnectionFactory.java          |   126 -
 .../dao/datasource/DatabaseConfiguration.java      |    63 -
 .../escheduler/dao/mapper/AccessTokenMapper.java   |    90 -
 .../dao/mapper/AccessTokenMapperProvider.java      |   136 -
 .../cn/escheduler/dao/mapper/AlertGroupMapper.java |   149 -
 .../dao/mapper/AlertGroupMapperProvider.java       |   194 -
 .../java/cn/escheduler/dao/mapper/AlertMapper.java |   107 -
 .../escheduler/dao/mapper/AlertMapperProvider.java |   121 -
 .../cn/escheduler/dao/mapper/CommandMapper.java    |   124 -
 .../dao/mapper/CommandMapperProvider.java          |   171 -
 .../cn/escheduler/dao/mapper/DataSourceMapper.java |   232 -
 .../dao/mapper/DataSourceMapperProvider.java       |   246 -
 .../dao/mapper/DatasourceUserMapper.java           |    55 -
 .../dao/mapper/DatasourceUserMapperProvider.java   |    69 -
 .../escheduler/dao/mapper/ErrorCommandMapper.java  |    59 -
 .../dao/mapper/ErrorCommandMapperProvider.java     |    71 -
 .../escheduler/dao/mapper/MasterServerMapper.java  |    81 -
 .../dao/mapper/MasterServerMapperProvider.java     |    99 -
 .../cn/escheduler/dao/mapper/MonitorMapper.java    |    88 -
 .../dao/mapper/ProcessDefinitionMapper.java        |   258 -
 .../mapper/ProcessDefinitionMapperProvider.java    |   296 -
 .../dao/mapper/ProcessInstanceMapMapper.java       |   103 -
 .../mapper/ProcessInstanceMapMapperProvider.java   |   150 -
 .../dao/mapper/ProcessInstanceMapper.java          |   648 --
 .../dao/mapper/ProcessInstanceMapperProvider.java  |   592 -
 .../cn/escheduler/dao/mapper/ProjectMapper.java    |   196 -
 .../dao/mapper/ProjectMapperProvider.java          |   243 -
 .../escheduler/dao/mapper/ProjectUserMapper.java   |    83 -
 .../dao/mapper/ProjectUserMapperProvider.java      |   117 -
 .../java/cn/escheduler/dao/mapper/QueueMapper.java |   119 -
 .../escheduler/dao/mapper/QueueMapperProvider.java |   191 -
 .../cn/escheduler/dao/mapper/ResourceMapper.java   |   294 -
 .../dao/mapper/ResourceMapperProvider.java         |   313 -
 .../escheduler/dao/mapper/ResourcesUserMapper.java |    54 -
 .../dao/mapper/ResourcesUserMapperProvider.java    |    77 -
 .../cn/escheduler/dao/mapper/ScheduleMapper.java   |   208 -
 .../dao/mapper/ScheduleMapperProvider.java         |   214 -
 .../cn/escheduler/dao/mapper/SessionMapper.java    |    90 -
 .../dao/mapper/SessionMapperProvider.java          |   134 -
 .../escheduler/dao/mapper/TaskInstanceMapper.java  |   326 -
 .../dao/mapper/TaskInstanceMapperProvider.java     |   452 -
 .../cn/escheduler/dao/mapper/TenantMapper.java     |   139 -
 .../dao/mapper/TenantMapperProvider.java           |   182 -
 .../cn/escheduler/dao/mapper/UDFUserMapper.java    |    55 -
 .../dao/mapper/UDFUserMapperProvider.java          |    76 -
 .../cn/escheduler/dao/mapper/UdfFuncMapper.java    |   273 -
 .../dao/mapper/UdfFuncMapperProvider.java          |   253 -
 .../dao/mapper/UserAlertGroupMapper.java           |    92 -
 .../dao/mapper/UserAlertGroupMapperProvider.java   |    97 -
 .../java/cn/escheduler/dao/mapper/UserMapper.java  |   275 -
 .../escheduler/dao/mapper/UserMapperProvider.java  |   305 -
 .../escheduler/dao/mapper/WorkerGroupMapper.java   |   131 -
 .../dao/mapper/WorkerGroupMapperProvider.java      |   160 -
 .../escheduler/dao/mapper/WorkerServerMapper.java  |    91 -
 .../dao/mapper/WorkerServerMapperProvider.java     |   105 -
 .../java/cn/escheduler/dao/model/AccessToken.java  |   126 -
 .../main/java/cn/escheduler/dao/model/Alert.java   |   228 -
 .../java/cn/escheduler/dao/model/AlertGroup.java   |   115 -
 .../main/java/cn/escheduler/dao/model/Command.java |   266 -
 .../cn/escheduler/dao/model/CycleDependency.java   |    93 -
 .../java/cn/escheduler/dao/model/DataSource.java   |   186 -
 .../cn/escheduler/dao/model/DatasourceUser.java    |   115 -
 .../dao/model/DefinitionGroupByUser.java           |    62 -
 .../java/cn/escheduler/dao/model/Dependency.java   |    62 -
 .../java/cn/escheduler/dao/model/ErrorCommand.java |   291 -
 .../escheduler/dao/model/ExecuteStatusCount.java   |    61 -
 .../java/cn/escheduler/dao/model/MasterServer.java |   130 -
 .../cn/escheduler/dao/model/MonitorRecord.java     |   115 -
 .../java/cn/escheduler/dao/model/ProcessData.java  |   105 -
 .../cn/escheduler/dao/model/ProcessDefinition.java |   373 -
 .../cn/escheduler/dao/model/ProcessInstance.java   |   602 --
 .../escheduler/dao/model/ProcessInstanceMap.java   |    85 -
 .../main/java/cn/escheduler/dao/model/Project.java |   193 -
 .../java/cn/escheduler/dao/model/ProjectUser.java  |   143 -
 .../main/java/cn/escheduler/dao/model/Queue.java   |    98 -
 .../java/cn/escheduler/dao/model/Resource.java     |   209 -
 .../cn/escheduler/dao/model/ResourcesUser.java     |   115 -
 .../java/cn/escheduler/dao/model/Schedule.java     |   297 -
 .../main/java/cn/escheduler/dao/model/Session.java |    87 -
 .../java/cn/escheduler/dao/model/TaskInstance.java |   503 -
 .../java/cn/escheduler/dao/model/TaskRecord.java   |   256 -
 .../main/java/cn/escheduler/dao/model/Tenant.java  |   157 -
 .../main/java/cn/escheduler/dao/model/UDFUser.java |   115 -
 .../main/java/cn/escheduler/dao/model/UdfFunc.java |   225 -
 .../main/java/cn/escheduler/dao/model/User.java    |   262 -
 .../cn/escheduler/dao/model/UserAlertGroup.java    |   129 -
 .../java/cn/escheduler/dao/model/WorkerGroup.java  |    88 -
 .../java/cn/escheduler/dao/model/WorkerServer.java |   127 -
 .../cn/escheduler/dao/model/ZookeeperRecord.java   |   217 -
 .../escheduler/dao/upgrade/EschedulerManager.java  |    97 -
 .../java/cn/escheduler/dao/upgrade/UpgradeDao.java |   346 -
 .../dao/upgrade/shell/CreateEscheduler.java        |    45 -
 .../dao/upgrade/shell/InitEscheduler.java          |    38 -
 .../dao/upgrade/shell/UpgradeEscheduler.java       |    45 -
 .../java/cn/escheduler/dao/utils/DagHelper.java    |   330 -
 .../cn/escheduler/dao/utils/PropertyUtils.java     |   192 -
 .../escheduler/dao/utils/cron/AbstractCycle.java   |   169 -
 .../cn/escheduler/dao/utils/cron/CronUtils.java    |   207 -
 .../cn/escheduler/dao/utils/cron/CycleFactory.java |   211 -
 .../cn/escheduler/dao/utils/cron/CycleLinks.java   |    64 -
 .../src/main/resources/dao/data_source.properties  |    53 -
 .../java/cn/escheduler/dao/ProcessDaoTest.java     |    32 -
 .../java/cn/escheduler/dao/cron/CronUtilsTest.java |   181 -
 .../dao/mapper/AccessTokenMapperTest.java          |    62 -
 .../dao/mapper/AlertGroupMapperTest.java           |    59 -
 .../cn/escheduler/dao/mapper/AlertMapperTest.java  |    62 -
 .../escheduler/dao/mapper/CommandMapperTest.java   |    70 -
 .../dao/mapper/DataSourceMapperTest.java           |    67 -
 .../dao/mapper/MasterServerMapperTest.java         |    74 -
 .../dao/mapper/ProcessDefinitionMapperTest.java    |    76 -
 .../cn/escheduler/dao/mapper/TenantMapperTest.java |    60 -
 .../escheduler/dao/mapper/UdfFuncMapperTest.java   |    61 -
 .../dao/mapper/UserAlertGroupMapperTest.java       |    58 -
 .../cn/escheduler/dao/mapper/UserMapperTest.java   |    81 -
 .../dao/mapper/WorkerGroupMapperTest.java          |    69 -
 escheduler-rpc/pom.xml                             |   121 -
 .../java/cn/escheduler/rpc/LogViewServiceGrpc.java |   499 -
 escheduler-rpc/src/main/proto/scheduler.proto      |    83 -
 escheduler-server/pom.xml                          |   127 -
 escheduler-server/src/main/assembly/package.xml    |    74 -
 .../java/cn/escheduler/server/BeanContext.java     |    51 -
 .../main/java/cn/escheduler/server/ResInfo.java    |   157 -
 .../cn/escheduler/server/master/MasterServer.java  |   320 -
 .../server/master/log/MasterLogFilter.java         |    42 -
 .../master/runner/MasterBaseTaskExecThread.java    |   132 -
 .../server/master/runner/MasterExecThread.java     |  1042 --
 .../master/runner/MasterSchedulerThread.java       |   118 -
 .../server/master/runner/MasterTaskExecThread.java |   165 -
 .../master/runner/SubProcessTaskExecThread.java    |   178 -
 .../server/quartz/ProcessScheduleJob.java          |   151 -
 .../escheduler/server/quartz/QuartzExecutors.java  |   311 -
 .../java/cn/escheduler/server/rpc/LogClient.java   |   123 -
 .../cn/escheduler/server/rpc/LoggerServer.java     |   235 -
 .../cn/escheduler/server/utils/AlertManager.java   |   240 -
 .../cn/escheduler/server/utils/LoggerUtils.java    |    79 -
 .../cn/escheduler/server/utils/ParamUtils.java     |   103 -
 .../cn/escheduler/server/utils/ProcessUtils.java   |   321 -
 .../cn/escheduler/server/utils/SparkArgsUtils.java |   117 -
 .../java/cn/escheduler/server/utils/UDFUtils.java  |   109 -
 .../cn/escheduler/server/worker/WorkerServer.java  |   366 -
 .../server/worker/log/TaskLogAppender.java         |    59 -
 .../server/worker/log/TaskLogFilter.java           |    35 -
 .../escheduler/server/worker/log/TaskLogger.java   |   345 -
 .../server/worker/log/WorkerLogFilter.java         |    40 -
 .../server/worker/runner/FetchTaskThread.java      |   270 -
 .../server/worker/runner/TaskScheduleThread.java   |   391 -
 .../worker/task/AbstractCommandExecutor.java       |   560 -
 .../server/worker/task/AbstractTask.java           |    99 -
 .../server/worker/task/AbstractYarnTask.java       |    91 -
 .../server/worker/task/PythonCommandExecutor.java  |   150 -
 .../server/worker/task/ShellCommandExecutor.java   |    97 -
 .../escheduler/server/worker/task/TaskManager.java |    67 -
 .../escheduler/server/worker/task/TaskProps.java   |   236 -
 .../worker/task/dependent/DependentExecute.java    |   213 -
 .../worker/task/dependent/DependentTask.java       |   163 -
 .../server/worker/task/mr/MapReduceTask.java       |   143 -
 .../worker/task/processdure/ProcedureTask.java     |   342 -
 .../server/worker/task/python/PythonTask.java      |   166 -
 .../server/worker/task/shell/ShellTask.java        |   159 -
 .../server/worker/task/spark/SparkTask.java        |   112 -
 .../escheduler/server/worker/task/sql/SqlTask.java |   436 -
 .../cn/escheduler/server/zk/ZKMasterClient.java    |   546 -
 .../cn/escheduler/server/zk/ZKWorkerClient.java    |   259 -
 .../main/resources/application_master.properties   |     1 -
 .../src/main/resources/master.properties           |    21 -
 .../src/main/resources/master_logback.xml          |    34 -
 .../src/main/resources/worker.properties           |    15 -
 .../src/main/resources/worker_logback.xml          |    53 -
 .../escheduler/server/master/AlertManagerTest.java |   109 -
 .../server/master/MasterCommandTest.java           |   149 -
 .../cn/escheduler/server/master/ParamsTest.java    |   102 -
 .../cn/escheduler/server/worker/EnvFileTest.java   |    65 -
 .../worker/shell/ShellCommandExecutorTest.java     |   103 -
 .../server/worker/sql/SqlExecutorTest.java         |   146 -
 .../worker/task/dependent/DependentTaskTest.java   |    65 -
 .../escheduler/server/zk/ZKWorkerClientTest.java   |    35 -
 escheduler-ui/.editorconfig                        |    21 -
 escheduler-ui/.env                                 |     5 -
 escheduler-ui/.eslintrc                            |     6 -
 escheduler-ui/build/combo.js                       |   115 -
 escheduler-ui/build/config.js                      |   212 -
 escheduler-ui/build/webpack.config.combined.js     |    26 -
 escheduler-ui/build/webpack.config.dev.js          |   112 -
 escheduler-ui/build/webpack.config.prod.js         |   132 -
 escheduler-ui/build/webpack.config.test.js         |    88 -
 escheduler-ui/install-escheduler-ui.sh             |   219 -
 escheduler-ui/package.json                         |    94 -
 escheduler-ui/src/combo/1.0.0/3rd.css              |     5 -
 escheduler-ui/src/combo/1.0.0/3rd.js               | 10783 -------------------
 escheduler-ui/src/combo/1.0.0/base.css             |     8 -
 escheduler-ui/src/combo/1.0.0/es5.js               |    14 -
 escheduler-ui/src/combo/1.0.0/local.js             |     1 -
 escheduler-ui/src/font/awesome/FontAwesome.otf     |   Bin 134808 -> 0 bytes
 escheduler-ui/src/font/awesome/font-awesome.css    |  2337 ----
 .../src/font/awesome/fontawesome-webfont.eot       |   Bin 165742 -> 0 bytes
 .../src/font/awesome/fontawesome-webfont.svg       |  2671 -----
 .../src/font/awesome/fontawesome-webfont.ttf       |   Bin 165548 -> 0 bytes
 .../src/font/awesome/fontawesome-webfont.woff      |   Bin 98024 -> 0 bytes
 .../src/font/awesome/fontawesome-webfont.woff2     |   Bin 77160 -> 0 bytes
 escheduler-ui/src/font/demo.css                    |   539 -
 escheduler-ui/src/font/demo_index.html             |  2010 ----
 escheduler-ui/src/font/iconfont.css                |   337 -
 escheduler-ui/src/font/iconfont.eot                |   Bin 21160 -> 0 bytes
 escheduler-ui/src/font/iconfont.js                 |     1 -
 escheduler-ui/src/font/iconfont.svg                |   266 -
 escheduler-ui/src/font/iconfont.ttf                |   Bin 20992 -> 0 bytes
 escheduler-ui/src/font/iconfont.woff               |   Bin 12684 -> 0 bytes
 escheduler-ui/src/font/iconfont.woff2              |   Bin 11020 -> 0 bytes
 escheduler-ui/src/images/favicon.ico               |   Bin 4286 -> 0 bytes
 escheduler-ui/src/js/conf/home/App.vue             |    15 -
 escheduler-ui/src/js/conf/home/index.js            |    86 -
 .../src/js/conf/home/pages/dag/_source/config.js   |   284 -
 .../src/js/conf/home/pages/dag/_source/dag.js      |   119 -
 .../src/js/conf/home/pages/dag/_source/dag.scss    |   534 -
 .../src/js/conf/home/pages/dag/_source/dag.vue     |   519 -
 .../dag/_source/formModel/_source/selectInput.vue  |   101 -
 .../dag/_source/formModel/_source/timeoutAlarm.vue |   113 -
 .../dag/_source/formModel/_source/workerGroups.vue |    56 -
 .../pages/dag/_source/formModel/formModel.scss     |   109 -
 .../home/pages/dag/_source/formModel/formModel.vue |   470 -
 .../conf/home/pages/dag/_source/formModel/log.vue  |   356 -
 .../dag/_source/formModel/tasks/_source/commcon.js |   211 -
 .../_source/formModel/tasks/_source/datasource.vue |   133 -
 .../formModel/tasks/_source/dependItemList.vue     |   247 -
 .../_source/formModel/tasks/_source/listBox.vue    |    46 -
 .../formModel/tasks/_source/localParams.vue        |   228 -
 .../_source/formModel/tasks/_source/resources.vue  |   100 -
 .../_source/formModel/tasks/_source/sqlType.vue    |    57 -
 .../formModel/tasks/_source/statementList.vue      |   143 -
 .../dag/_source/formModel/tasks/_source/udfs.vue   |   116 -
 .../dag/_source/formModel/tasks/dependent.vue      |   237 -
 .../home/pages/dag/_source/formModel/tasks/mr.vue  |   264 -
 .../dag/_source/formModel/tasks/procedure.vue      |   134 -
 .../pages/dag/_source/formModel/tasks/python.vue   |   161 -
 .../pages/dag/_source/formModel/tasks/shell.vue    |   165 -
 .../pages/dag/_source/formModel/tasks/spark.vue    |   400 -
 .../home/pages/dag/_source/formModel/tasks/sql.vue |   387 -
 .../dag/_source/formModel/tasks/sub_process.vue    |   102 -
 .../home/pages/dag/_source/jumpAffirm/index.js     |   107 -
 .../pages/dag/_source/jumpAffirm/jumpAffirm.vue    |    39 -
 .../home/pages/dag/_source/plugIn/downChart.js     |   122 -
 .../conf/home/pages/dag/_source/plugIn/dragZoom.js |    40 -
 .../home/pages/dag/_source/plugIn/jsPlumbHandle.js |   763 --
 .../js/conf/home/pages/dag/_source/plugIn/util.js  |   143 -
 .../home/pages/dag/_source/startingParam/index.vue |   114 -
 .../pages/dag/_source/udp/_source/selectTenant.vue |    56 -
 .../src/js/conf/home/pages/dag/_source/udp/udp.vue |   255 -
 .../conf/home/pages/dag/_source/variable/index.vue |    34 -
 .../pages/dag/_source/variable/variablesView.vue   |   167 -
 .../js/conf/home/pages/dag/definitionDetails.vue   |    86 -
 .../conf/home/pages/dag/img/toolbar_DEPENDENT.png  |   Bin 2896 -> 0 bytes
 .../src/js/conf/home/pages/dag/img/toolbar_MR.png  |   Bin 3675 -> 0 bytes
 .../conf/home/pages/dag/img/toolbar_PROCEDURE.png  |   Bin 3464 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_PYTHON.png  |   Bin 3554 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_SHELL.png   |   Bin 3297 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_SPARK.png   |   Bin 4188 -> 0 bytes
 .../src/js/conf/home/pages/dag/img/toolbar_SQL.png |   Bin 3014 -> 0 bytes
 .../home/pages/dag/img/toolbar_SUB_PROCESS.png     |   Bin 2377 -> 0 bytes
 escheduler-ui/src/js/conf/home/pages/dag/index.vue |    69 -
 .../src/js/conf/home/pages/dag/instanceDetails.vue |    98 -
 .../src/js/conf/home/pages/datasource/index.vue    |     8 -
 .../pages/list/_source/createDataSource.vue        |   385 -
 .../pages/datasource/pages/list/_source/list.vue   |   157 -
 .../home/pages/datasource/pages/list/index.vue     |   130 -
 .../src/js/conf/home/pages/home/index.vue          |    12 -
 .../src/js/conf/home/pages/monitor/index.vue       |    14 -
 .../pages/monitor/pages/servers/_source/gauge.vue  |    62 -
 .../monitor/pages/servers/_source/gaugeOption.js   |   123 -
 .../pages/servers/_source/zookeeperList.vue        |   123 -
 .../home/pages/monitor/pages/servers/alert.vue     |    49 -
 .../home/pages/monitor/pages/servers/apiserver.vue |    40 -
 .../home/pages/monitor/pages/servers/master.vue    |    96 -
 .../home/pages/monitor/pages/servers/mysql.vue     |   121 -
 .../home/pages/monitor/pages/servers/rpcserver.vue |    40 -
 .../home/pages/monitor/pages/servers/servers.scss  |   118 -
 .../pages/monitor/pages/servers/statistics.vue     |   115 -
 .../home/pages/monitor/pages/servers/worker.vue    |    97 -
 .../home/pages/monitor/pages/servers/zookeeper.vue |    51 -
 .../src/js/conf/home/pages/projects/index.vue      |    55 -
 .../pages/_source/instanceConditions/common.js     |    68 -
 .../pages/_source/instanceConditions/index.vue     |   112 -
 .../_source/taskRecordList/_source/conditions.vue  |   141 -
 .../pages/_source/taskRecordList/_source/list.vue  |   103 -
 .../pages/_source/taskRecordList/index.vue         |    99 -
 .../home/pages/projects/pages/definition/index.vue |     8 -
 .../pages/definition/pages/create/index.vue        |    11 -
 .../pages/definition/pages/details/index.vue       |    11 -
 .../pages/definition/pages/list/_source/email.vue  |   358 -
 .../pages/definition/pages/list/_source/list.vue   |   355 -
 .../pages/definition/pages/list/_source/start.vue  |   309 -
 .../pages/definition/pages/list/_source/timing.vue |   374 -
 .../pages/definition/pages/list/_source/util.js    |    60 -
 .../projects/pages/definition/pages/list/index.vue |   101 -
 .../pages/definition/pages/tree/_source/tree.js    |   279 -
 .../pages/definition/pages/tree/_source/util.js    |    72 -
 .../projects/pages/definition/pages/tree/index.vue |   245 -
 .../pages/definition/timing/_source/list.vue       |   310 -
 .../projects/pages/definition/timing/index.vue     |    16 -
 .../projects/pages/historyTaskRecord/index.vue     |    18 -
 .../projects/pages/index/_source/chartConfig.js    |    99 -
 .../pages/index/_source/commandStateCount.vue      |    78 -
 .../pages/index/_source/defineUserCount.vue        |    69 -
 .../pages/index/_source/processStateCount.vue      |   122 -
 .../projects/pages/index/_source/queueCount.vue    |    85 -
 .../pages/index/_source/taskCtatusCount.vue        |   129 -
 .../conf/home/pages/projects/pages/index/index.vue |   132 -
 .../home/pages/projects/pages/instance/index.vue   |     8 -
 .../pages/instance/pages/details/index.vue         |    14 -
 .../pages/instance/pages/gantt/_source/gantt.js    |   167 -
 .../projects/pages/instance/pages/gantt/index.vue  |   164 -
 .../pages/instance/pages/list/_source/list.vue     |   540 -
 .../projects/pages/instance/pages/list/index.vue   |   164 -
 .../projects/pages/list/_source/createProject.vue  |    98 -
 .../pages/projects/pages/list/_source/list.vue     |   163 -
 .../conf/home/pages/projects/pages/list/index.vue  |   116 -
 .../projects/pages/taskInstance/_source/list.vue   |   147 -
 .../pages/projects/pages/taskInstance/index.vue    |   107 -
 .../home/pages/projects/pages/taskRecord/index.vue |    18 -
 .../home/pages/projects/pages/timing/index.vue     |    15 -
 .../src/js/conf/home/pages/resource/index.vue      |    13 -
 .../conf/home/pages/resource/pages/file/index.vue  |     8 -
 .../resource/pages/file/pages/_source/common.js    |    23 -
 .../resource/pages/file/pages/create/index.vue     |   169 -
 .../pages/file/pages/details/_source/noType.vue    |    22 -
 .../pages/file/pages/details/_source/utils.js      |    37 -
 .../resource/pages/file/pages/details/index.vue    |   239 -
 .../pages/resource/pages/file/pages/edit/index.vue |   208 -
 .../pages/file/pages/list/_source/list.vue         |   209 -
 .../pages/file/pages/list/_source/rename.vue       |   103 -
 .../pages/resource/pages/file/pages/list/index.vue |   101 -
 .../conf/home/pages/resource/pages/udf/index.vue   |     8 -
 .../pages/udf/pages/function/_source/createUdf.vue |   266 -
 .../pages/udf/pages/function/_source/list.vue      |   176 -
 .../resource/pages/udf/pages/function/index.vue    |   117 -
 .../pages/udf/pages/resource/_source/list.vue      |   184 -
 .../pages/udf/pages/resource/_source/rename.vue    |   102 -
 .../resource/pages/udf/pages/resource/index.vue    |    99 -
 .../src/js/conf/home/pages/security/index.vue      |    13 -
 .../security/pages/queue/_source/createQueue.vue   |   136 -
 .../pages/security/pages/queue/_source/list.vue    |   131 -
 .../conf/home/pages/security/pages/queue/index.vue |   123 -
 .../pages/tenement/_source/createTenement.vue      |   177 -
 .../pages/security/pages/tenement/_source/list.vue |   145 -
 .../home/pages/security/pages/tenement/index.vue   |   122 -
 .../conf/home/pages/security/pages/token/index.vue |    10 -
 .../security/pages/users/_source/createUser.vue    |   264 -
 .../pages/security/pages/users/_source/list.vue    |   393 -
 .../conf/home/pages/security/pages/users/index.vue |   122 -
 .../pages/warningGroups/_source/createWarning.vue  |   128 -
 .../security/pages/warningGroups/_source/list.vue  |   185 -
 .../pages/security/pages/warningGroups/index.vue   |   122 -
 .../pages/workerGroups/_source/createWorker.vue    |   118 -
 .../security/pages/workerGroups/_source/list.vue   |   115 -
 .../pages/security/pages/workerGroups/index.vue    |   121 -
 .../src/js/conf/home/pages/user/index.vue          |    14 -
 .../home/pages/user/pages/account/_source/info.vue |   140 -
 .../conf/home/pages/user/pages/account/index.vue   |    16 -
 .../pages/user/pages/password/_source/info.vue     |   140 -
 .../conf/home/pages/user/pages/password/index.vue  |    16 -
 .../pages/user/pages/token/_source/createToken.vue |   161 -
 .../home/pages/user/pages/token/_source/list.vue   |   117 -
 .../js/conf/home/pages/user/pages/token/index.vue  |   123 -
 escheduler-ui/src/js/conf/home/router/index.js     |   465 -
 .../src/js/conf/home/store/dag/actions.js          |   628 --
 .../src/js/conf/home/store/dag/mutations.js        |   136 -
 escheduler-ui/src/js/conf/home/store/dag/state.js  |    99 -
 .../src/js/conf/home/store/datasource/actions.js   |   129 -
 .../src/js/conf/home/store/datasource/mutations.js |    19 -
 escheduler-ui/src/js/conf/home/store/index.js      |    37 -
 .../src/js/conf/home/store/monitor/actions.js      |    57 -
 .../src/js/conf/home/store/projects/actions.js     |   129 -
 .../src/js/conf/home/store/projects/state.js       |    19 -
 .../src/js/conf/home/store/resource/actions.js     |   176 -
 .../src/js/conf/home/store/security/actions.js     |   483 -
 .../src/js/conf/home/store/security/state.js       |    20 -
 .../src/js/conf/home/store/user/actions.js         |   123 -
 escheduler-ui/src/js/conf/login/App.vue            |   181 -
 escheduler-ui/src/js/conf/login/img/login-logo.png |   Bin 8007 -> 0 bytes
 escheduler-ui/src/js/conf/login/index.js           |    56 -
 .../js/module/components/conditions/conditions.vue |    64 -
 .../js/module/components/fileUpdate/fileUpdate.vue |   290 -
 .../js/module/components/fileUpdate/udfUpdate.vue  |   184 -
 .../src/js/module/components/layout/layout.vue     |    39 -
 .../src/js/module/components/listBoxF/listBoxF.vue |    59 -
 .../listConstruction/listConstruction.vue          |    29 -
 .../src/js/module/components/nav/logo.png          |   Bin 5888 -> 0 bytes
 .../src/js/module/components/nav/m_logo.png        |   Bin 3571 -> 0 bytes
 escheduler-ui/src/js/module/components/nav/nav.vue |   442 -
 .../src/js/module/components/noData/noData.vue     |    41 -
 .../src/js/module/components/popup/popup.vue       |    89 -
 .../src/js/module/components/priority/priority.vue |   128 -
 .../module/components/progressBar/progressBar.vue  |    67 -
 .../components/secondaryMenu/_source/menu.js       |   265 -
 .../components/secondaryMenu/secondaryMenu.vue     |   180 -
 .../src/js/module/components/spin/spin.vue         |    64 -
 .../components/tooltipsJSON/tooltipsJSON.vue       |    45 -
 .../src/js/module/components/transfer/transfer.vue |   197 -
 escheduler-ui/src/js/module/download/index.js      |    44 -
 escheduler-ui/src/js/module/i18n/index.js          |    74 -
 escheduler-ui/src/js/module/i18n/locale/en_US.js   |   475 -
 escheduler-ui/src/js/module/i18n/locale/zh_CN.js   |   476 -
 escheduler-ui/src/js/module/io/index.js            |    87 -
 escheduler-ui/src/js/module/mixin/disabledState.js |    38 -
 .../src/js/module/mixin/listUrlParamHandle.js      |    55 -
 escheduler-ui/src/js/module/permissions/index.js   |    63 -
 escheduler-ui/src/js/module/util/clickoutside.js   |    31 -
 escheduler-ui/src/js/module/util/cookie.js         |    89 -
 escheduler-ui/src/js/module/util/index.js          |    79 -
 escheduler-ui/src/js/module/util/routerUtil.js     |    25 -
 escheduler-ui/src/js/module/util/util.js           |    77 -
 .../src/lib/@analysys/ana-charts/README.md         |   405 -
 .../src/lib/@analysys/ana-charts/build/config.js   |    60 -
 .../ana-charts/build/webpack.config.prod.js        |   104 -
 .../src/lib/@analysys/ana-charts/dist/index.js     |     2 -
 .../src/lib/@analysys/ana-charts/dist/index.js.map |     1 -
 .../src/lib/@analysys/ana-charts/example/app.vue   |    87 -
 .../lib/@analysys/ana-charts/example/index.html    |    15 -
 .../src/lib/@analysys/ana-charts/example/index.js  |    14 -
 .../lib/@analysys/ana-charts/example/mock/data.js  |    58 -
 .../@analysys/ana-charts/example/mock/theme.json   |   494 -
 .../@analysys/ana-charts/example/packages/bar.vue  |    72 -
 .../ana-charts/example/packages/funnel.vue         |    23 -
 .../@analysys/ana-charts/example/packages/line.vue |    29 -
 .../@analysys/ana-charts/example/packages/pie.vue  |    29 -
 .../ana-charts/example/packages/radar.vue          |    23 -
 .../ana-charts/example/packages/scatter.vue        |    23 -
 .../@analysys/ana-charts/example/router/index.js   |    53 -
 .../@analysys/ana-charts/example/styles/main.scss  |    77 -
 .../src/lib/@analysys/ana-charts/package.json      |    65 -
 .../src/lib/@analysys/ana-charts/postcss.config.js |     7 -
 escheduler-ui/src/lib/@analysys/ans-ui/README.md   |    55 -
 .../src/lib/@analysys/ans-ui/lib/ans-ui.min.css    |     1 -
 .../src/lib/@analysys/ans-ui/lib/ans-ui.min.js     |    40 -
 .../src/lib/@analysys/ans-ui/lib/font/iconfont.eot |   Bin 7428 -> 0 bytes
 .../src/lib/@analysys/ans-ui/lib/font/iconfont.svg |   104 -
 .../src/lib/@analysys/ans-ui/lib/font/iconfont.ttf |   Bin 7260 -> 0 bytes
 .../lib/@analysys/ans-ui/lib/font/iconfont.woff    |   Bin 4256 -> 0 bytes
 .../src/lib/@analysys/ans-ui/lib/locale/en.js      |     2 -
 .../src/lib/@analysys/ans-ui/lib/locale/en.js.map  |     1 -
 .../src/lib/@analysys/ans-ui/lib/locale/zh-CN.js   |     2 -
 .../lib/@analysys/ans-ui/lib/locale/zh-CN.js.map   |     1 -
 .../src/lib/@analysys/ans-ui/package.json          |    96 -
 .../@analysys/ans-ui/packages/vue-box/README.md    |    73 -
 .../ans-ui/packages/vue-box/example/app.vue        |   221 -
 .../ans-ui/packages/vue-box/example/index.html     |    16 -
 .../ans-ui/packages/vue-box/example/index.js       |    10 -
 .../@analysys/ans-ui/packages/vue-box/src/index.js |     9 -
 .../packages/vue-box/src/source/base/Box.vue       |   135 -
 .../vue-box/src/source/base/BoxManager.vue         |   106 -
 .../packages/vue-box/src/source/base/index.js      |    40 -
 .../vue-box/src/source/layer/message/message.js    |    99 -
 .../vue-box/src/source/layer/modal/modal.js        |   203 -
 .../vue-box/src/source/layer/notice/notice.js      |   104 -
 .../@analysys/ans-ui/packages/vue-button/README.md |    28 -
 .../ans-ui/packages/vue-button/example/app.vue     |   227 -
 .../ans-ui/packages/vue-button/example/index.html  |    16 -
 .../ans-ui/packages/vue-button/example/index.js    |    10 -
 .../ans-ui/packages/vue-button/src/index.js        |     7 -
 .../packages/vue-button/src/source/Button.vue      |   145 -
 .../packages/vue-button/src/source/ButtonGroup.vue |   152 -
 .../ans-ui/packages/vue-cascader/README.md         |    32 -
 .../ans-ui/packages/vue-cascader/example/app.vue   |    83 -
 .../ans-ui/packages/vue-cascader/example/data.js   |   635 --
 .../packages/vue-cascader/example/index.html       |    16 -
 .../ans-ui/packages/vue-cascader/example/index.js  |    10 -
 .../ans-ui/packages/vue-cascader/src/index.js      |     8 -
 .../packages/vue-cascader/src/source/Cascader.vue  |   440 -
 .../packages/vue-cascader/src/source/Caspanel.vue  |   213 -
 .../ans-ui/packages/vue-checkbox/README.md         |    31 -
 .../ans-ui/packages/vue-checkbox/example/app.vue   |    48 -
 .../packages/vue-checkbox/example/index.html       |    16 -
 .../ans-ui/packages/vue-checkbox/example/index.js  |    10 -
 .../ans-ui/packages/vue-checkbox/src/index.js      |     7 -
 .../packages/vue-checkbox/src/source/Checkbox.vue  |   117 -
 .../vue-checkbox/src/source/CheckboxGroup.vue      |    64 -
 .../ans-ui/packages/vue-datepicker/README.md       |    30 -
 .../ans-ui/packages/vue-datepicker/example/app.vue |   103 -
 .../packages/vue-datepicker/example/index.html     |    16 -
 .../packages/vue-datepicker/example/index.js       |    10 -
 .../ans-ui/packages/vue-datepicker/src/index.js    |     4 -
 .../vue-datepicker/src/source/base/confirm.vue     |    69 -
 .../vue-datepicker/src/source/base/day.vue         |   260 -
 .../vue-datepicker/src/source/base/time.vue        |   180 -
 .../vue-datepicker/src/source/base/years.vue       |   120 -
 .../vue-datepicker/src/source/datepicker.vue       |   406 -
 .../vue-datepicker/src/source/panel/date.vue       |   114 -
 .../vue-datepicker/src/source/panel/daterange.vue  |   436 -
 .../vue-datepicker/src/source/panel/month.vue      |    41 -
 .../vue-datepicker/src/source/panel/time.vue       |     0
 .../vue-datepicker/src/source/panel/year.vue       |     0
 .../vue-datepicker/src/source/util/date.js         |   324 -
 .../vue-datepicker/src/source/util/isType.js       |    12 -
 .../vue-datepicker/src/source/util/isValid.js      |    12 -
 .../vue-datepicker/src/source/util/ishms.js        |    15 -
 .../vue-datepicker/src/source/util/todate.js       |     9 -
 .../@analysys/ans-ui/packages/vue-drawer/README.md |    15 -
 .../ans-ui/packages/vue-drawer/example/app.vue     |    68 -
 .../ans-ui/packages/vue-drawer/example/index.html  |    16 -
 .../ans-ui/packages/vue-drawer/example/index.js    |     7 -
 .../ans-ui/packages/vue-drawer/example/test.vue    |    18 -
 .../ans-ui/packages/vue-drawer/src/index.js        |     5 -
 .../packages/vue-drawer/src/source/drawer.js       |    33 -
 .../@analysys/ans-ui/packages/vue-form/README.md   |    41 -
 .../ans-ui/packages/vue-form/example/app.vue       |   141 -
 .../ans-ui/packages/vue-form/example/index.html    |    16 -
 .../ans-ui/packages/vue-form/example/index.js      |    10 -
 .../ans-ui/packages/vue-form/src/index.js          |     7 -
 .../ans-ui/packages/vue-form/src/source/Form.vue   |    93 -
 .../packages/vue-form/src/source/FormItem.vue      |   253 -
 .../@analysys/ans-ui/packages/vue-input/README.md  |    57 -
 .../ans-ui/packages/vue-input/example/app.vue      |   122 -
 .../ans-ui/packages/vue-input/example/index.html   |    16 -
 .../ans-ui/packages/vue-input/example/index.js     |    10 -
 .../ans-ui/packages/vue-input/src/index.js         |     5 -
 .../ans-ui/packages/vue-input/src/source/Input.vue |   354 -
 .../src/source/util/calcTextareaHeight.js          |   105 -
 .../ans-ui/packages/vue-pagination/README.md       |    24 -
 .../ans-ui/packages/vue-pagination/example/app.vue |    64 -
 .../packages/vue-pagination/example/index.html     |    16 -
 .../packages/vue-pagination/example/index.js       |    10 -
 .../ans-ui/packages/vue-pagination/src/index.js    |     3 -
 .../packages/vue-pagination/src/source/Page.vue    |   432 -
 .../@analysys/ans-ui/packages/vue-poptip/README.md |    38 -
 .../ans-ui/packages/vue-poptip/example/app.vue     |    91 -
 .../ans-ui/packages/vue-poptip/example/index.html  |    16 -
 .../ans-ui/packages/vue-poptip/example/index.js    |    13 -
 .../ans-ui/packages/vue-poptip/src/index.js        |    13 -
 .../packages/vue-poptip/src/source/Poptip.vue      |   254 -
 .../packages/vue-poptip/src/source/directive.js    |     8 -
 .../ans-ui/packages/vue-progress/README.md         |    25 -
 .../ans-ui/packages/vue-progress/example/app.vue   |   104 -
 .../packages/vue-progress/example/index.html       |    16 -
 .../ans-ui/packages/vue-progress/example/index.js  |    10 -
 .../ans-ui/packages/vue-progress/src/index.js      |     5 -
 .../packages/vue-progress/src/source/Progress.vue  |   172 -
 .../@analysys/ans-ui/packages/vue-radio/README.md  |    36 -
 .../ans-ui/packages/vue-radio/example/app.vue      |    71 -
 .../ans-ui/packages/vue-radio/example/index.html   |    16 -
 .../ans-ui/packages/vue-radio/example/index.js     |    10 -
 .../ans-ui/packages/vue-radio/src/index.js         |     7 -
 .../ans-ui/packages/vue-radio/src/source/Radio.vue |   154 -
 .../packages/vue-radio/src/source/RadioGroup.vue   |    74 -
 .../ans-ui/packages/vue-scroller/README.md         |    42 -
 .../ans-ui/packages/vue-scroller/example/app.vue   |    28 -
 .../packages/vue-scroller/example/index.html       |    14 -
 .../ans-ui/packages/vue-scroller/example/index.js  |    10 -
 .../ans-ui/packages/vue-scroller/src/index.js      |     5 -
 .../src/source/HorizontalScrollbar.vue             |   144 -
 .../packages/vue-scroller/src/source/Scroller.vue  |   459 -
 .../vue-scroller/src/source/VerticalScrollbar.vue  |   144 -
 .../@analysys/ans-ui/packages/vue-select/README.md |    80 -
 .../ans-ui/packages/vue-select/example/app.vue     |   354 -
 .../ans-ui/packages/vue-select/example/async.vue   |   137 -
 .../ans-ui/packages/vue-select/example/dynamic.vue |   128 -
 .../ans-ui/packages/vue-select/example/index.html  |    16 -
 .../ans-ui/packages/vue-select/example/index.js    |    10 -
 .../packages/vue-select/example/navigation.vue     |   111 -
 .../ans-ui/packages/vue-select/src/index.js        |     9 -
 .../packages/vue-select/src/source/Option.vue      |   114 -
 .../packages/vue-select/src/source/OptionGroup.vue |    40 -
 .../packages/vue-select/src/source/Select.vue      |   682 --
 .../vue-select/src/source/SelectDropdown.vue       |    99 -
 .../@analysys/ans-ui/packages/vue-spin/README.md   |    33 -
 .../ans-ui/packages/vue-spin/example/app.vue       |   126 -
 .../ans-ui/packages/vue-spin/example/index.html    |    16 -
 .../ans-ui/packages/vue-spin/example/index.js      |    13 -
 .../ans-ui/packages/vue-spin/src/index.js          |    17 -
 .../ans-ui/packages/vue-spin/src/source/Spin.vue   |    57 -
 .../packages/vue-spin/src/source/directive.js      |   101 -
 .../ans-ui/packages/vue-spin/src/source/service.js |    96 -
 .../@analysys/ans-ui/packages/vue-switch/README.md |    23 -
 .../ans-ui/packages/vue-switch/example/app.vue     |    53 -
 .../ans-ui/packages/vue-switch/example/index.html  |    16 -
 .../ans-ui/packages/vue-switch/example/index.js    |    10 -
 .../ans-ui/packages/vue-switch/src/index.js        |     3 -
 .../packages/vue-switch/src/source/Switch.vue      |   107 -
 .../@analysys/ans-ui/packages/vue-table/README.md  |    86 -
 .../ans-ui/packages/vue-table/example/app.vue      |   318 -
 .../ans-ui/packages/vue-table/example/array.vue    |    31 -
 .../ans-ui/packages/vue-table/example/dynamic.vue  |    99 -
 .../ans-ui/packages/vue-table/example/index.html   |    15 -
 .../ans-ui/packages/vue-table/example/index.js     |    10 -
 .../ans-ui/packages/vue-table/example/indexs.json  |     1 -
 .../ans-ui/packages/vue-table/example/paging.vue   |    54 -
 .../ans-ui/packages/vue-table/example/restrict.vue |    67 -
 .../ans-ui/packages/vue-table/example/sort.vue     |    65 -
 .../ans-ui/packages/vue-table/example/tree.vue     |    62 -
 .../ans-ui/packages/vue-table/src/index.js         |     7 -
 .../ans-ui/packages/vue-table/src/source/Table.vue |   750 --
 .../packages/vue-table/src/source/TableBody.vue    |   163 -
 .../packages/vue-table/src/source/TableColumn.vue  |   240 -
 .../packages/vue-table/src/source/TableHeader.vue  |   172 -
 .../packages/vue-table/src/source/TableTd.vue      |   152 -
 .../packages/vue-table/src/source/TableTh.vue      |   222 -
 .../packages/vue-table/src/source/cellRenderer.js  |    43 -
 .../ans-ui/packages/vue-table/src/source/layout.js |   276 -
 .../vue-table/src/source/layoutObserver.js         |    41 -
 .../ans-ui/packages/vue-table/src/source/store.js  |   660 --
 .../ans-ui/packages/vue-timepicker/README.md       |    30 -
 .../ans-ui/packages/vue-timepicker/example/app.vue |    41 -
 .../packages/vue-timepicker/example/index.html     |    16 -
 .../packages/vue-timepicker/example/index.js       |    10 -
 .../ans-ui/packages/vue-timepicker/src/index.js    |     3 -
 .../vue-timepicker/src/source/Timepicker.vue       |   263 -
 .../ans-ui/packages/vue-tooltip/README.md          |    27 -
 .../ans-ui/packages/vue-tooltip/example/app.vue    |   100 -
 .../ans-ui/packages/vue-tooltip/example/index.html |    16 -
 .../ans-ui/packages/vue-tooltip/example/index.js   |    13 -
 .../ans-ui/packages/vue-tooltip/src/index.js       |    11 -
 .../packages/vue-tooltip/src/source/Tooltip.vue    |    59 -
 .../packages/vue-tooltip/src/source/directive.js   |    82 -
 .../packages/vue-tooltip/src/source/factory.js     |    39 -
 .../src/lib/@analysys/ans-ui/src/index.js          |   108 -
 .../src/lib/@analysys/ans-ui/src/locale/format.js  |    43 -
 .../src/lib/@analysys/ans-ui/src/locale/index.js   |    48 -
 .../src/lib/@analysys/ans-ui/src/locale/lang/en.js |    70 -
 .../lib/@analysys/ans-ui/src/locale/lang/zh-CN.js  |    70 -
 .../src/style/animation/attentionSeekers.scss      |   599 -
 .../src/style/animation/bouncingEntrances.scss     |   354 -
 .../ans-ui/src/style/animation/bouncingExits.scss  |   173 -
 .../src/style/animation/fadingEntrances.scss       |   246 -
 .../ans-ui/src/style/animation/fadingExits.scss    |   212 -
 .../ans-ui/src/style/animation/flippers.scss       |   290 -
 .../ans-ui/src/style/animation/index.scss          |    90 -
 .../ans-ui/src/style/animation/lightspeed.scss     |    72 -
 .../src/style/animation/rotatingEntrances.scss     |   181 -
 .../ans-ui/src/style/animation/rotatingExits.scss  |   160 -
 .../src/style/animation/slidingEntrances.scss      |   115 -
 .../ans-ui/src/style/animation/slidingExits.scss   |    93 -
 .../ans-ui/src/style/animation/specials.scss       |   173 -
 .../ans-ui/src/style/animation/zoomEntrances.scss  |   169 -
 .../ans-ui/src/style/animation/zoomExits.scss      |   174 -
 .../src/lib/@analysys/ans-ui/src/style/common.scss |   293 -
 .../ans-ui/src/style/components/box/box.scss       |     3 -
 .../ans-ui/src/style/components/box/message.scss   |    82 -
 .../ans-ui/src/style/components/box/modal.scss     |   100 -
 .../ans-ui/src/style/components/box/notice.scss    |   116 -
 .../ans-ui/src/style/components/button/button.scss |   122 -
 .../ans-ui/src/style/components/button/mixin.scss  |   346 -
 .../src/style/components/cascader/cascader.scss    |   122 -
 .../src/style/components/checkbox/checkbox.scss    |   103 -
 .../style/components/datepicker/datepicker.scss    |   419 -
 .../ans-ui/src/style/components/drawer/drawer.scss |   164 -
 .../ans-ui/src/style/components/form/form.scss     |    36 -
 .../ans-ui/src/style/components/index.scss         |    18 -
 .../ans-ui/src/style/components/input/input.scss   |   162 -
 .../style/components/pagination/pagination.scss    |   150 -
 .../ans-ui/src/style/components/poptip/poptip.scss |    52 -
 .../src/style/components/progress/progress.scss    |    89 -
 .../ans-ui/src/style/components/radio/radio.scss   |   195 -
 .../src/style/components/scroller/scroller.scss    |    59 -
 .../ans-ui/src/style/components/select/select.scss |   266 -
 .../ans-ui/src/style/components/spin/spin.scss     |    41 -
 .../ans-ui/src/style/components/switch/switch.scss |   136 -
 .../ans-ui/src/style/components/table/table.scss   |   255 -
 .../src/style/components/tooltip/tooltip.scss      |    33 -
 .../src/lib/@analysys/ans-ui/src/style/font.scss   |    67 -
 .../@analysys/ans-ui/src/style/font/iconfont.eot   |   Bin 7428 -> 0 bytes
 .../@analysys/ans-ui/src/style/font/iconfont.svg   |   104 -
 .../@analysys/ans-ui/src/style/font/iconfont.ttf   |   Bin 7260 -> 0 bytes
 .../@analysys/ans-ui/src/style/font/iconfont.woff  |   Bin 4256 -> 0 bytes
 .../src/lib/@analysys/ans-ui/src/style/index.scss  |     5 -
 .../src/lib/@analysys/ans-ui/src/style/vars.scss   |    48 -
 .../src/lib/@analysys/ans-ui/src/util/assist.js    |    59 -
 .../src/lib/@analysys/ans-ui/src/util/constants.js |     2 -
 .../@analysys/ans-ui/src/util/customRenderer.js    |    15 -
 .../ans-ui/src/util/directives/clickOutside.js     |    63 -
 .../@analysys/ans-ui/src/util/directives/index.js  |     7 -
 .../ans-ui/src/util/directives/mousewheel.js       |    16 -
 .../ans-ui/src/util/dom/animatedScroll.js          |    90 -
 .../src/lib/@analysys/ans-ui/src/util/dom/class.js |    79 -
 .../src/lib/@analysys/ans-ui/src/util/dom/index.js |    14 -
 .../@analysys/ans-ui/src/util/dom/limitedLoop.js   |    36 -
 .../ans-ui/src/util/dom/scrollIntoView.js          |    17 -
 .../ans-ui/src/util/dom/scrollbarWidth.js          |    25 -
 .../src/lib/@analysys/ans-ui/src/util/dom/style.js |    15 -
 .../src/lib/@analysys/ans-ui/src/util/event.js     |    18 -
 .../src/lib/@analysys/ans-ui/src/util/index.js     |    13 -
 .../src/lib/@analysys/ans-ui/src/util/lang.js      |    50 -
 .../@analysys/ans-ui/src/util/mixins/emitter.js    |    34 -
 .../lib/@analysys/ans-ui/src/util/mixins/index.js  |     9 -
 .../lib/@analysys/ans-ui/src/util/mixins/locale.js |     9 -
 .../lib/@analysys/ans-ui/src/util/mixins/popper.js |   166 -
 escheduler-ui/src/lib/@fedor/io/README.md          |   127 -
 escheduler-ui/src/lib/@fedor/io/dist/io.esm.js     |  1426 ---
 escheduler-ui/src/lib/@fedor/io/dist/io.js         |  1430 ---
 escheduler-ui/src/lib/@fedor/io/dist/io.min.js     |     4 -
 escheduler-ui/src/lib/@fedor/io/package.json       |    74 -
 .../@fedor/progress-webpack-plugin/lib/index.js    |    81 -
 .../@fedor/progress-webpack-plugin/package.json    |    17 -
 .../component-compiler-utils/.circleci/config.yml  |    31 -
 .../@vue/component-compiler-utils/.prettierrc.js   |     4 -
 .../lib/@vue/component-compiler-utils/CHANGELOG.md |   125 -
 .../lib/@vue/component-compiler-utils/README.md    |   146 -
 .../dist/compileStyle.d.ts                         |    25 -
 .../component-compiler-utils/dist/compileStyle.js  |    78 -
 .../dist/compileTemplate.d.ts                      |    22 -
 .../dist/compileTemplate.js                        |   106 -
 .../@vue/component-compiler-utils/dist/index.d.ts  |     5 -
 .../@vue/component-compiler-utils/dist/index.js    |     9 -
 .../@vue/component-compiler-utils/dist/parse.d.ts  |    32 -
 .../@vue/component-compiler-utils/dist/parse.js    |    53 -
 .../dist/stylePlugins/scoped.d.ts                  |     3 -
 .../dist/stylePlugins/scoped.js                    |    95 -
 .../dist/stylePlugins/trim.d.ts                    |     3 -
 .../dist/stylePlugins/trim.js                      |    10 -
 .../dist/styleProcessors/index.d.ts                |    11 -
 .../dist/styleProcessors/index.js                  |    87 -
 .../dist/templateCompilerModules/assetUrl.d.ts     |     8 -
 .../dist/templateCompilerModules/assetUrl.js       |    44 -
 .../dist/templateCompilerModules/srcset.d.ts       |     5 -
 .../dist/templateCompilerModules/srcset.js         |    51 -
 .../dist/templateCompilerModules/utils.d.ts        |     9 -
 .../dist/templateCompilerModules/utils.js          |    17 -
 .../@vue/component-compiler-utils/dist/types.d.ts  |    30 -
 .../@vue/component-compiler-utils/dist/types.js    |     2 -
 .../component-compiler-utils/lib/compileStyle.ts   |   143 -
 .../lib/compileTemplate.ts                         |   176 -
 .../lib/@vue/component-compiler-utils/lib/index.ts |    28 -
 .../lib/@vue/component-compiler-utils/lib/parse.ts |   112 -
 .../lib/stylePlugins/scoped.ts                     |    99 -
 .../lib/stylePlugins/trim.ts                       |    10 -
 .../lib/styleProcessors/index.ts                   |   133 -
 .../lib/templateCompilerModules/assetUrl.ts        |    51 -
 .../lib/templateCompilerModules/srcset.ts          |    66 -
 .../lib/templateCompilerModules/utils.ts           |    23 -
 .../lib/@vue/component-compiler-utils/lib/types.ts |    47 -
 .../lib/@vue/component-compiler-utils/package.json |    64 -
 escheduler-ui/src/lib/@vue/crontab/README.md       |    30 -
 escheduler-ui/src/lib/@vue/crontab/build/config.js |    65 -
 .../lib/@vue/crontab/build/webpack.config.prod.js  |   106 -
 escheduler-ui/src/lib/@vue/crontab/dist/index.css  |     1 -
 escheduler-ui/src/lib/@vue/crontab/dist/index.js   |     2 -
 .../src/lib/@vue/crontab/dist/index.js.map         |     1 -
 escheduler-ui/src/lib/@vue/crontab/example/app.vue |    48 -
 .../src/lib/@vue/crontab/example/index.html        |    14 -
 .../src/lib/@vue/crontab/example/index.js          |    14 -
 escheduler-ui/src/lib/@vue/crontab/package.json    |    63 -
 .../src/lib/@vue/crontab/postcss.config.js         |     7 -
 escheduler-ui/src/lib/external/config.js           |     7 -
 escheduler-ui/src/lib/external/email.js            |     1 -
 escheduler-ui/src/sass/common/_animation.scss      |  3651 -------
 escheduler-ui/src/sass/common/_font.scss           |    19 -
 escheduler-ui/src/sass/common/_mixin.scss          |    16 -
 escheduler-ui/src/sass/common/_normalize.scss      |   303 -
 escheduler-ui/src/sass/common/_table.scss          |   119 -
 escheduler-ui/src/sass/common/index.scss           |   209 -
 escheduler-ui/src/sass/conf/home/index.scss        |    95 -
 escheduler-ui/src/view/common/meta.inc             |    24 -
 escheduler-ui/src/view/common/outro.inc            |     8 -
 .../gitbook/gitbook-plugin-livereload/plugin.js    |    11 -
 .../src/view/docs/zh_CN/_book/gitbook/gitbook.js   |     4 -
 .../src/view/docs/zh_CN/_book/gitbook/theme.js     |     4 -
 .../src/view/docs/zh_CN/_book/images/addtenant.png |   Bin 15441 -> 0 bytes
 .../view/docs/zh_CN/_book/images/auth_project.png  |   Bin 17445 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/auth_user.png |   Bin 10254 -> 0 bytes
 .../docs/zh_CN/_book/images/complement_data.png    |   Bin 51964 -> 0 bytes
 .../docs/zh_CN/_book/images/definition_create.png  |   Bin 98363 -> 0 bytes
 .../docs/zh_CN/_book/images/definition_edit.png    |   Bin 17822 -> 0 bytes
 .../docs/zh_CN/_book/images/definition_list.png    |   Bin 101977 -> 0 bytes
 .../view/docs/zh_CN/_book/images/dependent_1.jpg   |   Bin 53841 -> 0 bytes
 .../view/docs/zh_CN/_book/images/dependent_2.jpg   |   Bin 52663 -> 0 bytes
 .../docs/zh_CN/_book/images/dependent_edit.png     |   Bin 65166 -> 0 bytes
 .../docs/zh_CN/_book/images/dependent_edit2.png    |   Bin 102250 -> 0 bytes
 .../docs/zh_CN/_book/images/dependent_edit3.png    |   Bin 79104 -> 0 bytes
 .../docs/zh_CN/_book/images/dependent_edit4.png    |   Bin 92018 -> 0 bytes
 .../view/docs/zh_CN/_book/images/file_create.png   |   Bin 48006 -> 0 bytes
 .../view/docs/zh_CN/_book/images/file_detail.png   |   Bin 169913 -> 0 bytes
 .../view/docs/zh_CN/_book/images/file_rename.png   |   Bin 9581 -> 0 bytes
 .../view/docs/zh_CN/_book/images/file_upload.png   |   Bin 14500 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/gantt.png     |   Bin 54791 -> 0 bytes
 .../docs/zh_CN/_book/images/global_parameter.png   |   Bin 103757 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/hive_edit.png |   Bin 29701 -> 0 bytes
 .../view/docs/zh_CN/_book/images/hive_edit2.png    |   Bin 34062 -> 0 bytes
 .../docs/zh_CN/_book/images/local_parameter.png    |   Bin 23793 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/login.png     |   Bin 14225 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/logout.png    |   Bin 6790 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/mail_edit.png |   Bin 14438 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/master.png    |   Bin 18047 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/mr_edit.png   |   Bin 136183 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/mr_java.png   |   Bin 135161 -> 0 bytes
 .../view/docs/zh_CN/_book/images/mysql_edit.png    |   Bin 32995 -> 0 bytes
 .../docs/zh_CN/_book/images/postgresql_edit.png    |   Bin 32368 -> 0 bytes
 .../docs/zh_CN/_book/images/procedure_edit.png     |   Bin 89355 -> 0 bytes
 .../docs/zh_CN/_book/images/process_instance.png   |   Bin 134309 -> 0 bytes
 .../zh_CN/_book/images/process_instance_edit.png   |   Bin 17982 -> 0 bytes
 .../view/docs/zh_CN/_book/images/project_edit.png  |   Bin 9767 -> 0 bytes
 .../view/docs/zh_CN/_book/images/project_index.png |   Bin 122208 -> 0 bytes
 .../view/docs/zh_CN/_book/images/python_edit.png   |   Bin 467741 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/scheduler.png |   Bin 31707 -> 0 bytes
 .../view/docs/zh_CN/_book/images/scheduler2.png    |   Bin 19009 -> 0 bytes
 .../view/docs/zh_CN/_book/images/shell_edit.png    |   Bin 157618 -> 0 bytes
 .../docs/zh_CN/_book/images/spark_datesource.png   |   Bin 29955 -> 0 bytes
 .../view/docs/zh_CN/_book/images/spark_edit.png    |   Bin 123946 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/sql_edit.png  |   Bin 162274 -> 0 bytes
 .../docs/zh_CN/_book/images/start_from_current.png |   Bin 62858 -> 0 bytes
 .../zh_CN/_book/images/start_from_current2.png     |   Bin 33259 -> 0 bytes
 .../view/docs/zh_CN/_book/images/start_process.png |   Bin 26647 -> 0 bytes
 .../docs/zh_CN/_book/images/subprocess_edit.png    |   Bin 76964 -> 0 bytes
 .../view/docs/zh_CN/_book/images/task_history.png  |   Bin 109027 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/task_list.png |   Bin 81986 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/task_log.png  |   Bin 108881 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/task_log2.png |   Bin 94446 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/tree_view.png |   Bin 81493 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/udf_edit.png  |   Bin 26472 -> 0 bytes
 .../view/docs/zh_CN/_book/images/user_manager.png  |   Bin 18714 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/useredit.png  |   Bin 11625 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/useredit2.png |   Bin 17285 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/userinfo.png  |   Bin 17066 -> 0 bytes
 .../view/docs/zh_CN/_book/images/variable_view.png |   Bin 17287 -> 0 bytes
 .../docs/zh_CN/_book/images/variable_view2.png     |   Bin 28679 -> 0 bytes
 .../src/view/docs/zh_CN/_book/images/worker.png    |   Bin 22719 -> 0 bytes
 escheduler-ui/src/view/docs/zh_CN/_book/index.html |   961 --
 .../docs/zh_CN/_book/pages/deploy-background.html  |  1626 ---
 .../docs/zh_CN/_book/pages/deploy-foreground.html  |  1169 --
 .../view/docs/zh_CN/_book/pages/development.html   |  1056 --
 .../docs/zh_CN/_book/pages/guide-architecture.html |  1116 --
 .../view/docs/zh_CN/_book/pages/guide-manual.html  |  1714 ---
 .../src/view/docs/zh_CN/_book/search_index.json    |     1 -
 escheduler-ui/src/view/home/index.html             |    21 -
 escheduler-ui/src/view/login/index.html            |    13 -
 install.sh                                         |   494 +-
 licenses/LICENSE-mybatis.txt                       |    13 +
 mvnw                                               |   310 +
 mvnw.cmd                                           |   182 +
 package.xml                                        |    90 -
 pom.xml                                            |  1468 ++-
 script/config/install_config.conf                  |     3 -
 script/config/run_config.conf                      |     4 -
 script/create-dolphinscheduler.sh                  |    37 +
 script/create_escheduler.sh                        |    21 -
 script/del_zk_node.py                              |    17 -
 script/dolphinscheduler-daemon.sh                  |   144 +
 script/env/.escheduler_env.sh                      |     9 -
 script/env/dolphinscheduler_env.sh                 |    28 +
 script/escheduler-daemon.sh                        |   110 -
 script/monitor-server.sh                           |    52 +
 script/monitor_server.py                           |   100 -
 script/remove-zk-node.sh                           |    48 +
 script/scp-hosts.sh                                |    69 +
 script/scp_hosts.sh                                |    23 -
 script/start-all.sh                                |    57 +
 script/start_all.sh                                |    34 -
 script/stop-all.sh                                 |    57 +
 script/stop_all.sh                                 |    35 -
 script/upgrade-dolphinscheduler.sh                 |    37 +
 script/upgrade_escheduler.sh                       |    21 -
 .../mysql/dolphinscheduler_ddl.sql                 |   618 ++
 .../mysql/dolphinscheduler_dml.sql                 |    24 +
 .../release-1.0.0_schema/mysql/escheduler_ddl.sql  |   601 --
 .../release-1.0.0_schema/mysql/escheduler_dml.sql  |     7 -
 .../postgresql/dolphinscheduler_ddl.sql            |   757 ++
 .../postgresql/dolphinscheduler_dml.sql            |    31 +
 sql/dolphinscheduler-postgre.sql                   |   764 ++
 sql/dolphinscheduler_mysql.sql                     |   818 ++
 sql/soft_version                                   |     2 +-
 .../1.0.1_schema/mysql/dolphinscheduler_ddl.sql    |    58 +
 .../1.0.1_schema/mysql/dolphinscheduler_dml.sql    |    16 +
 sql/upgrade/1.0.1_schema/mysql/escheduler_ddl.sql  |    41 -
 sql/upgrade/1.0.1_schema/mysql/escheduler_dml.sql  |     0
 .../1.0.2_schema/mysql/dolphinscheduler_ddl.sql    |   262 +
 .../1.0.2_schema/mysql/dolphinscheduler_dml.sql    |    18 +
 sql/upgrade/1.0.2_schema/mysql/escheduler_ddl.sql  |   245 -
 sql/upgrade/1.0.2_schema/mysql/escheduler_dml.sql  |     1 -
 .../1.1.0_schema/mysql/dolphinscheduler_ddl.sql    |    58 +
 .../1.1.0_schema/mysql/dolphinscheduler_dml.sql    |    16 +
 sql/upgrade/1.1.0_schema/mysql/escheduler_ddl.sql  |    41 -
 .../1.2.0_schema/mysql/dolphinscheduler_ddl.sql    |   623 ++
 .../1.2.0_schema/mysql/dolphinscheduler_dml.sql    |    26 +
 .../postgresql/dolphinscheduler_ddl.sql            |    16 +
 .../postgresql/dolphinscheduler_dml.sql            |    16 +
 .../1.3.0_schema/mysql/dolphinscheduler_ddl.sql    |   279 +
 .../1.3.0_schema/mysql/dolphinscheduler_dml.sql    |    27 +
 .../postgresql/dolphinscheduler_ddl.sql            |   285 +
 .../postgresql/dolphinscheduler_dml.sql            |    25 +
 .../1.3.2_schema/mysql/dolphinscheduler_ddl.sql    |    16 +
 .../1.3.2_schema/mysql/dolphinscheduler_dml.sql    |    19 +
 .../postgresql/dolphinscheduler_ddl.sql            |    16 +
 .../postgresql/dolphinscheduler_dml.sql            |    17 +
 .../1.3.3_schema/mysql/dolphinscheduler_ddl.sql    |    43 +
 .../1.3.3_schema/mysql/dolphinscheduler_dml.sql    |    16 +
 .../postgresql/dolphinscheduler_ddl.sql            |    34 +
 .../postgresql/dolphinscheduler_dml.sql            |    16 +
 style/checkstyle-suppressions.xml                  |    24 +
 style/checkstyle.xml                               |   265 +
 tools/dependencies/check-LICENSE.sh                |    39 +
 tools/dependencies/known-dependencies.txt          |   209 +
 2706 files changed, 239012 insertions(+), 166830 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
deleted file mode 100644
index c8f7e46..0000000
--- a/.asf.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-github:
-  description: "Dolphin Scheduler is a distributed and easy-to-extend visual workflow scheduling platform, dedicated to solving the complex dependencies in data processing, making the scheduling system out of the box for data processing.(分布式易扩展的可视化工作流任务调度)"
-  labels:
-    - workflow-engine
-    - workflow
-    - workflow-system
-    - etl-dependency
-    - workflow-platform
-    - distributed-schedule-system
-    - schedule
-    - cronjob
-    - task-schedule
-    - workflow-schedule
-    - azkaban
-    - oozie
-    - airflow
-    - data processing
-  homepage: https://dolphinscheduler.apache.org
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 891c617..dc797cf 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,17 +1,19 @@
 ---
 name: Bug report
 about: Create a report to help us improve
-title: ''
-labels: ''
+title: "[BUG] bug title "
+labels: bug
 assignees: ''
 
 ---
 
+*For better global communication, please give priority to using English description, thx! *
+
 **Describe the bug**
 A clear and concise description of what the bug is.
 
 **To Reproduce**
-Steps to reproduce the behavior:
+Steps to reproduce the behavior, for example:
 1. Go to '...'
 2. Click on '....'
 3. Scroll down to '....'
@@ -23,5 +25,12 @@ A clear and concise description of what you expected to happen.
 **Screenshots**
 If applicable, add screenshots to help explain your problem.
 
+
+**Which version of Dolphin Scheduler:**
+ -[1.1.0-preview]
+
 **Additional context**
 Add any other context about the problem here.
+
+**Requirement or improvement
+- Please describe about your requirements or improvement suggestions.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index bbcbbe7..8cd481d 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,8 +1,8 @@
 ---
 name: Feature request
 about: Suggest an idea for this project
-title: ''
-labels: ''
+title: "[Feature]"
+labels: new feature
 assignees: ''
 
 ---
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
new file mode 100644
index 0000000..59c8ce7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -0,0 +1,23 @@
+---
+name: question
+about: have a question wanted to be help
+title: "[QUESTION] question title"
+labels: question
+assignees: ''
+
+---
+
+*For better global communication, please give priority to using English description, thx! *
+
+**Describe the question**
+A clear and concise description of what the question is.
+
+
+**Which version of DolphinScheduler:**
+ -[1.1.0-preview]
+
+**Additional context**
+Add any other context about the problem here.
+
+**Requirement or improvement
+- Please describe about your requirements or improvement suggestions.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..6235a6c
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,32 @@
+## *Tips*
+- *Thanks very much for contributing to Apache DolphinScheduler.*
+- *Please review https://dolphinscheduler.apache.org/en-us/community/index.html before opening a pull request.*
+
+## What is the purpose of the pull request
+
+*(For example: This pull request adds checkstyle plugin.)*
+
+## Brief change log
+
+*(for example:)*
+  - *Add maven-checkstyle-plugin to root pom.xml*
+
+## Verify this pull request
+
+*(Please pick either of the following options)*
+
+This pull request is code cleanup without any test coverage.
+
+*(or)*
+
+This pull request is already covered by existing tests, such as *(please describe tests)*.
+
+(or)
+
+This change added tests and can be verified as follows:
+
+*(example:)*
+
+  - *Added dolphinscheduler-dao tests for end-to-end.*
+  - *Added CronUtilsTest to verify the change.*
+  - *Manually verified the change by testing locally.*
diff --git a/.github/workflows/ci_backend.yml b/.github/workflows/ci_backend.yml
new file mode 100644
index 0000000..c24a3ec
--- /dev/null
+++ b/.github/workflows/ci_backend.yml
@@ -0,0 +1,64 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Backend
+
+on:
+  push:
+    paths:
+      - '.github/workflows/ci_backend.yml'
+      - 'package.xml'
+      - 'pom.xml'
+      - 'dolphinscheduler-alert/**'
+      - 'dolphinscheduler-api/**'
+      - 'dolphinscheduler-common/**'
+      - 'dolphinscheduler-dao/**'
+      - 'dolphinscheduler-rpc/**'
+      - 'dolphinscheduler-server/**'
+  pull_request:
+    paths:
+      - '.github/workflows/ci_backend.yml'
+      - 'package.xml'
+      - 'pom.xml'
+      - 'dolphinscheduler-alert/**'
+      - 'dolphinscheduler-api/**'
+      - 'dolphinscheduler-common/**'
+      - 'dolphinscheduler-dao/**'
+      - 'dolphinscheduler-rpc/**'
+      - 'dolphinscheduler-server/**'
+
+jobs:
+  Compile-check:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      # In the checkout@v2, it doesn't support git submodule. Execute the commands manually.
+      - name: checkout submodules
+        shell: bash
+        run: |
+          git submodule sync --recursive
+          git -c protocol.version=2 submodule update --init --force --recursive --depth=1
+      - name: Set up JDK 1.8
+        uses: actions/setup-java@v1
+        with:
+          java-version: 1.8
+      - name: Check license
+        run: ./mvnw -B apache-rat:check
+      - name: Compile
+        run: mvn -B clean compile install -Prelease -Dmaven.test.skip=true
+      - name: Check dependency license
+        run: tools/dependencies/check-LICENSE.sh
diff --git a/.github/workflows/ci_e2e.yml b/.github/workflows/ci_e2e.yml
new file mode 100644
index 0000000..ebd5364
--- /dev/null
+++ b/.github/workflows/ci_e2e.yml
@@ -0,0 +1,74 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+on: ["pull_request"]
+env:
+  DOCKER_DIR: ./docker
+  LOG_DIR: /tmp/dolphinscheduler
+
+name: e2e Test
+
+jobs:
+
+  build:
+    name: Test
+    runs-on: ubuntu-latest
+    steps:
+
+      - uses: actions/checkout@v2
+      # In the checkout@v2, it doesn't support git submodule. Execute the commands manually.
+      - name: checkout submodules
+        shell: bash
+        run: |
+          git submodule sync --recursive
+          git -c protocol.version=2 submodule update --init --force --recursive --depth=1
+      - uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+      - name: Build Image
+        run: |
+          sh ./docker/build/hooks/build
+      - name: Docker Run
+        run: |
+          export VERSION=$(cat $(pwd)/pom.xml | grep '<version>' -m 1 | awk '{print $1}' | sed 's/<version>//' | sed 's/<\/version>//')
+          sed -i "s/apache\/dolphinscheduler:latest/apache\/dolphinscheduler:${VERSION}/g" $(pwd)/docker/docker-swarm/docker-compose.yml
+          docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml up -d
+      - name: Check Server Status
+        run: sh $(pwd)/docker/docker-swarm/check
+      - name: Prepare e2e env
+        run: |
+          sudo apt-get install -y libxss1 libappindicator1 libindicator7 xvfb unzip libgbm1
+          wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
+          sudo dpkg -i google-chrome*.deb
+          sudo apt-get install -f -y
+          google-chrome -version
+          googleVersion=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
+          wget -N https://chromedriver.storage.googleapis.com/${googleVersion}/chromedriver_linux64.zip
+          unzip chromedriver_linux64.zip
+          sudo mv -f chromedriver /usr/local/share/chromedriver
+          sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
+      - name: Run e2e Test
+        run: cd ./e2e && mvn -B clean test
+      - name: Collect logs
+        if: failure()
+        uses: actions/upload-artifact@v2
+        with:
+          name: dslogs
+          path: ${{ github.workspace }}/docker/docker-swarm/dolphinscheduler-logs
\ No newline at end of file
diff --git a/.github/workflows/ci_frontend.yml b/.github/workflows/ci_frontend.yml
new file mode 100644
index 0000000..b8e1125
--- /dev/null
+++ b/.github/workflows/ci_frontend.yml
@@ -0,0 +1,71 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Frontend
+
+on:
+  push:
+    paths:
+      - '.github/workflows/ci_frontend.yml'
+      - 'dolphinscheduler-ui/**'
+  pull_request:
+    paths:
+      - '.github/workflows/ci_frontend.yml'
+      - 'dolphinscheduler-ui/**'
+
+jobs:
+  Compile-check:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest]
+    steps:
+      - uses: actions/checkout@v2
+      # In the checkout@v2, it doesn't support git submodule. Execute the commands manually.
+      - name: checkout submodules
+        shell: bash
+        run: |
+          git submodule sync --recursive
+          git -c protocol.version=2 submodule update --init --force --recursive --depth=1
+      - name: Set up Node.js
+        uses: actions/setup-node@v1
+        with:
+          version: 8
+      - name: Compile
+        run: |
+          cd dolphinscheduler-ui
+          npm install node-sass --unsafe-perm
+          npm install
+          npm run lint
+          npm run build
+
+  License-check:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      # In the checkout@v2, it doesn't support git submodule. Execute the commands manually.
+      - name: checkout submodules
+        shell: bash
+        run: |
+          git submodule sync --recursive
+          git -c protocol.version=2 submodule update --init --force --recursive --depth=1
+      - name: Set up JDK 1.8
+        uses: actions/setup-java@v1
+        with:
+          java-version: 1.8
+      - name: Check
+        run: mvn -B apache-rat:check
diff --git a/.github/workflows/ci_ut.yml b/.github/workflows/ci_ut.yml
new file mode 100644
index 0000000..c32caf1
--- /dev/null
+++ b/.github/workflows/ci_ut.yml
@@ -0,0 +1,93 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+on:
+  pull_request:
+  push:
+    branches:
+      - dev
+env:
+  LOG_DIR: /tmp/dolphinscheduler
+
+name: Unit Test
+
+jobs:
+
+  build:
+    name: Build
+    runs-on: ubuntu-latest
+    steps:
+
+      - uses: actions/checkout@v2
+      # In the checkout@v2, it doesn't support git submodule. Execute the commands manually.
+      - name: checkout submodules
+        shell: bash
+        run: |
+          git submodule sync --recursive
+          git -c protocol.version=2 submodule update --init --force --recursive --depth=1
+      - uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+      - name: Bootstrap database
+        run: |
+          sed -i "s/: root/: test/g" $(pwd)/docker/docker-swarm/docker-compose.yml
+          docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml create --force-recreate dolphinscheduler-zookeeper dolphinscheduler-postgresql
+          sudo cp $(pwd)/sql/dolphinscheduler-postgre.sql $(docker volume inspect docker-swarm_dolphinscheduler-postgresql-initdb | grep "Mountpoint" | awk -F "\"" '{print $4}')
+          docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml up -d dolphinscheduler-zookeeper dolphinscheduler-postgresql
+      - name: Set up JDK 1.8
+        uses: actions/setup-java@v1
+        with:
+          java-version: 1.8
+      - name: Git fetch unshallow
+        run: |
+          git fetch --unshallow
+          git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
+          git fetch origin
+      - name: Compile
+        run: |
+          export MAVEN_OPTS='-Dmaven.repo.local=.m2/repository -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -Xmx5g'
+          mvn test -B -Dmaven.test.skip=false
+      - name: Upload coverage report to codecov
+        run: |
+          CODECOV_TOKEN="09c2663f-b091-4258-8a47-c981827eb29a" bash <(curl -s https://codecov.io/bash)
+      # Set up JDK 11 for SonarCloud.
+      - name: Set up JDK 1.11
+        uses: actions/setup-java@v1
+        with:
+          java-version: 1.11
+      - name: Run SonarCloud Analysis
+        run: >
+          mvn --batch-mode verify sonar:sonar
+          -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml
+          -Dmaven.test.skip=true
+          -Dsonar.host.url=https://sonarcloud.io
+          -Dsonar.organization=apache
+          -Dsonar.core.codeCoveragePlugin=jacoco
+          -Dsonar.projectKey=apache-dolphinscheduler
+          -Dsonar.login=e4058004bc6be89decf558ac819aa1ecbee57682
+          -Dsonar.exclusions=dolphinscheduler-ui/src/**/i18n/locale/*.js
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+      - name: Collect logs
+        run: |
+          mkdir -p ${LOG_DIR}
+          docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml logs dolphinscheduler-postgresql > ${LOG_DIR}/db.txt
+        continue-on-error: true
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 40078a2..a2bc772 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,26 +4,24 @@
 .zip
 .gz
 .DS_Store
-.idea
 .idea/
-.idea/*
-.target
-.target/
-target/*
-*/target
-*/target/*
+dist/
+all-dependencies.txt
+self-modules.txt
+third-party-dependencies.txt
+**/target/
 .settings
 .nbproject
 .classpath
 .project
-*.iml
+**/*.iml
 *.ipr
 *.iws
 *.tgz
 .*.swp
 .vim
 .tmp
-node_modules
+**/node_modules
 npm-debug.log
 .vscode
 logs/*
@@ -35,112 +33,14 @@ config.gypi
 test/coverage
 /docs/zh_CN/介绍
 /docs/zh_CN/贡献代码.md
-/escheduler-common/src/main/resources/zookeeper.properties
-escheduler-alert/logs/
-escheduler-alert/src/main/resources/alert.properties_bak
-escheduler-alert/src/main/resources/logback.xml
-escheduler-server/src/main/resources/logback.xml
-escheduler-ui/dist/css/common.16ac5d9.css
-escheduler-ui/dist/css/home/index.b444b91.css
-escheduler-ui/dist/css/login/index.5866c64.css
-escheduler-ui/dist/js/0.ac94e5d.js
-escheduler-ui/dist/js/0.ac94e5d.js.map
-escheduler-ui/dist/js/1.0b043a3.js
-escheduler-ui/dist/js/1.0b043a3.js.map
-escheduler-ui/dist/js/10.1bce3dc.js
-escheduler-ui/dist/js/10.1bce3dc.js.map
-escheduler-ui/dist/js/11.79f04d8.js
-escheduler-ui/dist/js/11.79f04d8.js.map
-escheduler-ui/dist/js/12.420daa5.js
-escheduler-ui/dist/js/12.420daa5.js.map
-escheduler-ui/dist/js/13.e5bae1c.js
-escheduler-ui/dist/js/13.e5bae1c.js.map
-escheduler-ui/dist/js/14.f2a0dca.js
-escheduler-ui/dist/js/14.f2a0dca.js.map
-escheduler-ui/dist/js/15.45373e8.js
-escheduler-ui/dist/js/15.45373e8.js.map
-escheduler-ui/dist/js/16.fecb0fc.js
-escheduler-ui/dist/js/16.fecb0fc.js.map
-escheduler-ui/dist/js/17.84be279.js
-escheduler-ui/dist/js/17.84be279.js.map
-escheduler-ui/dist/js/18.307ea70.js
-escheduler-ui/dist/js/18.307ea70.js.map
-escheduler-ui/dist/js/19.144db9c.js
-escheduler-ui/dist/js/19.144db9c.js.map
-escheduler-ui/dist/js/2.8b4ef29.js
-escheduler-ui/dist/js/2.8b4ef29.js.map
-escheduler-ui/dist/js/20.4c527e9.js
-escheduler-ui/dist/js/20.4c527e9.js.map
-escheduler-ui/dist/js/21.831b2a2.js
-escheduler-ui/dist/js/21.831b2a2.js.map
-escheduler-ui/dist/js/22.2b4bb2a.js
-escheduler-ui/dist/js/22.2b4bb2a.js.map
-escheduler-ui/dist/js/23.81467ef.js
-escheduler-ui/dist/js/23.81467ef.js.map
-escheduler-ui/dist/js/24.54a00e4.js
-escheduler-ui/dist/js/24.54a00e4.js.map
-escheduler-ui/dist/js/25.8d7bd36.js
-escheduler-ui/dist/js/25.8d7bd36.js.map
-escheduler-ui/dist/js/26.2ec5e78.js
-escheduler-ui/dist/js/26.2ec5e78.js.map
-escheduler-ui/dist/js/27.3ab48c2.js
-escheduler-ui/dist/js/27.3ab48c2.js.map
-escheduler-ui/dist/js/28.363088a.js
-escheduler-ui/dist/js/28.363088a.js.map
-escheduler-ui/dist/js/29.6c5853a.js
-escheduler-ui/dist/js/29.6c5853a.js.map
-escheduler-ui/dist/js/3.a0edb5b.js
-escheduler-ui/dist/js/3.a0edb5b.js.map
-escheduler-ui/dist/js/30.940fdd3.js
-escheduler-ui/dist/js/30.940fdd3.js.map
-escheduler-ui/dist/js/31.168a460.js
-escheduler-ui/dist/js/31.168a460.js.map
-escheduler-ui/dist/js/32.8df6594.js
-escheduler-ui/dist/js/32.8df6594.js.map
-escheduler-ui/dist/js/33.4480bbe.js
-escheduler-ui/dist/js/33.4480bbe.js.map
-escheduler-ui/dist/js/34.b407fe1.js
-escheduler-ui/dist/js/34.b407fe1.js.map
-escheduler-ui/dist/js/35.f340b0a.js
-escheduler-ui/dist/js/35.f340b0a.js.map
-escheduler-ui/dist/js/36.8880c2d.js
-escheduler-ui/dist/js/36.8880c2d.js.map
-escheduler-ui/dist/js/37.ea2a25d.js
-escheduler-ui/dist/js/37.ea2a25d.js.map
-escheduler-ui/dist/js/38.98a59ee.js
-escheduler-ui/dist/js/38.98a59ee.js.map
-escheduler-ui/dist/js/39.a5e958a.js
-escheduler-ui/dist/js/39.a5e958a.js.map
-escheduler-ui/dist/js/4.4ca44db.js
-escheduler-ui/dist/js/4.4ca44db.js.map
-escheduler-ui/dist/js/40.e187b1e.js
-escheduler-ui/dist/js/40.e187b1e.js.map
-escheduler-ui/dist/js/41.0e89182.js
-escheduler-ui/dist/js/41.0e89182.js.map
-escheduler-ui/dist/js/42.341047c.js
-escheduler-ui/dist/js/42.341047c.js.map
-escheduler-ui/dist/js/43.27b8228.js
-escheduler-ui/dist/js/43.27b8228.js.map
-escheduler-ui/dist/js/44.e8869bc.js
-escheduler-ui/dist/js/44.e8869bc.js.map
-escheduler-ui/dist/js/45.8d54901.js
-escheduler-ui/dist/js/45.8d54901.js.map
-escheduler-ui/dist/js/5.e1ed7f3.js
-escheduler-ui/dist/js/5.e1ed7f3.js.map
-escheduler-ui/dist/js/6.241ba07.js
-escheduler-ui/dist/js/6.241ba07.js.map
-escheduler-ui/dist/js/7.ab2e297.js
-escheduler-ui/dist/js/7.ab2e297.js.map
-escheduler-ui/dist/js/8.83ff814.js
-escheduler-ui/dist/js/8.83ff814.js.map
-escheduler-ui/dist/js/9.39cb29f.js
-escheduler-ui/dist/js/9.39cb29f.js.map
-escheduler-ui/dist/js/common.733e342.js
-escheduler-ui/dist/js/common.733e342.js.map
-escheduler-ui/dist/js/home/index.78a5d12.js
-escheduler-ui/dist/js/home/index.78a5d12.js.map
-escheduler-ui/dist/js/login/index.291b8e3.js
-escheduler-ui/dist/js/login/index.291b8e3.js.map
-escheduler-ui/dist/lib/external/
-escheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/index.vue
-/escheduler-dao/src/main/resources/dao/data_source.properties
+/dolphinscheduler-common/src/main/resources/zookeeper.properties
+dolphinscheduler-alert/logs/
+dolphinscheduler-alert/src/main/resources/alert.properties_bak
+dolphinscheduler-alert/src/main/resources/logback.xml
+dolphinscheduler-server/src/main/resources/logback.xml
+dolphinscheduler-ui/dist/
+dolphinscheduler-ui/node
+dolphinscheduler-dao/src/main/resources/dao/data_source.properties
+
+.mvn/wrapper/*.jar
+
diff --git a/.mvn/jvm.config b/.mvn/jvm.config
new file mode 100644
index 0000000..20be3f8
--- /dev/null
+++ b/.mvn/jvm.config
@@ -0,0 +1 @@
+-Xmx1024m -XX:MaxMetaspaceSize=256m
diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
new file mode 100644
index 0000000..b901097
--- /dev/null
+++ b/.mvn/wrapper/MavenWrapperDownloader.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2007-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+    private static final String WRAPPER_VERSION = "0.5.6";
+    /**
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+     */
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
+
+    /**
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+     * use instead of the default one.
+     */
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+            ".mvn/wrapper/maven-wrapper.properties";
+
+    /**
+     * Path where the maven-wrapper.jar will be saved to.
+     */
+    private static final String MAVEN_WRAPPER_JAR_PATH =
+            ".mvn/wrapper/maven-wrapper.jar";
+
+    /**
+     * Name of the property which should be used to override the default download url for the wrapper.
+     */
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+    public static void main(String args[]) {
+        System.out.println("- Downloader started");
+        File baseDirectory = new File(args[0]);
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
+        // wrapperUrl parameter.
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        String url = DEFAULT_DOWNLOAD_URL;
+        if(mavenWrapperPropertyFile.exists()) {
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
+            try {
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+                Properties mavenWrapperProperties = new Properties();
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+            } catch (IOException e) {
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+            } finally {
+                try {
+                    if(mavenWrapperPropertyFileInputStream != null) {
+                        mavenWrapperPropertyFileInputStream.close();
+                    }
+                } catch (IOException e) {
+                    // Ignore ...
+                }
+            }
+        }
+        System.out.println("- Downloading from: " + url);
+
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+        if(!outputFile.getParentFile().exists()) {
+            if(!outputFile.getParentFile().mkdirs()) {
+                System.out.println(
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+            }
+        }
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+        try {
+            downloadFileFromURL(url, outputFile);
+            System.out.println("Done");
+            System.exit(0);
+        } catch (Throwable e) {
+            System.out.println("- Error downloading");
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
+            String username = System.getenv("MVNW_USERNAME");
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
+            Authenticator.setDefault(new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication(username, password);
+                }
+            });
+        }
+        URL website = new URL(urlString);
+        ReadableByteChannel rbc;
+        rbc = Channels.newChannel(website.openStream());
+        FileOutputStream fos = new FileOutputStream(destination);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        fos.close();
+        rbc.close();
+    }
+
+}
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..642d572
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6352e7f..e02ed11 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,73 +1,112 @@
-EasyScheduler提交代码流程
-=====
-* 首先从远端仓库*https://github.com/analysys/EasyScheduler.git* fork一份代码到自己的仓库中
-
-* 远端仓库中目前有三个分支:
-    * master 正常交付分支
-	   发布稳定版本以后,将稳定版本分支的代码合并到master上。
-    
-	* dev    日常开发分支
-	   日常dev开发分支,新提交的代码都可以pull request到这个分支上。
-	   
-    * branch-1.0.0 发布版本分支
-	   发布版本分支,后续会有2.0...等版本分支,版本分支只修改bug,不增加新功能。
-
-* 把自己仓库clone到本地
-  
-    `git clone https://github.com/**/EasyScheduler.git`
 
-*  添加远端仓库地址,命名为upstream
+# Development
 
-    ` git remote add upstream https://github.com/analysys/EasyScheduler.git `
+Start by forking the dolphinscheduler GitHub repository, make changes in a branch and then send a pull request.
 
-*  查看仓库:
+## Set up your dolphinscheduler GitHub Repository
 
-    ` git remote -v`
+There are three branches in the remote repository currently:
+  - `master` : normal delivery branch. After the stable version is released, the code for the stable version branch is merged into the master branch.
+            
+  - `dev` : daily development branch. The daily development branch, the newly submitted code can pull requests to this branch.
+  
+  - `x.x.x-release` : the stable release version.
 
-> 此时会有两个仓库:origin(自己的仓库)和upstream(远端仓库)
+So, you should fork the `dev` branch.
 
-*  获取远端仓库代码(已经是最新代码,就跳过)
-  
-    `git fetch upstream `
+After forking the [dolphinscheduler upstream source repository](https://github.com/apache/incubator-dolphinscheduler/fork) to your personal repository, you can set your  personal development environment.
+
+```sh
+$ cd <your work direcotry>
+$ git clone < your personal forked dolphinscheduler repo>
+$ cd incubator-dolphinscheduler
+```
 
-*  更新远端仓库代码
+## Set git remote as ``upstream``
 
+Add remote repository address, named upstream
+
+```sh
+git remote add upstream https://github.com/apache/incubator-dolphinscheduler.git
 ```
-git checkout upstream/dev
 
-git pull upstream dev
+View repository:
+
+```sh
+git remote -v
 ```
 
-* 同步远端仓库代码到本地仓库
+There will be two repositories at this time: origin (your own warehouse) and upstream (remote repository)
+
+Get/update remote repository code (already the latest code, skip it).
 
+
+```sh
+git fetch upstream
 ```
- git checkout origin/dev
- git merge --no-ff upstream/dev
+
+Synchronize remote repository code to local repository
+
+```sh
+git checkout origin/dev
+git merge --no-ff upstream/dev
 ```
 
-如果远端分支有新加的分支`dev-1.0`,需要同步这个分支到本地仓库
+If remote branch has a new branch `DEV-1.0`, you need to synchronize this branch to the local repository.
 
 ```
 git checkout -b dev-1.0 upstream/dev-1.0
 git push --set-upstream origin dev1.0
 ```
 
-* 在本地修改代码以后,提交到自己仓库:
-  
-    `git ca -m 'test commit'`
-    `git push`
-
-* 将修改提交到远端仓库
-
-	* 在github页面,点击New pull request.
-		<p align="center">
-	   <img src="http://geek.analysys.cn/static/upload/221/2019-04-02/90f3abbf-70ef-4334-b8d6-9014c9cf4c7f.png" width="60%" />
-	 </p>
-	 
-	* 选择修改完的本地分支和要合并过去的分支,Create pull request.
-		<p align="center">
-	   <img src="http://geek.analysys.cn/static/upload/221/2019-04-02/fe7eecfe-2720-4736-951b-b3387cf1ae41.png" width="60%" />
-	 </p>
-	* 接下来由管理员负责将**Merge**完成此次pull request
+## Create your feature branch
+Before making code changes, make sure you create a separate branch for them.
+
+```sh
+$ git checkout -b <your-feature>
+```
+
+## Commit changes
+After modifying the code locally, submit it to your own repository:
+
+```sh
+
+git commit -m 'information about your feature'
+```
+
+## Push to the branch
+
+
+Push your locally committed changes to the remote origin (your fork).
+
+```
+$ git push origin <your-feature>
+```
+
+## Create a pull request
+
+After submitting changes to your remote repository, you should click on the new pull request On the following github page.
+
+<p align = "center">
+<img src = "http://geek.analysys.cn/static/upload/221/2019-04-02/90f3abbf-70ef-4334-b8d6-9014c9cf4c7f.png" width ="60%"/>
+</p>
+
+
+Select the modified local branch and the branch to merge past to create a pull request.
+
+<p align = "center">
+<img src = "http://geek.analysys.cn/static/upload/221/2019-04-02/fe7eecfe-2720-4736-951b-b3387cf1ae41.png" width ="60%"/>
+</p>
+
+Next, the administrator is responsible for **merging** to complete the pull request.
+
+
+
+
+
+
+
+
+
 
 
diff --git a/DISCLAIMER b/DISCLAIMER
new file mode 100644
index 0000000..1c269cd
--- /dev/null
+++ b/DISCLAIMER
@@ -0,0 +1,5 @@
+Apache DolphinScheduler (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
+Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, 
+communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. 
+While incubation status is not necessarily a reflection of the completeness or stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the ASF.
diff --git a/LICENSE b/LICENSE
index 261eeb9..9a0c6aa 100644
--- a/LICENSE
+++ b/LICENSE
@@ -199,3 +199,20 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
+=======================================================================
+Apache DolphinScheduler (incubating) Subcomponents:
+
+The Apache DolphinScheduler (incubating) project contains subcomponents with separate copyright
+notices and license terms. Your use of the source code for the these
+subcomponents is subject to the terms and conditions of the following
+licenses.
+
+========================================================================
+Apache 2.0 licenses
+========================================================================
+
+The following components are provided under the Apache License. See project link for details.
+The text of each license is the standard Apache 2.0 license.
+    ScriptRunner from https://github.com/mybatis/mybatis-3 Apache 2.0
+    mvnw files from https://github.com/takari/maven-wrapper Apache 2.0
+    PropertyPlaceholderHelper from https://github.com/spring-projects/spring-framework Apache 2.0
diff --git a/NOTICE b/NOTICE
index 26802e1..52eb129 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,7 +1,55 @@
-Easy Scheduler
-Copyright 2019 The Analysys Foundation
+Apache DolphinScheduler (incubating)
+Copyright 2019-2020 The Apache Software Foundation
 
 This product includes software developed at
-The Analysys Foundation (https://www.analysys.cn/).
+The Apache Software Foundation (http://www.apache.org/).
 
+mybatis-3
+iBATIS
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
 
+   Copyright 2010 The Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+Refactored SqlBuilder class (SQL, AbstractSQL)
+
+   This product includes software developed by
+   Adam Gent (https://gist.github.com/3650165)
+
+   Copyright 2010 Adam Gent
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+Spring Framework ${version}
+Copyright (c) 2002-${copyright} Pivotal, Inc.
+
+This product is licensed to you under the Apache License, Version 2.0
+(the "License"). You may not use this product except in compliance with
+the License.
+
+This product may include a number of subcomponents with separate
+copyright notices and license terms. Your use of the source code for
+these subcomponents is subject to the terms and conditions of the
+subcomponent's license, as noted in the license.txt file.
\ No newline at end of file
diff --git a/README.md b/README.md
index 9c3c8ec..97e1a95 100644
--- a/README.md
+++ b/README.md
@@ -1,77 +1,96 @@
-Easy Scheduler
-==============
+Dolphin Scheduler Official Website
+[dolphinscheduler.apache.org](https://dolphinscheduler.apache.org)
+============
 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
+[![Total Lines](https://tokei.rs/b1/github/apache/Incubator-DolphinScheduler?category=lines)](https://github.com/apache/Incubator-DolphinScheduler)
+[![codecov](https://codecov.io/gh/apache/incubator-dolphinscheduler/branch/dev/graph/badge.svg)](https://codecov.io/gh/apache/incubator-dolphinscheduler/branch/dev)
+[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=apache-dolphinscheduler&metric=alert_status)](https://sonarcloud.io/dashboard?id=apache-dolphinscheduler)
 
-> Easy Scheduler for Big Data
 
-**设计特点:** 一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。
-其主要目标如下:
- - 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
- - 支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等
- - 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
- - 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
- - 支持工作流全局参数及节点自定义参数设置
- - 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
- - 支持任务日志在线查看及滚动、在线下载日志等
- - 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化
- - 支持对`Master/Worker` cpu load,memory,cpu在线查看
- - 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
- - 支持补数
- - 支持多租户
- - 支持国际化
- - 还有更多等待伙伴们探索
+> Dolphin Scheduler for Big Data
 
-### 与同类调度系统的对比
+[![Stargazers over time](https://starchart.cc/apache/incubator-dolphinscheduler.svg)](https://starchart.cc/apache/incubator-dolphinscheduler)
 
-![调度系统对比](http://geek.analysys.cn/static/upload/47/2019-03-01/9609ca82-cf8b-4d91-8dc0-0e2805194747.jpeg)
+[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
+[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
 
-### 系统部分截图
 
-![](http://geek.analysys.cn/static/upload/221/2019-03-29/0a9dea80-fb02-4fa5-a812-633b67035ffc.jpeg)
+### Design features:
 
-![](http://geek.analysys.cn/static/upload/221/2019-04-01/83686def-a54f-4169-8cae-77b1f8300cc1.png)
+A distributed and easy-to-extend visual DAG workflow scheduling system. Dedicated to solving the complex dependencies in data processing, making the scheduling system `out of the box` for data processing.
+Its main objectives are as follows:
 
-![](http://geek.analysys.cn/static/upload/221/2019-03-29/83c937c7-1793-4d7a-aa28-b98460329fe0.jpeg)
+ - Associate the Tasks according to the dependencies of the tasks in a DAG graph, which can visualize the running state of task in real time.
+ - Support for many task types: Shell, MR, Spark, SQL (mysql, postgresql, hive, sparksql), Python, Sub_Process, Procedure, etc.
+ - Support process scheduling, dependency scheduling, manual scheduling, manual pause/stop/recovery, support for failed retry/alarm, recovery from specified nodes, Kill task, etc.
+ - Support process priority, task priority and task failover and task timeout alarm/failure
+ - Support process global parameters and node custom parameter settings
+ - Support online upload/download of resource files, management, etc. Support online file creation and editing
+ - Support task log online viewing and scrolling, online download log, etc.
+ - Implement cluster HA, decentralize Master cluster and Worker cluster through Zookeeper
+ - Support online viewing of `Master/Worker` cpu load, memory
+ - Support process running history tree/gantt chart display, support task status statistics, process status statistics
+ - Support backfilling data
+ - Support multi-tenant
+ - Support internationalization
+ - There are more waiting partners to explore
 
-### 文档
 
-- <a href="https://analysys.github.io/easyscheduler_docs_cn/后端部署文档.html" target="_blank">后端部署文档</a>
+### What's in Dolphin Scheduler
 
-- <a href="https://analysys.github.io/easyscheduler_docs_cn/前端部署文档.html" target="_blank">前端部署文档</a>
+ Stability | Easy to use | Features | Scalability |
+ -- | -- | -- | --
+Decentralized multi-master and multi-worker | Visualization process defines key information such as task status, task type, retry times, task running machine, visual variables and so on at a glance.  |  Support pause, recover operation | support custom task types
+HA is supported by itself | All process definition operations are visualized, dragging tasks to draw DAGs, configuring data sources and resources. At the same time, for third-party systems, the api mode operation is provided. | Users on DolphinScheduler can achieve many-to-one or one-to-one mapping relationship through tenants and Hadoop users, which is very important for scheduling large data jobs. " | The scheduler uses distributed scheduling, and the overall scheduling capability will [...]
+Overload processing: Task queue mechanism, the number of schedulable tasks on a single machine can be flexibly configured, when too many tasks will be cached in the task queue, will not cause machine jam. | One-click deployment | Supports traditional shell tasks, and also support big data platform task scheduling: MR, Spark, SQL (mysql, postgresql, hive, sparksql), Python, Procedure, Sub_Process |  |
 
-- [**使用手册**](https://analysys.github.io/easyscheduler_docs_cn/系统使用手册.html?_blank "系统使用手册") 
 
-- [**升级文档**](https://analysys.github.io/easyscheduler_docs_cn/升级文档.html?_blank "升级文档") 
+### System partial screenshot
 
-- <a href="http://52.82.13.76:8888" target="_blank">我要体验</a> 
+![home page](https://user-images.githubusercontent.com/15833811/75218288-bf286400-57d4-11ea-8263-d639c6511d5f.jpg)
+![dag](https://user-images.githubusercontent.com/15833811/75236750-3374fe80-57f9-11ea-857d-62a66a5a559d.png)
+![process definition list page](https://user-images.githubusercontent.com/15833811/75216886-6f479e00-57d0-11ea-92dd-66e7640a186f.png)
+![view task log online](https://user-images.githubusercontent.com/15833811/75216924-9900c500-57d0-11ea-91dc-3522a76bdbbe.png)
+![resource management](https://user-images.githubusercontent.com/15833811/75216984-be8dce80-57d0-11ea-840d-58546edc8788.png)
+![monitor](https://user-images.githubusercontent.com/59273635/75625839-c698a480-5bfc-11ea-8bbe-895b561b337f.png)
+![security](https://user-images.githubusercontent.com/15833811/75236441-bfd2f180-57f8-11ea-88bd-f24311e01b7e.png)
+![treeview](https://user-images.githubusercontent.com/15833811/75217191-3fe56100-57d1-11ea-8856-f19180d9a879.png)
+### Online Demo
 
-更多文档请参考 <a href="https://analysys.github.io/easyscheduler_docs_cn/" target="_blank">easyscheduler中文在线文档</a>
+- <a href="http://106.75.43.194:8888" target="_blank">Online Demo</a>
 
+### Recent R&D plan
+Work plan of Dolphin Scheduler: [R&D plan](https://github.com/apache/incubator-dolphinscheduler/projects/1), Under the `In Develop` card is what is currently being developed, TODO card is to be done (including feature ideas)
 
-### 近期研发计划
+### How to contribute
 
-EasyScheduler的工作计划:<a href="https://github.com/analysys/EasyScheduler/projects/1" target="_blank">研发计划</a> ,其中 In Develop卡片下是1.1.0版本的功能,TODO卡片是待做事项(包括 feature ideas)
+Welcome to participate in contributing, please refer to the process of submitting the code:
+[[How to contribute](https://dolphinscheduler.apache.org/en-us/docs/development/contribute.html)]
 
-### 贡献代码
+### How to Build
 
-非常欢迎大家来参与贡献代码,提交代码流程请参考:
-https://github.com/analysys/EasyScheduler/blob/master/CONTRIBUTING.md
-
-
-### 感谢
-
-Easy Scheduler使用了很多优秀的开源项目,比如google的guava、guice、grpc,netty,ali的bonecp,quartz,以及apache的众多开源项目等等,
-正是由于站在这些开源项目的肩膀上,才有Easy Scheduler的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的
-贡献者,于是我们决定把易调度贡献出来,并承诺长期维护。也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!
-
-
-### 帮助
-The fastest way to get response from our developers is to submit issues,   or add our wechat : 510570367
- 
+```bash
+./mvnw clean install -Prelease
+```
 
+Artifact:
 
+```
+dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${latest.release.version}-dolphinscheduler-bin.tar.gz: Binary package of DolphinScheduler
+dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${latest.release.version}-src.zip: Source code package of DolphinScheduler
+```
 
+### Thanks
 
+Dolphin Scheduler uses a lot of excellent open source projects, such as google guava, guice, grpc, netty, ali bonecp, quartz, and many open source projects of apache, etc.
+It is because of the shoulders of these open source projects that the birth of the Dolphin Scheduler is possible. We are very grateful for all the open source software used! We also hope that we will not only be the beneficiaries of open source, but also be open source contributors. We also hope that partners who have the same passion and conviction for open source will join in and contribute to open source!
 
+### Get Help
+1. Submit an issue
+1. Subscribe the mail list : https://dolphinscheduler.apache.org/en-us/docs/development/subscribe.html.  then send mail to dev@dolphinscheduler.apache.org
+1. Slack channel: [![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://join.slack.com/share/zt-do3gvfhj-UUhrAX2GxkVX_~JJt1jpKA)
+1. Contact WeChat(dailidong66). This is just for Mandarin(CN) discussion.
 
+### License
+Please refer to [LICENSE](https://github.com/apache/incubator-dolphinscheduler/blob/dev/LICENSE) file.
 
diff --git a/README_zh_CN.md b/README_zh_CN.md
new file mode 100644
index 0000000..a02a2c3
--- /dev/null
+++ b/README_zh_CN.md
@@ -0,0 +1,100 @@
+Dolphin Scheduler Official Website
+[dolphinscheduler.apache.org](https://dolphinscheduler.apache.org)
+============
+[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
+[![Total Lines](https://tokei.rs/b1/github/apache/Incubator-DolphinScheduler?category=lines)](https://github.com/apache/Incubator-DolphinScheduler)
+[![codecov](https://codecov.io/gh/apache/incubator-dolphinscheduler/branch/dev/graph/badge.svg)](https://codecov.io/gh/apache/incubator-dolphinscheduler/branch/dev)
+[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=apache-dolphinscheduler&metric=alert_status)](https://sonarcloud.io/dashboard?id=apache-dolphinscheduler)
+
+> Dolphin Scheduler for Big Data
+
+
+
+[![Stargazers over time](https://starchart.cc/apache/incubator-dolphinscheduler.svg)](https://starchart.cc/apache/incubator-dolphinscheduler)
+
+[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
+[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
+
+
+**设计特点:** 一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。
+其主要目标如下:
+ - 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
+ - 支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等
+ - 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
+ - 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
+ - 支持工作流全局参数及节点自定义参数设置
+ - 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
+ - 支持任务日志在线查看及滚动、在线下载日志等
+ - 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化
+ - 支持对`Master/Worker` cpu load,memory,cpu在线查看
+ - 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
+ - 支持补数
+ - 支持多租户
+ - 支持国际化
+ - 还有更多等待伙伴们探索
+
+
+### 系统部分截图
+
+![home page](https://user-images.githubusercontent.com/15833811/75208819-abbad000-57b7-11ea-8d3c-67e7c270671f.jpg)
+
+![dag](https://user-images.githubusercontent.com/15833811/75209584-93e44b80-57b9-11ea-952e-537fb24ec72d.jpg)
+
+![log](https://user-images.githubusercontent.com/15833811/75209645-c55d1700-57b9-11ea-94d4-e3fa91ab5218.jpg)
+
+![gantt](https://user-images.githubusercontent.com/15833811/75209640-c0986300-57b9-11ea-878e-a2098533ad44.jpg)
+
+![resources](https://user-images.githubusercontent.com/15833811/75209403-11f42280-57b9-11ea-9b59-d4be77063553.jpg)
+
+![monitor](https://user-images.githubusercontent.com/15833811/75209631-b5ddce00-57b9-11ea-8d22-cdf15cf0ee25.jpg)
+
+![security](https://user-images.githubusercontent.com/15833811/75209633-baa28200-57b9-11ea-9def-94bef2e212a7.jpg)
+
+### 我要体验
+
+- <a href="http://106.75.43.194:8888" target="_blank">我要体验</a>
+
+
+### 近期研发计划
+
+DolphinScheduler的工作计划:<a href="https://github.com/apache/incubator-dolphinscheduler/projects/1" target="_blank">研发计划</a> ,其中 In Develop卡片下是正在研发的功能,TODO卡片是待做事项(包括 feature ideas)
+
+### 参与贡献
+
+非常欢迎大家来参与贡献,贡献流程请参考:
+[[参与贡献](https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html)]
+
+### How to Build
+
+```bash
+./mvnw clean install -Prelease
+```
+
+Artifact:
+
+```
+dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${latest.release.version}-dolphinscheduler-bin.tar.gz: Binary package of DolphinScheduler
+dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${latest.release.version}-src.zip: Source code package of DolphinScheduler
+```
+
+### 感谢
+
+Dolphin Scheduler使用了很多优秀的开源项目,比如google的guava、guice、grpc,netty,ali的bonecp,quartz,以及apache的众多开源项目等等,
+正是由于站在这些开源项目的肩膀上,才有Dolphin Scheduler的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!
+
+
+### 获得帮助
+1. 提交issue
+1. 先订阅邮件开发列表:[订阅邮件列表](https://dolphinscheduler.apache.org/zh-cn/docs/development/subscribe.html), 订阅成功后发送邮件到dev@dolphinscheduler.apache.org.
+1. 联系微信群助手(ID:dailidong66). 微信仅用于中国用户讨论.
+
+### 版权
+请参考 [LICENSE](https://github.com/apache/incubator-dolphinscheduler/blob/dev/LICENSE) 文件.
+
+
+
+
+
+
+
+
diff --git a/ambari_plugin/README.md b/ambari_plugin/README.md
new file mode 100644
index 0000000..1778266
--- /dev/null
+++ b/ambari_plugin/README.md
@@ -0,0 +1,132 @@
+### Instructions for using the Dolphin Scheduler's Ambari plug-in
+
+#### Note
+
+1. This document is intended for users with a basic understanding of Ambari
+2. This document is a description of adding the Dolphin Scheduler service to the installed Ambari service
+3. This document is based on version 2.5.2 of Ambari 
+
+####   Installation preparation
+
+1. Prepare the RPM packages
+
+   - It is generated by executing the command ```mvn -U clean install  -Prpmbuild  -Dmaven.test.skip=true -X``` in the project root directory (In the directory: dolphinscheduler-dist/target/rpm/apache-dolphinscheduler-incubating/RPMS/noarch )
+
+2. Create an installation for DS,who have read and write access to the installation directory (/opt/soft)
+
+3. Install with rpm package
+
+   - Manual installation (recommended):
+      - Copy the prepared RPM packages to each node of the cluster.
+      - Execute with DS installation user: ```rpm -ivh apache-dolphinscheduler-incubating-xxx.noarch.rpm```
+      - Mysql-connector-java packaged using the default POM file will not be included.
+      - The RPM package was packaged in the project with the installation path of /opt/soft. 
+        If you use mysql as the database, you need add it manually.
+      
+   - Automatic installation with ambari
+      - Each node of the cluster needs to configure the local yum source
+      - Copy the prepared RPM packages to each node local yum source
+
+4. Copy plug-in directory
+
+   - copy directory ambari_plugin/common-services/DOLPHIN to ambari-server/resources/common-services/
+   - copy directory ambari_plugin/statcks/DOLPHIN to ambari-server/resources/stacks/HDP/2.6/services/--stack version is selected based on the actual situation
+
+5. Initializes the database information
+
+   ```
+   -- Create the database for the Dolphin Scheduler:dolphinscheduler
+   CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE
+   utf8_general_ci;
+   
+   -- Initialize the user and password for the dolphinscheduler database and assign permissions
+   -- Replace the {user} in the SQL statement below with the user of the dolphinscheduler database
+   GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
+   GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY
+   '{password}';
+   flush privileges;
+   ```
+
+ 
+
+#### Ambari Install Dolphin Scheduler
+- **NOTE: You have to install zookeeper first**
+
+1. Install  Dolphin Scheduler on ambari web interface
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_001.png)
+
+2. Select the nodes for the Dolphin Scheduler's Master installation
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_002.png)
+
+3. Configure the Dolphin Scheduler's nodes for Worker, Api, Logger, Alert installation
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_003.png)
+
+4. Set the installation users of the Dolphin Scheduler service (created in step 1) and the user groups they belong to
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_004.png)
+
+5. System Env Optimization will export some system environment config. Modify according to actual situation
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_020.png)
+   
+6. Configure the database information (same as in the initialization database in step 1)
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_005.png)
+
+7. Configure additional information if needed
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_006.png)
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_007.png)
+
+8. Perform the next steps as normal
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_008.png)
+
+9. The interface after successful installation
+
+   ![](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_009.png)
+   
+   
+
+------
+
+
+
+#### Add components to the node through Ambari -- for example, add a DS Worker
+
+***NOTE***: DS Logger is the installation dependent component of DS Worker in Dolphin's Ambari installation (need to add installation first; Prevent the Job log on the corresponding Worker from being checked)
+
+1. Locate the component node to add -- for example, node ark3
+
+   ![DS2_AMBARI_011](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_011.png)
+
+2. Add components -- the drop-down list is all addable
+
+   ![DS2_AMBARI_012](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_012.png)
+
+3. Confirm component addition
+
+   ![DS2_AMBARI_013](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_013.png)
+
+4. After adding DS Worker and DS Logger components
+
+   ![DS2_AMBARI_015](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_015.png)
+
+5. Start the component
+
+   ![DS2_AMBARI_016](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_016.png)
+
+
+#### Remove the component from the node with Ambari
+
+1. Stop the component in the corresponding node
+
+   ![DS2_AMBARI_018](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_018.png)
+
+2. Remove components
+
+   ![DS2_AMBARI_019](https://github.com/apache/incubator-dolphinscheduler-website/blob/master/img/ambari-plugin/DS2_AMBARI_019.png)
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/alerts.json b/ambari_plugin/common-services/DOLPHIN/1.3.3/alerts.json
new file mode 100644
index 0000000..184f021
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/alerts.json
@@ -0,0 +1,158 @@
+{
+  "DOLPHIN": {
+    "service": [],
+    "DOLPHIN_API": [
+      {
+        "name": "dolphin_api_port_check",
+        "label": "dolphin_api_port_check",
+        "description": "dolphin_api_port_check.",
+        "interval": 10,
+        "scope": "ANY",
+        "source": {
+          "type": "PORT",
+          "uri": "{{dolphin-application-api/server.port}}",
+          "default_port": 12345,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "DOLPHIN_LOGGER": [
+      {
+        "name": "dolphin_logger_port_check",
+        "label": "dolphin_logger_port_check",
+        "description": "dolphin_logger_port_check.",
+        "interval": 10,
+        "scope": "ANY",
+        "source": {
+          "type": "PORT",
+          "uri": "{{dolphin-common/loggerserver.rpc.port}}",
+          "default_port": 50051,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "DOLPHIN_MASTER": [
+      {
+        "name": "DOLPHIN_MASTER_CHECK",
+        "label": "check dolphin scheduler master status",
+        "description": "",
+        "interval":10,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "DOLPHIN/1.3.3/package/alerts/alert_dolphin_scheduler_status.py",
+          "parameters": [
+
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "alertName",
+              "display_name": "alertName",
+              "value": "DOLPHIN_MASTER",
+              "type": "STRING",
+              "description": "alert name"
+            }
+          ]
+        }
+      }
+    ],
+    "DOLPHIN_WORKER": [
+      {
+        "name": "DOLPHIN_WORKER_CHECK",
+        "label": "check dolphin scheduler worker status",
+        "description": "",
+        "interval":10,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "DOLPHIN/1.3.3/package/alerts/alert_dolphin_scheduler_status.py",
+          "parameters": [
+
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "alertName",
+              "display_name": "alertName",
+              "value": "DOLPHIN_WORKER",
+              "type": "STRING",
+              "description": "alert name"
+            }
+          ]
+        }
+      }
+    ],
+    "DOLPHIN_ALERT": [
+      {
+        "name": "DOLPHIN_DOLPHIN_ALERT_CHECK",
+        "label": "check dolphin scheduler alert status",
+        "description": "",
+        "interval":10,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "DOLPHIN/1.3.3/package/alerts/alert_dolphin_scheduler_status.py",
+          "parameters": [
+
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "alertName",
+              "display_name": "alertName",
+              "value": "DOLPHIN_ALERT",
+              "type": "STRING",
+              "description": "alert name"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-alert.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-alert.xml
new file mode 100644
index 0000000..32abcc7
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-alert.xml
@@ -0,0 +1,137 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>alert.type</name>
+		<value>EMAIL</value>
+		<description>alert type is EMAIL/SMS</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.protocol</name>
+		<value>SMTP</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.server.host</name>
+		<value>xxx.xxx.com</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.server.port</name>
+		<value>25</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.sender</name>
+		<value>admin</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.user</name>
+		<value>admin</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.passwd</name>
+		<value>000000</value>
+		<description></description>
+		<property-type>PASSWORD</property-type>
+		<value-attributes>
+			<type>password</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>mail.smtp.starttls.enable</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.smtp.ssl.enable</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>mail.smtp.ssl.trust</name>
+		<value>xxx.xxx.com</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>enterprise.wechat.enable</name>
+		<value>false</value>
+		<description></description>
+		<value-attributes>
+			<type>value-list</type>
+			<entries>
+				<entry>
+					<value>true</value>
+					<label>Enabled</label>
+				</entry>
+				<entry>
+					<value>false</value>
+					<label>Disabled</label>
+				</entry>
+			</entries>
+			<selection-cardinality>1</selection-cardinality>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>enterprise.wechat.corp.id</name>
+		<value>wechatId</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>enterprise.wechat.secret</name>
+		<value>secret</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>enterprise.wechat.agent.id</name>
+		<value>agentId</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>enterprise.wechat.users</name>
+		<value>wechatUsers</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-application-api.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-application-api.xml
new file mode 100644
index 0000000..766c0f4
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-application-api.xml
@@ -0,0 +1,87 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>server.port</name>
+		<value>12345</value>
+		<description>
+			server port
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+	</property>
+	<property>
+		<name>server.servlet.session.timeout</name>
+		<value>7200</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+	</property>
+	<property>
+		<name>server.servlet.context-path</name>
+		<value>/dolphinscheduler/</value>
+		<description>
+		</description>
+	</property>
+	<property>
+		<name>spring.servlet.multipart.max-file-size</name>
+		<value>1024</value>
+		<value-attributes>
+			<unit>MB</unit>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+	</property>
+	<property>
+		<name>spring.servlet.multipart.max-request-size</name>
+		<value>1024</value>
+		<value-attributes>
+			<unit>MB</unit>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+	</property>
+	<property>
+		<name>server.jetty.max-http-post-size</name>
+		<value>5000000</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+	</property>
+	<property>
+		<name>spring.messages.encoding</name>
+		<value>UTF-8</value>
+		<description></description>
+	</property>
+	<property>
+		<name>spring.messages.basename</name>
+		<value>i18n/messages</value>
+		<description></description>
+	</property>
+	<property>
+		<name>security.authentication.type</name>
+		<value>PASSWORD</value>
+		<description></description>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-common.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-common.xml
new file mode 100644
index 0000000..439e211
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-common.xml
@@ -0,0 +1,158 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+    <property>
+        <name>resource.storage.type</name>
+        <display-name>Choose Resource Upload Startup Type</display-name>
+        <description>
+            Resource upload startup type : HDFS,S3,NONE
+        </description>
+        <value>NONE</value>
+        <value-attributes>
+            <type>value-list</type>
+            <entries>
+                <entry>
+                    <value>HDFS</value>
+                    <label>HDFS</label>
+                </entry>
+                <entry>
+                    <value>S3</value>
+                    <label>S3</label>
+                </entry>
+                <entry>
+                    <value>NONE</value>
+                    <label>NONE</label>
+                </entry>
+            </entries>
+            <selection-cardinality>1</selection-cardinality>
+        </value-attributes>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>resource.upload.path</name>
+        <value>/dolphinscheduler</value>
+        <description>
+            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 read write permissions。"/dolphinscheduler" is recommended
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>data.basedir.path</name>
+        <value>/tmp/dolphinscheduler</value>
+        <description>
+            user data local directory path, please make sure the directory exists and have read write permissions
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+
+    <property>
+        <name>hadoop.security.authentication.startup.state</name>
+        <value>false</value>
+        <value-attributes>
+            <type>value-list</type>
+            <entries>
+                <entry>
+                    <value>true</value>
+                    <label>Enabled</label>
+                </entry>
+                <entry>
+                    <value>false</value>
+                    <label>Disabled</label>
+                </entry>
+            </entries>
+            <selection-cardinality>1</selection-cardinality>
+        </value-attributes>
+        <description>whether kerberos starts</description>
+    </property>
+    <property>
+        <name>java.security.krb5.conf.path</name>
+        <value>/opt/krb5.conf</value>
+        <description>
+            java.security.krb5.conf path
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>login.user.keytab.username</name>
+        <value>hdfs-mycluster@ESZ.COM</value>
+        <description>
+            LoginUserFromKeytab user
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>login.user.keytab.path</name>
+        <value>/opt/hdfs.headless.keytab</value>
+        <description>
+            LoginUserFromKeytab path
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>resource.view.suffixs</name>
+        <value>txt,log,sh,conf,cfg,py,java,sql,hql,xml,properties</value>
+        <description></description>
+    </property>
+    <property>
+        <name>hdfs.root.user</name>
+        <value>hdfs</value>
+        <description>
+            Users who have permission to create directories under the HDFS root path
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>fs.defaultFS</name>
+        <value>hdfs://mycluster:8020</value>
+        <description>
+            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
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>fs.s3a.endpoint</name>
+        <value>http://host:9010</value>
+        <description>
+            s3 need,s3 endpoint
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>fs.s3a.access.key</name>
+        <value>A3DXS30FO22544RE</value>
+        <description>
+            s3 need,s3 access key
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>fs.s3a.secret.key</name>
+        <value>OloCLq3n+8+sdPHUhJ21XrSxTC+JK</value>
+        <description>
+            s3 need,s3 secret key
+        </description>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>kerberos.expire.time</name>
+        <value>7</value>
+        <description></description>
+    </property>
+
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-datasource.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-datasource.xml
new file mode 100644
index 0000000..02d8de0
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-datasource.xml
@@ -0,0 +1,206 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>spring.datasource.initialSize</name>
+		<value>5</value>
+		<description>
+			Init connection number
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.minIdle</name>
+		<value>5</value>
+		<description>
+			Min connection number
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.maxActive</name>
+		<value>50</value>
+		<description>
+			Max connection number
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.maxWait</name>
+		<value>60000</value>
+		<description>
+			Max wait time for get a connection in milliseconds.
+			If configuring maxWait, fair locks are enabled by default and concurrency efficiency decreases.
+			If necessary, unfair locks can be used by configuring the useUnfairLock attribute to true.
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.timeBetweenEvictionRunsMillis</name>
+		<value>60000</value>
+		<description>
+			Milliseconds for check to close free connections
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.timeBetweenConnectErrorMillis</name>
+		<value>60000</value>
+		<description>
+			The Destroy thread detects the connection interval and closes the physical connection in milliseconds
+			if the connection idle time is greater than or equal to minEvictableIdleTimeMillis.
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.minEvictableIdleTimeMillis</name>
+		<value>300000</value>
+		<description>
+			The longest time a connection remains idle without being evicted, in milliseconds
+		</description>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.validationQuery</name>
+		<value>SELECT 1</value>
+		<description>
+			The SQL used to check whether the connection is valid requires a query statement.
+			If validation Query is null, testOnBorrow, testOnReturn, and testWhileIdle will not work.
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.validationQueryTimeout</name>
+		<value>3</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+			Check whether the connection is valid for timeout, in seconds
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.testWhileIdle</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description>
+			When applying for a connection,
+			if it is detected that the connection is idle longer than time Between Eviction Runs Millis,
+			validation Query is performed to check whether the connection is valid
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.testOnBorrow</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description>
+			Execute validation to check if the connection is valid when applying for a connection
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.testOnReturn</name>
+		<value>false</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description>
+			Execute validation to check if the connection is valid when the connection is returned
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.defaultAutoCommit</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.keepAlive</name>
+		<value>false</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>spring.datasource.poolPreparedStatements</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description>
+			Open PSCache, specify count PSCache for every connection
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.maxPoolPreparedStatementPerConnectionSize</name>
+		<value>20</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.spring.datasource.filters</name>
+		<value>stat,wall,log4j</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>spring.datasource.connectionProperties</name>
+		<value>druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000</value>
+		<description></description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-env.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-env.xml
new file mode 100644
index 0000000..8e14716
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-env.xml
@@ -0,0 +1,123 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>dolphin.database.type</name>
+		<value>mysql</value>
+		<description>Dolphin Scheduler DataBase Type Which Is Select</description>
+		<display-name>Dolphin Database Type</display-name>
+		<value-attributes>
+			<type>value-list</type>
+			<entries>
+				<entry>
+					<value>mysql</value>
+					<label>Mysql</label>
+				</entry>
+				<entry>
+					<value>postgresql</value>
+					<label>Postgresql</label>
+				</entry>
+			</entries>
+			<selection-cardinality>1</selection-cardinality>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>dolphin.database.host</name>
+		<value></value>
+		<display-name>Dolphin Database Host</display-name>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>dolphin.database.port</name>
+		<value></value>
+		<display-name>Dolphin Database Port</display-name>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>dolphin.database.username</name>
+		<value></value>
+		<display-name>Dolphin Database Username</display-name>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>dolphin.database.password</name>
+		<value></value>
+		<display-name>Dolphin Database Password</display-name>
+		<property-type>PASSWORD</property-type>
+		<value-attributes>
+			<type>password</type>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>dolphin.user</name>
+		<value></value>
+		<description>Which user to install and admin dolphin scheduler</description>
+		<display-name>Deploy User</display-name>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>dolphin.group</name>
+		<value></value>
+		<description>Which user to install and admin dolphin scheduler</description>
+		<display-name>Deploy Group</display-name>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>dolphinscheduler-env-content</name>
+		<display-name>Dolphinscheduler Env template</display-name>
+		<description>This is the jinja template for dolphinscheduler.env.sh file</description>
+		<value>#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+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</value>
+		<value-attributes>
+			<type>content</type>
+			<empty-value-valid>false</empty-value-valid>
+			<show-property-name>false</show-property-name>
+		</value-attributes>
+		<on-ambari-upgrade add="true"/>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-master.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-master.xml
new file mode 100644
index 0000000..c8eec04
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-master.xml
@@ -0,0 +1,88 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>master.exec.threads</name>
+		<value>100</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>master execute thread num</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>master.exec.task.num</name>
+		<value>20</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>master execute task number in parallel</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>master.heartbeat.interval</name>
+		<value>10</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>master heartbeat interval</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>master.task.commit.retryTimes</name>
+		<value>5</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>master commit task retry times</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>master.task.commit.interval</name>
+		<value>1000</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>master commit task interval</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>master.max.cpuload.avg</name>
+		<value>100</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>only less than cpu avg load, master server can work. default value : the number of cpu cores * 2</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>master.reserved.memory</name>
+		<value>0.3</value>
+		<description>only larger than reserved memory, master server can work. default value : physical memory * 1/10, unit is G.</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>master.listen.port</name>
+		<value>5678</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>master listen port</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-quartz.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-quartz.xml
new file mode 100644
index 0000000..7a0c68b
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-quartz.xml
@@ -0,0 +1,126 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>org.quartz.scheduler.instanceName</name>
+		<value>DolphinScheduler</value>
+		<description></description>
+	</property>
+	<property>
+		<!-- 列举枚举值 -->
+		<name>org.quartz.scheduler.instanceId</name>
+		<value>AUTO</value>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.scheduler.makeSchedulerThreadDaemon</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.useProperties</name>
+		<value>false</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.threadPool.class</name>
+		<value>org.quartz.simpl.SimpleThreadPool</value>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.threadPool.makeThreadsDaemons</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.threadPool.threadCount</name>
+		<value>25</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.threadPool.threadPriority</name>
+		<value>5</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.class</name>
+		<value>org.quartz.impl.jdbcjobstore.JobStoreTX</value>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.tablePrefix</name>
+		<value>QRTZ_</value>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.isClustered</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.misfireThreshold</name>
+		<value>60000</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.clusterCheckinInterval</name>
+		<value>5000</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.acquireTriggersWithinLock</name>
+		<value>true</value>
+		<value-attributes>
+			<type>boolean</type>
+		</value-attributes>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.jobStore.dataSource</name>
+		<value>myDs</value>
+		<description></description>
+	</property>
+	<property>
+		<name>org.quartz.dataSource.myDs.connectionProvider.class</name>
+		<value>org.apache.dolphinscheduler.service.quartz.DruidConnectionProvider</value>
+		<description></description>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml
new file mode 100644
index 0000000..1ae7a1a
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml
@@ -0,0 +1,67 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>worker.exec.threads</name>
+		<value>100</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>worker execute thread num</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>worker.heartbeat.interval</name>
+		<value>10</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>worker heartbeat interval</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>worker.max.cpuload.avg</name>
+		<value>100</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>worker.reserved.memory</name>
+		<value>0.3</value>
+		<description>only larger than reserved memory, worker server can work. default value : physical memory * 1/10, unit is G.</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+
+	<property>
+		<name>worker.listen.port</name>
+		<value>1234</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>worker listen port</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>worker.groups</name>
+		<value>default</value>
+		<description>default worker group</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-zookeeper.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-zookeeper.xml
new file mode 100644
index 0000000..e89962d
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-zookeeper.xml
@@ -0,0 +1,76 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<configuration>
+	<property>
+		<name>zookeeper.dolphinscheduler.root</name>
+		<value>/dolphinscheduler</value>
+		<description>
+			dolphinscheduler root directory
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>zookeeper.session.timeout</name>
+		<value>300</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>zookeeper.connection.timeout</name>
+		<value>300</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>zookeeper.retry.base.sleep</name>
+		<value>100</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>zookeeper.retry.max.sleep</name>
+		<value>30000</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+	<property>
+		<name>zookeeper.retry.maxtime</name>
+		<value>5</value>
+		<value-attributes>
+			<type>int</type>
+		</value-attributes>
+		<description>
+		</description>
+		<on-ambari-upgrade add="true"/>
+	</property>
+</configuration>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/metainfo.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/metainfo.xml
new file mode 100644
index 0000000..074306d
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/metainfo.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<metainfo>
+    <schemaVersion>2.0</schemaVersion>
+    <services>
+        <service>
+            <name>DOLPHIN</name>
+            <displayName>Dolphin Scheduler</displayName>
+            <comment>分布式易扩展的可视化DAG工作流任务调度系统</comment>
+            <version>1.3.3</version>
+            <components>
+                <component>
+                    <name>DOLPHIN_MASTER</name>
+                    <displayName>DS Master</displayName>
+                    <category>MASTER</category>
+                    <cardinality>1+</cardinality>
+                    <commandScript>
+                        <script>scripts/dolphin_master_service.py</script>
+                        <scriptType>PYTHON</scriptType>
+                        <timeout>600</timeout>
+                    </commandScript>
+                </component>
+
+                <component>
+                    <name>DOLPHIN_LOGGER</name>
+                    <displayName>DS Logger</displayName>
+                    <category>SLAVE</category>
+                    <cardinality>1+</cardinality>
+                    <commandScript>
+                        <script>scripts/dolphin_logger_service.py</script>
+                        <scriptType>PYTHON</scriptType>
+                        <timeout>600</timeout>
+                    </commandScript>
+                </component>
+
+                <component>
+                    <name>DOLPHIN_WORKER</name>
+                    <displayName>DS Worker</displayName>
+                    <category>SLAVE</category>
+                    <cardinality>1+</cardinality>
+                    <dependencies>
+                        <dependency>
+                            <name>DOLPHIN/DOLPHIN_LOGGER</name>
+                            <scope>host</scope>
+                            <auto-deploy>
+                                <enabled>true</enabled>
+                            </auto-deploy>
+                        </dependency>
+                    </dependencies>
+                    <commandScript>
+                        <script>scripts/dolphin_worker_service.py</script>
+                        <scriptType>PYTHON</scriptType>
+                        <timeout>600</timeout>
+                    </commandScript>
+                </component>
+
+                <component>
+                    <name>DOLPHIN_ALERT</name>
+                    <displayName>DS Alert</displayName>
+                    <category>SLAVE</category>
+                    <cardinality>1</cardinality>
+                    <commandScript>
+                        <script>scripts/dolphin_alert_service.py</script>
+                        <scriptType>PYTHON</scriptType>
+                        <timeout>600</timeout>
+                    </commandScript>
+                </component>
+
+                <component>
+                    <name>DOLPHIN_API</name>
+                    <displayName>DS_Api</displayName>
+                    <category>SLAVE</category>
+                    <cardinality>1</cardinality>
+                    <commandScript>
+                        <script>scripts/dolphin_api_service.py</script>
+                        <scriptType>PYTHON</scriptType>
+                        <timeout>600</timeout>
+                    </commandScript>
+                </component>
+            </components>
+
+            <requiredServices>
+                <service>ZOOKEEPER</service>
+            </requiredServices>
+
+            <osSpecifics>
+                <osSpecific>
+                    <osFamily>any</osFamily>
+                    <packages>
+                        <package>
+                            <name>apache-dolphinscheduler-incubating*</name>
+                        </package>
+                    </packages>
+                </osSpecific>
+            </osSpecifics>
+
+            <configuration-dependencies>
+                <config-type>dolphin-alert</config-type>
+                <config-type>dolphin-app-api</config-type>
+                <config-type>dolphin-app-dao</config-type>
+                <config-type>dolphin-common</config-type>
+                <config-type>dolphin-env</config-type>
+                <config-type>dolphin-quartz</config-type>
+            </configuration-dependencies>
+
+            <themes>
+                <theme>
+                    <fileName>theme.json</fileName>
+                    <default>true</default>
+                </theme>
+            </themes>
+
+            <quickLinksConfigurations-dir>quicklinks</quickLinksConfigurations-dir>
+            <quickLinksConfigurations>
+                <quickLinksConfiguration>
+                    <fileName>quicklinks.json</fileName>
+                    <default>true</default>
+                </quickLinksConfiguration>
+            </quickLinksConfigurations>
+        </service>
+    </services>
+</metainfo>
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/alerts/alert_dolphin_scheduler_status.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/alerts/alert_dolphin_scheduler_status.py
new file mode 100644
index 0000000..87cc7b4
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/alerts/alert_dolphin_scheduler_status.py
@@ -0,0 +1,124 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import socket
+import urllib2
+import os
+import logging
+import ambari_simplejson as json
+from resource_management.libraries.script.script import Script
+import sys
+reload(sys)
+sys.setdefaultencoding('utf-8')
+
+logger = logging.getLogger('ambari_alerts')
+
+config = Script.get_config()
+
+
+def get_tokens():
+    """
+    Returns a tuple of tokens in the format {{site/property}} that will be used
+    to build the dictionary passed into execute
+    
+    :rtype tuple
+    """
+
+def get_info(url, connection_timeout):
+    response = None
+    
+    try:
+        response = urllib2.urlopen(url, timeout=connection_timeout)
+        json_data = response.read()
+        return json_data
+    finally:
+        if response is not None:
+            try:
+                response.close()
+            except:
+                pass
+
+
+def execute(configurations={}, parameters={}, host_name=None):
+    """
+    Returns a tuple containing the result code and a pre-formatted result label
+    
+    Keyword arguments:
+    configurations : a mapping of configuration key to value
+    parameters : a mapping of script parameter key to value
+    host_name : the name of this host where the alert is running
+    
+    :type configurations dict
+    :type parameters dict
+    :type host_name str
+    """
+    
+    alert_name = parameters['alertName']
+
+    dolphin_pidfile_dir = "/opt/soft/run/dolphinscheduler"
+
+    pid = "0"
+    
+    
+    from resource_management.core import sudo
+
+    is_running = True
+    pid_file_path = ""
+    if alert_name == 'DOLPHIN_MASTER':
+        pid_file_path = dolphin_pidfile_dir + "/master-server.pid"
+    elif alert_name == 'DOLPHIN_WORKER':
+        pid_file_path = dolphin_pidfile_dir + "/worker-server.pid"
+    elif alert_name == 'DOLPHIN_ALERT':
+        pid_file_path = dolphin_pidfile_dir + "/alert-server.pid"
+    elif alert_name == 'DOLPHIN_LOGGER':
+        pid_file_path = dolphin_pidfile_dir + "/logger-server.pid"
+    elif alert_name == 'DOLPHIN_API':
+        pid_file_path = dolphin_pidfile_dir + "/api-server.pid"
+        
+    if not pid_file_path or not os.path.isfile(pid_file_path):
+        is_running = False
+        
+    try:
+        pid = int(sudo.read_file(pid_file_path))
+    except:
+        is_running = False
+
+    try:
+        # Kill will not actually kill the process
+        # From the doc:
+        # If sig is 0, then no signal is sent, but error checking is still
+        # performed; this can be used to check for the existence of a
+        # process ID or process group ID.
+        sudo.kill(pid, 0)
+    except OSError:
+        is_running = False
+
+    if host_name is None:
+        host_name = socket.getfqdn()
+
+    if not is_running:
+        result_code = "CRITICAL"
+    else:
+        result_code = "OK"
+
+    label = "The comment {0} of DOLPHIN_SCHEDULER on {1} is {2}".format(alert_name, host_name, result_code)
+
+    return ((result_code, [label]))
+
+if __name__ == "__main__":
+    pass
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_alert_service.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_alert_service.py
new file mode 100644
index 0000000..e78c38d
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_alert_service.py
@@ -0,0 +1,62 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import time
+from resource_management import *
+
+from dolphin_env import dolphin_env
+
+
+class DolphinAlertService(Script):
+    def install(self, env):
+        import params
+        env.set_params(params)
+        self.install_packages(env)
+        Execute(('chmod', '-R', '777', params.dolphin_home))
+        Execute(('chown', '-R', params.dolphin_user + ":" + params.dolphin_group,  params.dolphin_home))
+
+    def configure(self, env):
+        import params
+        params.pika_slave = True
+        env.set_params(params)
+
+        dolphin_env()
+
+    def start(self, env):
+        import params
+        env.set_params(params)
+        self.configure(env)
+        no_op_test = format("ls {dolphin_pidfile_dir}/alert-server.pid >/dev/null 2>&1 && ps `cat {dolphin_pidfile_dir}/alert-server.pid` | grep `cat {dolphin_pidfile_dir}/alert-server.pid` >/dev/null 2>&1")
+
+        start_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh start alert-server")
+        Execute(start_cmd, user=params.dolphin_user, not_if=no_op_test)
+
+    def stop(self, env):
+        import params
+        env.set_params(params)
+        stop_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh stop alert-server")
+        Execute(stop_cmd, user=params.dolphin_user)
+        time.sleep(5)
+
+    def status(self, env):
+        import status_params
+        env.set_params(status_params)
+        check_process_status(status_params.dolphin_run_dir + "alert-server.pid")
+
+
+if __name__ == "__main__":
+    DolphinAlertService().execute()
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_api_service.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_api_service.py
new file mode 100644
index 0000000..5a28924
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_api_service.py
@@ -0,0 +1,71 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import time
+from resource_management import *
+
+from dolphin_env import dolphin_env
+
+
+class DolphinApiService(Script):
+    def install(self, env):
+        import params
+        env.set_params(params)
+        self.install_packages(env)
+        Execute(('chmod', '-R', '777', params.dolphin_home))
+        Execute(('chown', '-R', params.dolphin_user + ":" + params.dolphin_group,  params.dolphin_home))
+
+    def configure(self, env):
+        import params
+        params.pika_slave = True
+        env.set_params(params)
+
+        dolphin_env()
+
+    def start(self, env):
+        import params
+        env.set_params(params)
+        self.configure(env)
+
+        #init
+        init_cmd=format("sh " + params.dolphin_home + "/script/create-dolphinscheduler.sh")
+        Execute(init_cmd, user=params.dolphin_user)
+
+        #upgrade
+        upgrade_cmd=format("sh " + params.dolphin_home + "/script/upgrade-dolphinscheduler.sh")
+        Execute(upgrade_cmd, user=params.dolphin_user)
+
+        no_op_test = format("ls {dolphin_pidfile_dir}/api-server.pid >/dev/null 2>&1 && ps `cat {dolphin_pidfile_dir}/api-server.pid` | grep `cat {dolphin_pidfile_dir}/api-server.pid` >/dev/null 2>&1")
+
+        start_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh start api-server")
+        Execute(start_cmd, user=params.dolphin_user, not_if=no_op_test)
+
+    def stop(self, env):
+        import params
+        env.set_params(params)
+        stop_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh stop api-server")
+        Execute(stop_cmd, user=params.dolphin_user)
+        time.sleep(5)
+
+    def status(self, env):
+        import status_params
+        env.set_params(status_params)
+        check_process_status(status_params.dolphin_run_dir + "api-server.pid")
+
+
+if __name__ == "__main__":
+    DolphinApiService().execute()
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_env.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_env.py
new file mode 100644
index 0000000..1661d76
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_env.py
@@ -0,0 +1,123 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+"""
+
+from resource_management import *
+
+
+def dolphin_env():
+    import params
+
+    Directory(params.dolphin_pidfile_dir,
+              mode=0777,
+              owner=params.dolphin_user,
+              group=params.dolphin_group,
+              create_parents=True
+              )
+    Directory(params.dolphin_log_dir,
+              mode=0777,
+              owner=params.dolphin_user,
+              group=params.dolphin_group,
+              create_parents=True
+              )
+    Directory(params.dolphin_conf_dir,
+              mode=0777,
+              owner=params.dolphin_user,
+              group=params.dolphin_group,
+              create_parents=True
+              )
+
+    Directory(params.dolphin_common_map['data.basedir.path'],
+              mode=0777,
+              owner=params.dolphin_user,
+              group=params.dolphin_group,
+              create_parents=True
+              )
+
+
+    File(format(params.dolphin_env_path),
+         mode=0777,
+         content=InlineTemplate(params.dolphin_env_content),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+
+    File(format(params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh"),
+               mode=0755,
+               content=Template("dolphin-daemon.sh.j2"),
+               owner=params.dolphin_user,
+               group=params.dolphin_group
+               )
+
+    File(format(params.dolphin_conf_dir + "/master.properties"),
+         mode=0755,
+         content=Template("master.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+    File(format(params.dolphin_conf_dir + "/worker.properties"),
+         mode=0755,
+         content=Template("worker.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+
+    File(format(params.dolphin_conf_dir + "/alert.properties"),
+         mode=0755,
+         content=Template("alert.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+    File(format(params.dolphin_conf_dir + "/datasource.properties"),
+         mode=0755,
+         content=Template("datasource.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+    File(format(params.dolphin_conf_dir + "/application-api.properties"),
+         mode=0755,
+         content=Template("application-api.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+    File(format(params.dolphin_conf_dir + "/common.properties"),
+         mode=0755,
+         content=Template("common.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+    File(format(params.dolphin_conf_dir + "/quartz.properties"),
+         mode=0755,
+         content=Template("quartz.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
+
+    File(format(params.dolphin_conf_dir + "/zookeeper.properties"),
+         mode=0755,
+         content=Template("zookeeper.properties.j2"),
+         owner=params.dolphin_user,
+         group=params.dolphin_group
+         )
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_logger_service.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_logger_service.py
new file mode 100644
index 0000000..fb47e13
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_logger_service.py
@@ -0,0 +1,61 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import time
+from resource_management import *
+
+from dolphin_env import dolphin_env
+
+
+class DolphinLoggerService(Script):
+    def install(self, env):
+        import params
+        env.set_params(params)
+        self.install_packages(env)
+        Execute(('chmod', '-R', '777', params.dolphin_home))
+        Execute(('chown', '-R', params.dolphin_user + ":" + params.dolphin_group,  params.dolphin_home))
+    def configure(self, env):
+        import params
+        params.pika_slave = True
+        env.set_params(params)
+
+        dolphin_env()
+
+    def start(self, env):
+        import params
+        env.set_params(params)
+        self.configure(env)
+        no_op_test = format("ls {dolphin_pidfile_dir}/logger-server.pid >/dev/null 2>&1 && ps `cat {dolphin_pidfile_dir}/logger-server.pid` | grep `cat {dolphin_pidfile_dir}/logger-server.pid` >/dev/null 2>&1")
+
+        start_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh start logger-server")
+        Execute(start_cmd, user=params.dolphin_user, not_if=no_op_test)
+
+    def stop(self, env):
+        import params
+        env.set_params(params)
+        stop_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh stop logger-server")
+        Execute(stop_cmd, user=params.dolphin_user)
+        time.sleep(5)
+
+    def status(self, env):
+        import status_params
+        env.set_params(status_params)
+        check_process_status(status_params.dolphin_run_dir + "logger-server.pid")
+
+
+if __name__ == "__main__":
+    DolphinLoggerService().execute()
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_master_service.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_master_service.py
new file mode 100644
index 0000000..8d64935
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_master_service.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import time
+from resource_management import *
+
+from dolphin_env import dolphin_env
+
+
+class DolphinMasterService(Script):
+    def install(self, env):
+        import params
+        env.set_params(params)
+        self.install_packages(env)
+        Execute(('chmod', '-R', '777', params.dolphin_home))
+        Execute(('chown', '-R', params.dolphin_user + ":" + params.dolphin_group,  params.dolphin_home))
+
+    def configure(self, env):
+        import params
+        params.pika_slave = True
+        env.set_params(params)
+
+        dolphin_env()
+
+    def start(self, env):
+        import params
+        env.set_params(params)
+        self.configure(env)
+        no_op_test = format("ls {dolphin_pidfile_dir}/master-server.pid >/dev/null 2>&1 && ps `cat {dolphin_pidfile_dir}/master-server.pid` | grep `cat {dolphin_pidfile_dir}/master-server.pid` >/dev/null 2>&1")
+        start_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh start master-server")
+        Execute(start_cmd, user=params.dolphin_user, not_if=no_op_test)
+
+    def stop(self, env):
+        import params
+        env.set_params(params)
+        stop_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh stop master-server")
+        Execute(stop_cmd, user=params.dolphin_user)
+        time.sleep(5)
+
+    def status(self, env):
+        import status_params
+        env.set_params(status_params)
+        check_process_status(status_params.dolphin_run_dir + "master-server.pid")
+
+
+if __name__ == "__main__":
+    DolphinMasterService().execute()
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_worker_service.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_worker_service.py
new file mode 100644
index 0000000..1f542c0
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/dolphin_worker_service.py
@@ -0,0 +1,61 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import time
+from resource_management import *
+
+from dolphin_env import dolphin_env
+
+
+class DolphinWorkerService(Script):
+  def install(self, env):
+    import params
+    env.set_params(params)
+    self.install_packages(env)
+    Execute(('chmod', '-R', '777', params.dolphin_home))
+    Execute(('chown', '-R', params.dolphin_user + ":" + params.dolphin_group,  params.dolphin_home))
+
+  def configure(self, env):
+    import params
+    params.pika_slave = True
+    env.set_params(params)
+
+    dolphin_env()
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+    no_op_test = format("ls {dolphin_pidfile_dir}/worker-server.pid >/dev/null 2>&1 && ps `cat {dolphin_pidfile_dir}/worker-server.pid` | grep `cat {dolphin_pidfile_dir}/worker-server.pid` >/dev/null 2>&1")
+    start_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh start worker-server")
+    Execute(start_cmd, user=params.dolphin_user, not_if=no_op_test)
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+    stop_cmd = format("sh " + params.dolphin_bin_dir + "/dolphinscheduler-daemon.sh stop worker-server")
+    Execute(stop_cmd, user=params.dolphin_user)
+    time.sleep(5)
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    check_process_status(status_params.dolphin_run_dir + "worker-server.pid")
+
+
+if __name__ == "__main__":
+  DolphinWorkerService().execute()
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/params.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/params.py
new file mode 100644
index 0000000..3ca46f2
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/params.py
@@ -0,0 +1,155 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+
+import sys
+from resource_management import *
+from resource_management.core.logger import Logger
+from resource_management.libraries.functions import default
+
+Logger.initialize_logger()
+reload(sys)
+sys.setdefaultencoding('utf-8')
+
+# server configurations
+config = Script.get_config()
+
+# conf_dir = "/etc/"
+dolphin_home = "/opt/soft/dolphinscheduler"
+dolphin_conf_dir = dolphin_home + "/conf"
+dolphin_log_dir = dolphin_home + "/logs"
+dolphin_bin_dir = dolphin_home + "/bin"
+dolphin_lib_jars = dolphin_home + "/lib/*"
+dolphin_pidfile_dir = "/opt/soft/run/dolphinscheduler"
+
+rmHosts = default("/clusterHostInfo/rm_host", [])
+
+# dolphin-env
+dolphin_env_map = {}
+dolphin_env_map.update(config['configurations']['dolphin-env'])
+
+# which user to install and admin dolphin scheduler
+dolphin_user = dolphin_env_map['dolphin.user']
+dolphin_group = dolphin_env_map['dolphin.group']
+
+# .dolphinscheduler_env.sh
+dolphin_env_path = dolphin_conf_dir + '/env/dolphinscheduler_env.sh'
+dolphin_env_content = dolphin_env_map['dolphinscheduler-env-content']
+
+# database config
+dolphin_database_config = {}
+dolphin_database_config['dolphin_database_type'] = dolphin_env_map['dolphin.database.type']
+dolphin_database_config['dolphin_database_username'] = dolphin_env_map['dolphin.database.username']
+dolphin_database_config['dolphin_database_password'] = dolphin_env_map['dolphin.database.password']
+if 'mysql' == dolphin_database_config['dolphin_database_type']:
+    dolphin_database_config['dolphin_database_driver'] = 'com.mysql.jdbc.Driver'
+    dolphin_database_config['driverDelegateClass'] = 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate'
+    dolphin_database_config['dolphin_database_url'] = 'jdbc:mysql://' + dolphin_env_map['dolphin.database.host'] \
+                                                      + ':' + dolphin_env_map['dolphin.database.port'] \
+                                                      + '/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8'
+else:
+    dolphin_database_config['dolphin_database_driver'] = 'org.postgresql.Driver'
+    dolphin_database_config['driverDelegateClass'] = 'org.quartz.impl.jdbcjobstore.PostgreSQLDelegate'
+    dolphin_database_config['dolphin_database_url'] = 'jdbc:postgresql://' + dolphin_env_map['dolphin.database.host'] \
+                                                      + ':' + dolphin_env_map['dolphin.database.port'] \
+                                                      + '/dolphinscheduler'
+
+
+
+
+
+# application-alert.properties
+dolphin_alert_map = {}
+wechat_push_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$token'
+wechat_token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpId&corpsecret=$secret'
+wechat_team_send_msg = '{\"toparty\":\"$toParty\",\"agentid\":\"$agentId\",\"msgtype\":\"text\",\"text\":{\"content\":\"$msg\"},\"safe\":\"0\"}'
+wechat_user_send_msg = '{\"touser\":\"$toUser\",\"agentid\":\"$agentId\",\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$msg\"}}'
+
+dolphin_alert_config_map = config['configurations']['dolphin-alert']
+
+if dolphin_alert_config_map['enterprise.wechat.enable']:
+    dolphin_alert_map['enterprise.wechat.push.ur'] = wechat_push_url
+    dolphin_alert_map['enterprise.wechat.token.url'] = wechat_token_url
+    dolphin_alert_map['enterprise.wechat.team.send.msg'] = wechat_team_send_msg
+    dolphin_alert_map['enterprise.wechat.user.send.msg'] = wechat_user_send_msg
+
+dolphin_alert_map.update(dolphin_alert_config_map)
+
+
+
+# application-api.properties
+dolphin_app_api_map = {}
+dolphin_app_api_map.update(config['configurations']['dolphin-application-api'])
+
+
+# common.properties
+dolphin_common_map = {}
+
+if 'yarn-site' in config['configurations'] and \
+        'yarn.resourcemanager.webapp.address' in config['configurations']['yarn-site']:
+    yarn_resourcemanager_webapp_address = config['configurations']['yarn-site']['yarn.resourcemanager.webapp.address']
+    yarn_application_status_address = 'http://' + yarn_resourcemanager_webapp_address + '/ws/v1/cluster/apps/%s'
+    dolphin_common_map['yarn.application.status.address'] = yarn_application_status_address
+
+rmHosts = default("/clusterHostInfo/rm_host", [])
+if len(rmHosts) > 1:
+    dolphin_common_map['yarn.resourcemanager.ha.rm.ids'] = ','.join(rmHosts)
+else:
+    dolphin_common_map['yarn.resourcemanager.ha.rm.ids'] = ''
+
+dolphin_common_map_tmp = config['configurations']['dolphin-common']
+data_basedir_path = dolphin_common_map_tmp['data.basedir.path']
+dolphin_common_map['dolphinscheduler.env.path'] = dolphin_env_path
+dolphin_common_map.update(config['configurations']['dolphin-common'])
+
+# datasource.properties
+dolphin_datasource_map = {}
+dolphin_datasource_map['spring.datasource.type'] = 'com.alibaba.druid.pool.DruidDataSource'
+dolphin_datasource_map['spring.datasource.driver-class-name'] = dolphin_database_config['dolphin_database_driver']
+dolphin_datasource_map['spring.datasource.url'] = dolphin_database_config['dolphin_database_url']
+dolphin_datasource_map['spring.datasource.username'] = dolphin_database_config['dolphin_database_username']
+dolphin_datasource_map['spring.datasource.password'] = dolphin_database_config['dolphin_database_password']
+dolphin_datasource_map.update(config['configurations']['dolphin-datasource'])
+
+# master.properties
+dolphin_master_map = config['configurations']['dolphin-master']
+
+# quartz.properties
+dolphin_quartz_map = {}
+dolphin_quartz_map['org.quartz.jobStore.driverDelegateClass'] = dolphin_database_config['driverDelegateClass']
+dolphin_quartz_map.update(config['configurations']['dolphin-quartz'])
+
+# worker.properties
+dolphin_worker_map = config['configurations']['dolphin-worker']
+
+# zookeeper.properties
+dolphin_zookeeper_map={}
+zookeeperHosts = default("/clusterHostInfo/zookeeper_hosts", [])
+if len(zookeeperHosts) > 0 and "clientPort" in config['configurations']['zoo.cfg']:
+    clientPort = config['configurations']['zoo.cfg']['clientPort']
+    zookeeperPort = ":" + clientPort + ","
+    dolphin_zookeeper_map['zookeeper.quorum'] = zookeeperPort.join(zookeeperHosts) + ":" + clientPort
+dolphin_zookeeper_map.update(config['configurations']['dolphin-zookeeper'])
+if 'spring.servlet.multipart.max-file-size' in dolphin_app_api_map:
+    file_size = dolphin_app_api_map['spring.servlet.multipart.max-file-size']
+    dolphin_app_api_map['spring.servlet.multipart.max-file-size'] = file_size + "MB"
+if 'spring.servlet.multipart.max-request-size' in dolphin_app_api_map:
+    request_size = dolphin_app_api_map['spring.servlet.multipart.max-request-size']
+    dolphin_app_api_map['spring.servlet.multipart.max-request-size'] = request_size + "MB"
+
+
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/service_check.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/service_check.py
new file mode 100644
index 0000000..0e12f69
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/service_check.py
@@ -0,0 +1,31 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+"""
+
+from resource_management import *
+from resource_management.libraries.functions import get_unique_id_and_date
+
+class ServiceCheck(Script):
+  def service_check(self, env):
+    import params
+    #env.set_params(params)
+
+    # Execute(format("which pika_server"))
+
+if __name__ == "__main__":
+  ServiceCheck().execute()
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/status_params.py b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/status_params.py
new file mode 100644
index 0000000..24b2c8b
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/scripts/status_params.py
@@ -0,0 +1,23 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from resource_management import *
+
+config = Script.get_config()
+
+dolphin_run_dir = "/opt/soft/run/dolphinscheduler/"
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/alert.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/alert.properties.j2
new file mode 100644
index 0000000..73840b8
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/alert.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_alert_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/application-api.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/application-api.properties.j2
new file mode 100644
index 0000000..7011800
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/application-api.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_app_api_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/common.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/common.properties.j2
new file mode 100644
index 0000000..2220c4e
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/common.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_common_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/datasource.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/datasource.properties.j2
new file mode 100644
index 0000000..40aed83
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/datasource.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_datasource_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/dolphin-daemon.sh.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/dolphin-daemon.sh.j2
new file mode 100644
index 0000000..0802b74
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/dolphin-daemon.sh.j2
@@ -0,0 +1,116 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+usage="Usage: dolphinscheduler-daemon.sh (start|stop) <command> "
+
+# if no args specified, show usage
+if [ $# -le 1 ]; then
+  echo $usage
+  exit 1
+fi
+
+startStop=$1
+shift
+command=$1
+shift
+
+echo "Begin $startStop $command......"
+
+BIN_DIR=`dirname $0`
+BIN_DIR=`cd "$BIN_DIR"; pwd`
+DOLPHINSCHEDULER_HOME=$BIN_DIR/..
+
+export HOSTNAME=`hostname`
+
+DOLPHINSCHEDULER_LIB_JARS={{dolphin_lib_jars}}
+
+DOLPHINSCHEDULER_OPTS="-server -Xmx16g -Xms4g -Xss512k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"
+STOP_TIMEOUT=5
+
+log={{dolphin_log_dir}}/dolphinscheduler-$command-$HOSTNAME.out
+pid={{dolphin_pidfile_dir}}/$command.pid
+
+cd $DOLPHINSCHEDULER_HOME
+
+if [ "$command" = "api-server" ]; then
+  LOG_FILE="-Dlogging.config={{dolphin_conf_dir}}/logback-api.xml -Dspring.profiles.active=api"
+  CLASS=org.apache.dolphinscheduler.api.ApiApplicationServer
+elif [ "$command" = "master-server" ]; then
+  LOG_FILE="-Dlogging.config={{dolphin_conf_dir}}/logback-master.xml -Ddruid.mysql.usePingMethod=false"
+  CLASS=org.apache.dolphinscheduler.server.master.MasterServer
+elif [ "$command" = "worker-server" ]; then
+  LOG_FILE="-Dlogging.config={{dolphin_conf_dir}}/logback-worker.xml -Ddruid.mysql.usePingMethod=false"
+  CLASS=org.apache.dolphinscheduler.server.worker.WorkerServer
+elif [ "$command" = "alert-server" ]; then
+  LOG_FILE="-Dlogging.config={{dolphin_conf_dir}}/logback-alert.xml"
+  CLASS=org.apache.dolphinscheduler.alert.AlertServer
+elif [ "$command" = "logger-server" ]; then
+  CLASS=org.apache.dolphinscheduler.server.log.LoggerServer
+else
+  echo "Error: No command named \`$command' was found."
+  exit 1
+fi
+
+case $startStop in
+  (start)
+
+    if [ -f $pid ]; then
+      if kill -0 `cat $pid` > /dev/null 2>&1; then
+        echo $command running as process `cat $pid`.  Stop it first.
+        exit 1
+      fi
+    fi
+
+    echo starting $command, logging to $log
+
+    exec_command="$LOG_FILE $DOLPHINSCHEDULER_OPTS -classpath {{dolphin_conf_dir}}:{{dolphin_lib_jars}} $CLASS"
+
+    echo "nohup java $exec_command > $log 2>&1 < /dev/null &"
+    nohup java $exec_command > $log 2>&1 < /dev/null &
+    echo $! > $pid
+    ;;
+
+  (stop)
+
+      if [ -f $pid ]; then
+        TARGET_PID=`cat $pid`
+        if kill -0 $TARGET_PID > /dev/null 2>&1; then
+          echo stopping $command
+          kill $TARGET_PID
+          sleep $STOP_TIMEOUT
+          if kill -0 $TARGET_PID > /dev/null 2>&1; then
+            echo "$command did not stop gracefully after $STOP_TIMEOUT seconds: killing with kill -9"
+            kill -9 $TARGET_PID
+          fi
+        else
+          echo no $command to stop
+        fi
+        rm -f $pid
+      else
+        echo no $command to stop
+      fi
+      ;;
+
+  (*)
+    echo $usage
+    exit 1
+    ;;
+
+esac
+
+echo "End $startStop $command."
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/master.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/master.properties.j2
new file mode 100644
index 0000000..d9b85e1
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/master.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_master_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/quartz.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/quartz.properties.j2
new file mode 100644
index 0000000..e027a26
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/quartz.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_quartz_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/worker.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/worker.properties.j2
new file mode 100644
index 0000000..a008b74
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/worker.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_worker_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/zookeeper.properties.j2 b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/zookeeper.properties.j2
new file mode 100644
index 0000000..9eb14ea
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/package/templates/zookeeper.properties.j2
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{% for key, value in dolphin_zookeeper_map.iteritems() -%}
+  {{key}}={{value}}
+{% endfor %}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/quicklinks/quicklinks.json b/ambari_plugin/common-services/DOLPHIN/1.3.3/quicklinks/quicklinks.json
new file mode 100644
index 0000000..8753004
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/quicklinks/quicklinks.json
@@ -0,0 +1,26 @@
+{
+  "name": "default",
+  "description": "default quick links configuration",
+  "configuration": {
+    "protocol":
+    {
+      "type":"http"
+    },
+
+    "links": [
+      {
+        "name": "dolphin-application-ui",
+        "label": "DolphinApplication UI",
+        "requires_user_name": "false",
+        "component_name": "DOLPHIN_API",
+        "url": "%@://%@:%@/dolphinscheduler/ui/view/login/index.html",
+        "port":{
+          "http_property": "server.port",
+          "http_default_port": "12345",
+          "regex": "^(\\d+)$",
+          "site": "dolphin-application-api"
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/themes/theme.json b/ambari_plugin/common-services/DOLPHIN/1.3.3/themes/theme.json
new file mode 100644
index 0000000..953e232
--- /dev/null
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/themes/theme.json
@@ -0,0 +1,661 @@
+{
+  "name": "default",
+  "description": "Default theme for Dolphin Scheduler service",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-rows": "3",
+              "tab-columns": "3",
+              "sections": [
+                {
+                  "name": "dolphin-env-config",
+                  "display-name": "Dolphin Env Config",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-rows": "1",
+                  "section-columns": "2",
+                  "subsections": [
+                    {
+                      "name": "env-row1-col1",
+                      "display-name": "Deploy User Info",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "env-row1-col2",
+                      "display-name": "System Env Optimization",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "dolphin-database-config",
+                  "display-name": "Database Config",
+                  "row-index": "1",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-rows": "1",
+                  "section-columns": "3",
+                  "subsections": [
+                    {
+                      "name": "database-row1-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "database-row1-col2",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "database-row1-col3",
+                      "row-index": "0",
+                      "column-index": "2",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "dynamic-config",
+                  "row-index": "2",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-rows": "1",
+                  "section-columns": "3",
+                  "subsections": [
+                    {
+                      "name": "dynamic-row1-col1",
+                      "display-name": "Resource FS Config",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "dynamic-row1-col2",
+                      "display-name": "Kerberos Info",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "dynamic-row1-col3",
+                      "display-name": "Wechat Info",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "dolphin-env/dolphin.database.type",
+          "subsection-name": "database-row1-col1"
+        },
+        {
+          "config": "dolphin-env/dolphin.database.host",
+          "subsection-name": "database-row1-col2"
+        },
+        {
+          "config": "dolphin-env/dolphin.database.port",
+          "subsection-name": "database-row1-col2"
+        },
+        {
+          "config": "dolphin-env/dolphin.database.username",
+          "subsection-name": "database-row1-col3"
+        },
+        {
+          "config": "dolphin-env/dolphin.database.password",
+          "subsection-name": "database-row1-col3"
+        },
+        {
+          "config": "dolphin-env/dolphin.user",
+          "subsection-name": "env-row1-col1"
+        },
+        {
+          "config": "dolphin-env/dolphin.group",
+          "subsection-name": "env-row1-col1"
+        },
+        {
+          "config": "dolphin-env/dolphinscheduler-env-content",
+          "subsection-name": "env-row1-col2"
+        },
+        {
+          "config": "dolphin-common/resource.storage.type",
+          "subsection-name": "dynamic-row1-col1"
+        },
+        {
+          "config": "dolphin-common/resource.upload.path",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === HDFS || ${dolphin-common/resource.storage.type} === S3",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/hdfs.root.user",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === HDFS",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/data.store2hdfs.basepath",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === HDFS",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/fs.defaultFS",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === HDFS",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/fs.s3a.endpoint",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === S3",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/fs.s3a.access.key",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === S3",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/fs.s3a.secret.key",
+          "subsection-name": "dynamic-row1-col1",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/resource.storage.type"
+              ],
+              "if": "${dolphin-common/resource.storage.type} === S3",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/hadoop.security.authentication.startup.state",
+          "subsection-name": "dynamic-row1-col2"
+        },
+        {
+          "config": "dolphin-common/java.security.krb5.conf.path",
+          "subsection-name": "dynamic-row1-col2",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/hadoop.security.authentication.startup.state"
+              ],
+              "if": "${dolphin-common/hadoop.security.authentication.startup.state}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/login.user.keytab.username",
+          "subsection-name": "dynamic-row1-col2",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/hadoop.security.authentication.startup.state"
+              ],
+              "if": "${dolphin-common/hadoop.security.authentication.startup.state}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/login.user.keytab.path",
+          "subsection-name": "dynamic-row1-col2",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/hadoop.security.authentication.startup.state"
+              ],
+              "if": "${dolphin-common/hadoop.security.authentication.startup.state}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-common/kerberos.expire.time",
+          "subsection-name": "dynamic-row1-col2",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-common/hadoop.security.authentication.startup.state"
+              ],
+              "if": "${dolphin-common/hadoop.security.authentication.startup.state}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-alert/enterprise.wechat.enable",
+          "subsection-name": "dynamic-row1-col3"
+        },
+        {
+          "config": "dolphin-alert/enterprise.wechat.corp.id",
+          "subsection-name": "dynamic-row1-col3",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-alert/enterprise.wechat.enable"
+              ],
+              "if": "${dolphin-alert/enterprise.wechat.enable}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-alert/enterprise.wechat.secret",
+          "subsection-name": "dynamic-row1-col3",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-alert/enterprise.wechat.enable"
+              ],
+              "if": "${dolphin-alert/enterprise.wechat.enable}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-alert/enterprise.wechat.agent.id",
+          "subsection-name": "dynamic-row1-col3",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-alert/enterprise.wechat.enable"
+              ],
+              "if": "${dolphin-alert/enterprise.wechat.enable}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        },
+        {
+          "config": "dolphin-alert/enterprise.wechat.users",
+          "subsection-name": "dynamic-row1-col3",
+          "depends-on": [
+            {
+              "configs":[
+                "dolphin-alert/enterprise.wechat.enable"
+              ],
+              "if": "${dolphin-alert/enterprise.wechat.enable}",
+              "then": {
+                "property_value_attributes": {
+                  "visible": true
+                }
+              },
+              "else": {
+                "property_value_attributes": {
+                  "visible": false
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "dolphin-env/dolphin.database.type",
+        "widget": {
+          "type": "combo"
+        }
+      },
+      {
+        "config": "dolphin-env/dolphin.database.host",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-env/dolphin.database.port",
+        "widget": {
+          "type": "text-field",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "dolphin-env/dolphin.database.username",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-env/dolphin.database.password",
+        "widget": {
+          "type": "password"
+        }
+      },
+      {
+        "config": "dolphin-env/dolphin.user",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-env/dolphin.group",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-env/dolphinscheduler-env-content",
+        "widget": {
+          "type": "text-area"
+        }
+      },
+      {
+        "config": "dolphin-common/resource.storage.type",
+        "widget": {
+          "type": "combo"
+        }
+      },
+      {
+        "config": "dolphin-common/resource.upload.path",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/hdfs.root.user",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/data.store2hdfs.basepath",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/fs.defaultFS",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/fs.s3a.endpoint",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/fs.s3a.access.key",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/fs.s3a.secret.key",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/hadoop.security.authentication.startup.state",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "dolphin-common/java.security.krb5.conf.path",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/login.user.keytab.username",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/login.user.keytab.path",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-common/kerberos.expire.time",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-alert/enterprise.wechat.enable",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "dolphin-alert/enterprise.wechat.corp.id",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-alert/enterprise.wechat.secret",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-alert/enterprise.wechat.agent.id",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "dolphin-alert/enterprise.wechat.users",
+        "widget": {
+          "type": "text-field"
+        }
+      }
+    ]
+  }
+}
diff --git a/ambari_plugin/statcks/DOLPHIN/metainfo.xml b/ambari_plugin/statcks/DOLPHIN/metainfo.xml
new file mode 100755
index 0000000..386a537
--- /dev/null
+++ b/ambari_plugin/statcks/DOLPHIN/metainfo.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>DOLPHIN</name>
+      <extends>common-services/DOLPHIN/1.3.3</extends>
+    </service>
+  </services>
+</metainfo>
\ No newline at end of file
diff --git a/sql/upgrade/1.1.0_schema/mysql/escheduler_dml.sql b/docker/README.md
similarity index 100%
rename from sql/upgrade/1.1.0_schema/mysql/escheduler_dml.sql
rename to docker/README.md
diff --git a/docker/build/Dockerfile b/docker/build/Dockerfile
new file mode 100644
index 0000000..ebc2d76
--- /dev/null
+++ b/docker/build/Dockerfile
@@ -0,0 +1,82 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM nginx:alpine
+
+ARG VERSION
+
+ENV TZ Asia/Shanghai
+ENV LANG C.UTF-8
+ENV DEBIAN_FRONTEND noninteractive
+
+#1. install dos2unix shadow bash openrc python sudo vim wget iputils net-tools ssh pip tini kazoo.
+#If install slowly, you can replcae alpine's mirror with aliyun's mirror, Example:
+#RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
+RUN apk update && \
+    apk --update add --no-cache dos2unix shadow bash openrc python2 python3 sudo vim wget iputils net-tools openssh-server py-pip tini && \
+    apk add --update procps && \
+    openrc boot && \
+    pip install kazoo
+
+#2. install jdk
+RUN apk add openjdk8
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV PATH $JAVA_HOME/bin:$PATH
+
+#3. add dolphinscheduler
+ADD ./apache-dolphinscheduler-incubating-${VERSION}-dolphinscheduler-bin.tar.gz /opt/
+RUN mv /opt/apache-dolphinscheduler-incubating-${VERSION}-dolphinscheduler-bin/ /opt/dolphinscheduler/
+ENV DOLPHINSCHEDULER_HOME /opt/dolphinscheduler
+
+#4. install pg
+RUN apk add postgresql postgresql-contrib
+#5. modify nginx
+RUN echo "daemon off;" >> /etc/nginx/nginx.conf && \
+    rm -rf /etc/nginx/conf.d/*
+ADD ./conf/nginx/dolphinscheduler.conf /etc/nginx/conf.d
+
+#6. add configuration and modify permissions and set soft links
+ADD ./checkpoint.sh /root/checkpoint.sh
+ADD ./startup-init-conf.sh /root/startup-init-conf.sh
+ADD ./startup.sh /root/startup.sh
+ADD ./conf/dolphinscheduler/*.tpl /opt/dolphinscheduler/conf/
+ADD ./conf/dolphinscheduler/logback/* /opt/dolphinscheduler/conf/
+ADD conf/dolphinscheduler/env/dolphinscheduler_env.sh /opt/dolphinscheduler/conf/env/
+RUN chmod +x /root/checkpoint.sh && \
+    chmod +x /root/startup-init-conf.sh && \
+    chmod +x /root/startup.sh && \
+    chmod +x /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh && \
+    chmod +x /opt/dolphinscheduler/script/*.sh && \
+    chmod +x /opt/dolphinscheduler/bin/*.sh && \
+    dos2unix /root/checkpoint.sh && \
+    dos2unix /root/startup-init-conf.sh && \
+    dos2unix /root/startup.sh && \
+    dos2unix /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh && \
+    dos2unix /opt/dolphinscheduler/script/*.sh && \
+    dos2unix /opt/dolphinscheduler/bin/*.sh && \
+    rm -rf /bin/sh && \
+    ln -s /bin/bash /bin/sh && \
+    mkdir -p /tmp/xls
+
+#7. remove apk index cache and disable coredup for sudo
+RUN rm -rf /var/cache/apk/* && \
+    echo "Set disable_coredump false" >> /etc/sudo.conf
+
+#8. expose port
+EXPOSE 2181 2888 3888 5432 5678 1234 12345 50051 8888
+
+ENTRYPOINT ["/sbin/tini", "--", "/root/startup.sh"]
diff --git a/docker/build/README.md b/docker/build/README.md
new file mode 100644
index 0000000..5725ec5
--- /dev/null
+++ b/docker/build/README.md
@@ -0,0 +1,328 @@
+## What is Dolphin Scheduler?
+
+Dolphin Scheduler is a distributed and easy-to-expand visual DAG workflow scheduling system, dedicated to solving the complex dependencies in data processing, making the scheduling system out of the box for data processing.
+
+Github URL: https://github.com/apache/incubator-dolphinscheduler
+
+Official Website: https://dolphinscheduler.apache.org
+
+![Dolphin Scheduler](https://dolphinscheduler.apache.org/img/hlogo_colorful.svg)
+
+[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
+[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
+
+## How to use this docker image
+
+#### You can start a dolphinscheduler instance
+```
+$ docker run -dit --name dolphinscheduler \ 
+-e POSTGRESQL_USERNAME=test -e POSTGRESQL_PASSWORD=test -e POSTGRESQL_DATABASE=dolphinscheduler \
+-p 8888:8888 \
+dolphinscheduler all
+```
+
+The default postgres user `root`, postgres password `root` and database `dolphinscheduler` are created in the `startup.sh`.
+
+The default zookeeper is created in the `startup.sh`.
+
+#### Or via Environment Variables **`POSTGRESQL_HOST`** **`POSTGRESQL_PORT`** **`POSTGRESQL_DATABASE`** **`ZOOKEEPER_QUORUM`**
+
+You can specify **existing postgres service**. Example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+-p 8888:8888 \
+dolphinscheduler all
+```
+
+You can specify **existing zookeeper service**. Example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-p 8888:8888 \
+dolphinscheduler all
+```
+
+#### Or start a standalone dolphinscheduler server
+
+You can start a standalone dolphinscheduler server.
+
+* Start a **master server**, For example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+dolphinscheduler master-server
+```
+
+* Start a **worker server**, For example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+dolphinscheduler worker-server
+```
+
+* Start a **api server**, For example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+-p 12345:12345 \
+dolphinscheduler api-server
+```
+
+* Start a **alert server**, For example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+dolphinscheduler alert-server
+```
+
+* Start a **frontend**, For example:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e FRONTEND_API_SERVER_HOST="192.168.x.x" -e FRONTEND_API_SERVER_PORT="12345" \
+-p 8888:8888 \
+dolphinscheduler frontend
+```
+
+**Note**: You must be specify `POSTGRESQL_HOST` `POSTGRESQL_PORT` `POSTGRESQL_DATABASE` `POSTGRESQL_USERNAME` `POSTGRESQL_PASSWORD` `ZOOKEEPER_QUORUM` when start a standalone dolphinscheduler server.
+
+## How to build a docker image
+
+You can build a docker image in A Unix-like operating system, You can also build it in Windows operating system.
+
+In Unix-Like, Example:
+
+```bash
+$ cd path/incubator-dolphinscheduler
+$ sh ./docker/build/hooks/build
+```
+
+In Windows, Example:
+
+```bat
+c:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
+```
+
+Please read `./docker/build/hooks/build` `./docker/build/hooks/build.bat` script files if you don't understand
+
+## Environment Variables
+
+The Dolphin Scheduler image uses several environment variables which are easy to miss. While none of the variables are required, they may significantly aid you in using the image.
+
+**`POSTGRESQL_HOST`**
+
+This environment variable sets the host for PostgreSQL. The default value is `127.0.0.1`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`.
+
+**`POSTGRESQL_PORT`**
+
+This environment variable sets the port for PostgreSQL. The default value is `5432`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`. 
+
+**`POSTGRESQL_USERNAME`**
+
+This environment variable sets the username for PostgreSQL. The default value is `root`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`.
+
+**`POSTGRESQL_PASSWORD`**
+
+This environment variable sets the password for PostgreSQL. The default value is `root`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`.
+
+**`POSTGRESQL_DATABASE`**
+
+This environment variable sets the database for PostgreSQL. The default value is `dolphinscheduler`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`.
+
+**`DOLPHINSCHEDULER_ENV_PATH`**
+
+This environment variable sets the runtime environment for task. The default value is `/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh`.
+
+**`DOLPHINSCHEDULER_DATA_BASEDIR_PATH`**
+
+User data directory path, self configuration, please make sure the directory exists and have read write permissions. The default value is `/tmp/dolphinscheduler`
+
+**`ZOOKEEPER_QUORUM`**
+
+This environment variable sets zookeeper quorum for `master-server` and `worker-serverr`. The default value is `127.0.0.1:2181`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`.
+
+**`MASTER_EXEC_THREADS`**
+
+This environment variable sets exec thread num for `master-server`. The default value is `100`.
+
+**`MASTER_EXEC_TASK_NUM`**
+
+This environment variable sets exec task num for `master-server`. The default value is `20`.
+
+**`MASTER_HEARTBEAT_INTERVAL`**
+
+This environment variable sets heartbeat interval for `master-server`. The default value is `10`.
+
+**`MASTER_TASK_COMMIT_RETRYTIMES`**
+
+This environment variable sets task commit retry times for `master-server`. The default value is `5`.
+
+**`MASTER_TASK_COMMIT_INTERVAL`**
+
+This environment variable sets task commit interval for `master-server`. The default value is `1000`.
+
+**`MASTER_MAX_CPULOAD_AVG`**
+
+This environment variable sets max cpu load avg for `master-server`. The default value is `100`.
+
+**`MASTER_RESERVED_MEMORY`**
+
+This environment variable sets reserved memory for `master-server`. The default value is `0.1`.
+
+**`MASTER_LISTEN_PORT`**
+
+This environment variable sets port for `master-server`. The default value is `5678`.
+
+**`WORKER_EXEC_THREADS`**
+
+This environment variable sets exec thread num for `worker-server`. The default value is `100`.
+
+**`WORKER_HEARTBEAT_INTERVAL`**
+
+This environment variable sets heartbeat interval for `worker-server`. The default value is `10`.
+
+**`WORKER_FETCH_TASK_NUM`**
+
+This environment variable sets fetch task num for `worker-server`. The default value is `3`.
+
+**`WORKER_MAX_CPULOAD_AVG`**
+
+This environment variable sets max cpu load avg for `worker-server`. The default value is `100`.
+
+**`WORKER_RESERVED_MEMORY`**
+
+This environment variable sets reserved memory for `worker-server`. The default value is `0.1`.
+
+**`WORKER_LISTEN_PORT`**
+
+This environment variable sets port for `worker-server`. The default value is `1234`.
+
+**`WORKER_GROUP`**
+
+This environment variable sets group for `worker-server`. The default value is `default`.
+
+**`XLS_FILE_PATH`**
+
+This environment variable sets xls file path for `alert-server`. The default value is `/tmp/xls`.
+
+**`MAIL_SERVER_HOST`**
+
+This environment variable sets mail server host for `alert-server`. The default value is empty.
+
+**`MAIL_SERVER_PORT`**
+
+This environment variable sets mail server port for `alert-server`. The default value is empty.
+
+**`MAIL_SENDER`**
+
+This environment variable sets mail sender for `alert-server`. The default value is empty.
+
+**`MAIL_USER=`**
+
+This environment variable sets mail user for `alert-server`. The default value is empty.
+
+**`MAIL_PASSWD`**
+
+This environment variable sets mail password for `alert-server`. The default value is empty.
+
+**`MAIL_SMTP_STARTTLS_ENABLE`**
+
+This environment variable sets SMTP tls for `alert-server`. The default value is `true`.
+
+**`MAIL_SMTP_SSL_ENABLE`**
+
+This environment variable sets SMTP ssl for `alert-server`. The default value is `false`.
+
+**`MAIL_SMTP_SSL_TRUST`**
+
+This environment variable sets SMTP ssl truest for `alert-server`. The default value is empty.
+
+**`ENTERPRISE_WECHAT_ENABLE`**
+
+This environment variable sets enterprise wechat enable for `alert-server`. The default value is `false`.
+
+**`ENTERPRISE_WECHAT_CORP_ID`**
+
+This environment variable sets enterprise wechat corp id for `alert-server`. The default value is empty.
+
+**`ENTERPRISE_WECHAT_SECRET`**
+
+This environment variable sets enterprise wechat secret for `alert-server`. The default value is empty.
+
+**`ENTERPRISE_WECHAT_AGENT_ID`**
+
+This environment variable sets enterprise wechat agent id for `alert-server`. The default value is empty.
+
+**`ENTERPRISE_WECHAT_USERS`**
+
+This environment variable sets enterprise wechat users for `alert-server`. The default value is empty.
+
+**`FRONTEND_API_SERVER_HOST`**
+
+This environment variable sets api server host for `frontend`. The default value is `127.0.0.1`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `api-server`.
+
+**`FRONTEND_API_SERVER_PORT`**
+
+This environment variable sets api server port for `frontend`. The default value is `123451`.
+
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `api-server`.
+
+## Initialization scripts
+
+If you would like to do additional initialization in an image derived from this one, add one or more environment variable under `/root/start-init-conf.sh`, and modify template files in `/opt/dolphinscheduler/conf/*.tpl`.
+
+For example, to add an environment variable `API_SERVER_PORT` in `/root/start-init-conf.sh`:
+
+```
+export API_SERVER_PORT=5555
+``` 
+
+and to modify `/opt/dolphinscheduler/conf/application-api.properties.tpl` template file, add server port:
+```
+server.port=${API_SERVER_PORT}
+```
+
+`/root/start-init-conf.sh` will dynamically generate config file:
+
+```sh
+echo "generate app config"
+ls ${DOLPHINSCHEDULER_HOME}/conf/ | grep ".tpl" | while read line; do
+eval "cat << EOF
+$(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
+EOF
+" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
+done
+
+echo "generate nginx config"
+sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
+sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf
+```
diff --git a/docker/build/README_zh_CN.md b/docker/build/README_zh_CN.md
new file mode 100644
index 0000000..0605bef
--- /dev/null
+++ b/docker/build/README_zh_CN.md
@@ -0,0 +1,328 @@
+## Dolphin Scheduler是什么?
+
+一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。
+
+Github URL: https://github.com/apache/incubator-dolphinscheduler
+
+Official Website: https://dolphinscheduler.apache.org
+
+![Dolphin Scheduler](https://dolphinscheduler.apache.org/img/hlogo_colorful.svg)
+
+[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
+[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
+
+## 如何使用docker镜像
+
+#### 你可以运行一个dolphinscheduler实例
+```
+$ docker run -dit --name dolphinscheduler \ 
+-e POSTGRESQL_USERNAME=test -e POSTGRESQL_PASSWORD=test -e POSTGRESQL_DATABASE=dolphinscheduler \
+-p 8888:8888 \
+dolphinscheduler all
+```
+
+在`startup.sh`脚本中,默认的创建`Postgres`的用户、密码和数据库,默认值分别为:`root`、`root`、`dolphinscheduler`。
+
+同时,默认的`Zookeeper`也会在`startup.sh`脚本中被创建。
+
+#### 或者通过环境变量 **`POSTGRESQL_HOST`** **`POSTGRESQL_PORT`** **`ZOOKEEPER_QUORUM`** 使用已存在的服务
+
+你可以指定一个已经存在的 **`Postgres`** 服务. 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+-p 8888:8888 \
+dolphinscheduler all
+```
+
+你也可以指定一个已经存在的 **Zookeeper** 服务. 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-p 8888:8888 \
+dolphinscheduler all
+```
+
+#### 或者运行dolphinscheduler中的部分服务
+
+你能够运行dolphinscheduler中的部分服务。
+
+* 启动一个 **master server**, 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+dolphinscheduler master-server
+```
+
+* 启动一个 **worker server**, 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+dolphinscheduler worker-server
+```
+
+* 启动一个 **api server**, 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+-p 12345:12345 \
+dolphinscheduler api-server
+```
+
+* 启动一个 **alert server**, 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" -e POSTGRESQL_DATABASE="dolphinscheduler" \
+-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
+dolphinscheduler alert-server
+```
+
+* 启动一个 **frontend**, 如下:
+
+```
+$ docker run -dit --name dolphinscheduler \
+-e FRONTEND_API_SERVER_HOST="192.168.x.x" -e FRONTEND_API_SERVER_PORT="12345" \
+-p 8888:8888 \
+dolphinscheduler frontend
+```
+
+**注意**: 当你运行dolphinscheduler中的部分服务时,你必须指定这些环境变量 `POSTGRESQL_HOST` `POSTGRESQL_PORT` `POSTGRESQL_DATABASE` `POSTGRESQL_USERNAME` `POSTGRESQL_PASSWORD` `ZOOKEEPER_QUORUM`。
+
+## 如何构建一个docker镜像
+
+你能够在类Unix系统和Windows系统中构建一个docker镜像。
+
+类Unix系统, 如下:
+
+```bash
+$ cd path/incubator-dolphinscheduler
+$ sh ./docker/build/hooks/build
+```
+
+Windows系统, 如下:
+
+```bat
+c:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
+```
+
+如果你不理解这些脚本 `./docker/build/hooks/build` `./docker/build/hooks/build.bat`,请阅读里面的内容。
+
+## 环境变量
+
+Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些变量不是必须的,但是可以帮助你更容易配置镜像并根据你的需求定义相应的服务配置。
+
+**`POSTGRESQL_HOST`**
+
+配置`PostgreSQL`的`HOST`, 默认值 `127.0.0.1`。
+
+**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`、`api-server`、`alert-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
+
+**`POSTGRESQL_PORT`**
+
+配置`PostgreSQL`的`PORT`, 默认值 `5432`。
+
+**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`、`api-server`、`alert-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
+
+**`POSTGRESQL_USERNAME`**
+
+配置`PostgreSQL`的`USERNAME`, 默认值 `root`。
+
+**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`、`api-server`、`alert-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
+
+**`POSTGRESQL_PASSWORD`**
+
+配置`PostgreSQL`的`PASSWORD`, 默认值 `root`。
+
+**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`、`api-server`、`alert-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
+
+**`POSTGRESQL_DATABASE`**
+
+配置`PostgreSQL`的`DATABASE`, 默认值 `dolphinscheduler`。
+
+**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`、`api-server`、`alert-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
+
+**`DOLPHINSCHEDULER_ENV_PATH`**
+
+任务执行时的环境变量配置文件, 默认值 `/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh`。
+
+**`DOLPHINSCHEDULER_DATA_BASEDIR_PATH`**
+
+用户数据目录, 用户自己配置, 请确保这个目录存在并且用户读写权限, 默认值 `/tmp/dolphinscheduler`。
+
+**`ZOOKEEPER_QUORUM`**
+
+配置`master-server`和`worker-serverr`的`Zookeeper`地址, 默认值 `127.0.0.1:2181`。
+
+**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
+
+**`MASTER_EXEC_THREADS`**
+
+配置`master-server`中的执行线程数量,默认值 `100`。
+
+**`MASTER_EXEC_TASK_NUM`**
+
+配置`master-server`中的执行任务数量,默认值 `20`。
+
+**`MASTER_HEARTBEAT_INTERVAL`**
+
+配置`master-server`中的心跳交互时间,默认值 `10`。
+
+**`MASTER_TASK_COMMIT_RETRYTIMES`**
+
+配置`master-server`中的任务提交重试次数,默认值 `5`。
+
+**`MASTER_TASK_COMMIT_INTERVAL`**
+
+配置`master-server`中的任务提交交互时间,默认值 `1000`。
+
+**`MASTER_MAX_CPULOAD_AVG`**
+
+配置`master-server`中的CPU中的`load average`值,默认值 `100`。
+
+**`MASTER_RESERVED_MEMORY`**
+
+配置`master-server`的保留内存,默认值 `0.1`。
+
+**`MASTER_LISTEN_PORT`**
+
+配置`master-server`的端口,默认值 `5678`。
+
+**`WORKER_EXEC_THREADS`**
+
+配置`worker-server`中的执行线程数量,默认值 `100`。
+
+**`WORKER_HEARTBEAT_INTERVAL`**
+
+配置`worker-server`中的心跳交互时间,默认值 `10`。
+
+**`WORKER_FETCH_TASK_NUM`**
+
+配置`worker-server`中的获取任务的数量,默认值 `3`。
+
+**`WORKER_MAX_CPULOAD_AVG`**
+
+配置`worker-server`中的CPU中的最大`load average`值,默认值 `100`。
+
+**`WORKER_RESERVED_MEMORY`**
+
+配置`worker-server`的保留内存,默认值 `0.1`。
+
+**`WORKER_LISTEN_PORT`**
+
+配置`worker-server`的端口,默认值 `1234`。
+
+**`WORKER_GROUP`**
+
+配置`worker-server`的分组,默认值 `default`。
+
+**`XLS_FILE_PATH`**
+
+配置`alert-server`的`XLS`文件的存储路径,默认值 `/tmp/xls`。
+
+**`MAIL_SERVER_HOST`**
+
+配置`alert-server`的邮件服务地址,默认值 `空`。
+
+**`MAIL_SERVER_PORT`**
+
+配置`alert-server`的邮件服务端口,默认值 `空`。
+
+**`MAIL_SENDER`**
+
+配置`alert-server`的邮件发送人,默认值 `空`。
+
+**`MAIL_USER=`**
+
+配置`alert-server`的邮件服务用户名,默认值 `空`。
+
+**`MAIL_PASSWD`**
+
+配置`alert-server`的邮件服务用户密码,默认值 `空`。
+
+**`MAIL_SMTP_STARTTLS_ENABLE`**
+
+配置`alert-server`的邮件服务是否启用TLS,默认值 `true`。
+
+**`MAIL_SMTP_SSL_ENABLE`**
+
+配置`alert-server`的邮件服务是否启用SSL,默认值 `false`。
+
+**`MAIL_SMTP_SSL_TRUST`**
+
+配置`alert-server`的邮件服务SSL的信任地址,默认值 `空`。
+
+**`ENTERPRISE_WECHAT_ENABLE`**
+
+配置`alert-server`的邮件服务是否启用企业微信,默认值 `false`。
+
+**`ENTERPRISE_WECHAT_CORP_ID`**
+
+配置`alert-server`的邮件服务企业微信`ID`,默认值 `空`。
+
+**`ENTERPRISE_WECHAT_SECRET`**
+
+配置`alert-server`的邮件服务企业微信`SECRET`,默认值 `空`。
+
+**`ENTERPRISE_WECHAT_AGENT_ID`**
+
+配置`alert-server`的邮件服务企业微信`AGENT_ID`,默认值 `空`。
+
+**`ENTERPRISE_WECHAT_USERS`**
+
+配置`alert-server`的邮件服务企业微信`USERS`,默认值 `空`。
+
+**`FRONTEND_API_SERVER_HOST`**
+
+配置`frontend`的连接`api-server`的地址,默认值 `127.0.0.1`。
+
+**Note**: 当单独运行`api-server`时,你应该指定`api-server`这个值。
+
+**`FRONTEND_API_SERVER_PORT`**
+
+配置`frontend`的连接`api-server`的端口,默认值 `12345`。
+
+**Note**: 当单独运行`api-server`时,你应该指定`api-server`这个值。
+
+## 初始化脚本
+
+如果你想在编译的时候或者运行的时候附加一些其它的操作及新增一些环境变量,你可以在`/root/start-init-conf.sh`文件中进行修改,同时如果涉及到配置文件的修改,请在`/opt/dolphinscheduler/conf/*.tpl`中修改相应的配置文件
+
+例如,在`/root/start-init-conf.sh`添加一个环境变量`API_SERVER_PORT`:
+
+```
+export API_SERVER_PORT=5555
+``` 
+
+当添加以上环境变量后,你应该在相应的模板文件`/opt/dolphinscheduler/conf/application-api.properties.tpl`中添加这个环境变量配置:
+```
+server.port=${API_SERVER_PORT}
+```
+
+`/root/start-init-conf.sh`将根据模板文件动态的生成配置文件:
+
+```sh
+echo "generate app config"
+ls ${DOLPHINSCHEDULER_HOME}/conf/ | grep ".tpl" | while read line; do
+eval "cat << EOF
+$(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
+EOF
+" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
+done
+
+echo "generate nginx config"
+sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
+sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf
+```
diff --git a/docker/build/checkpoint.sh b/docker/build/checkpoint.sh
new file mode 100644
index 0000000..cd2774f
--- /dev/null
+++ b/docker/build/checkpoint.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -e
+
+if [ "$(ps -ef | grep java | grep -c $1)" -eq 0 ]; then
+    echo "[ERROR] $1 process not exits."
+    exit 1
+else
+    echo "[INFO] $1 process exits."
+    exit 0
+fi
diff --git a/docker/build/conf/dolphinscheduler/alert.properties.tpl b/docker/build/conf/dolphinscheduler/alert.properties.tpl
new file mode 100644
index 0000000..b940ecd
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/alert.properties.tpl
@@ -0,0 +1,50 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#alert type is EMAIL/SMS
+alert.type=EMAIL
+
+# alter msg template, default is html template
+#alert.template=html
+# mail server configuration
+mail.protocol=SMTP
+mail.server.host=${MAIL_SERVER_HOST}
+mail.server.port=${MAIL_SERVER_PORT}
+mail.sender=${MAIL_SENDER}
+mail.user=${MAIL_USER}
+mail.passwd=${MAIL_PASSWD}
+# TLS
+mail.smtp.starttls.enable=${MAIL_SMTP_STARTTLS_ENABLE}
+# SSL
+mail.smtp.ssl.enable=${MAIL_SMTP_SSL_ENABLE}
+mail.smtp.ssl.trust=${MAIL_SMTP_SSL_TRUST}
+
+#xls file path,need create if not exist
+xls.file.path=${XLS_FILE_PATH}
+
+# Enterprise WeChat configuration
+enterprise.wechat.enable=${ENTERPRISE_WECHAT_ENABLE}
+enterprise.wechat.corp.id=${ENTERPRISE_WECHAT_CORP_ID}
+enterprise.wechat.secret=${ENTERPRISE_WECHAT_SECRET}
+enterprise.wechat.agent.id=${ENTERPRISE_WECHAT_AGENT_ID}
+enterprise.wechat.users=${ENTERPRISE_WECHAT_USERS}
+enterprise.wechat.token.url=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpId&corpsecret=$secret
+enterprise.wechat.push.url=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$token
+enterprise.wechat.team.send.msg={\"toparty\":\"$toParty\",\"agentid\":\"$agentId\",\"msgtype\":\"text\",\"text\":{\"content\":\"$msg\"},\"safe\":\"0\"}
+enterprise.wechat.user.send.msg={\"touser\":\"$toUser\",\"agentid\":\"$agentId\",\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$msg\"}}
+
+
+
diff --git a/docker/build/conf/dolphinscheduler/application-api.properties.tpl b/docker/build/conf/dolphinscheduler/application-api.properties.tpl
new file mode 100644
index 0000000..8891592
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/application-api.properties.tpl
@@ -0,0 +1,45 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# server port
+server.port=12345
+
+# session config
+server.servlet.session.timeout=7200
+
+# servlet config
+server.servlet.context-path=/dolphinscheduler/
+
+# file size limit for upload
+spring.servlet.multipart.max-file-size=1024MB
+spring.servlet.multipart.max-request-size=1024MB
+
+# post content
+server.jetty.max-http-post-size=5000000
+
+# i18n
+spring.messages.encoding=UTF-8
+
+#i18n classpath folder , file prefix messages, if have many files, use "," seperator
+spring.messages.basename=i18n/messages
+
+# Authentication types (supported types: PASSWORD)
+security.authentication.type=PASSWORD
+
+
+
+
diff --git a/docker/build/conf/dolphinscheduler/common.properties.tpl b/docker/build/conf/dolphinscheduler/common.properties.tpl
new file mode 100644
index 0000000..14ea58b
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/common.properties.tpl
@@ -0,0 +1,78 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#============================================================================
+# System
+#============================================================================
+# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions
+dolphinscheduler.env.path=${DOLPHINSCHEDULER_ENV_PATH}
+
+# user data directory path, self configuration, please make sure the directory exists and have read write permissions
+data.basedir.path=${DOLPHINSCHEDULER_DATA_BASEDIR_PATH}
+
+# resource upload startup type : HDFS,S3,NONE
+resource.storage.type=${DOLPHINSCHEDULER_RESOURCE_STORAGE_TYPE}
+
+#============================================================================
+# HDFS
+#============================================================================
+# 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 read write permissions。"/dolphinscheduler" is recommended
+#resource.upload.path=/dolphinscheduler
+
+# 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
+
+#resource.view.suffixs
+#resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml,properties
+
+# if resource.storage.type=HDFS, the user need to have permission to create directories under the HDFS root path
+hdfs.root.user=hdfs
+
+# kerberos expire time
+kerberos.expire.time=7
+
+#============================================================================
+# S3
+#============================================================================
+# if resource.storage.type=S3,the value like: s3a://dolphinscheduler ; if resource.storage.type=HDFS, When namenode HA is enabled, you need to copy core-site.xml and hdfs-site.xml to conf dir
+fs.defaultFS=${DOLPHINSCHEDULER_FS_DEFAULTFS}
+
+# if resource.storage.type=S3,s3 endpoint
+#fs.s3a.endpoint=http://192.168.199.91:9010
+
+# if resource.storage.type=S3,s3 access key
+#fs.s3a.access.key=A3DXS30FO22544RE
+
+# if resource.storage.type=S3,s3 secret key
+#fs.s3a.secret.key=OloCLq3n+8+sdPHUhJ21XrSxTC+JK
+
+# if not use hadoop resourcemanager, please keep default value; if resourcemanager HA enable, please type the HA ips ; if resourcemanager is single, make this value empty  TODO
+yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx
+
+# If resourcemanager HA enable or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ark1 to actual resourcemanager hostname.
+yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%s
+
+
diff --git a/docker/build/conf/dolphinscheduler/datasource.properties.tpl b/docker/build/conf/dolphinscheduler/datasource.properties.tpl
new file mode 100644
index 0000000..aefb9e3
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/datasource.properties.tpl
@@ -0,0 +1,71 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+
+# mysql
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.url=jdbc:mysql://192.168.xx.xx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
+
+# postgre
+spring.datasource.driver-class-name=org.postgresql.Driver
+spring.datasource.url=jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${POSTGRESQL_DATABASE}?characterEncoding=utf8
+spring.datasource.username=${POSTGRESQL_USERNAME}
+spring.datasource.password=${POSTGRESQL_PASSWORD}
+
+## base spring data source configuration todo need to remove
+#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+
+# connection configuration
+#spring.datasource.initialSize=5
+# min connection number
+#spring.datasource.minIdle=5
+# max connection number
+#spring.datasource.maxActive=50
+
+# max wait time for get a connection in milliseconds. if configuring maxWait, fair locks are enabled by default and concurrency efficiency decreases.
+# If necessary, unfair locks can be used by configuring the useUnfairLock attribute to true.
+#spring.datasource.maxWait=60000
+
+# milliseconds for check to close free connections
+#spring.datasource.timeBetweenEvictionRunsMillis=60000
+
+# the Destroy thread detects the connection interval and closes the physical connection in milliseconds if the connection idle time is greater than or equal to minEvictableIdleTimeMillis.
+#spring.datasource.timeBetweenConnectErrorMillis=60000
+
+# the longest time a connection remains idle without being evicted, in milliseconds
+#spring.datasource.minEvictableIdleTimeMillis=300000
+
+#the SQL used to check whether the connection is valid requires a query statement. If validation Query is null, testOnBorrow, testOnReturn, and testWhileIdle will not work.
+#spring.datasource.validationQuery=SELECT 1
+
+#check whether the connection is valid for timeout, in seconds
+#spring.datasource.validationQueryTimeout=3
+
+# when applying for a connection, if it is detected that the connection is idle longer than time Between Eviction Runs Millis,
+# validation Query is performed to check whether the connection is valid
+#spring.datasource.testWhileIdle=true
+
+#execute validation to check if the connection is valid when applying for a connection
+#spring.datasource.testOnBorrow=true
+#execute validation to check if the connection is valid when the connection is returned
+#spring.datasource.testOnReturn=false
+#spring.datasource.defaultAutoCommit=true
+#spring.datasource.keepAlive=true
+
+# open PSCache, specify count PSCache for every connection
+#spring.datasource.poolPreparedStatements=true
+#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
\ No newline at end of file
diff --git a/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh b/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
new file mode 100644
index 0000000..78c8f98
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+export PYTHON_HOME=/usr/bin/python2
+export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
+export PATH=$PYTHON_HOME/bin:$JAVA_HOME/bin:$PATH
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-alert.xml b/docker/build/conf/dolphinscheduler/logback/logback-alert.xml
new file mode 100644
index 0000000..5d1c078
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/logback/logback-alert.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
+<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
+
+    <property name="log.base" value="logs"/>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="ALERTLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.base}/dolphinscheduler-alert.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.base}/dolphinscheduler-alert.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
+            <maxHistory>20</maxHistory>
+            <maxFileSize>64MB</maxFileSize>
+        </rollingPolicy>
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="APILOGFILE"/>
+    </root>
+
+</configuration>
\ No newline at end of file
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-api.xml b/docker/build/conf/dolphinscheduler/logback/logback-api.xml
new file mode 100644
index 0000000..2df90d8
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/logback/logback-api.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
+<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
+
+    <property name="log.base" value="logs"/>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!-- api server logback config start -->
+    <appender name="APILOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.base}/dolphinscheduler-api-server.log</file>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.base}/dolphinscheduler-api-server.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
+            <maxHistory>168</maxHistory>
+            <maxFileSize>64MB</maxFileSize>
+        </rollingPolicy>
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!-- api server logback config end -->
+
+    <logger name="org.apache.zookeeper" level="WARN"/>
+    <logger name="org.apache.hbase" level="WARN"/>
+    <logger name="org.apache.hadoop" level="WARN"/>
+
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="APILOGFILE"/>
+    </root>
+
+</configuration>
\ No newline at end of file
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-master.xml b/docker/build/conf/dolphinscheduler/logback/logback-master.xml
new file mode 100644
index 0000000..7410c01
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/logback/logback-master.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
+<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
+
+    <property name="log.base" value="logs"/>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <conversionRule conversionWord="messsage"
+                    converterClass="org.apache.dolphinscheduler.server.log.SensitiveDataConverter"/>
+    <appender name="TASKLOGFILE" class="ch.qos.logback.classic.sift.SiftingAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <filter class="org.apache.dolphinscheduler.server.log.TaskLogFilter"/>
+        <Discriminator class="org.apache.dolphinscheduler.server.log.TaskLogDiscriminator">
+            <key>taskAppId</key>
+            <logBase>${log.base}</logBase>
+        </Discriminator>
+        <sift>
+            <appender name="FILE-${taskAppId}" class="ch.qos.logback.core.FileAppender">
+                <file>${log.base}/${taskAppId}.log</file>
+                <encoder>
+                    <pattern>
+                        [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %messsage%n
+                    </pattern>
+                    <charset>UTF-8</charset>
+                </encoder>
+                <append>true</append>
+            </appender>
+        </sift>
+    </appender>
+    <!-- master server logback config start -->
+    <appender name="MASTERLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.base}/dolphinscheduler-master.log</file>
+        <!--<filter class="org.apache.dolphinscheduler.server.log.MasterLogFilter">
+            <level>INFO</level>
+        </filter>-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.base}/dolphinscheduler-master.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
+            <maxHistory>168</maxHistory>
+            <maxFileSize>200MB</maxFileSize>
+        </rollingPolicy>
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!-- master server logback config end -->
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="TASKLOGFILE"/>
+        <appender-ref ref="MASTERLOGFILE"/>
+    </root>
+
+</configuration>
\ No newline at end of file
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-worker.xml b/docker/build/conf/dolphinscheduler/logback/logback-worker.xml
new file mode 100644
index 0000000..be1d0ac
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/logback/logback-worker.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
+<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
+
+    <property name="log.base" value="logs"/>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!-- worker server logback config start -->
+    <conversionRule conversionWord="messsage"
+                    converterClass="org.apache.dolphinscheduler.server.log.SensitiveDataConverter"/>
+    <appender name="TASKLOGFILE" class="ch.qos.logback.classic.sift.SiftingAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <filter class="org.apache.dolphinscheduler.server.log.TaskLogFilter"/>
+        <Discriminator class="org.apache.dolphinscheduler.server.log.TaskLogDiscriminator">
+            <key>taskAppId</key>
+            <logBase>${log.base}</logBase>
+        </Discriminator>
+        <sift>
+            <appender name="FILE-${taskAppId}" class="ch.qos.logback.core.FileAppender">
+                <file>${log.base}/${taskAppId}.log</file>
+                <encoder>
+                    <pattern>
+                        [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %messsage%n
+                    </pattern>
+                    <charset>UTF-8</charset>
+                </encoder>
+                <append>true</append>
+            </appender>
+        </sift>
+    </appender>
+    <appender name="WORKERLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.base}/dolphinscheduler-worker.log</file>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <filter class="org.apache.dolphinscheduler.server.log.WorkerLogFilter"/>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.base}/dolphinscheduler-worker.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
+            <maxHistory>168</maxHistory>
+            <maxFileSize>200MB</maxFileSize>
+        </rollingPolicy>
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %messsage%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!-- worker server logback config end -->
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="TASKLOGFILE"/>
+        <appender-ref ref="WORKERLOGFILE"/>
+    </root>
+
+</configuration>
\ No newline at end of file
diff --git a/docker/build/conf/dolphinscheduler/master.properties.tpl b/docker/build/conf/dolphinscheduler/master.properties.tpl
new file mode 100644
index 0000000..17dd6f9
--- /dev/null
+++ b/docker/build/conf/dolphinscheduler/master.properties.tpl
@@ -0,0 +1,40 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# master execute thread num
... 416974 lines suppressed ...