业务领域分析流程标准
文档编号:SYS-STD-BA-001
文档版本:1.0
创建日期:2026-03-08
文档作者:架构师
适用范围:System基础平台架构设计阶段
1. 流程概述
1.1 流程目的
本流程标准定义业务领域分析的标准化流程,确保领域分析工作的一致性和完整性,为后续架构设计提供高质量的业务基础。
1.2 适用范围
- 领域边界划分
- 领域模型设计
- 业务流程分析
- 业务场景分析
1.3 输入输出
输入:
- 业务需求文档(BRD)
- 用户画像文档
- 项目章程
输出:
- 领域边界划分文档
- 领域模型设计文档
- 业务流程分析文档
- 业务场景分析文档
2. 领域边界划分流程
2.1 流程步骤
┌─────────────────────────────────────────────────────────────────────────────┐
│ 领域边界划分流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 步骤1 │───►│ 步骤2 │───►│ 步骤3 │───►│ 步骤4 │ │
│ │ 识别业务领域 │ │ 领域分类 │ │ 定义限界 │ │ 上下文映射 │ │
│ │ │ │ (核心/支撑/ │ │ 上下文 │ │ │ │
│ │ │ │ 通用) │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘2.2 详细步骤
步骤1:识别业务领域
目标:识别系统涉及的所有业务领域
执行标准:
- 基于业务需求文档,识别主要业务概念
- 分析业务功能模块,提取业务领域
- 参考行业最佳实践,补充遗漏领域
输出物:
- 业务领域清单
- 业务领域关系图
检查点:
- [ ] 是否覆盖所有业务功能
- [ ] 是否有遗漏的业务概念
- [ ] 领域划分是否合理
步骤2:领域分类
目标:将业务领域分类为核心域、支撑域、通用域
分类标准:
| 类型 | 定义 | 战略重要性 | 设计策略 |
|---|---|---|---|
| 核心域 | 系统的核心竞争力,差异化能力所在 | 高 | 投入最优资源,DDD深入设计 |
| 支撑域 | 支持核心域,但非差异化能力 | 中 | 满足需求即可,不追求过度设计 |
| 通用域 | 通用业务能力,可购买或开源 | 低 | 采用成熟方案,满足基本需求 |
System平台分类示例:
- 核心域:用户管理域、权限管理域、认证授权域
- 支撑域:组织管理域
- 通用域:系统配置域、审计日志域
检查点:
- [ ] 分类依据是否充分
- [ ] 是否与业务战略一致
- [ ] 资源分配是否合理
步骤3:定义限界上下文
目标:为每个领域定义限界上下文(Bounded Context)
定义标准:
- 上下文名称:使用领域名称 + Context后缀
- 上下文职责:明确描述上下文的核心职责
- 聚合定义:
- 聚合根实体
- 值对象
- 领域事件
- 领域服务:定义上下文内的领域服务
输出格式:
markdown
#### X.X.X 限界上下文名称(XXX Context)
**上下文职责**:
描述上下文的核心职责
**聚合(Aggregates)**:
1. **聚合名称(XXX Aggregate)**
- 根实体:XXX
- 值对象:XXXId, XXXName, ...
- 领域事件:XXXCreated, XXXUpdated, ...
**领域服务**:
- XXXService
**上下文映射关系**:
- 与XXX上下文:关系类型(Customer-Supplier/Partnership等)检查点:
- [ ] 聚合设计是否符合DDD原则
- [ ] 实体和值对象划分是否正确
- [ ] 领域事件是否完整
步骤4:上下文映射
目标:建立限界上下文之间的关系映射
关系类型:
| 关系类型 | 说明 | 适用场景 |
|---|---|---|
| Customer-Supplier | 客户-供应商关系 | 一个上下文依赖另一个上下文的数据 |
| Partnership | 伙伴关系 | 两个上下文相互依赖,需要协调 |
| Shared Kernel | 共享内核 | 两个上下文共享通用模型子集 |
| Conformist | 遵奉者 | 下游上下文完全采用上游模型 |
| Anticorruption Layer | 防腐层 | 下游上下文隔离上游模型影响 |
输出物:
- 上下文映射图
- 集成关系说明
检查点:
- [ ] 关系类型选择是否合理
- [ ] 集成方式是否明确
- [ ] 是否有循环依赖
2.3 输出文档模板
文档结构:
markdown
# 领域边界划分
## 1. 概述
### 1.1 文档目的
### 1.2 输入文档
### 1.3 领域设计方法
## 2. 业务领域识别
### 2.1 业务领域全景
### 2.2 业务领域详细说明
## 3. 领域分类
### 3.1 领域分类矩阵
### 3.2 核心域
### 3.3 支撑域
### 3.4 通用域
## 4. 限界上下文划分
### 4.1 限界上下文总览
### 4.2 限界上下文详细定义
## 5. 上下文映射
### 5.1 上下文关系图
### 5.2 集成关系详细说明
## 6. 附录
### 6.1 领域词汇表
### 6.2 修订记录3. 领域模型设计流程
3.1 流程步骤
┌─────────────────────────────────────────────────────────────────────────────┐
│ 领域模型设计流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 步骤1 │───►│ 步骤2 │───►│ 步骤3 │───►│ 步骤4 │ │
│ │ 识别实体 │ │ 设计值对象 │ │ 定义聚合 │ │ 设计领域 │ │
│ │ │ │ │ │ │ │ 服务 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 步骤5 │───►│ 步骤6 │ │
│ │ 识别领域 │ │ 设计领域 │ │
│ │ 事件 │ │ 事件处理 │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘3.2 详细步骤
步骤1:识别实体
目标:识别领域内的业务实体
识别标准:
实体特征:
- 有唯一标识(ID)
- 有生命周期
- 状态会变化
- 需要跟踪历史
实体类型:
- 聚合根:具有全局唯一标识,其他实体通过它进行访问
- 普通实体:在聚合内有局部标识
命名规范:
- 使用业务术语(英文)
- 聚合根使用名词单数形式
- 例如:User, Role, Department
检查点:
- [ ] 是否有唯一标识
- [ ] 是否符合业务概念
- [ ] 生命周期是否清晰
步骤2:设计值对象
目标:设计领域内的值对象
设计标准:
值对象特征:
- 无唯一标识
- 不可变(Immutable)
- 通过属性值判断相等
- 可共享和复用
常见值对象:
- 标识类:UserId, RoleId, DeptId
- 名称类:Username, RoleName, DeptName
- 地址类:Email, Phone, Address
- 金额类:Money, Price
- 时间类:DateRange, TimeSlot
命名规范:
- 使用名词或名词短语
- 后缀体现类型,如:Id, Name, Code
检查点:
- [ ] 是否不可变
- [ ] 是否无标识
- [ ] 是否可复用
步骤3:定义聚合
目标:将实体和值对象组织为聚合
聚合设计原则:
聚合根原则:
- 每个聚合有一个聚合根
- 聚合根具有全局唯一标识
- 外部对象只能引用聚合根
事务边界原则:
- 一个事务只修改一个聚合
- 聚合内强一致性
- 聚合间最终一致性
大小适中原则:
- 聚合不宜过大(性能问题)
- 聚合不宜过小(失去意义)
- 通常1-3个实体为宜
聚合结构模板:
java
@Entity
@Table(name = "表名")
public class XXX extends BaseAggregateRoot<XXXId> {
// 标识
private XXXId xxxId;
// 基本属性
private XXXName xxxName;
private XXXCode xxxCode;
// 关联(其他聚合的ID)
private YYYId yyyId;
// 状态
private XXXStatus status;
// 审计
private LocalDateTime createdAt;
private UserId createdBy;
private LocalDateTime updatedAt;
private UserId updatedBy;
// 领域方法
public void domainMethod() {
// 业务逻辑
// 发布领域事件
registerEvent(new XXXEvent(this.xxxId));
}
}检查点:
- [ ] 聚合根是否明确
- [ ] 事务边界是否清晰
- [ ] 聚合大小是否适中
步骤4:设计领域服务
目标:设计领域服务处理跨聚合业务逻辑
设计标准:
使用场景:
- 跨多个聚合的业务逻辑
- 不适合放在实体或值对象中的逻辑
- 领域计算或转换逻辑
命名规范:
- 使用动词+名词形式
- 体现业务意图
- 例如:UserDomainService, PermissionCheckService
实现规范:
- 使用MyBatis Plus Mapper进行数据访问
- 不使用Repository模式(项目选型决定)
- 方法命名使用select/insert/update/delete前缀
领域服务模板:
java
@Service
public class XXXDomainService {
@Autowired
private XXXMapper xxxMapper; // MyBatis Plus Mapper
@Autowired
private YYYMapper yyyMapper;
/**
* 业务方法
*/
public Result businessMethod(Command command) {
// 1. 查询数据
XXX xxx = xxxMapper.selectById(command.getId());
if (xxx == null) {
throw new NotFoundException("XXX not found");
}
// 2. 业务逻辑处理
xxx.doSomething();
// 3. 更新数据
xxxMapper.updateById(xxx);
// 4. 返回结果
return new Result(xxx);
}
}检查点:
- [ ] 是否跨聚合
- [ ] 逻辑是否适合放在服务中
- [ ] 是否使用MyBatis Plus Mapper
步骤5:识别领域事件
目标:识别领域内的领域事件
识别标准:
事件特征:
- 表示领域中的重要业务发生
- 过去时态命名
- 包含事件发生时的状态
常见事件:
- 创建事件:XXXCreated, XXXAdded
- 更新事件:XXXUpdated, XXXChanged
- 删除事件:XXXDeleted, XXXRemoved
- 状态变更:XXXEnabled, XXXDisabled
事件命名规范:
- 使用过去时态
- 格式:{实体名}{动作}Event
- 例如:UserCreatedEvent, PasswordChangedEvent
事件属性:
java
public class XXXEvent extends DomainEvent {
private XXXId xxxId; // 实体ID
private String attribute; // 变更属性(更新事件)
private LocalDateTime occurredAt; // 发生时间
private UserId operator; // 操作人
}检查点:
- [ ] 是否使用过去时态
- [ ] 是否包含必要属性
- [ ] 是否覆盖关键业务场景
步骤6:设计领域事件处理
目标:设计领域事件的发布和处理机制
设计标准:
事件发布:
- 在聚合根中注册事件
- 事务提交后发布事件
- 使用Spring事件机制
事件订阅:
- 使用@EventListener注解
- 处理跨聚合业务
- 实现最终一致性
事件处理模板:
java
@Component
public class XXXEventHandler {
@Autowired
private YYYMapper yyyMapper;
/**
* XXX事件处理
*/
@EventListener
public void onXXXEvent(XXXEvent event) {
// 1. 查询相关数据
YYY yyy = yyyMapper.selectByXXXId(event.getXxxId());
// 2. 执行业务逻辑
yyy.handleXXXEvent(event);
// 3. 更新数据
yyyMapper.updateById(yyy);
}
}检查点:
- [ ] 事件发布时机是否正确
- [ ] 事件处理是否幂等
- [ ] 是否实现最终一致性
3.3 输出文档模板
文档结构:
markdown
# 领域模型设计
## 1. 概述
### 1.1 文档目的
### 1.2 输入文档
### 1.3 设计原则
## 2. 领域模型总览
### 2.1 领域模型全景图
## 3. {上下文名称}上下文领域模型
### 3.1 {聚合名称}聚合(XXX Aggregate)
#### 3.1.1 聚合根:XXX
#### 3.1.2 值对象
#### 3.1.3 领域事件
### 3.2 {聚合名称}聚合
...
### 3.X {上下文名称}领域服务
#### 3.X.1 XXXDomainService
## 4. 领域事件处理
### 4.1 事件发布与订阅
## 5. 附录
### 5.1 实体关系图(ER图)
### 5.2 修订记录4. 评审标准
4.1 评审检查清单
领域边界划分评审
| 检查项 | 检查内容 | 通过标准 |
|---|---|---|
| 领域识别 | 是否覆盖所有业务功能 | 无遗漏业务领域 |
| 领域分类 | 核心/支撑/通用分类是否合理 | 与业务战略一致 |
| 限界上下文 | 聚合设计是否符合DDD | 遵循聚合设计原则 |
| 上下文映射 | 关系类型选择是否合理 | 无循环依赖 |
| 词汇表 | 领域术语是否统一 | 术语定义清晰 |
领域模型设计评审
| 检查项 | 检查内容 | 通过标准 |
|---|---|---|
| 实体设计 | 是否有唯一标识 | 符合实体特征 |
| 值对象设计 | 是否不可变 | 符合值对象特征 |
| 聚合设计 | 聚合根是否明确 | 事务边界清晰 |
| 领域服务 | 是否跨聚合 | 使用MyBatis Plus Mapper |
| 领域事件 | 命名是否规范 | 覆盖关键场景 |
| 事件处理 | 是否幂等 | 实现最终一致性 |
4.2 评审流程
┌─────────────────────────────────────────────────────────────────────────────┐
│ 评审流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 提交评审 │───►│ 评审会议 │───►│ 问题修改 │───►│ 评审通过 │ │
│ │ │ │ │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 评审不通过 │ │
│ │ 重新修改 │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘4.3 评审记录模板
markdown
# 业务领域分析评审记录
## 1. 评审基本信息
### 1.1 评审对象
### 1.2 评审人员
### 1.3 评审时间地点
## 2. 评审结论
### 2.1 总体结论
### 2.2 评审意见汇总
## 3. 评审详细记录
### 3.1 领域边界划分评审
### 3.2 领域模型设计评审
## 4. 遗留问题与风险
### 4.1 遗留问题
### 4.2 风险提示
## 5. 后续工作
### 5.1 待办事项
### 5.2 进入下一阶段条件
## 6. 签字确认
### 6.1 评审组签字
### 6.2 审批意见
## 7. 附录
### 7.1 评审材料清单
### 7.2 修订记录5. 质量标准
5.1 文档质量标准
| 质量维度 | 标准要求 |
|---|---|
| 完整性 | 覆盖所有业务领域,无遗漏 |
| 准确性 | 领域概念准确,符合业务实际 |
| 一致性 | 术语统一,命名规范一致 |
| 可追溯 | 与需求文档可对应 |
| 可评审 | 结构清晰,便于评审 |
5.2 设计质量标准
| 质量维度 | 标准要求 |
|---|---|
| 高内聚 | 聚合内部高内聚 |
| 低耦合 | 聚合之间低耦合 |
| 可扩展 | 支持未来业务扩展 |
| 可测试 | 便于单元测试 |
| 可维护 | 代码清晰,易于维护 |
6. 附录
6.1 常用工具
| 工具类型 | 推荐工具 | 用途 |
|---|---|---|
| 文档编写 | Markdown | 编写分析文档 |
| 流程图 | Mermaid | 绘制流程图 |
| 领域图 | PlantUML | 绘制领域模型图 |
| 原型设计 | Axure/Figma | 业务流程原型 |
6.2 参考文档
- 《领域驱动设计》Eric Evans
- 《实现领域驱动设计》Vaughn Vernon
- 项目业务需求文档(BRD)
- 项目技术选型文档
6.3 修订记录
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| 1.0 | 2026-03-08 | 架构师 | 初始版本 |
文档编制:架构师
文档审核:技术负责人
编制日期:2026-03-08
