发布: 更新时间:2024-06-25 12:03:03
在软件行业的发展过程中,从业者一直致力于提高开发效率和软件质量。复用软件模块通常是实现这些目标的有效手段。从头文件引入、面向对象的封装、动态库的引入、代码生成器类工具、低代码引擎等,随着行业技术的发展,软件复用的层次也逐步从底层文件扩展到界面层面。本文将围绕OA和低代码平台中不可或缺的一个组件——表单引擎,对表单控件的扩展性进行探讨。
表单引擎一般由表单设计器和表单渲染引擎两部分组成。表单设计器通常通过拖拉拽的形式定义表单的样式和交互行为,并将配置信息以JSON的形式保存到数据库中。表单渲染引擎则通过读取数据库中的配置信息,动态生成表单并进行渲染。在这种设计模式下,表单控件的扩展性直接影响着表单引擎的能力。以下以LuBase低代码框架为例,介绍其表单控件的扩展实现方式。
表单引擎通常提供丰富的控件类型以满足日常业务需求。不同的控件类型在不同的数据库中有不同的映射类型。因此,在扩展控件类型时必须考虑数据库的兼容性。LuBase提供了一种机制来支持不同数据库的兼容性。它定义了两个概念:字段类型和显示类型。字段类型可以有不同的显示类型,显示类型决定最终的UI交互,而字段类型决定在不同数据库中的映射类型。以下是LuBase的字段类型和显示类型的示例:
字段类型定义了常用的文本、数字、时间、下拉等类型,而显示类型决定了不同的显示效果。
LuBase表单控件的扩展点涉及对显示类型的扩展。例如,一个字段类型为文本的字段可以显示为文本框、身份证输入框或其他显示类型。字段类型决定了数据库的映射类型和数据新增更新时的处理逻辑。因此,这一部分不提供扩展功能,但框架实现了常用的字段类型。LuBase的字段类型与各数据库的映射关系如下表所示:
字段类型 | 字段类型名称 | 可用显示类型 | 是否支持多值 | 对应mysql列类型 | 对应MSSql列类型 | 对应pgsql列类型 |
---|---|---|---|---|---|---|
0 | 大整数(表主键) | 0:表单不显示 | × | bigint | bigint | |
1 | 文本 |
10:普通文本 11:手机号输入框 12:身份证号 13:银行卡 14:数据源设置 |
× |
length>8000时string, length<=8000时varchar(length) |
length>8000时varchar(max), length<=8000时nvarchar(length) |
|
2 | 日期时间 |
20:年月日 21:年月日时分秒 |
× | datetime | datetime | |
3 | 复选框 | 30:默认是否 | × | tinyint | bit | |
4 | 整数 | 40:默认数字框 | × | int | int | |
5 | 小数 | 50:默认numeric数字框 | × | decimal(19,小数位数) | decimal(19,小数位数) | |
6 | 关联-码表 |
60:单级下拉框 61:多级代码表 |
√ | varchar(值数量*32) | varchar(值数量*32) | |
7 | 关联-数据表 |
70:通用下拉 71:通用弹窗 |
√ |
单值时bigint 多值时varchar(值数量*32) |
单值时bigint 多值时varchar(值数量*32) |
|
8 | 附件 | 80:普通附件 | √ | varchar(64) | varchar(64) | |
9 | 图片 | 90:图片 | √ | varchar(64) | varchar(64) | |
10 | 关联-系统服务 |
根据工号显示用户信息 根据用户id显示用户信息 根据部门id获取部门信息 |
√ | varchar(值数量*32) | varchar(值数量*32) |