低代码引擎
低代码引擎
低代码引擎是整个平台的核心枢纽。它将「表设计器 -> 表单设计器 -> 列表设计器 -> 页面设计器 -> 运行时渲染」串成一条完整的数据链路,让运营人员通过可视化配置即可搭建出完整的企业管理应用,无需编写后端 CRUD 代码。
引擎由什么组成
低代码引擎不是一个单独的类,而是一组协同工作的模块。从数据流向看,它们的关系如下:
┌──────────────────────────────────────────────────────────────┐
│ 设计时(Design Time) │
│ │
│ 表设计器 表单设计器 列表设计器 页面设计器 │
│ TableDesigner FormDesigner ListDesigner PageBuilder│
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ lc_table_meta lc_form lc_list lc_page │
│ lc_column_meta (form_json) (list_json) (page_json)│
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ 物理业务表 syncFormToPage syncListToPage 直接存储 │
│ (DDL 执行) │ │ │ │
│ └───────┬────────┘ │ │
│ ▼ ▼ │
│ lc_page (统一页面配置表) │
└─────────────────────────────────┬────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 运行时(Runtime) │
│ │
│ 前端路由 /app/:appId -> AppRuntime.vue │
│ │ │
│ ▼ │
│ GET /api/runtime/page/{pageId} 获取页面 pageJson │
│ │ │
│ ▼ │
│ PageRenderer.vue 解析 pageJson -> 渲染组件 │
│ ├─ RuntimeForm -> POST /api/database/table/{id}/data │
│ ├─ RuntimeList -> POST /api/database/table/{id}/data/list│
│ ├─ RuntimeChart -> POST /api/chart/data/{id} │
│ ├─ RuntimeReport -> POST /api/report/data/{id} │
│ └─ RuntimeStatistic -> POST /api/runtime/statistic │
│ │
│ 所有数据操作最终汇聚到 SchemaService(动态 SQL 引擎) │
└──────────────────────────────────────────────────────────────┘各模块速览
| 模块 | 核心后端 | 核心前端 | 说明 |
|---|---|---|---|
DatabaseController / SchemaService | TableDesigner.vue | 可视化建表,生成 DDL,存储元数据 | |
SchemaService | -- | 动态拼装 SQL 的 CRUD 引擎,租户隔离 + 软删 + 防注入 | |
FormController / FormVersionController | designer/form/builder.vue | 拖拽式表单,版本管理,审批绑定 | |
ListController / ListVersionController | designer/list/builder.vue | 字段列、搜索、排序、分页、操作按钮 | |
PageController | designer/page/builder.vue | 行 + 组件栅格布局,生成 pageJson | |
ChartController | designer/chart/index.vue | 关联数据表,动态查询图表数据 | |
ReportController | designer/report/builder.vue | 多组件聚合报表,统一数据查询 | |
PrintTemplateController | designer/print/index.vue | 模板绑定表单字段,导出 PDF | |
TableRelationController | database/relation.vue | 一对一 / 一对多 / 多对多关系定义 | |
RuntimeController | AppRuntime.vue / PageRenderer.vue | 统一数据访问层,渲染应用页面 | |
OpenTableApiController / OpenContentController | -- | 表级 Open API、ApiKey 鉴权、Webhook、公众内容 |
阅读建议
低代码引擎是平台最核心的部分。建议按顺序从 开始读,理解元数据表 lc_table_meta / lc_column_meta 如何驱动一切;再读 理解 SchemaService 如何用 JdbcTemplate 拼装参数化 SQL;最后读 理解前端如何把设计产物渲染成可交互的应用。
端口约定
全文中后端服务地址为 http://localhost:52856,前端开发服务器地址为 http://localhost:3000。所有 API 路径以 /api/ 开头。
核心设计思想
1. 元数据驱动
平台不在 Java 代码里为每张业务表写 Entity / Mapper / Service / Controller。取而代之,运营在表设计器中定义表结构,元数据存入 lc_table_meta + lc_column_meta,运行时由 SchemaService 读取元数据动态拼装 SQL。
2. JSON 配置即设计
表单(form_json)、列表(list_json)、页面(page_json)、图表(chart_json)、报表(report_json)全部以 JSON 字符串存储。前端设计器产出 JSON,运行时渲染器消费 JSON,后端只做存取。
3. 统一页面模型
表单设计器和列表设计器保存时,会自动调用 syncFormToPage() / syncListToPage() 把配置写入 lc_page 表的 page_json 字段。运行时只需读 lc_page 一张表即可渲染任意页面,不需要区分页面类型。
4. 租户全链路隔离
所有业务表自动携带 tenant_id 字段。SchemaService 在 INSERT 时自动注入当前租户 ID,在 SELECT / UPDATE / DELETE 时自动追加 AND tenant_id = ? 条件。租户上下文由 TenantContext 管理,ApiKeyAuthFilter 也会根据 API Key 设置租户。
