scaffold-lowcode 低代码平台模块

模块概述

scaffold-lowcode 是 Scaffold v2 平台的低代码开发模块,提供 Schema 驱动的应用构建能力,分为设计器和运行态两种模式。

设计器模式下,用户通过可视化界面创建应用、定义数据模型、配置字段、设计表单/列表页面、绑定动作,并发布到运行态。运行态模式下,系统根据已发布的 Schema 自动生成增删改查 API,无需编写后端代码。

模块同时包含移动页面(MpPage)的设计与渲染能力,支持移动端 Schema 化页面设计。

功能列表

低代码核心

  • 应用管理:创建、编辑、删除、上下架
  • 数据模型管理:创建、编辑、删除模型
  • 字段管理:按模型配置字段、排序
  • 页面设计:按模型配置表单页/列表页 Schema
  • 动作管理:配置页面按钮动作(如提交、导出、审批)
  • 发布管理:发布前检查、执行发布、发布历史、版本回滚
  • 运行态数据操作:自动生成增删改查 API
  • 运行态审批集成:提交审批、查询审批状态

移动页面

  • 移动页面设计:创建、编辑、删除、Schema 设计
  • 移动页面发布与版本管理
  • 移动页面渲染:按编码或 ID 获取已发布的页面 Schema

审批回调

  • 接收 BPM 模块的审批状态变更回调,自动更新业务数据状态

状态字段规范

  • status 字段(应用、模型、页面、动作、字段)遵循布尔语义:1 = 启用,0 = 禁用

核心组件

实体

实体 表名 说明
LcApp lc_app 低代码应用
LcModel lc_model 数据模型
LcField lc_field 模型字段
LcPage lc_page 页面配置(表单/列表 Schema)
LcAction lc_action 页面动作
LcPublish lc_publish 发布记录
MpPage mp_page 移动页面
MpPageVersion mp_page_version 移动页面版本

服务层

服务 说明
LcAppService 应用 CRUD、上下架
LcModelService 数据模型 CRUD
LcFieldService 字段 CRUD、排序
LcPageService 页面 Schema 读写
LcActionService 动作 CRUD
LcPublishService 发布流程、回滚、发布历史
LcRuntimeService 运行态数据操作、审批集成
MpPageService 移动页面 CRUD、发布、版本管理

配置类

说明
LowcodeAutoConfiguration 自动配置类,扫描 Mapper 和组件,提供 BPM 集成服务的空实现降级

API 接口列表

低代码应用(/v1/lowcode/designer/app)

方法 路径 说明
GET /page 分页查询应用
GET /get/{id} 查询应用详情
POST /create 创建应用
POST /update 更新应用
POST /delete/{id} 删除应用
POST /toggle-status/{id} 切换上下架状态

低代码模型(/v1/lowcode/designer/model)

方法 路径 说明
GET /page 分页查询模型
GET /get/{id} 查询模型详情
POST /create 创建模型
POST /update 更新模型
POST /delete/{id} 删除模型

低代码字段(/v1/lowcode/designer/field)

方法 路径 说明
GET /list?modelId={id} 按模型查询字段列表
POST /create 创建字段
POST /update 更新字段
POST /delete/{id} 删除字段
POST /sort 字段排序

低代码页面(/v1/lowcode/designer/page)

方法 路径 说明
GET /get?modelId={id}&pageType={type} 按模型和页面类型查询页面配置
POST /save 保存页面 Schema

低代码动作(/v1/lowcode/designer/action)

方法 路径 说明
GET /list?modelId={id}&pageType={type} 按模型和页面类型查询动作列表
POST /create 创建动作
POST /update 更新动作
POST /delete/{id} 删除动作

低代码发布(/v1/lowcode/designer/publish)

方法 路径 说明
GET /check/{appId} 发布前检查
POST /execute 执行发布
GET /history 发布历史
POST /rollback 版本回滚

低代码运行态(/v1/lowcode/runtime)

方法 路径 说明
GET /meta/page?appCode={c}&modelCode={c}&pageType={t} 查询运行态页面元数据
GET /data/page 运行态分页查询数据
GET /data/get?appCode={c}&modelCode={c}&bizId={id} 运行态查询单条数据
POST /data/create 运行态新增数据
POST /data/update 运行态更新数据
POST /data/delete 运行态删除数据
POST /action/execute 运行态执行动作
POST /approval/submit 提交审批
GET /approval/status?appCode={c}&modelCode={c}&bizId={id} 查询审批状态

审批回调(/v1/lowcode/approval/callback)

方法 路径 说明
POST /notify 接收 BPM 审批状态变更回调

回调 payload 格式:{ processInstanceId, processNo, businessKey, businessType, status, action, comment }。其中 businessTypelc_ 前缀标识低代码业务,后跟 modelCode。

移动页面管理(/v1/lowcode/designer/mp-page)

方法 路径 说明
GET /page 分页查询移动页面
GET /get/{id} 查询移动页面详情
GET /get-by-code/{pageCode} 按编码查询页面详情
POST /create 创建移动页面
POST /update 更新移动页面
POST /delete/{id} 删除移动页面
POST /save-schema 保存页面 Schema
POST /publish 发布移动页面
GET /versions/{pageId} 查询版本历史
GET /version/{versionId} 获取指定版本详情

移动页面渲染(/v1/lowcode/render/mp-page)

方法 路径 说明
GET /code/{pageCode} 按编码获取已发布页面 Schema
GET /id/{id} 按 ID 获取已发布页面 Schema
GET /version/{versionId} 获取指定版本 Schema

运行态渲染只返回状态为已发布(status=1)的页面,其他状态返回 null。

SPI 扩展点

BPM 集成

模块通过 BpmIntegrationService 接口与 BPM 模块交互。当 scaffold-bpm 在 classpath 上时,使用 BPM 的真实实现;否则自动降级为 NopBpmIntegrationService(空操作),审批相关功能不可用。

使用示例

1. 创建低代码应用并发布

POST /v1/lowcode/designer/app/create    -- 创建应用
POST /v1/lowcode/designer/model/create  -- 创建数据模型
POST /v1/lowcode/designer/field/create  -- 配置字段
POST /v1/lowcode/designer/page/save     -- 设计表单/列表页
POST /v1/lowcode/designer/action/create -- 配置按钮动作
GET  /v1/lowcode/designer/publish/check/{appId}  -- 发布前检查
POST /v1/lowcode/designer/publish/execute         -- 执行发布

2. 运行态数据操作

GET  /v1/lowcode/runtime/data/page?appCode=xxx&modelCode=xxx  -- 列表查询
GET  /v1/lowcode/runtime/data/get?appCode=xxx&modelCode=xxx&bizId=123  -- 详情
POST /v1/lowcode/runtime/data/create   -- 新增
POST /v1/lowcode/runtime/data/update   -- 更新
POST /v1/lowcode/runtime/data/delete   -- 删除

3. 审批集成

运行态数据提交审批后,BPM 模块在流程状态变更时回调 /v1/lowcode/approval/callback/notify,低代码模块自动更新业务数据状态。

注意事项

  • 页面类型(pageType)通常为 form(表单页)或 list(列表页)
  • 发布前检查会验证模型、字段、页面配置的完整性
  • 运行态 API 根据已发布的模型 Schema 动态构建 SQL,确保模型已发布后才能正常使用
  • 移动页面渲染接口仅返回已发布状态(status=1)的页面
  • LowcodeAutoConfiguration 没有 @ConditionalOnProperty 开关,引入依赖即激活;通过 BpmIntegrationService@ConditionalOnMissingBean 实现可插拔
  • 状态枚举
    • status 字段(应用、模型、页面、动作、字段)遵循布尔语义:1 = 启用,0 = 禁用
    • 移动页面 MpPage.status(未发布/已发布)不遵循布尔语义规范