diff --git a/docs/zh_CN/SUMMARY.md b/docs/zh_CN/SUMMARY.md
index 2092587305..ad4aa16dbf 100644
--- a/docs/zh_CN/SUMMARY.md
+++ b/docs/zh_CN/SUMMARY.md
@@ -8,6 +8,7 @@
* 后端部署文档
* [准备工作](后端部署文档.md#1、准备工作)
* [部署](后端部署文档.md#2、部署)
+* [快速上手](快速上手.md#快速上手)
* [系统使用手册](系统使用手册.md#使用手册)
* [系统架构设计](系统架构设计.md#系统架构设计)
* 前端开发文档
diff --git a/docs/zh_CN/images/complement.png b/docs/zh_CN/images/complement.png
new file mode 100644
index 0000000000..058311f43c
Binary files /dev/null and b/docs/zh_CN/images/complement.png differ
diff --git a/docs/zh_CN/images/create-queue.png b/docs/zh_CN/images/create-queue.png
new file mode 100644
index 0000000000..1f23cac08b
Binary files /dev/null and b/docs/zh_CN/images/create-queue.png differ
diff --git a/docs/zh_CN/images/dag1.png b/docs/zh_CN/images/dag1.png
new file mode 100644
index 0000000000..eacd1a4bd8
Binary files /dev/null and b/docs/zh_CN/images/dag1.png differ
diff --git a/docs/zh_CN/images/dag2.png b/docs/zh_CN/images/dag2.png
new file mode 100644
index 0000000000..12b5ace0cc
Binary files /dev/null and b/docs/zh_CN/images/dag2.png differ
diff --git a/docs/zh_CN/images/dag3.png b/docs/zh_CN/images/dag3.png
new file mode 100644
index 0000000000..a4ce334014
Binary files /dev/null and b/docs/zh_CN/images/dag3.png differ
diff --git a/docs/zh_CN/images/dag4.png b/docs/zh_CN/images/dag4.png
new file mode 100644
index 0000000000..b3ec5a897a
Binary files /dev/null and b/docs/zh_CN/images/dag4.png differ
diff --git a/docs/zh_CN/images/depend-node.png b/docs/zh_CN/images/depend-node.png
new file mode 100644
index 0000000000..1f26973a9d
Binary files /dev/null and b/docs/zh_CN/images/depend-node.png differ
diff --git a/docs/zh_CN/images/depend-node2.png b/docs/zh_CN/images/depend-node2.png
new file mode 100644
index 0000000000..1ca11d0e2b
Binary files /dev/null and b/docs/zh_CN/images/depend-node2.png differ
diff --git a/docs/zh_CN/images/depend-node3.png b/docs/zh_CN/images/depend-node3.png
new file mode 100644
index 0000000000..dc57aaa174
Binary files /dev/null and b/docs/zh_CN/images/depend-node3.png differ
diff --git a/docs/zh_CN/images/file-manage.png b/docs/zh_CN/images/file-manage.png
new file mode 100644
index 0000000000..e53a81722d
Binary files /dev/null and b/docs/zh_CN/images/file-manage.png differ
diff --git a/docs/zh_CN/images/gant-pic.png b/docs/zh_CN/images/gant-pic.png
new file mode 100644
index 0000000000..fe29e595e7
Binary files /dev/null and b/docs/zh_CN/images/gant-pic.png differ
diff --git a/docs/zh_CN/images/hive_edit.png b/docs/zh_CN/images/hive_edit.png
index 5c295d6afd..50d0eedeee 100644
Binary files a/docs/zh_CN/images/hive_edit.png and b/docs/zh_CN/images/hive_edit.png differ
diff --git a/docs/zh_CN/images/hive_edit2.png b/docs/zh_CN/images/hive_edit2.png
index 611da8fc43..789d65fb9a 100644
Binary files a/docs/zh_CN/images/hive_edit2.png and b/docs/zh_CN/images/hive_edit2.png differ
diff --git a/docs/zh_CN/images/instance-detail.png b/docs/zh_CN/images/instance-detail.png
new file mode 100644
index 0000000000..a09d147de0
Binary files /dev/null and b/docs/zh_CN/images/instance-detail.png differ
diff --git a/docs/zh_CN/images/instance-list.png b/docs/zh_CN/images/instance-list.png
new file mode 100644
index 0000000000..be3a75d2bf
Binary files /dev/null and b/docs/zh_CN/images/instance-list.png differ
diff --git a/docs/zh_CN/images/master-jk.png b/docs/zh_CN/images/master-jk.png
new file mode 100644
index 0000000000..4fb1f4521b
Binary files /dev/null and b/docs/zh_CN/images/master-jk.png differ
diff --git a/docs/zh_CN/images/mysql-jk.png b/docs/zh_CN/images/mysql-jk.png
new file mode 100644
index 0000000000..89cec305f0
Binary files /dev/null and b/docs/zh_CN/images/mysql-jk.png differ
diff --git a/docs/zh_CN/images/mysql_edit.png b/docs/zh_CN/images/mysql_edit.png
index ffe35ca3fe..1ae75cbef5 100644
Binary files a/docs/zh_CN/images/mysql_edit.png and b/docs/zh_CN/images/mysql_edit.png differ
diff --git a/docs/zh_CN/images/postgressql_edit.png b/docs/zh_CN/images/postgressql_edit.png
new file mode 100644
index 0000000000..b95f3539ce
Binary files /dev/null and b/docs/zh_CN/images/postgressql_edit.png differ
diff --git a/docs/zh_CN/images/project.png b/docs/zh_CN/images/project.png
new file mode 100644
index 0000000000..558f601c73
Binary files /dev/null and b/docs/zh_CN/images/project.png differ
diff --git a/docs/zh_CN/images/run-work.png b/docs/zh_CN/images/run-work.png
new file mode 100644
index 0000000000..f06994220f
Binary files /dev/null and b/docs/zh_CN/images/run-work.png differ
diff --git a/docs/zh_CN/images/sql-node.png b/docs/zh_CN/images/sql-node.png
new file mode 100644
index 0000000000..3fedae2cb0
Binary files /dev/null and b/docs/zh_CN/images/sql-node.png differ
diff --git a/docs/zh_CN/images/sql-node2.png b/docs/zh_CN/images/sql-node2.png
new file mode 100644
index 0000000000..4d11e4d710
Binary files /dev/null and b/docs/zh_CN/images/sql-node2.png differ
diff --git a/docs/zh_CN/images/task-list.png b/docs/zh_CN/images/task-list.png
new file mode 100644
index 0000000000..d35662ddbd
Binary files /dev/null and b/docs/zh_CN/images/task-list.png differ
diff --git a/docs/zh_CN/images/task-log.png b/docs/zh_CN/images/task-log.png
new file mode 100644
index 0000000000..73e91beb7f
Binary files /dev/null and b/docs/zh_CN/images/task-log.png differ
diff --git a/docs/zh_CN/images/task-log2.png b/docs/zh_CN/images/task-log2.png
new file mode 100644
index 0000000000..3ea00a5d9a
Binary files /dev/null and b/docs/zh_CN/images/task-log2.png differ
diff --git a/docs/zh_CN/images/time-schedule.png b/docs/zh_CN/images/time-schedule.png
new file mode 100644
index 0000000000..0a6d6baafc
Binary files /dev/null and b/docs/zh_CN/images/time-schedule.png differ
diff --git a/docs/zh_CN/images/time-schedule2.png b/docs/zh_CN/images/time-schedule2.png
new file mode 100644
index 0000000000..fdfc5be738
Binary files /dev/null and b/docs/zh_CN/images/time-schedule2.png differ
diff --git a/docs/zh_CN/images/worker-jk.png b/docs/zh_CN/images/worker-jk.png
new file mode 100644
index 0000000000..c953d9619b
Binary files /dev/null and b/docs/zh_CN/images/worker-jk.png differ
diff --git a/docs/zh_CN/images/worker1.png b/docs/zh_CN/images/worker1.png
new file mode 100644
index 0000000000..e29aca7d6f
Binary files /dev/null and b/docs/zh_CN/images/worker1.png differ
diff --git a/docs/zh_CN/images/zk-jk.png b/docs/zh_CN/images/zk-jk.png
new file mode 100644
index 0000000000..cb503271b9
Binary files /dev/null and b/docs/zh_CN/images/zk-jk.png differ
diff --git a/docs/zh_CN/快速上手.md b/docs/zh_CN/快速上手.md
new file mode 100644
index 0000000000..c46333f9f3
--- /dev/null
+++ b/docs/zh_CN/快速上手.md
@@ -0,0 +1,50 @@
+## 快速上手
+
+* 管理员用户登录
+ >地址:192.168.xx.xx:8888 用户名密码:admin/esheduler123
+
+
+
+
+
+* 创建队列
+
+
+
+
+
+ * 创建租户
+
+
+
+
+ * 创建普通用户
+
+
+
+
+ * 创建告警组
+
+
+
+
+
+ * 使用普通用户登录
+ > 点击右上角用户名“退出”,重新使用普通用户登录。
+
+ * 项目管理->创建项目->点击项目名称
+
+
+
+
+ * 点击工作流定义->创建工作流定义->上线流程定义
+
+
+
+
+
+ * 运行流程定义->点击工作流实例->点击流程实例名称->双击任务节点->查看任务执行日志
+
+
+
+
\ No newline at end of file
diff --git a/docs/zh_CN/系统使用手册.md b/docs/zh_CN/系统使用手册.md
index 9f332162ea..ab4fee20dc 100644
--- a/docs/zh_CN/系统使用手册.md
+++ b/docs/zh_CN/系统使用手册.md
@@ -1,229 +1,168 @@
# 使用手册
-## 登录
+## 快速上手
+ > 请参照[快速上手](快速上手.md)
-- 输入http://192.168.xx.xx:8888/view/login/index.html 网址,输入用户名:admin,密码:escheduler123 登录
-
-
-
-
-- 登录之后每个页面的右上角都有用户的身份标识。点击下拉箭头包含用户信息和退出两个按钮
+## 操作指南
-
-
-
-
-- 点击“用户信息”按钮,如下图:
+ - 管理员账号只能在权限上进行管理,不参与具体的业务,不能创建项目,不能对流程定义执行相关操作
+ - 以下操作需要使用普通用户登录系统才能进行。
+### 创建项目
+ - 点击“项目管理->创建项目”,输入项目名称,项目描述,点击“提交”,创建新的项目。
+ - 点击项目名称,进入项目首页。
-
+
-- 点击”修改”按钮,修改用户信息
+> 项目首页其中包含任务状态统计,流程状态统计、流程定义统计、队列统计、命令统计
+- 任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数
+- 流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数
+- 流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义
+- 队列统计: worker执行队列统计,待执行的任务和待杀掉的任务个数
+- 命令统计: 执行命令个数统计
+### 创建工作流定义
+ - 进入项目首页,点击“工作流定义”,进入流程定义列表页。
+ - 点击“创建工作流”,创建新的流程定义。
+ - 拖拽“SHELL"节点到画布,新增一个Shell任务。
+ - 填写”节点名称“,”描述“,”脚本“字段。
+ - 选择“任务优先级”,级别高的任务在执行队列中会优先执行,相同优先级的任务按照先进先出的顺序执行。
+ - 超时告警, 填写”超时时长“,当任务执行时间超过**超时时长**可以告警并且超时失败。
+ - 填写"自定义参数",参考[自定义参数](#用户自定义参数)
-
+
-- 点击退出按钮则退出系统,返回登录页面
-
-## 安全中心
-
-- 只有管理员才有安全中心,安全中心的主要功能是给管理员提供管理普通用户的功能。
-- 管理员可以有多个,管理员是功能上的管理,不参与具体的业务。也就是说管理员是不能执行具体任务的。
-
-### 租户管理
-
-> 租户是Linux上的用户,用于作业的提交。
-
- - 创建、编辑租户
-
-
-
-
-
-- 租户编码:租户编码是Linux上的用户,唯一,不能重复
-- 租户名称:租户的名称
-- 队列:租户对应的YARN上的队列,在数据库 t_escheduler_queue 中设置
-- 描述:租户的描述信息
+ - 增加节点之间执行的先后顺序: 点击”线条连接“;如图示,任务1和任务3并行执行,当任务1执行完,任务2、3会同时执行。
-
-### 用户管理
-
-> 用户是EasyScheduler上的用户,用于EasyScheduler上的功能操作。
-
-- 创建、编辑用户
-
+
-- 用户名称:用户的名称,唯一,不能重复
-- 租户:设置该用户所属的租户
-- 邮箱:输入用户的邮箱,用来邮件发送和任务告警
-- 手机:输入用户的手机号
-
-**注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下**
-
-
-- 授权
-
-> 管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。
-
-- 1.点击指定人的授权按钮,如下图:
-
+ - 删除依赖关系: 点击箭头图标”拖动节点和选中项“,选中连接线,点击删除图标,删除节点间依赖关系。
-
+
-- 2.选中项目按钮,进行项目授权
+ - 点击”保存“,输入流程定义名称,流程定义描述,设置全局参数。
-
+
-- 项目列表:是该用户未授权的项目
-- 已选项目:是该用户已授权的项目。
-- 特别注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现。
-
-
-### 告警组管理
-
-> 告警组是告警用户抽象出来的组,使用告警组来管理用户。
+ - 其他类型节点,请参考 [任务节点类型和参数设置](#任务节点类型和参数设置)
-- 新建、编辑邮件组
+### 执行流程定义
+ - **未上线状态的流程定义可以编辑,但是不可以运行**,所以先上线工作流
+ > 点击工作流定义,返回流程定义列表,点击”上线“图标,上线工作流定义。
+
+ > "下线"工作流之前,要先将定时管理的定时下线,才能成功下线工作流定义
-
-
+ - 点击”运行“,执行工作流。运行参数说明:
+ * 失败策略:**当某一个任务节点执行失败时,其他并行的任务节点需要执行的策略**。”继续“表示:其他任务节点正常执行,”结束“表示:终止所有正在执行的任务,并终止整个流程。
+ * 通知策略:当流程结束,根据流程状态发送流程执行信息通知邮件。
+ * 流程优先级:流程运行的优先级,分五个等级:最高(HIGHEST),高(HIGH),中(MEDIUM),低(LOW),最低(LOWEST)。级别高的流程在执行队列中会优先执行,相同优先级的流程按照先进先出的顺序执行。
+ * worker分组: 这个流程只能在指定的机器组里执行。默认是Default,可以在任一worker上执行。
+ * 通知组: 当流程结束,或者发生容错时,会发送流程信息邮件到通知组里所有成员。
+ * 收件人:输入邮箱后按回车键保存。当流程结束、发生容错时,会发送告警邮件到收件人列表。
+ * 抄送人:输入邮箱后按回车键保存。当流程结束、发生容错时,会抄送告警邮件到抄送人列表。
+
+
-- 组名称:输入组的名称
-- 组类型:支持邮件/短信两种
-- 备注:输入告警组的备注信息
-
-
-- 管理用户
-
+ * 补数: 执行指定日期的工作流定义,可以选择补数时间范围(目前只支持针对连续的天进行补数),比如要补5月1号到5月10号的数据,如图示:
-
+
-- 管理用户列表:是未添加到该组的用户列表
-- 已选管理用户:是已添加到该组的用户列表
+> 补数执行模式有**串行执行、并行执行**,串行模式下,补数会从5月1号到5月10号依次执行;并行模式下,会同时执行5月1号到5月10号的任务。
-
-
-### 服务管理
-
-> 服务管理是对EasyScheduler的Master、Worker的任务监控
-
-#### Master
+### 定时工作流定义
+ - 创建定时:"工作流定义->定时”
+ - 选择起止时间,在起止时间范围内,定时正常工作,超过范围,就不会再继续产生定时工作流实例了。
-
+
-#### Worker
+ - 添加一个每天凌晨5点执行一次的定时,如图示:
-
+
-## 资源中心
+ - 定时上线,**新创建的定时是下线状态,需要点击“定时管理->上线”,定时才能正常工作**。
-> 资源中心主要分为文件管理和UDF函数管理。
-文件管理:主要是用户的程序,脚本和配置文件需要上传到HDFS进行统一管理
-UDF函数管理:对用户创建的UDF进行管理
-
-### 文件管理
-
-#### 创建文件
-
-
-
+### 查看流程实例
+ > 点击“工作流实例”,查看流程实例列表。
+
+ > 点击工作流名称,查看任务执行状态。
+
+
+
-- 文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql
-
-
-#### 上传文件
-
-
-
+ > 双击任务节点,点击“查看日志”,查看任务执行日志。
+
+
+
-- 文件名:输入文件的名称
-- 描述:输入文件的描述信息
-- 上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全
-
-
-#### 文件查看
-
-> 对可查看的文件类型,点击 文件名称 可以查看文件详情
-
+ > 对工作流实例的操作:
+
-
-
-
-#### 下载文件
-
-> 可以在 文件详情 中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件
-
-#### 文件重命名
+
+
+ * 编辑:可以对已经终止的流程进行编辑,编辑后保存的时候,可以选择是否更新到流程定义。
+ * 重跑:可以对已经终止的流程进行重新执行。
+ * 恢复失败:针对失败的流程,可以执行恢复失败操作,从失败的节点开始执行。
+ * 停止:对正在运行的流程进行**停止**操作,后台会先对worker进程`kill`,再执行`kill -9`操作
+ * 暂停:可以对正在运行的流程进行**暂停**操作,系统状态变为**等待执行**,会等待正在执行的任务结束,暂停下一个要执行的任务。
+ * 恢复暂停:可以对暂停的流程恢复,直接从**暂停的节点**开始运行
+ * 删除:删除流程实例及流程实例下的任务实例
+ * 甘特图:Gantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间,如图示:
-
-
-
-#### 删除
-- 文件列表,点击 删除 按钮,删除文件
-
+
+
-### UDF管理
-
-#### 资源管理
-
-> 资源管理和文件管理功能类似,不同之处是资源管理是上传的UDF函数,文件管理上传的是用户程序,脚本及配置文件
-
-#### 函数管理
-
-##### 创建、编辑UDF函数
+### 查看任务实例
+ > 点击“任务实例”,进入任务列表页,查询任务执行情况
-
-
+
+
- 目前只支持HIVE的临时UDF函数
+ > 点击操作列中的“查看日志”,可以查看任务执行的日志情况。
-- UDF函数名称:输入UDF函数时的名称
-- 包名类名:输入UDF函数的全路径
-- 参数:用来标注函数的输入参数
-- 数据库名:预留字段,用于创建永久UDF函数
-- UDF资源:设置创建的UDF对应的资源文件
+
+
+
-## 数据源中心
+### 创建数据源
+ > 数据源中心支持MySQL、POSTGRESQL、HIVE及Spark等数据源
-> 数据源中心支持MySQL、POSTGRESQL、HIVE及Spark数据源
+#### 创建、编辑MySQL数据源
-### 创建、编辑MySQL数据源
+ - 点击“数据源中心->创建数据源”,根据需求创建不同类型的数据源。
+ - 数据源:选择MYSQL
+ - 数据源名称:输入数据源的名称
+ - 描述:输入数据源的描述
+ - IP/主机名:输入连接MySQL的IP
+ - 端口:输入连接MySQL的端口
+ - 用户名:设置连接MySQL的用户名
+ - 密码:设置连接MySQL的密码
+ - 数据库名:输入连接MySQL的数据库名称
+ - Jdbc连接参数:用于MySQL连接的参数设置,以JSON形式填写
+
-
+
-- 数据源:选择MYSQL
-- 数据源名称:输入数据源的名称
-- 描述:输入数据源的描述
-- IP/主机名:输入连接MySQL的IP
-- 端口:输入连接MySQL的端口
-- 用户名:设置连接MySQL的用户名
-- 密码:设置连接MySQL的密码
-- 数据库名:输入连接MySQL的数据库名称
-- Jdbc连接参数:用于MySQL连接的参数设置,以JSON形式填写
-
-### 创建、编辑POSTGRESQL数据源
+ > 点击“测试连接”,测试数据源是否可以连接成功。
-
-
-
+#### 创建、编辑POSTGRESQL数据源
- 数据源:选择POSTGRESQL
- 数据源名称:输入数据源的名称
@@ -235,46 +174,39 @@ UDF函数管理:对用户创建的UDF进行管理
- 数据库名:输入连接POSTGRESQL的数据库名称
- Jdbc连接参数:用于POSTGRESQL连接的参数设置,以JSON形式填写
+
+
+
-### 创建、编辑HIVE数据源
+#### 创建、编辑HIVE数据源
- 1.使用HiveServer2方式连接
+1.使用HiveServer2方式连接
-
+
-- 数据源:选择HIVE
-- 数据源名称:输入数据源的名称
-- 描述:输入数据源的描述
-- IP/主机名:输入连接HIVE的IP
-- 端口:输入连接HIVE的端口
-- 用户名:设置连接HIVE的用户名
-- 密码:设置连接HIVE的密码
-- 数据库名:输入连接HIVE的数据库名称
-- Jdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写
-
- 2.使用HiveServer2 HA Zookeeper方式连接
+ - 数据源:选择HIVE
+ - 数据源名称:输入数据源的名称
+ - 描述:输入数据源的描述
+ - IP/主机名:输入连接HIVE的IP
+ - 端口:输入连接HIVE的端口
+ - 用户名:设置连接HIVE的用户名
+ - 密码:设置连接HIVE的密码
+ - 数据库名:输入连接HIVE的数据库名称
+ - Jdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写
+
+2.使用HiveServer2 HA Zookeeper方式连接
-
+
-- 数据源:选择HIVE
-- 数据源名称:输入数据源的名称
-- 描述:输入数据源的描述
-- IP/主机名:输入连接Zookeeper的集群
-- 端口:输入连接Zookeeper的端口
-- 用户名:设置连接HIVE的用户名
-- 密码:设置连接HIVE的密码
-- 数据库名:输入连接HIVE的数据库名称
-- Jdbc连接参数:用于Zookeeper连接的参数设置,以JSON形式填写
-
-### 创建、编辑Spark数据源
+#### 创建、编辑Spark数据源
-
+
- 数据源:选择Spark
@@ -287,361 +219,383 @@ UDF函数管理:对用户创建的UDF进行管理
- 数据库名:输入连接Spark的数据库名称
- Jdbc连接参数:用于Spark连接的参数设置,以JSON形式填写
-## 首页
-
-
-
+### 上传资源
+ - 上传资源文件和udf函数,所有上传的文件和资源都会被存储到hdfs上,所以需要以下配置项:
+
+```
+conf/common/common.properties
+ -- hdfs.startup.state=true
+conf/common/hadoop.properties
+ -- fs.defaultFS=hdfs://xxxx:8020
+ -- yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx
+ -- yarn.application.status.address=http://xxxx:8088/ws/v1/cluster/apps/%s
+```
-> 首页是对所有项目在指定时间范围内的任务状态、流程状态和流程定义的统计。
-
- 首页和项目首页的主要区别在于:
-
-- 首页中的图表是没有链接的,项目首页中图表是有链接的
-- 首页统计的是所有的项目,项目首页统计的是某一个项目
-
-## 项目管理
-> 项目是调度对用户流程定义DAG分组的一个抽象
+#### 文件管理
+
+ > 是对各种资源文件的管理,包括创建基本的txt/log/sh/conf等文件、上传jar包等各种类型文件,以及编辑、下载、删除等操作。
+
+
+
-### 创建、编辑项目
+ * 创建文件
+ > 文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql
-
+
-- 项目名称:输入项目的名称
-- 描述:输入项目的描述
+ * 上传文件
-
-### 项目首页
-
-> 点击项目列表中的项目名称,可以跳转到指定的项目首页,如下图:
+> 上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全
-
+
-- 项目首页其中包含四个部分,任务状态统计,流程状态统计、流程定义统计及统计的时间范围
-- 任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数
-- 流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数
-- 流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义
-
- 注意:可以点击图,或者数量跳转到相应的任务实例,流程实例和流程定义列表
-
-### 工作流
-
-> 工作流分为流程定义、流程实例和任务实例三个功能模块
-
-- 流程定义:是可视化拖拽成的DAG的统称,它是静态的,没有状态
-- 流程实例:对流程定义的每次实例化会生成一个流程实例,是动态的,是有状态的
-- 任务实例:流程实例DAG中每个Task称为任务实例,是动态的,是有状态的
+ * 文件查看
-#### 流程定义
-
-##### 创建工作流
+> 对可查看的文件类型,点击 文件名称 可以查看文件详情
-
+
-- 左侧工具栏 => 是目前调度支持的任务类型,当前调度支持SHELL、子流程、存储过程、SQL、MR、Spark和Python七种任务类型
-- 右上角图标 => 分别是拖动节点和选中项、选择线条连线、删除选中的线或节点、全屏和流程定义保持,其主要功能是DAG的绘制所用
+ * 下载文件
-##### 创建 SHELL节点
+> 可以在 文件详情 中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SHELL.png)任务节点到画板中,双击任务节点,如下图:
+ * 文件重命名
-
+
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 脚本:用户开发的SHELL程序
-- 资源:是指脚本中需要调用的资源文件列表
-- 自定义参数:是SHELL局部的用户自定义参数,会替换脚本中以${变量}的内容
+#### 删除
+> 文件列表->点击"删除"按钮,删除指定文件
-##### 创建 子流程 节点
+#### 资源管理
+ > 资源管理和文件管理功能类似,不同之处是资源管理是上传的UDF函数,文件管理上传的是用户程序,脚本及配置文件
+
+ * 上传udf资源
+ > 和上传文件相同。
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SUB_PROCESS.png)任务节点到画板中,双击任务节点,如下图:
+#### 函数管理
+
+ * 创建udf函数
+ > 点击“创建UDF函数”,输入udf函数参数,选择udf资源,点击“提交”,创建udf函数。
+ > 目前只支持HIVE的临时UDF函数
+
+ - UDF函数名称:输入UDF函数时的名称
+ - 包名类名:输入UDF函数的全路径
+ - 参数:用来标注函数的输入参数
+ - 数据库名:预留字段,用于创建永久UDF函数
+ - UDF资源:设置创建的UDF对应的资源文件
+
-
+
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义
+## 安全中心(权限系统)
-##### 创建 存储过程 节点
+ - 安全中心是只有管理员账户才有权限的功能,有队列管理、租户管理、用户管理、告警组管理、worker分组、令牌管理等功能,还可以对资源、数据源、项目等授权
+ - 管理员登录,默认用户名密码:admin/esheduler123
+
+### 创建队列
+ - 队列是在执行spark、mapreduce等程序,需要用到“队列”参数时使用的。
+ - “安全中心”->“队列管理”->“创建队列”
+
+
+
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_PROCEDURE.png)任务节点到画板中,双击任务节点,如下图:
+### 添加租户
+ - 租户对应的是Linux的用户,用于worker提交作业所使用的用户。如果linux没有这个用户,worker会在执行脚本的时候创建这个用户。
+ - 租户编码:**租户编码是Linux上的用户,唯一,不能重复**
+
+
+
+
+
+### 创建普通用户
+ - 用户分为**管理员用户**和**普通用户**
+ * 管理员只有**授权和用户管理**等权限,没有**创建项目和流程定义**的操作的权限
+ * 普通用户可以**创建项目和对流程定义的创建,编辑,执行**等操作。
+ * 注意:**如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下**
-
+
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 数据源:存储过程的数据源类型支持MySQL和POSTGRESQL两种,选择对应的数据源
-- 方法:是存储过程的方法名称
-- 自定义参数:存储过程的自定义参数类型支持IN、OUT两种,数据类型支持VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN九种数据类型
+### 创建告警组
+ * 告警组是在启动时设置的参数,在流程结束以后会将流程的状态和其他信息以邮件形式发送给告警组。
+ - 新建、编辑告警组
+
+
+
+### 创建worker分组
+ - worker分组,提供了一种让任务在指定的worker上运行的机制。管理员设置worker分组,每个任务节点可以设置该任务运行的worker分组,如果任务指定的分组被删除或者没有指定分组,则该任务会在流程实例指定的worker上运行。
+ - worker分组内多个ip地址(**不能写别名**),以**英文逗号**分隔
-##### 创建 SQL 节点
+
+
+
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SQL.png)任务节点到画板中,双击任务节点,如下图:
+### 令牌管理
+ - 由于后端接口有登录检查,令牌管理,提供了一种可以通过调用接口的方式对系统进行各种操作。
+ - 调用示例:
+
+```令牌调用示例
+ /**
+ * test token
+ */
+ public void doPOSTParam()throws Exception{
+ // create HttpClient
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+
+ // create http post request
+ HttpPost httpPost = new HttpPost("http://127.0.0.1:12345/escheduler/projects/create");
+ httpPost.setHeader("token", "123");
+ // set parameters
+ List parameters = new ArrayList();
+ parameters.add(new BasicNameValuePair("projectName", "qzw"));
+ parameters.add(new BasicNameValuePair("desc", "qzw"));
+ UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
+ httpPost.setEntity(formEntity);
+ CloseableHttpResponse response = null;
+ try {
+ // execute
+ response = httpclient.execute(httpPost);
+ // eponse status code 200
+ if (response.getStatusLine().getStatusCode() == 200) {
+ String content = EntityUtils.toString(response.getEntity(), "UTF-8");
+ System.out.println(content);
+ }
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+ httpclient.close();
+ }
+ }
+```
+
+### 授予权限
+ - 授予权限包括项目权限,资源权限,数据源权限,UDF函数权限。
+> 管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。
-
-
-
+> 注意:**对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现**
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 数据源:SQL数据源支持MySQL、POSTGRESQL、HIVE和Spark四中数据源类型,选择对应的数据源
-- sql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作
-- sql参数:输入参数格式为key1=value1;key2=value2…
-- sql语句:SQL语句
-- UDF函数:对于HIVE类型的数据源,可以引用资源中心中创建的UDF函数,其他类型的数据源暂不支持UDF函数
-- 自定义参数:SQL任务类型自定义参数类型和数据类型同存储过程任务类型一样。区别在于SQL任务类型自定义参数会替换sql语句中${变量},而存储过程是自定义参数顺序的给方法设置值
+ - 1.点击指定人的授权按钮,如下图:
+
+
+
-##### 创建 MR 节点
+- 2.选中项目按钮,进行项目授权
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_MR.png)任务节点到画板中,双击任务节点,如下图:
+
+
+
- (1) JAVA程序
-
-
-
-
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 主函数的class:是MR程序的入口Main Class的全路径
-- 程序类型:选择JAVA语言
-- 主jar包:是MR的jar包
-- 命令行参数:是设置MR程序的输入参数,支持自定义参数变量的替换
-- 其他参数:支持 –D、-files、-libjars、-archives格式
-- 资源: 如果其他参数中引用了资源文件,需要在资源中选择指定
-- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容
+## 监控中心
- (2) Python程序
+### 服务管理
+ - 服务管理主要是对系统中的各个服务的健康状况和基本信息的监控和显示
+#### master监控
+ - 主要是master的相关信息。
-
+
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 程序类型:选择Python语言
-- 主jar包:是运行MR的Python jar包
-- 其他参数:支持 –D、-mapper、-reducer、-input -output格式,这里可以设置用户自定义参数的输入,比如:
-- -mapper "mapper.py 1" -file mapper.py -reducer reducer.py -file reducer.py –input /journey/words.txt -output /journey/out/mr/${currentTimeMillis}
-- 其中 -mapper 后的 mapper.py 1是两个参数,第一个参数是mapper.py,第二个参数是1
-- 资源: 如果其他参数中引用了资源文件,需要在资源中选择指定
-- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容
+#### worker监控
+ - 主要是worker的相关信息。
-##### 创建 Spark 节点
+
+
+
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SPARK.png)任务节点到画板中,双击任务节点,如下图:
+#### Zookeeper监控
+ - 主要是zookpeeper中各个worker和master的相关配置信息。
-
+
-- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
-- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 程序类型:支持JAVA、Scala和Python三种语言
-- 主函数的class:是Spark程序的入口Main Class的全路径
-- 主jar包:是Spark的jar包
-- 部署方式:支持yarn-cluster、yarn-client、和local三种模式
-- Driver内核数:可以设置Driver内核数及内存数
-- Executor数量:可以设置Executor数量、Executor内存数和Executor内核数
-- 命令行参数:是设置Spark程序的输入参数,支持自定义参数变量的替换。
-- 其他参数:支持 --jars、--files、--archives、--conf格式
-- 资源:如果其他参数中引用了资源文件,需要在资源中选择指定
-- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容
+#### Mysql监控
+ - 主要是mysql的健康状况
- 注意:JAVA和Scala只是用来标识,没有区别,如果是Python开发的Spark则没有主函数的class,其他都是一样
+
+
+
-##### 创建 Python 节点
+## 任务节点类型和参数设置
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_PYTHON.png)任务节点到画板中,双击任务节点,如下图:
+### Shell节点
+ - shell节点,在worker执行的时候,会生成一个临时shell脚本,使用租户同名的linux用户执行这个脚本。
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SHELL.png)任务节点到画板中,双击任务节点,如下图:
-
+
- 节点名称:一个流程定义中的节点名称是唯一的
-- 运行标志:标识这个节点是否能正常调度
+- 运行标志:标识这个节点是否能正常调度,如果不需要执行,可以打开禁止执行开关。
- 描述信息:描述该节点的功能
- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 脚本:用户开发的Python程序
+- 脚本:用户开发的SHELL程序
- 资源:是指脚本中需要调用的资源文件列表
-- 自定义参数:是Python局部的用户自定义参数,会替换脚本中以${变量}的内容
-
-##### 创建 依赖 节点
-
-
-> 任务依赖分为水平依赖和垂直依赖
-
-- 水平依赖就是指DAG图的有向依赖,是同一个流程实例任务节点的前驱,后继之间的依赖关系
-
-- 垂直依赖是流程实例之间的任务依赖,基于定时的依赖。
+- 自定义参数:是SHELL局部的用户自定义参数,会替换脚本中以${变量}的内容
-> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_DEPENDENT.png)任务节点到画板中,双击任务节点,如下图:
+### 子流程节点
+ - 子流程节点,就是把外部的某个工作流定义当做自己的一个任务节点去执行。
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SUB_PROCESS.png)任务节点到画板中,双击任务节点,如下图:
-
+
- 节点名称:一个流程定义中的节点名称是唯一的
- 运行标志:标识这个节点是否能正常调度
- 描述信息:描述该节点的功能
-- 失败重试次数:任务失败重新提交的次数,支持下拉和手填
-- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填
-- 任务依赖:增加依赖条件,选择依赖流程定义、节点名称(默认为全部节点)、依赖周期、依赖时间点
-
-
-
-
+- 子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义
-- 选择多个依赖条件之间的关系:或、且
+### 依赖(DEPENDENT)节点
+ - 依赖节点,就是**依赖检查节点**。比如A流程依赖昨天的B流程执行成功,依赖节点会去检查B流程在昨天是否有执行成功的实例。
+
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_DEPENDENT.png)任务节点到画板中,双击任务节点,如下图:
-
+
-
-#### 流程实例列表
-
-> 流程实例列表页是可以显示所有本项目下所有流程实例的列表,并有对流程实例进行名称、状态、时间等字段的筛选功能。
-> 通过列表页可以直接对某一个流程实例进行编辑、重跑、恢复失败、暂停、停止、恢复暂停、删除、查看甘特图等操作.
-
-
-
+
+ > 依赖节点提供了逻辑判断功能,比如检查昨天的B流程是否成功,或者C流程是否执行成功。
+
+
+
-
-- 编辑功能: 对已经完成的流程实例,点击编辑按钮,可以对其编辑,如图:
-
-
-
-
-- 查看流程实例运行变量
+ > 例如,A流程为周报任务,B、C流程为天任务,A任务需要B、C任务在上周的每一天都执行成功,如图示:
-
-
+
+
-- 点击隐藏按钮,查看流程实例运行变量。如下图:
+ > 假如,周报A同时还需要自身在上周二执行成功:
-
-
+
+
-- 点击变量是对变量的复制
-
-- 点击"重跑",可以对已经完成的流程实例进行重新运行操作,如图:
+### 存储过程节点
+ - 根据选择的数据源,执行存储过程。
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_PROCEDURE.png)任务节点到画板中,双击任务节点,如下图:
-
+
-
-- 点击"恢复失败", 可以对失败的流程进行恢复,直接从失败的任务节点开始运行。如图:
-
-
-
-
-- 点击"暂停", 可以对正在运行的流程进行**暂停**操作,如图:
+- 数据源:存储过程的数据源类型支持MySQL和POSTGRESQL两种,选择对应的数据源
+- 方法:是存储过程的方法名称
+- 自定义参数:存储过程的自定义参数类型支持IN、OUT两种,数据类型支持VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN九种数据类型
-
-
+### SQL节点
+ - 执行非查询SQL功能
+
+
-
-- 点击"停止",可以对正在运行的流程进行**停止**操作,如图:
-
-
-
-
-- 点击"恢复暂停",可以对暂停的流程恢复,直接从**暂停的节点**开始运行,如图:
+ - 执行查询SQL功能,可以选择通过表格和附件形式发送邮件到指定的收件人。
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SQL.png)任务节点到画板中,双击任务节点,如下图:
-
+
-- 删除
-> 删除流程实例及流程实例下的任务实例
-
-- Gantt
+- 数据源:选择对应的数据源
+- sql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作
+- sql参数:输入参数格式为key1=value1;key2=value2…
+- sql语句:SQL语句
+- UDF函数:对于HIVE类型的数据源,可以引用资源中心中创建的UDF函数,其他类型的数据源暂不支持UDF函数
+- 自定义参数:SQL任务类型,而存储过程是自定义参数顺序的给方法设置值自定义参数类型和数据类型同存储过程任务类型一样。区别在于SQL任务类型自定义参数会替换sql语句中${变量}
-> Gantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间
+### SPARK节点
+ - 通过SPARK节点,可以直接直接执行SPARK程序,对于spark节点,worker会使用`spark-submit`方式提交任务
+
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SPARK.png)任务节点到画板中,双击任务节点,如下图:
-
+
-#### 任务实例列表页
+- 程序类型:支持JAVA、Scala和Python三种语言
+- 主函数的class:是Spark程序的入口Main Class的全路径
+- 主jar包:是Spark的jar包
+- 部署方式:支持yarn-cluster、yarn-client、和local三种模式
+- Driver内核数:可以设置Driver内核数及内存数
+- Executor数量:可以设置Executor数量、Executor内存数和Executor内核数
+- 命令行参数:是设置Spark程序的输入参数,支持自定义参数变量的替换。
+- 其他参数:支持 --jars、--files、--archives、--conf格式
+- 资源:如果其他参数中引用了资源文件,需要在资源中选择指定
+- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容
+
+ 注意:JAVA和Scala只是用来标识,没有区别,如果是Python开发的Spark则没有主函数的class,其他都是一样
-
-
-
+### MapReduce(MR)节点
+ - 使用MR节点,可以直接执行MR程序。对于mr节点,worker会使用`hadoop jar`方式提交任务
-- 点击任务实例节点,点击 查看历史,可以查看该流程实例运行的该任务实例列表
-##### 查看日志
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_MR.png)任务节点到画板中,双击任务节点,如下图:
-
-
-
+ 1. JAVA程序
+
+
+
+
-- 点击任务实例节点,点击 查看日志,可以查看该任务实例运行的日志,如下图:
+- 主函数的class:是MR程序的入口Main Class的全路径
+- 程序类型:选择JAVA语言
+- 主jar包:是MR的jar包
+- 命令行参数:是设置MR程序的输入参数,支持自定义参数变量的替换
+- 其他参数:支持 –D、-files、-libjars、-archives格式
+- 资源: 如果其他参数中引用了资源文件,需要在资源中选择指定
+- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容
+
+2. Python程序
-
+
-- 右上角是下载日志、刷新日志和放大/缩小按钮
-- 注意:日志查看是分片的查看,上下滚动查看
+- 程序类型:选择Python语言
+- 主jar包:是运行MR的Python jar包
+- 其他参数:支持 –D、-mapper、-reducer、-input -output格式,这里可以设置用户自定义参数的输入,比如:
+- -mapper "mapper.py 1" -file mapper.py -reducer reducer.py -file reducer.py –input /journey/words.txt -output /journey/out/mr/${currentTimeMillis}
+- 其中 -mapper 后的 mapper.py 1是两个参数,第一个参数是mapper.py,第二个参数是1
+- 资源: 如果其他参数中引用了资源文件,需要在资源中选择指定
+- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容
-### 任务实例
+### Python节点
+ - 使用python节点,可以直接执行python脚本,对于python节点,worker会使用`python **`方式提交任务。
+
-> 任务实例是流程实例任务节点的列表
+> 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_PYTHON.png)任务节点到画板中,双击任务节点,如下图:
-
+
- 两种方式查看任务实例:
-- 第一种是通过流程实例任务节点 查看历史,这时查看的是此流程实例的任务实例 重跑的列表
-- 第二种是通过点击 流程实例 导航栏,调转到流程实例列表,这时查看的是所有流程实例的任务实例列表
+- 脚本:用户开发的Python程序
+- 资源:是指脚本中需要调用的资源文件列表
+- 自定义参数:是Python局部的用户自定义参数,会替换脚本中以${变量}的内容
-> 查看日志:点击 查看日志 按钮,可下载和查看日志
+### 系统参数
-## 系统参数
- ### 系统参数