Skip to content

业务领域分析流程标准

文档编号: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:识别业务领域

目标:识别系统涉及的所有业务领域

执行标准

  1. 基于业务需求文档,识别主要业务概念
  2. 分析业务功能模块,提取业务领域
  3. 参考行业最佳实践,补充遗漏领域

输出物

  • 业务领域清单
  • 业务领域关系图

检查点

  • [ ] 是否覆盖所有业务功能
  • [ ] 是否有遗漏的业务概念
  • [ ] 领域划分是否合理

步骤2:领域分类

目标:将业务领域分类为核心域、支撑域、通用域

分类标准

类型定义战略重要性设计策略
核心域系统的核心竞争力,差异化能力所在投入最优资源,DDD深入设计
支撑域支持核心域,但非差异化能力满足需求即可,不追求过度设计
通用域通用业务能力,可购买或开源采用成熟方案,满足基本需求

System平台分类示例

  • 核心域:用户管理域、权限管理域、认证授权域
  • 支撑域:组织管理域
  • 通用域:系统配置域、审计日志域

检查点

  • [ ] 分类依据是否充分
  • [ ] 是否与业务战略一致
  • [ ] 资源分配是否合理

步骤3:定义限界上下文

目标:为每个领域定义限界上下文(Bounded Context)

定义标准

  1. 上下文名称:使用领域名称 + Context后缀
  2. 上下文职责:明确描述上下文的核心职责
  3. 聚合定义
    • 聚合根实体
    • 值对象
    • 领域事件
  4. 领域服务:定义上下文内的领域服务

输出格式

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:识别实体

目标:识别领域内的业务实体

识别标准

  1. 实体特征

    • 有唯一标识(ID)
    • 有生命周期
    • 状态会变化
    • 需要跟踪历史
  2. 实体类型

    • 聚合根:具有全局唯一标识,其他实体通过它进行访问
    • 普通实体:在聚合内有局部标识

命名规范

  • 使用业务术语(英文)
  • 聚合根使用名词单数形式
  • 例如:User, Role, Department

检查点

  • [ ] 是否有唯一标识
  • [ ] 是否符合业务概念
  • [ ] 生命周期是否清晰

步骤2:设计值对象

目标:设计领域内的值对象

设计标准

  1. 值对象特征

    • 无唯一标识
    • 不可变(Immutable)
    • 通过属性值判断相等
    • 可共享和复用
  2. 常见值对象

    • 标识类:UserId, RoleId, DeptId
    • 名称类:Username, RoleName, DeptName
    • 地址类:Email, Phone, Address
    • 金额类:Money, Price
    • 时间类:DateRange, TimeSlot

命名规范

  • 使用名词或名词短语
  • 后缀体现类型,如:Id, Name, Code

检查点

  • [ ] 是否不可变
  • [ ] 是否无标识
  • [ ] 是否可复用

步骤3:定义聚合

目标:将实体和值对象组织为聚合

聚合设计原则

  1. 聚合根原则

    • 每个聚合有一个聚合根
    • 聚合根具有全局唯一标识
    • 外部对象只能引用聚合根
  2. 事务边界原则

    • 一个事务只修改一个聚合
    • 聚合内强一致性
    • 聚合间最终一致性
  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:设计领域服务

目标:设计领域服务处理跨聚合业务逻辑

设计标准

  1. 使用场景

    • 跨多个聚合的业务逻辑
    • 不适合放在实体或值对象中的逻辑
    • 领域计算或转换逻辑
  2. 命名规范

    • 使用动词+名词形式
    • 体现业务意图
    • 例如:UserDomainService, PermissionCheckService
  3. 实现规范

    • 使用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:识别领域事件

目标:识别领域内的领域事件

识别标准

  1. 事件特征

    • 表示领域中的重要业务发生
    • 过去时态命名
    • 包含事件发生时的状态
  2. 常见事件

    • 创建事件: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:设计领域事件处理

目标:设计领域事件的发布和处理机制

设计标准

  1. 事件发布

    • 在聚合根中注册事件
    • 事务提交后发布事件
    • 使用Spring事件机制
  2. 事件订阅

    • 使用@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.02026-03-08架构师初始版本

文档编制:架构师
文档审核:技术负责人
编制日期:2026-03-08

Released under the MIT License.