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 }。其中 businessType 以 lc_ 前缀标识低代码业务,后跟 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(未发布/已发布)不遵循布尔语义规范