模块依赖与职责¶
本文记录 trunk2018/java 各 Maven 模块的分层依赖、职责与 Feign 服务间调用关系,数据来源为各模块 pom.xml 与源码抽查。总览见 [[backend-architecture]]。
1. 依赖矩阵(obpm 内部依赖)¶
从各模块 pom.xml 提取(仅列 obpm 内部依赖;*-consul/nacos/eureka/war 变体一律依赖对应基础服务模块,如 obpm-runtime-consul → obpm-runtime,不再逐行列出):
| 模块 | 内部依赖 | 层 |
|---|---|---|
| obpm-common | (无) | 基础 |
| obpm-sqlparser | (无,独立 ANTLR 解析器库) | 基础 |
| obpm-core | obpm-common | 核心 |
| obpm-signon | obpm-common | 业务 |
| obpm-message | obpm-common | 业务 |
| obpm-converter | obpm-common | 业务 |
| obpm-logger | obpm-common | 业务 |
| obpm-runtime | obpm-core | 业务 |
| obpm-designer | obpm-core(+ fckeditor-java-core) | 业务 |
| obpm-kms | obpm-common、obpm-core | 业务 |
| obpm-manager | obpm-core | 业务 |
| obpm-job | obpm-common、obpm-core | 业务 |
| obpm-report | obpm-common、obpm-core | 业务 |
| obpm-usercenter | obpm-common、obpm-core | 业务 |
| obpm-ai | obpm-common、obpm-core | 业务 |
| obpm-lite | 全部 12 个业务服务模块 + obpm-common | 聚合 |
| obpm-upgrade | obpm-lite | 工具 |
| obpm-static-war | (静态资源 WAR) | 工具 |
分层结论:
- common 是零依赖底座(工具类、常量、
application-base.properties)。 - core 是共享核心库(动态表单、工作流、designtime/authtime),被重业务服务依赖。
- 轻量服务(signon、message、converter、logger)只依赖 common;重量服务(runtime、designer、kms、manager、job、report、usercenter、ai)依赖 core。
- lite 依赖全部业务服务,是部署聚合点;upgrade 只被 lite 向上引用。
2. 模块职责表¶
| 模块 | 职责 | 备注 |
|---|---|---|
| obpm-common | 基础常量、工具类、通用组件、Environment、基础配置 |
所有服务的公共底座 |
| obpm-sqlparser | SQL 语句解析(ANTLR 生成的 SqlBaseLexer/Parser) |
独立库,供 DQL/SQL 处理使用 |
| obpm-core | 核心库:动态表单(dynaform)、工作流引擎(workflow)、设计时服务(designtime)、认证授权(authtime)、多数据库 DAO 抽象 | 见 [[../dyna-form]]、[[../dyna-form-field]] |
| obpm-runtime | 发布应用的运行时服务 | 依赖 core |
| obpm-designer | 表单/视图/流程/报表设计器 | 设计内容 XML 落盘 workspace,见 [[../workspace-structure-and-mechanism]] |
| obpm-signon | 用户认证、授权、单点登录 | |
| obpm-kms | 知识管理(企业网盘、文件夹) | |
| obpm-message | 消息推送与通知 | |
| obpm-manager | 管理员工具:创建域/部门/用户,为域分配可用软件 | |
| obpm-usercenter | 用户管理 | 不能独立使用 |
| obpm-job | 定时任务(Quartz) | |
| obpm-converter | 文件格式转换(Aspose) | |
| obpm-logger | 日志收集 | |
| obpm-report | 报表生成(含 ureport3 源码模块) | |
| obpm-ai | AI 服务:LangChain4j 1.3.0、Qwen3、RAG、Milvus/Lucene 向量存储、HanLP | |
| obpm-lite | 轻量单体:聚合全部业务服务,默认无服务发现/MQ/Redis | 部署形态之一 |
| obpm-upgrade | 系统升级工具 | 依赖 lite |
| obpm-static-war | 静态资源 WAR | |
| *-consul / *-eureka / *-nacos | 微服务变体:基础服务 + 对应注册中心 starter + 主类 + 配置 | 见 [[service-discovery-variants]] |
| *-war | WAR 部署变体:SpringBootServletInitializer + 可选 ConsulListener |
见 [[service-discovery-variants]] |
3. Feign 服务间调用¶
微服务间通过 Spring Cloud OpenFeign 调用(@FeignClient(name = "目标服务名"))。已确认的客户端(obpm-runtime):
| Feign 接口 | 目标服务 | 说明 |
|---|---|---|
cn.myapps.runtime.feign.KmsApi |
obpm-kms | 文件上传(/kms/api/kms/upload)、企业网盘文件夹解析/创建、按对象键流式下载(分布式场景 Runtime 不可直读 KMS 存储) |
cn.myapps.runtime.feign.NoticeApi |
obpm-message | 通知的查询/已读/删除(/message/api/message/notice*);iScript MESSAGE.sendMessage 落库 mc_notice |
Lite 模式下的直连机制:Feign 客户端声明 url = "${myapps.feign.lite.url:}"(如 KmsApi),并配合 cn.myapps.common.conf.FeignConfig。微服务部署时 url 为空,走注册中心负载均衡(lb://);Lite 单体部署时该属性指向本进程地址,调用退化为进程内 HTTP 直连——同一份 Feign 接口适配两种部署形态。
其余服务间调用(designer→runtime、manager→各服务等)随用随查,模式与上一致:接口定义在调用方模块的 feign 包内(如 cn.myapps.*.feign)。