首页 > 其他分享 >实现动态表单的一种思路

实现动态表单的一种思路

时间:2023-10-07 14:11:57浏览次数:28  
标签:步骤 业务 信息 表单 思路 动态 数据

一、动态表单是什么

区别于传统表单前后端配合联调的开发实现方式,动态表单通过一种基于元数据管理的配置化方法来实现表单的动态生成,并能根据配置自由增改删指定字段。实现特定需求的自助化。

图1.1 传统表单前后台协作模式

图1.2 动态表单前后台协作模式

二、解决什么问题

租户有个性化业务表单诉求的场景,千人千面系统

三、实现动态表单的一种思路

基于元数据管理的配置化表单技术共需三步来完成:

步骤A(数据划分)

将服务端底层业务数据存储结构由传统主表字段信息拆分成标准信息、个性信息两部分。其中标准信息指那些用于存储标准通用、稳定、经常作为业务查询检索条件的字段,拿电商网站商品信息举例如商品创建时间、商品名称、商品创建人等字段;个性信息用于存储易变、租户个性化、不经常用于检索的字段,如商品可售区域信息、商品资质认证状态等。将主表按以上规则划分后,其中标准信息按原来传统方式按列存储,而个性化信息则打包以jsonSchema的方式整合存储,其共同在数据库中占一列也称动态列,以mysql为例这列的格式通常为”text”类型。

步骤A的目的:统一抽象并管理易变类型的业务数据

图2.1 业务数据划分抽象

步骤B(业务元数据设计)

配置化表单离不开元数据设计,其中元数据指描述数据的数据。在本例中表单元数据即表单各业务项(指商品名称、商品创建时间、商品创建人等)可动态配置的核心能力。这一步将元数据配置中具有代表性的几个信息属性罗列出来,每项信息属性的用途见下图介绍。此外基于元数据信息封装元数据增删查改管理服务,实现元数据的动态配置基座。

步骤B的目的:规划业务元数据信息,提供元数据读写能力

图2.2 业务元数据样例

步骤C(前端动态渲染改造)

此步骤描述配置化表单的串联实现,在表单渲染环节前端首先自页面一载入就获取当前租户生效的业务元数据信息,然后基于元数据信息解析数据并动态生成网页DOM节点,最后生成各节点校验逻辑并展示页面;表单数据回显场景中,首先自页面一载入就获取当前租户生效的业务元数据信息,再获取业务数据信息,结合两者交集后(目的是仅展示最新配置生效的数据)将业务数据回显到表单中。

步骤C的目的:页面动态展示实现路径

图2.3 前端改造流程

四、方案缺陷

1. 使用范围,并不是所有业务表单都适合动态化 , 表单动态化的改造收益与维护损耗存在一个潜在的收益峰值点。 过于复杂的业务表单系统反而会因为动态化而变得难以维护。 动态表单会将常规业务CRUD逻辑复杂化

2. 对于大表单、复杂嵌套等表单存在一定性能开销。

3. 动态字段无法作为检索项发起检索

作者:京东工业 于洋

来源:京东云开发者社区 转载请注明来源

标签:步骤,业务,信息,表单,思路,动态,数据
From: https://www.cnblogs.com/Jcloud/p/17746156.html

相关文章

  • 嵌入式linux某个硬件测试失败,解决问题思路(eg:wifi)
    //嵌入式linux某个硬件测试失败,解决问题思路(eg:wifi)1软件上,引脚功能设置问题,设备树问题.=>可检查设备树,关闭其他多余的引脚,单独测试这个功能2软件上,软件启动先后顺序导致加载异常问题.=>可设置系统启动,不开启任何功能,通过多次加载卸载*.so文件,运行程序,......
  • 从零开始的D3D12渲染框架 第0篇 设计思路
    DirectX12、Vulkan等下一代的渲染API在设计上相比OpenGL等上一代API有了很大的不同。下一代渲染API暴露了更多的GPU相关的细节部分,这允许程序员对GPU进行更加细致的控制,但同时也使得API本身变得更加琐碎与难用。这一系列文章用来记录我封装DirectX12的思路与心得,篇章之间不会有......
  • 动态规划问题(1)子数组系列
    这几天刷了子数组系列的动态规划题目,在这里写下这篇博客,总结记录一下做这些题目的经验,同时也相当于复习。题目一:最大子数组和题目链接:53.最大子数组和-力扣(LeetCode)当我们看完题目,看完例题之后,发现是一个动态规划的子数组问题。那么做动态规划问题有五步第一步:状态表示对于这种......
  • 算法之动态规划(DP)求解完全背包问题(状态转移式方程推导)
    完全背包是01背包的进阶版。在这里补充一下代码随想录的完全背包状态转移式的推导。有兴趣的可以先看一看原版。状态转移方程状态:dp[i][j]选择前i个物品,容量为j的背包时所选物品价值总和最大。状态转移:dp[i][j]=max(dp[i-1][j-k*v[i]]+k*w[i])(k=0,1,2,3...)(j-k*v......
  • Nginx__高级进阶篇之LNMP动态网站环境部署
    动态网站和LNMP(Linux+Nginx+MySQL+PHP)都是用于建立和运行web应用程序的技术。动态网站是通过服务器端脚本语言(如PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不同的网页。LNMP是一种服务器端技术组合,它使用Linux操作系统,Ngin......
  • 自定义表单设计之六-行字段计算配置
    AddFormRowCal.aspx<htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title>行字段规则</title><scriptlanguage="javascript">functionsaveRole(){rowcalfrm......
  • Nginx__高级进阶篇之LNMP动态网站环境部署
    动态网站和LNMP(Linux+Nginx+MySQL+PHP)都是用于建立和运行web应用程序的技术。动态网站是通过服务器端脚本语言(如PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不同的网页。LNMP是一种服务器端技术组合,它使用Linux操作系统,Nginx......
  • 11_动态空间申请
    动态空间申请new和delete操作基本类型空间new申请堆区空间,delete释放空间int*p=NULL;p=newint;//从堆区申请int类型大小的空间*p=100;cout<<"*p="<<*p<<endl;//释放空间deletep;//new申请空间时初始化空间int*p1=NULL;p1=newint(150);co......
  • MyBatis动态SQL
    MyBatis动态SQL在项目的开发中,编码人员经常需要根据不同的条件拼接SQL语句。在组拼SQL语句的过程中除了实现核心功能以外还需要处处小心,时时警惕确保不遗漏必要的标点符号、空格以及关键字。动态SQL常用标签如下:<if/><where/><choose/>、<when/>、<otherwise/><set/><trim/......
  • c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(二)部门树形结构和下拉框的
    c#winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(二)部门树形结构和下拉框的结构设计 具体的代码usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem......