SuperAPI AI 工具集

domain-service

智能体与模型

查看项目

更新于 10-15 20:13

技能介绍

用途:当领域逻辑涉及多个聚合、且无法自然归属其中任一聚合时,将其封装为领域服务。适用场景包括:实现跨聚合领域逻辑;把跨聚合逻辑直接写在业务入口点中;把跨聚合逻辑强加到某个聚合上;引入跨越多个聚合的新业务规则。若逻辑只涉及同一聚合内的实体,应留在聚合根上;若只是加载实体、调用创建或更新、管理事务等编排工作,应放在入口点;若涉及持久化、消息或外部 API 等基础设施,应放在基础设施层。

主要能力与规则:领域服务是无状态操作,以领域术语表达,接收领域类型输入并返回领域类型输出,不依赖基础设施,不访问仓储,不管理或参与事务,不调用外部系统、API 或消息基础设施。参数与返回类型必须是领域实体、值对象或领域原始类型,不得传入持久化类型、DTO 或基础设施类型。每次调用相互独立,结果只取决于输入。

使用方式:先识别横跨聚合的业务规则并确认没有单个聚合能自然拥有它;再用函数或无状态类定义领域服务,优先使用顶层函数,或按项目约定使用无状态类;服务命名应体现领域概念而非技术模式;由业务入口点从仓储加载所需聚合,把聚合或相关数据传给领域服务,再持久化其返回的变更。入口点负责编排,领域服务从不负责加载或持久化数据。

限制:不要为只属于单个聚合的逻辑创建领域服务,也不要把另一个聚合的数据作为参数强行塞进某个聚合的方法。资料中给出的转账示例展示了正常与错误写法,但未提供安装命令、平台支持、价格或具体运行环境等信息。