hi:
This email mainly discusses how to split the field process_definition_json in the process definition [t_ds_process_definition] table. First, provide a minimum change idea. According to this idea, the basic API and Master service only need to make a few changes, and the UI and Worker remain basically unchanged. Split t_ds_process_definition into two tables, t_ds_process_definition and t_ds_process_definition_task: t_ds_process_definition is consistent with the original t_ds_process_definition field, except that the process_definition_json field is deleted. Split according to the process_definition_json field in the t_ds_process_definition table to generate the t_ds_process_definition_task table. 一. t_ds_process_definition The t_ds_process_definition table structure is shown in the following table: | 序号 | 字段 | 类型 | 描述 | | 1 | id | int(11) | 主键 | | 2 | name | varchar(255) | 流程定义名称 | | 3 | version | int(11) | 流程定义版本 | | 4 | release_state | tinyint(4) | 流程定义的发布状态:0 未上线 , 1已上线 | | 5 | project_id | int(11) | 项目id | | 6 | user_id | int(11) | 流程定义所属用户id | | 7 | description | text | 流程定义描述 | | 8 | global_params | text | 全局参数 | | 9 | flag | tinyint(4) | 流程是否可用:0 不可用,1 可用 | | 10 | locations | text | 节点坐标信息 | | 11 | connects | text | 节点连线信息 | | 12 | receivers | text | 收件人 | | 13 | receivers_cc | text | 抄送人 | | 14 | create_time | datetime | 创建时间 | | 15 | timeout | int(11) | 超时时间 | | 16 | tenant_id | int(11) | 租户id | | 17 | update_time | datetime | 更新时间 | | 18 | modify_by | varchar(36) | 修改用户 | | 19 | resource_ids | varchar(255) | 资源ids | 二. t_ds_process_definition_task The t_ds_process_definition_task table structure is shown in the following table: | 序号 | 参数名 | 类型 | 描述 | | 1 | id | int(11) | 任务id | | 2 | name | varchar(255) | 任务名称 | | 3 | type | varchar(64) | 类型 [SHLL,PYTHON,DATAX,SPARK 等等 ] | | 4 | process_definition_id | int(11) | 流程定义id | | 5 | params | longtext | 自定义参数 [ Json 格式 保存原有的params字段, 自定义参数和资源文件参数是否拆出 ] | | 6 | description | text | 描述 | | 7 | runFlag | tinyint(4) | 运行标识 | | 8 | conditionResult | longtext | 条件分支 [JSON格式] | | 9 | dependence | longtext | 任务依赖 [JSON格式] | | 10 | maxRetryTimes | tinyint(4) | 最大重试次数 | | 11 | retryInterval | tinyint(4) | 重试间隔 | | 12 | timeout | varchar(128) | 超时控制策略 [JSON格式] | | 13 | taskInstancePriority | varchar(16) | 任务优先级 | | 14 | workerGroup | varchar(64) | Worker 分组名称 | | 15 | preTasks | varchar(128) | 前置任务 | Reference materials: metadata document : https://github.com/apache/incubator-dolphinscheduler-website/blob/master/docs/zh-cn/1.3.2/user_doc/metadata-1.3.md task storage structure: https://github.com/apache/incubator-dolphinscheduler-website/blob/master/docs/zh-cn/1.3.2/user_doc/task-structure.md ----------------------------------------------------------------------------------------------------------------------------------------- 本邮件主要讨论工作流定义[t_ds_process_definition]表中的字段process_definition_json如何拆分. 先提供一种最小改动思路. 按照这种思路,基本API,Master服务只需要做少许变动, UI和Worker基本保持不变. 将t_ds_process_definition拆分成两个表t_ds_process_definition 和 t_ds_process_definition_task两个表 : t_ds_process_definition跟原有t_ds_process_definition字段保持一致,只是删除了process_definition_json字段. 根据t_ds_process_definition表中的process_definition_json字段进行拆分生成t_ds_process_definition_task表. 一. t_ds_process_definition[主体] t_ds_process_definition 表结构如下表所示: | 序号 | 字段 | 类型 | 描述 | | 1 | id | int(11) | 主键 | | 2 | name | varchar(255) | 流程定义名称 | | 3 | version | int(11) | 流程定义版本 | | 4 | release_state | tinyint(4) | 流程定义的发布状态:0 未上线 , 1已上线 | | 5 | project_id | int(11) | 项目id | | 6 | user_id | int(11) | 流程定义所属用户id | | 7 | description | text | 流程定义描述 | | 8 | global_params | text | 全局参数 | | 9 | flag | tinyint(4) | 流程是否可用:0 不可用,1 可用 | | 10 | locations | text | 节点坐标信息 | | 11 | connects | text | 节点连线信息 | | 12 | receivers | text | 收件人 | | 13 | receivers_cc | text | 抄送人 | | 14 | create_time | datetime | 创建时间 | | 15 | timeout | int(11) | 超时时间 | | 16 | tenant_id | int(11) | 租户id | | 17 | update_time | datetime | 更新时间 | | 18 | modify_by | varchar(36) | 修改用户 | | 19 | resource_ids | varchar(255) | 资源ids | 二. t_ds_process_definition_task [任务] 根据t_ds_process_definition表中的process_definition_json字段进行拆分. 字段如下: | 序号 | 参数名 | 类型 | 描述 | | 1 | id | int(11) | 任务id | | 2 | name | varchar(255) | 任务名称 | | 3 | type | varchar(64) | 类型 [SHLL,PYTHON,DATAX,SPARK 等等 ] | | 4 | process_definition_id | int(11) | 流程定义id | | 5 | params | longtext | 自定义参数 [ Json 格式 保存原有的params字段, 自定义参数和资源文件参数是否拆出 ] | | 6 | description | text | 描述 | | 7 | runFlag | tinyint(4) | 运行标识 | | 8 | conditionResult | longtext | 条件分支 [JSON格式] | | 9 | dependence | longtext | 任务依赖 [JSON格式] | | 10 | maxRetryTimes | tinyint(4) | 最大重试次数 | | 11 | retryInterval | tinyint(4) | 重试间隔 | | 12 | timeout | varchar(128) | 超时控制策略 [JSON格式] | | 13 | taskInstancePriority | varchar(16) | 任务优先级 | | 14 | workerGroup | varchar(64) | Worker 分组名称 | | 15 | preTasks | varchar(128) | 前置任务 | 参考资料 : Dolphin Scheduler 1.3元数据文档 https://github.com/apache/incubator-dolphinscheduler-website/blob/master/docs/zh-cn/1.3.2/user_doc/metadata-1.3.md 工作流任务存储结构 : https://github.com/apache/incubator-dolphinscheduler-website/blob/master/docs/zh-cn/1.3.2/user_doc/task-structure.md -------------------------------------- BoYi ZhangE-mail : [email protected]
