Appearance
后端服务详解
**本文引用的文件** - [lemes-business-devicemate/README.md](file://lemes-business-devicemate/README.md) - [lemes-business-devicemate/pom.xml](file://lemes-business-devicemate/pom.xml) - [lemes-business-devicemate/AGENTS.md](file://lemes-business-devicemate/AGENTS.md) - [lemes-business-devicemate/lemes-service-dm-common/readme.md](file://lemes-business-devicemate/lemes-service-dm-common/readme.md) - [lemes-business-devicemate/lemes-service-dm-device/readme.md](file://lemes-business-devicemate/lemes-service-dm-device/readme.md) - [lemes-business-devicemate/lemes-service-dm-store/readme.md](file://lemes-business-devicemate/lemes-service-dm-store/readme.md) - [lemes-business-devicemate/lemes-service-dm-workflow/readme.md](file://lemes-business-devicemate/lemes-service-dm-workflow/readme.md) - [lemes-business-devicemate/lemes-service-dm-workflow/pom.xml](file://lemes-business-devicemate/lemes-service-dm-workflow/pom.xml) - [lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/pom.xml](file://lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/pom.xml) - [docs/ddl/device.sql](file://docs/ddl/device.sql) - [docs/ddl/store.sql](file://docs/ddl/store.sql) - [docs/ddl/workflow.sql](file://docs/ddl/workflow.sql) - [lemes-cloud/lemes-gateway/pom.xml](file://lemes-cloud/lemes-gateway/pom.xml) - [lemes-cloud/AGENTS.md](file://lemes-cloud/AGENTS.md) - [dm/lemes-web/src/components/bpmnModeler/flowable/init.js](file://dm/lemes-web/src/components/bpmnModeler/flowable/init.js) - [dm/lemes-web/src/components/bpmnModeler/flowable/flowable.json](file://dm/lemes-web/src/components/bpmnModeler/flowable/flowable.json)目录
引言
本文件面向 DeviceMate 后端微服务,系统化梳理公共服务(dm-common)、设备服务(dm-device)、仓储服务(dm-store)、工作流服务(dm-workflow)四大核心域的职责边界、数据模型、服务间通信与集成方式,并结合部署与监控实践给出可操作的建议与最佳实践。文档同时提供架构图与流程图,帮助读者快速建立对系统的整体认知。
项目结构
DeviceMate 后端位于 lemes-cloud 聚合工程之下,采用多模块 + Spring Cloud 的微服务体系。业务域以 lemes-business-devicemate 为聚合根,内部进一步拆分为 dm-common、dm-device、dm-store、dm-workflow 四个子模块,每个子模块均包含公共层(-common)与服务层(-server)两个子模块,形成“公共能力沉淀 + 服务边界清晰”的分层组织。
- 聚合与版本:顶层 lemes-cloud 聚合工程统一管理版本与依赖,lemes-business-devicemate 作为业务域聚合,定义四大服务模块。
- 网关与注册中心:lemes-gateway 提供路由与重试能力;各服务通过 Nacos 进行服务发现与配置管理。
- 默认端口:dm-common=8040、dm-device=8041、dm-store=8042、dm-workflow=8043。
- Swagger 文档:各服务启动后可通过 /swagger-ui.html 访问接口文档。
图表来源
章节来源
- lemes-business-devicemate/README.md:1-135
- lemes-business-devicemate/AGENTS.md:1-67
- lemes-cloud/lemes-gateway/pom.xml:1-52
核心组件
- 公共服务(dm-common)
- 职责:用户/角色/权限、组织架构、系统配置、字典、文件、附件等通用能力下沉,供其他服务复用。
- 通信:通过 Feign 客户端在服务间调用;常见接口包括用户查询、部门树、字典项、文件上传等。
- 数据:基于 PostgreSQL 的通用表结构,配合 Redis 缓存热点配置与字典。
- 设备服务(dm-device)
- 职责:设备台账、点检/巡检、维修工单、维护计划、过程与胶水相关数据。
- 数据:设备主数据、线体/产线、制造商、物料主数据、胶水入库/使用记录、报废单据等。
- 仓储服务(dm-store)
- 职责:库存管理、出入库、借还、调拨转移、盘点、成本统计。
- 数据:库存主表、明细表、出入库单据、调拨单据、安全库存、成本统计等。
- 工作流服务(dm-workflow)
- 职责:基于 Flowable 的流程引擎集成,提供流程定义、任务、审批日志、用户与角色映射、节点配置等。
- 集成:通过 Flowable Engine 与业务单据联动,支持流程回退、参数校验、节点配置等。
章节来源
- lemes-business-devicemate/lemes-service-dm-common/readme.md:1-3
- lemes-business-devicemate/lemes-service-dm-device/readme.md:1-3
- lemes-business-devicemate/lemes-service-dm-store/readme.md:1-3
- lemes-business-devicemate/lemes-service-dm-workflow/readme.md:1-3
架构总览
DeviceMate 微服务采用“领域服务 + 公共能力 + 网关 + 注册中心”的分层架构。服务间通过 Feign 进行声明式调用,统一接入网关进行路由与限流/重试;配置与注册通过 Nacos 管理。工作流域独立于业务域之上,提供流程编排能力并与业务单据解耦。
图表来源
详细组件分析
公共服务(dm-common)
- 能力边界
- 用户与组织:用户查询、部门树、角色/权限映射。
- 配置与字典:系统配置、数据字典、国际化资源。
- 文件与附件:文件上传、下载、元数据管理。
- 通信机制
- 服务内通过 Feign 客户端暴露 API,供其他服务调用。
- 常见调用链:业务服务 -> dm-common -> 数据库/缓存。
- 数据一致性
- 对高频读取的数据(如字典、配置)采用 Redis 缓存,降低数据库压力。
- 写操作采用幂等设计与唯一索引约束,避免并发冲突。
- 性能优化
- 合理设置缓存 TTL 与失效策略,结合异步刷新保障一致性。
- 对热点接口开启限流与熔断(Hystrix)保护。
图表来源
章节来源
- lemes-business-devicemate/lemes-service-dm-common/readme.md:1-3
- lemes-business-devicemate/pom.xml:39-127
设备服务(dm-device)
- 能力边界
- 设备台账:设备主数据、线体/产线、制造商、物料主数据。
- 维护与工单:点检/巡检、维修工单、维护计划、胶水相关流程。
- 数据模型
- 关键表:line(线体)、manufacturer(制造商)、part_main(物料主数据)、paste_*(胶水相关)等。
- 事务与一致性
- 设备与胶水出入库涉及库存与工单状态联动,建议采用本地消息表或事件驱动确保最终一致。
- 对关键写操作(如报废、入库)增加幂等校验与唯一约束。
- 性能优化
- 对设备检索与工单列表采用分页与索引优化。
- 对高频统计(如成本统计)采用定时任务预计算并落库。
图表来源
章节来源
仓储服务(dm-store)
- 能力边界
- 库存管理:主表/明细、安全库存、成本统计。
- 出入库与调拨:入库单、出库单、借还、调拨转移、盘点。
- 数据模型
- 关键表:stock_main(库存主表)、stock_detail(明细)、store_in_orders(入库单)、store_transfer_orders(调拨单)等。
- 事务与一致性
- 入出库与库存变动需保证原子性,建议使用数据库事务包裹。
- 对高并发场景采用乐观锁或分布式锁,避免超卖/重复记账。
- 性能优化
- 对库存查询加索引(工厂+仓库+物料组合),减少全表扫描。
- 成本统计采用批量计算与缓存,降低实时计算压力。
图表来源
章节来源
工作流服务(dm-workflow)
- 能力边界
- 流程引擎:流程定义、任务、审批日志、节点配置、用户与角色映射。
- 业务集成:与设备/仓储单据联动,支持流程回退、参数校验与节点控制。
- 技术栈
- Flowable 7.0.0 引擎,提供 BPMN 2.0 支持与扩展属性。
- 集成方式
- 通过 Flowable Engine 启动流程实例,绑定业务单据与表单参数。
- 审批日志与节点配置持久化,便于审计与追溯。
- 流程建模
- 前端提供 BPMN 编辑器,支持动态生成最小流程定义并注入到引擎。
图表来源
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:1-23
- lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/pom.xml:1-47
- docs/ddl/workflow.sql:1-500
- dm/lemes-web/src/components/bpmnModeler/flowable/init.js:1-24
- dm/lemes-web/src/components/bpmnModeler/flowable/flowable.json:1-590
章节来源
- lemes-business-devicemate/lemes-service-dm-workflow/readme.md:1-3
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:1-23
- lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/pom.xml:1-47
- docs/ddl/workflow.sql:1-500
- dm/lemes-web/src/components/bpmnModeler/flowable/init.js:1-24
- dm/lemes-web/src/components/bpmnModeler/flowable/flowable.json:1-590
依赖分析
- 模块聚合
- lemes-business-devicemate 作为业务域聚合,包含 dm-common、dm-device、dm-store、dm-workflow 四个子模块。
- 外部依赖
- Spring Cloud Gateway:统一路由与重试。
- Nacos:服务发现与配置中心。
- Flowable:流程引擎。
- Swagger/EasyPOI/Redisson/Hystrix/Validation:业务层常用能力。
- 服务间依赖
- dm-device/dm-store 可能依赖 dm-common 的用户/字典/文件能力。
- dm-workflow 依赖 dm-common 的用户/角色/组织能力用于审批。
图表来源
- lemes-business-devicemate/pom.xml:1-188
- lemes-cloud/lemes-gateway/pom.xml:1-52
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:1-23
章节来源
- lemes-business-devicemate/pom.xml:1-188
- lemes-cloud/lemes-gateway/pom.xml:1-52
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:1-23
性能考虑
- 数据库层面
- 为高频查询字段建立复合索引(如工厂+仓库+物料、单号唯一索引)。
- 对大表进行分表分库或冷热分离,降低热点压力。
- 缓存层面
- 对字典、配置、用户信息等读多写少数据使用 Redis 缓存,设置合理过期策略。
- 对热点统计(如成本统计)采用定时任务预计算并落库。
- 接口与限流
- 对易被刷的接口开启限流与熔断(Hystrix),防止雪崩。
- 分页查询与懒加载,避免一次性返回过多数据。
- 并发与一致性
- 对库存/工单等关键写操作采用分布式锁或乐观锁,避免并发冲突。
- 采用本地消息表或事件驱动实现最终一致。
故障排查指南
- 启动失败
- 检查 Nacos 地址、命名空间、分组是否正确替换,确认 shared-configs 中存在 application-default.yml。
- 确认各服务端口未被占用(8040~8043)。
- 接口不可用
- 确认服务已注册到 Nacos,网关路由配置正确。
- 访问 /swagger-ui.html 校验接口文档是否可打开。
- 数据不一致
- 核对数据库索引与唯一约束是否生效。
- 对库存/工单等关键流程增加幂等校验与日志追踪。
- 流程异常
- 检查流程 XML 是否正确部署,节点配置与参数校验是否匹配。
- 查看审批日志表,定位审批状态与节点推进问题。
章节来源
结论
DeviceMate 后端通过“业务域 + 公共能力 + 网关 + 注册中心”的架构实现了设备、仓储与流程的协同治理。四大服务职责清晰、边界明确,配合 Nacos 与 Flowable 形成了可扩展、可演进的微服务体系。建议在后续迭代中持续完善监控与告警、强化事件驱动与异步化改造,并加强跨域事务的一致性保障与性能优化。
附录
- 部署与运行
- 聚合构建:mvn clean install -DskipTests=false -DtestFailureIgnore=false
- 单模块构建:mvn -pl lemes-service-dm-device -am clean install
- 单服务运行:在各 server 模块内执行 mvn spring-boot:run
- 默认端口
- dm-common=8040、dm-device=8041、dm-store=8042、dm-workflow=8043
- 常用依赖
- Spring Cloud Gateway、Nacos、Flowable、Swagger、EasyPOI、Redisson、Hystrix、Validation
章节来源