跳转至

模块依赖与职责

本文记录 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)。