动态表单存储设计(动态表单存储设计方案)

前言

Flowable, Activiti 等开源解决方案所提供的表单引擎是没有业务表单数据持久化的功能(即自动创建表,将表单数据持久化功能),只提供动态表单创建以及渲染功能。目前来看表单引擎服务主要功能如下:

  • 动态表单配置以及渲染(主要在于前端实现)
  • 表单数据库持久化

以下是目前实现业务表单数据持久化的几种方案:

以下方案都以请假流程的表单为例,比较简单就请假天数(days)以及请假理由(reason),动态表单如下所示:

动态表单存储设计(动态表单存储设计方案)

方案一:动态添加字段

一个表单对应数据库的一张或多张物理表(主从表)

针对请假流程如何操作呢?给请假流程表单创建一张数据表,包含字段 days 以及 reason 。其他业务表单也是如此操作。

create table leave_data( days int default 0 null comment '请假天数', reason varchar(250) null comment '请假理由')comment '请假流程业务数据';

该方案存在的问题:

  • 一个表单对应数据库的一张或多张物理表,随着业务的增多,数据库的物理表会不断膨胀。
  • 业务表单字段需要修改时(比如给请假流程添加一个开始时间字段,就需要调整物理表结构),其对应的物理表结构也需要修改,在物理表很多数据时,改变物理表scheme会锁表。

方案二:预留空白字段,动态分配

业务数据存储表:

create table data( name varchar(250) null comment '业务表单名', field_0 varchar(250) null comment '字段0', field_1 varchar(250) null comment '字段1', field_2 varchar(250) null comment '字段2', field_3 varchar(250) null comment '字段3')comment '业务数据';

业务表单属性表:

create table table_config( name varchar(250) null comment '表单名', field_name varchar(250) null comment '字段名', field_map varchar(250) null comment '字段映射')comment '表配置';

实际操作下来,存储是这样哒:

动态表单存储设计(动态表单存储设计方案)动态表单存储设计(动态表单存储设计方案)

那么动态字段变更需要修改表字段配置表即可。
缺点:

  • 操作数据的时候都需要先去 map 中转以下才能查询(程序层面可以解决)
  • 如果一张业务表保存所有的数据话,不利于优化(可以进行扩展,配置多张业务表,不过这样也可能会出现方案一中物理表爆炸的问题)

方案三:属性使用 Key/VALUE 格式存储

将表单数据全部都用 Key/Value 的格式来存储。参考如下:

create table attributes( f_id varchar(250) null comment '关联id', key varchar(250) null comment '属性', value varchar(250) null comment '属性值', field_2 varchar(250) null comment '字段2', field_3 varchar(250) null comment '字段3')comment '属性';

具体操作后即是:

动态表单存储设计(动态表单存储设计方案)

动态添加属性字段只需要添加 Key/value。题外话,reddit 的数据库就两张表,也是这样的设计方案,不过现在已经改掉了,成为历史。
缺点:

  • 不太好支持关联子表
  • 程序中处理取值不方便

方案四:MongoDB 方案设计

MongoDB 方案的话,只需要将前端发过来的JSON写入即可,这里还是以请假流程为例:

动态表单存储设计(动态表单存储设计方案)

集合内数据允许动态添加字段:

动态表单存储设计(动态表单存储设计方案)

集合类似于关系型数据库中的表,可以存储不规则的数据,只能说 Mongodb 擅长干这种事情。

总结

以上方案设计生产环境使用还需要改进使用,目前市面上用的多得应该是方案二,MongoDB 也是一个不错选项,仅在数据持久化这块,具体业务场景下使用 MongoDB 关系型数据库的设计也可以是一个备选的方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年7月8日 下午5:11
下一篇 2024年7月8日 下午5:23

相关推荐

  • 农民的出路应该在农村

      细数中国农业的历史,那真是长篇巨幅。从古到今,农业一直是中国发展的重中之重,现在中国的每个五年规划里面,农业都是最浓墨重彩的一笔,出台了许多扶持政策。这些年来帮扶了许多贫困的农…

    科研百科 2022年5月31日
    289
  • 吉林大学海外A类人才

    吉林大学海外A类人才 吉林大学是中国著名的综合性大学之一,拥有悠久的历史和丰富的文化底蕴。在近年来的发展过程中,吉林大学吸引了大量的海外优秀学子前来求学,成为国内外学术界的交流平台…

    科研百科 2024年11月15日
    2
  • 移动办公系统软件(移动办公系统报价表)

    移动办公系统报价表 随着现代办公方式的不断演变,移动办公系统已经成为了越来越多企业的选择。这些系统可以帮助员工在任何地方都能高效地完成工作,从而提高生产力和工作效率。 以下是一些常…

    科研百科 2024年6月7日
    57
  • CRO临床研究BE和I-IV期业务收入确认方式探讨(临床研究cro是什么意思)

    更多IPO专业内容,请关注本头条,搜索关键词,阅读专业解读资料,喜欢的也可以点赞。若有不理解的关键点和疑难问题,可以随时评论留言版主当天回复,也可以加微信13439040828咨询…

    科研百科 2024年4月18日
    167
  • bdc项目管理系统

    BCD项目管理系统:提升项目管理效率 随着现代企业竞争的不断加剧,项目管理已经成为了企业竞争的重要手段之一。BCD项目管理系统作为一种先进的项目管理工具,可以有效地提升项目管理的效…

    科研百科 2024年12月12日
    0
  • 【基层党建】水挂庄社区:党建引领精细管理 “田”字型治理提效能

    水挂庄社区坚持党建引领网格精细化管理,强化组织引领,共治共建,以“党建 网格 治理”模式为抓手,有效推动党建工作与“田”字型治理网格深度融合,健全完善服务机制,推动资源向网格集中、…

    科研百科 2024年7月5日
    59
  • his系统项目管理指南

    his系统项目管理指南 his系统是一种用于组织内部办公的信息系统,项目管理在该系统中得到广泛应用。本文将提供一份实用的his系统项目管理指南,帮助项目经理更好地管理项目。 1. …

    科研百科 2024年12月23日
    3
  • 一建项目管理系统视频

    一建项目管理系统视频 一建项目管理系统是一种用于管理大型建筑项目的软件系统,能够帮助项目经理和团队成员高效地协同工作,提高项目质量和效率。下面我们将介绍一建项目管理系统的一些特点和…

    科研百科 2024年12月30日
    0
  • 推动经济高质量发展、支持全面创新、高水平对外开放等体制机制上存在的差距不足

    推动经济高质量发展、支持全面创新、高水平对外开放等体制机制上存在的差距不足 近年来,我国经济发展取得了令人瞩目的成就,但同时也面临着一些体制机制上的差距和不足。为了推动经济高质量发…

    科研百科 2024年11月7日
    9
  • 河南今年投175亿元建设农村电网

      本报讯(范亚旭记者张培奇)记者从国网河南省电力公司获悉,今年河南省农村电网建设投资额将达175亿元,计划三年投资超过500亿元,以满足农村用电需求的增长。M8Z   作为人口大…

    科研百科 2022年6月7日
    275