index.md
3.26 KB
1. 心智模型
在任何贯穿示例之前,先建立概念地图。
框架是模块驱动的:PM 创建的每个页面、客户看到的每个页面,都是 gdsmodule 中的一行,并与 gdsconfigformmaster/slave 中的布局行、gdsjurisdiction 中的权限行,以及运行时通过 BusinessBaseController 调用的存储过程组合在一起。
总览
flowchart TB
classDef oos stroke-dasharray:5 5,color:#999
BACK["BACK<br/>配置 UI"]
FROUNT["FROUNT<br/>客户 UI"]
EXT([外部集成方])
HOOKS([第三方 webhook])
subgraph framework [框架运行时 - 本 Wiki 覆盖]
XENTRY[xlyEntry]
XAPI[xlyApi]
XIF[xlyInterface]
XFLOW[xlyFlow]
XPLC[xlyPlc]
XMSG[/"xlyMsg<br/>库"/]
end
DB[("MySQL<br/>xlyweberp_*")]
REDIS[(Redis)]
AMQ([ActiveMQ])
XEJMSC[xlyErpJmsConsumer]
PLAT[("xlyPlat* 模块<br/>+ MongoDB")]:::oos
BACK --> XENTRY
FROUNT --> XENTRY
FROUNT --> XAPI
EXT --> XAPI
HOOKS --> XIF
XENTRY --> DB
XAPI --> DB
XIF --> DB
XFLOW --> DB
XPLC --> DB
XENTRY -- "保存时 @CacheEvict<br/>同步执行" --> REDIS
XENTRY <-- "缓存读取<br/>+ Shiro session" --> REDIS
XAPI <--> REDIS
XENTRY -- "领域事件<br/>(不是缓存失效)" --> AMQ
AMQ --> XEJMSC
XEJMSC -- "PRO_ERPMERGEBASE*<br/>基础数据合并" --> DB
XENTRY -. 使用 .-> XMSG
XIF -. 使用 .-> XMSG
PLAT -.-> DB
虚线簇(xlyPlat* + MongoDB)是 B2B 印刷平台层。它存在于构建中,但在本 Wiki 中不属于覆盖范围。
注意运行时到 Redis / ActiveMQ 有两条不同路径:@CacheEvict 在保存流程中同步执行,直接清理共享 Redis 存储(跨节点一致性依赖共享存储)。JMS 路径是另一条基础数据合并通道,不是缓存失效;ConsumerChangeGdsModuleThread 会运行 PRO_ERPMERGEBASEGDSMODULE 等过程。这两条路径在元数据变更后的缓存失效中有完整说明。
每个框背后的类库清单见技术栈。
概念页
这些页面刻意保持简短:每页解释一个概念,并链接到实际使用该概念的垂直切片。概念页应该短;如果一页长到超过一屏,通常说明它应该变成一个切片。
- 数据驱动的基本论点 — 框架为什么长成这样。
- 模块、表单、虚拟表 — 三个核心名词。
- 主从单据模式 — 到处都是表头 / 明细。
- 无物理外键、语义外键的现实 — 关系实际如何工作。
- 两条定制通道 — 元数据编辑 vs. SQL 脚本。
- 定制层级 — 通道 1 内,基础 / 租户 / 用户覆盖如何合并。
-
多租户与产品版本 — 行作用域(
sBrandsId、sSubsidiaryId)加上许可证控制的模块发现。 - 元数据驱动的请求生命周期 — 后续会反复回到这张图。
-
三层 API — 内部(
xlyEntry)、外部(xlyApi)、入站 webhook(xlyInterface)。