Skip to content

运行时怎么串起来 ​

菜单
  └─ /page/run?param={页面 id}
        ├─ 读出 sys.page_def 的 JSON
        ├─ 收集里面的 sql_id,写入本次会话的白名单
        └─ plus/ 按 Body[].Type 加载组件并渲染

组件需要数据时
  └─ POST /sql/run  { sql_id, ...参数 }
        ├─ 白名单里没有这条 sql_id → 拒绝
        └─ 有 → 在一个事务里执行 pre_sql、main_sql、post_sql

四层各管一件事:

层放什么改它的时候
sys.page_def布局 JSON页面编辑器 /page_editor
sys.page_sql查询和保存 SQLSQL 编辑器 /sql_editor
plus/把 JSON 画成表格、表单等改引擎脚本,并更新资源版本号
/sql/run按白名单执行 SQL后端 SQL 引擎

页面 JSON 是类 JSON5:允许尾逗号,前端用 eval 解析。任意字符串值可以写成 "js:表达式",运行时再求值。见 页面 JSON。

/sql/run 不接受任意 SQL。用户必须先打开页面,后端才把这一页声明过的 sql_id 放进会话。没打开页面就直接调,一定被拒绝。弹窗里的子页还要在父页的 SubPages 里声明。见 权限与 SQL 白名单。

这里写平台本身。某一家客户的业务表不在这份文档里。