OneCode表单架构设计:注解驱动与组件化的完美结合
一、架构概述
OneCode表单架构采用注解驱动+组件化+工厂模式的设计思想,实现了表单的可视化配置与灵活扩展。核心解决了传统表单开发中"重复编码"、“样式不统一”、"难以维护"等痛点,通过将表单拆分为视图配置层、组件层和数据处理层,构建了低代码平台的核心能力。
二、核心架构分层
1. 视图配置层
核心类:CustomFormViewBean
(表单视图配置)、FormLayoutProperties
(布局属性)
- 职责:定义表单整体结构、布局规则和交互行为
- 关键特性:
- 支持网格布局(行列设置、合并单元格)
- 提供丰富的样式配置(边框、背景、间距)
- 集成工具栏、上下文菜单等交互元素
- 支持动态布局调整(
autoLayout
属性控制)
// 表单布局初始化核心代码
private void initFormLayout(ModuleComponent moduleComponent) {FormLayoutComponent formLayoutComponent = (FormLayoutComponent) moduleComponent.getCurrComponent();FormLayoutProperties formLayoutProperties = formLayoutComponent.getProperties();this.autoLayout = false;this.init(formLayoutProperties);if (layoutData != null) {this.row = layoutData.getRows();this.col = layoutData.getCols() / 2;// ... 处理合并单元格逻辑}
}
2. 组件层
核心类:FieldBaseBean
(字段基类)、FormLayoutComponent
(布局容器)
- 组件体系:
- 基础字段组件:
InputFieldBean
、CheckBoxFieldBean
等 - 复合组件:
ComboInputFieldBean
(嵌套InputBean
) - 布局容器:
FormLayoutComponent
、MFormLayoutComponent
- 基础字段组件:
- 设计模式:
- 继承:所有字段组件继承
FieldBaseBean
获取公共属性 - 组合:复合组件通过包含其他Bean实现复杂功能
- 多态:通过
ComponentType
枚举统一管理组件类型
- 继承:所有字段组件继承
3. 数据处理层
核心能力:
- 数据绑定:通过
xpath
属性建立组件与数据源的映射 - 表单验证:基于注解的字段校验规则(待补充具体实现)
- 事件响应:支持表单级事件(提交、重置)和组件级事件(值变更)
- 动态计算:通过
expression
属性实现字段间的逻辑计算
三、核心技术特性
1. 注解驱动开发
- 表单配置:
@FormAnnotation
定义表单元数据 - 字段绑定:
@AnnotationType
关联组件与注解类 - 示例:
@AnnotationType(clazz = CheckBoxAnnotation.class)
public class CheckBoxFieldBean extends FieldBaseBean<CheckBoxComponent> {// ...
}
2. 灵活的布局系统
FormLayoutProperties
支持多种布局模式:
- 网格布局:通过
row
/col
属性定义表格结构 - 流式布局:
autoLayout=true
时自动排列组件 - 响应式设计:
stretchH
/stretchHeight
控制拉伸行为 - 合并单元格:通过
LayoutMerged
实现复杂表格布局
3. 组件扩展机制
新增表单组件只需三步:
- 创建组件Bean类(继承
FieldBaseBean
) - 定义关联注解(继承
BaseAnnotation
) - 在
ComponentType
枚举中注册组件类型
四、典型应用场景
1. 动态表单渲染
// 伪代码:表单渲染流程
CustomFormViewBean formView = new CustomFormViewBean(moduleComponent);
FormLayoutComponent layout = formView.createLayout();
for(FieldFormConfig field : formView.getFieldConfigs()) {Component component = WidgetConfigFactory.createComponent(field.getType());layout.addChild(component);
}
2. 复杂表单布局
通过LayoutData
实现不规则表单:
- 跨行跨列的表单元素
- 动态显示/隐藏的字段组
- 嵌套子表单组件
五、架构优势
- 低代码开发:可视化配置替代70%重复编码
- 一致性保证:统一的组件样式和交互行为
- 灵活扩展:支持业务定制组件和布局
- 前后端一体化:相同的配置模型贯穿全栈
- 版本化管理:表单配置支持版本控制和回溯
六、未来演进方向
- 智能布局:基于AI的表单元素自动排列
- 性能优化:大型表单的虚拟滚动和按需加载
- 多端适配:统一配置自动生成PC/移动端表单
- 表单模板市场:沉淀行业通用表单模板
OneCode表单架构通过组件化和注解驱动的设计,完美平衡了开发效率与灵活性,为企业级应用提供了强大的表单解决方案。无论是简单的数据采集还是复杂的业务流程表单,都能通过这套架构快速构建并灵活扩展。