Table of Contents
任务总体存储
Shell节点
SQL节点
存储过程节点
SPARK节点
MapReduce(MR)节点
Python节点
Flink节点
HTTP节点
子流程节点
依赖(DEPENDENT)节点
在调度平台所创建的所有任务都保存在t_ds_process_definition 表中.
该数据库表结构如下表所示:
序号 |
字段 |
类型 |
注释 |
1 |
id |
int |
主键 |
2 |
name |
varchar |
流程定义名称 |
3 |
version |
int |
流程定义版本 |
4 |
release_state |
tinyint |
流程定义的发布状态:0 未上线 1已上线 |
5 |
project_id |
int |
项目id |
6 |
user_id |
int |
流程定义所属用户id |
7 |
process_definition_json |
longtext |
流程定义json串 |
8 |
description |
text |
流程定义描述 |
9 |
global_params |
text |
全局参数 |
10 |
flag |
tinyint |
流程是否可用:0 不可用,1 可用 |
11 |
locations |
text |
节点坐标信息 |
12 |
connects |
text |
节点连线信息 |
13 |
receivers |
text |
收件人 |
14 |
receivers_cc |
text |
抄送人 |
15 |
create_time |
datetime |
创建时间 |
16 |
timeout |
int |
超时时间 |
17 |
tenant_id |
int |
租户id |
18 |
update_time |
datetime |
更新时间 |
其中process_definition_json 字段为核心字段, 定义了 DAG 图中的任务信息.该数据以JSON 的方式进行存储.
公共的数据结构如下表.
序号 |
字段 |
类型 |
注释 |
1 |
globalParams |
Array |
全局参数 |
2 |
tasks |
Array |
流程中的任务集合 [各个类型的结构请参考如下章节] |
3 |
tenantId |
int |
租户id |
4 |
timeout |
int |
超时时间 |
数据示例
{ "globalParams":[ { "prop":"golbal_bizdate", "direct":"IN", "type":"VARCHAR", "value":"${system.biz.date}" } ], "tasks":[ Object{...} ], "tenantId":-1, "timeout":0 } |
Shell节点,在worker执行的时候,会生成一个临时Shell脚本,使用租户同名的linux用户执行这个脚本.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: SHELL |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
resourceList |
引用资源文件 |
|
6 |
|
localParams |
本地变量 |
|
7 |
|
rawScript |
Shell脚本 |
|
8 |
description |
|
描述 |
|
9 |
runFlag |
|
运行标识 |
|
10 |
dependence |
|
任务依赖 |
与params互斥 |
11 |
maxRetryTimes |
|
最大重试次数 |
|
12 |
retryInterval |
|
重试间隔 |
|
13 |
timeout |
|
超时控制 |
|
14 |
taskInstancePriority |
|
任务优先级 |
|
15 |
workerGroupId |
|
Worker 分组 |
|
16 |
preTasks |
|
前置任务 |
|
数据示例:
{ "type":"SHELL", "id":"tasks-17761", "name":"shell-task", "params":{ "resourceList":[ { "res":"spark-examples_2.11-2.4.4.jar" }, { "res":"hadoop-mapreduce-examples-2.7.4.jar" } ], "localParams":[ { "prop":"local_param", "direct":"IN", "type":"VARCHAR", "value":"global_bizdate" } ], "rawScript":"echo "this is a shell task : ${local_param}"" }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[ ] }
|
通过 SQL对指定的数据源进行数据查询、更新操作.
节点定义结构如下。
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: SQL |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
type |
数据库类型 |
|
6 |
|
datasource |
数据源 |
|
7 |
|
sql |
Sql脚本 |
|
8 |
|
udfs |
Udf 函数 |
|
9 |
|
sqlType |
SQL 类型 |
0 查询 1 非查询 |
10 |
|
title |
邮件标题 |
|
11 |
|
receivers |
邮件接收人 |
|
12 |
|
receiversCc |
邮件抄送人 |
|
13 |
|
showType |
接收类型 |
TABLE 表格 ATTACHMENT附件 |
14 |
|
localParams |
本地变量 |
|
15 |
|
connParams |
连接参数 |
|
16 |
|
preStatements |
前置 SQL |
|
17 |
|
postStatements |
后置 SQL |
|
18 | description |
|
描述 |
|
19 | runFlag |
|
运行标识 |
|
20 | dependence |
|
任务依赖 |
与params互斥 |
21 | maxRetryTimes |
|
最大重试次数 |
|
22 | retryInterval |
|
重试间隔 |
|
23 | timeout |
|
超时控制 |
|
24 | taskInstancePriority |
|
任务优先级 |
|
25 | workerGroupId |
|
Worker 分组 |
|
26 | preTasks |
|
前置任务 |
|
数据示例:
{ "type":"SQL", "id":"tasks-17811", "name":"SQL节点", "params":{ "type":"MYSQL", "datasource":2, "sql":"show databases;", "udfs":"", "sqlType":"0", "title":"SQL节点", "receivers":"[email protected]", "receiversCc":"", "showType":"TABLE,ATTACHMENT", "localParams":[
], "connParams":"", "preStatements":[ "select user();" ], "postStatements":[ "select database();" ] }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
根据选择的数据源,执行存储过程.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: PROCEDURE |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
type |
数据库类型 |
|
6 |
|
datasource |
数据源 ID |
|
7 |
|
method |
方法名 |
|
8 |
|
localParams |
存储过程参数 |
|
9 |
description |
|
描述 |
|
10 |
runFlag |
|
运行标识 |
|
11 |
dependence |
|
任务依赖 |
与params互斥 |
12 |
maxRetryTimes |
|
最大重试次数 |
|
13 |
retryInterval |
|
重试间隔 |
|
14 |
timeout |
|
超时控制 |
|
15 |
taskInstancePriority |
|
任务优先级 |
|
16 |
workerGroupId |
|
Worker 分组 |
|
17 | preTasks |
|
前置任务 |
|
数据示例:
"type":"PROCEDURE", "id":"tasks-33589", "name":"存储过程节点", "params":{ "type":"MYSQL", "datasource":2, "method":"add", "localParams":[ { "prop":"in_paramer", "direct":"IN", "type":"VARCHAR", "value":"" }, { "prop":"out_paramer", "direct":"OUT", "type":"VARCHAR", "value":"" } ] }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
通过SPARK节点,可以直接直接执行SPARK程序,对于spark节点,worker会使用spark-submit方式提交任务.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: SPARK |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
mainClass |
运行主类 |
|
6 |
|
mainJar |
程序 jar 包 |
|
7 |
|
deployMode |
部署模式 |
|
8 |
|
resourceList |
引用资源文件 |
|
9 |
|
localParams |
本地变量 |
|
10 |
|
driverCores |
driver核数 |
|
11 |
|
driverMemory |
driver 内存数 |
|
12 |
|
numExecutors |
executor数量 |
|
13 |
|
executorMemory |
executor内存 |
|
14 |
|
executorCores |
executor核数 |
|
15 |
|
mainArgs |
主参数 |
|
16 |
|
others |
其他参数 |
|
17 |
|
programType |
程序类型 |
|
18 |
|
sparkVersion |
Spark 版本 |
|
19 | description |
|
描述 |
|
20 | runFlag |
|
运行标识 |
|
21 | dependence |
|
任务依赖 |
与params互斥 |
22 | maxRetryTimes |
|
最大重试次数 |
|
23 | retryInterval |
|
重试间隔 |
|
24 | timeout |
|
超时控制 |
|
25 | taskInstancePriority |
|
任务优先级 |
|
26 | workerGroupId |
|
Worker 分组 |
|
27 | preTasks |
|
前置任务 |
|
数据示例:
{ "type":"SPARK", "id":"tasks-46459", "name":"SPARK节点", "params":{ "mainClass":"org.apache.spark.examples.SparkPi", "mainJar":{ "res":"spark-examples_2.11-2.4.4.jar" }, "deployMode":"cluster", "resourceList":[ { "res":"spark-examples_2.11-2.4.4.jar" } ], "localParams":[
], "driverCores":1, "driverMemory":"512M", "numExecutors":2, "executorMemory":"2G", "executorCores":2, "mainArgs":"10", "others":"", "programType":"SCALA", "sparkVersion":"SPARK2" }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
使用MR节点,可以直接执行MR程序。对于mr节点,worker会使用hadoop jar方式提交任务.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: MR |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
mainClass |
运行主类 |
|
6 |
|
mainJar |
程序 jar 包 |
|
7 |
|
resourceList |
引用资源文件 |
|
8 |
|
mainArgs |
主参数 |
|
9 |
|
others |
其他参数 |
|
10 |
|
programType |
程序类型 |
|
11 |
description |
|
描述 |
|
12 |
runFlag |
|
运行标识 |
|
13 |
dependence |
|
任务依赖 |
与params互斥 |
14 |
maxRetryTimes |
|
最大重试次数 |
|
15 |
retryInterval |
|
重试间隔 |
|
16 |
timeout |
|
超时控制 |
|
17 | taskInstancePriority |
|
任务优先级 |
|
18 | workerGroupId |
|
Worker 分组 |
|
19 | preTasks |
|
前置任务 |
|
数据示例:
{ "type":"MR", "id":"tasks-70322", "name":"MapReduce(MR)节点", "params":{ "mainClass":"wordcount", "mainJar":{ "res":"hadoop-mapreduce-examples-2.7.4.jar" }, "resourceList":[ { "res":"hadoop-mapreduce-examples-2.7.4.jar" } ], "localParams":[
], "mainArgs":"/wordcount/input /wordcount/output/result", "others":"", "programType":"JAVA" }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
使用Python节点,可以直接执行python脚本,对于python节点,worker会使用python **方式提交任务.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: PYTHON |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
resourceList |
引用资源文件 |
|
6 |
|
localParams |
本地变量 |
|
7 |
|
rawScript |
Python脚本 |
|
8 |
description |
|
描述 |
|
9 |
runFlag |
|
运行标识 |
|
10 |
dependence |
|
任务依赖 |
与params互斥 |
11 |
maxRetryTimes |
|
最大重试次数 |
|
12 |
retryInterval |
|
重试间隔 |
|
13 |
timeout |
|
超时控制 |
|
14 |
taskInstancePriority |
|
任务优先级 |
|
15 |
workerGroupId |
|
Worker 分组 |
|
16 |
preTasks |
|
前置任务 |
|
数据示例:
{ "type":"PYTHON", "id":"tasks-23887", "name":" Python节点", "params":{ "resourceList":[ { "res":"hadoop-mapreduce-examples-2.7.4.jar" }, { "res":"spark-examples_2.11-2.4.4.jar" } ], "localParams":[
], "rawScript":"print("this is python task ..")" }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
根据配置调用 Flink 请求.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: FLINK |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
mainClass |
运行主类 |
|
6 |
|
mainJar |
程序 jar 包 |
|
7 |
|
deployMode |
部署模式 |
|
8 |
|
resourceList |
引用资源文件 |
|
9 |
|
localParams |
本地变量 |
|
10 |
|
slot |
Slot数量 |
|
11 |
|
taskManager |
taskManager数量 |
|
12 |
|
taskManagerMemory |
taskManager内存 |
|
13 |
|
jobManagerMemory |
jobManager内存 |
|
14 |
|
executorCores |
executor核数 |
|
15 |
|
mainArgs |
主参数 |
|
16 |
|
others |
其他参数 |
|
17 |
|
programType |
程序类型 |
|
18 |
|
sparkVersion |
Spark 版本 |
|
19 | description |
|
描述 |
|
20 | runFlag |
|
运行标识 |
|
21 | dependence |
|
任务依赖 |
与params互斥 |
22 | maxRetryTimes |
|
最大重试次数 |
|
23 | retryInterval |
|
重试间隔 |
|
24 | timeout |
|
超时控制 |
|
25 | taskInstancePriority |
|
任务优先级 |
|
26 | workerGroupId |
|
Worker 分组 |
|
27 | preTasks |
|
前置任务 |
|
数据示例:
{ "type":"FLINK", "id":"tasks-84250", "name":"Flink节点", "params":{ "mainClass":"org.apache.spark.examples.SparkPi", "mainJar":{ "res":"spark-examples_2.11-2.4.4.jar" }, "deployMode":"cluster", "resourceList":[
], "localParams":[
], "slot":1, "taskManager":"2", "jobManagerMemory":"1G", "taskManagerMemory":"2G", "executorCores":2, "mainArgs":"10", "others":"", "programType":"SCALA" }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
根据配置调用 HTTP 请求.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: HTTP |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
localParams |
本地变量 |
|
6 |
|
httpParams |
请求参数 |
|
7 |
|
url |
url 地址 |
|
8 |
|
httpMethod |
请求方式 |
|
9 |
|
httpCheckCondition |
检查条件 |
|
10 |
|
condition |
检查内容 |
|
11 |
description |
|
描述 |
|
12 |
runFlag |
|
运行标识 |
|
13 |
dependence |
|
任务依赖 |
与params互斥 |
14 |
maxRetryTimes |
|
最大重试次数 |
|
15 |
retryInterval |
|
重试间隔 |
|
16 |
timeout |
|
超时控制 |
|
17 | taskInstancePriority |
|
任务优先级 |
|
18 | workerGroupId |
|
Worker 分组 |
|
19 | preTasks |
|
前置任务 |
|
数据示例:
{ "type":"HTTP", "id":"tasks-31113", "name":"http节点", "params":{ "localParams":[
], "httpParams":[ { "prop":"id", "httpParametersType":"PARAMETER", "value":"GRESFWW" } ], "url":"http://www.ysstech.com/", "httpMethod":"GET", "httpCheckCondition":"STATUS_CODE_DEFAULT", "condition":"" }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
子流程节点,就是把外部的某个工作流定义当做一个任务节点去执行.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: SUB_PROCESS |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
Json 格式 |
5 |
|
processDefinitionId |
流程定义 ID |
|
6 |
description |
|
描述 |
|
7 |
runFlag |
|
运行标识 |
|
8 |
dependence |
|
任务依赖 |
与params互斥 |
9 |
maxRetryTimes |
|
最大重试次数 |
|
10 |
retryInterval |
|
重试间隔 |
|
11 |
timeout |
|
超时控制 |
|
12 |
taskInstancePriority |
|
任务优先级 |
|
13 |
workerGroupId |
|
Worker 分组 |
|
14 |
preTasks |
|
前置任务 |
|
15 |
||||
16 |
数据示例:
{ "type":"SUB_PROCESS", "id":"tasks-22568", "name":"子流程节点-task", "params":{ "processDefinitionId":2 }, "description":"", "runFlag":"NORMAL", "dependence":{
}, "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |
依赖节点,就是依赖检查节点。比如A流程依赖昨天的B流程执行成功,依赖节点会去检查B流程在昨天是否有执行成功的实例.
节点定义结构如下:
序号 |
参数名 |
描述 |
备注 |
|
1 |
type |
|
类型 |
值: DEPENDENT |
2 |
id |
|
任务编码 |
|
3 |
name |
|
名称 |
|
4 |
params |
|
自定义参数 |
|
5 |
description |
|
描述 |
|
6 |
runFlag |
|
运行标识 |
|
7 |
dependence |
|
任务依赖 |
与params互斥 |
8 |
|
relation |
关系 |
|
9 |
|
dependTaskList |
依赖任务清单 |
|
10 |
maxRetryTimes |
|
最大重试次数 |
|
11 |
retryInterval |
|
重试间隔 |
|
12 |
timeout |
|
超时控制 |
|
13 |
taskInstancePriority |
|
任务优先级 |
|
14 |
workerGroupId |
|
Worker 分组 |
|
15 |
preTasks |
|
前置任务 |
|
数据示例:
{ "type":"DEPENDENT", "id":"tasks-3383", "name":" 依赖(DEPENDENT)节点", "params":{
}, "description":"", "runFlag":"NORMAL", "dependence":{ "relation":"AND", "dependTaskList":[ { "relation":"AND", "dependItemList":[ { "projectId":2, "definitionId":3, "definitionList":[ { "value":3, "label":"子流程节点" }, { "value":2, "label":"shell-task" } ], "depTasks":"ALL", "cycle":"day", "dateValue":"today" } ] } ] }, "maxRetryTimes":"0", "retryInterval":"1", "timeout":{ "strategy":"", "interval":null, "enable":false }, "taskInstancePriority":"MEDIUM", "workerGroupId":-1, "preTasks":[
] } |