WEBKT

告别PRD阅读障碍:如何用结构化方法清晰定义复杂业务规则

73 0 0 0

我们团队的业务规则非常复杂,涉及多种用户角色、权限和数据流转。PRD中如果只用大段文字描述,开发人员经常会漏掉一些条件判断,或者对不同场景下的处理方式产生误解,导致功能上线后出现意外的行为,频繁返工。这几乎是每个产品经理和开发团队都可能面临的痛点。

纯文本描述在业务逻辑简单时尚可应付,但一旦规则变得多维、交叉,其弊端就显而易见:

  1. 信息密度低:复杂逻辑被淹没在冗长的文字中,开发需要花费大量时间阅读、理解和提取关键信息。
  2. 易漏判、误判:开发在代码实现时,容易遗漏文字描述中隐含的某个条件或特殊场景,导致分支逻辑不完整。
  3. 理解不一致:不同的人对同一段文字可能有不同的解读,造成产品经理、开发、测试之间对规则的理解偏差。
  4. 难以维护:规则变更时,修改纯文本描述可能牵一发而动全身,且不易察觉遗漏之处。

为了解决这些问题,我们可以引入一些结构化、可视化的方法来辅助PRD的编写,让复杂规则一目了然。

一、决策表(Decision Table):清晰界定多条件与多结果

当一个业务行为的结果受多个条件共同影响时,决策表是最好的选择。它能穷举所有条件组合及其对应的动作,避免遗漏。

适用场景:用户权限判断、费用计算规则、折扣策略、审批流程等。

基本结构

  • 条件(Conditions):列出所有影响结果的条件,每个条件占据一行。
  • 动作(Actions):列出所有可能执行的动作或产生的结果,每个动作占据一行。
  • 规则(Rules):每一列代表一个独立的规则,它包含了所有条件的一种特定组合以及对应的动作。

示例:用户访问后台功能的权限判断

假设某个后台功能A的访问权限取决于用户的角色是否已激活是否已过期三个条件。

条件/动作 规则1 规则2 规则3 规则4 规则5 规则6 规则7
用户角色为管理员? Y N N N N N N
用户已激活? - Y Y N Y Y N
用户已过期? - N Y - N Y -
动作
允许访问功能A Y Y N N N N N
提示“无权限” N N Y Y Y Y Y
提示“账号未激活” N N N Y N N Y
提示“账号已过期” N N Y N Y N N
  • Y 表示“是”,N 表示“否”,- 表示“不关心”。
  • 这个表格清晰地列出了7种不同的情况和对应的系统行为,开发人员可以据此编写精确的条件判断代码。

二、流程图(Flowchart):直观展现操作路径和数据流转

流程图通过图形符号表示操作步骤、判断分支和数据流向,对于理解操作顺序和复杂的业务流程尤其有效。

适用场景:用户注册流程、订单支付流程、数据处理链路、后台审核流程等。

常用符号

  • 开始/结束:椭圆形
  • 处理/操作:矩形
  • 判断/决策:菱形
  • 输入/输出:平行四边形
  • 数据流向:箭头

示例:一个简化的用户注册与验证流程

graph TD
    A[开始注册] --> B{输入手机号/邮箱};
    B -- 手机号 --> C[发送短信验证码];
    B -- 邮箱 --> D[发送邮件验证码];
    C --> E{用户输入验证码};
    D --> E;
    E -- 验证通过 --> F[设置密码];
    E -- 验证失败 --> G[提示验证码错误/过期];
    F --> H[创建用户账号];
    H --> I[注册成功];
    G --> B; // 返回输入手机号/邮箱或重试
    I --> J[结束];
  • 通过流程图,产品经理可以清晰地定义用户每一步的操作路径,以及系统在不同输入下的响应,包括异常情况的处理。开发能据此搭建整体架构,并关注每个节点的逻辑实现。

三、状态图/状态机(State Diagram/State Machine):管理对象生命周期

当一个实体(如订单、用户、任务)在其生命周期中会经历多个状态,并且在特定条件下才能从一个状态转移到另一个状态时,状态图能非常有效地描述这些复杂的转换逻辑。

适用场景:订单状态管理、用户账户状态、任务调度、商品上架下架流程等。

基本元素

  • 状态(State):实体所处的特定阶段,通常用圆角矩形表示。
  • 事件/触发器(Event/Trigger):导致状态发生变化的外部或内部条件/操作,标注在连接线(转换)上。
  • 转换(Transition):从一个状态到另一个状态的路径。

示例:订单状态流转

stateDiagram-v2
    [*] --> 未支付: 用户下单
    未支付 --> 已支付: 用户完成支付
    未支付 --> 已取消: 用户取消订单 / 超时未支付
    已支付 --> 待发货: 商家确认收款
    待发货 --> 已发货: 商家发货
    已发货 --> 已完成: 用户确认收货 / 自动签收
    已发货 --> 退货中: 用户发起退货
    已完成 --> 退货中: 用户发起退货 (退货期内)
    已取消 --> [*]
    退货中 --> 退货成功: 商家同意退货并退款
    退货中 --> 退货失败: 商家拒绝退货
    退货成功 --> [*]
    退货失败 --> 已发货: 退货失败后订单回滚至已发货状态
  • 状态图清晰地定义了订单从创建到完成或取消、退货的整个生命周期。每个箭头上的文本表示了导致状态转换的事件或操作。这对于避免非法状态转换、确保数据一致性至关重要。

将结构化方法融入PRD的最佳实践

  1. 文本与图表结合:不要完全抛弃文本,用文字提供背景、解释和细节,用图表清晰展现核心逻辑。
  2. 选择合适的工具
    • 决策表:可以直接在文档工具(如Word、Confluence)中用表格实现。
    • 流程图/状态图:可以使用在线工具如draw.ioLucidchart,或者直接在支持Markdown的文档中用Mermaid语法绘制,这样便于版本管理和协作。
  3. 保持简洁:图表应聚焦于核心逻辑,避免过于庞大和复杂。如果一个图表过于复杂,考虑拆分成几个子图表。
  4. 一致性:在所有文档中保持术语和符号的一致性,减少理解成本。
  5. 评审与迭代:完成初稿后,务必与开发、测试团队进行评审。通过他们的反馈进一步完善和澄清。这不仅能提前发现潜在问题,还能确保团队对业务规则达成共识。

通过这些结构化、可视化的文档方法,我们可以将复杂的业务规则从“朦胧的文字迷宫”转变为“清晰的逻辑路径”,极大地提高PRD的有效性,减少团队沟通成本,降低开发风险,最终交付更稳定、高质量的产品。

产品老王 PRD业务规则文档

评论点评