业务规则分析Skill business-rules-analysis

这个技能提供了一套全面的方法和框架,用于在业务需求分析过程中识别、文档化和验证各种业务规则。包括约束规则、推导规则、推理规则、决策表等类型,帮助确保规则的一致性、完整性和可追溯性。关键词:业务规则、需求分析、政策约束、计算推导、决策逻辑、规则验证、需求发现。

需求分析 0 次安装 0 次浏览 更新于 3/11/2026

name: business-rules-analysis description: “业务规则引出和分析技术。涵盖规则类型(约束、推导、推理)、决策表、规则模板和政策文档。在需求引出期间,用于识别业务政策、约束、计算和决策逻辑时使用。” allowed-tools: Read, Write, Glob, Grep, Task

业务规则分析

需求发现期间,用于引出、文档化和验证业务规则的全面框架。

何时使用此技能

关键词: 业务规则、政策、约束、计算、推导、推理、决策表、决策逻辑、规则模板、验证规则、授权规则、计算规则、条件-动作、如果-那么规则

在以下情况下使用此技能:

  • 识别业务政策和约束
  • 文档化计算和推导规则
  • 为复杂逻辑创建决策表
  • 引出授权和验证规则
  • 将政策转化为需求陈述
  • 分析规则交互和冲突
  • 验证规则完整性和一致性

业务规则类别

结构规则(事实)

定义事物性质和关系:

structural_rules:
  definition: "定义术语、概念及其关系的规则"

  types:
    terms:
      description: "业务概念的定义"
      example: "‘高级客户’是在过去12个月内消费超过10,000美元的客户"

    facts:
      description: "关于业务领域的断言"
      example: "每个订单必须恰好有一个客户"

    relationships:
      description: "概念之间的关系"
      example: "一个客户可能有零个或多个订单"

  documentation_template:
    term: "{Term} 被定义为 {definition}"
    fact: "{Subject} {verb} {object}"
    relationship: "{Entity A} {cardinality} {Entity B}"

推导规则(计算)

从其他数据计算或推导值:

derivation_rules:
  definition: "从其他信息计算值的规则"

  types:
    calculations:
      description: "数学计算"
      example: "订单总额 = 所有(行项目数量 × 单价)的总和"

    aggregations:
      description: "跨集合的摘要计算"
      example: "月收入 = 本月所有订单总额的总和"

    transformations:
      description: "数据转换"
      example: "全名 = 名 + ‘ ’ + 姓"

  documentation_template:
    calculation: "{Result} = {formula}"
    with_conditions: "如果 {condition} 那么 {Result} = {formula}"

约束规则(限制)

限制可以发生或存在的内容:

constraint_rules:
  definition: "限制或强制条件的规则"

  types:
    mandatory:
      description: "必须始终为真"
      example: "每个订单必须至少有一个行项目"

    prohibited:
      description: "绝不能发生"
      example: "订单不能运送到禁运列表中的国家"

    conditional:
      description: "在特定条件下应用的约束"
      example: "如果客户年龄小于18岁,则不能订购酒精产品"

    range:
      description: "数值或值边界"
      example: "订单数量必须在1到999之间"

  documentation_template:
    must: "{Subject} 必须 {condition}"
    must_not: "{Subject} 不能 {condition}"
    if_then: "如果 {condition} 那么 {subject} {must/must not} {action}"

动作规则(行为)

定义条件满足时应该发生什么:

action_rules:
  definition: "基于条件触发动作的规则"

  types:
    authorization:
      description: "谁可以做什么"
      example: "只有经理可以批准超过5,000美元的订单"

    triggers:
      description: "启动动作的事件"
      example: "当库存低于再订购点时,创建采购订单"

    workflows:
      description: "动作序列"
      example: "订单下订后,发送确认邮件,然后通知仓库"

  documentation_template:
    authorization: "{Role} 可以/必须/不能 {action} {object} [当 {condition}]"
    trigger: "当 {event} 那么 {action}"
    workflow: "在 {event} 之后,{action1},然后 {action2}"

推理规则(推断)

从现有信息推导新事实:

inference_rules:
  definition: "从现有事实推断新信息的规则"

  types:
    classification:
      description: "基于标准分类"
      example: "如果客户终身价值 > $50,000 那么客户是‘VIP’"

    status:
      description: "基于条件确定状态"
      example: "如果所有行项目已发货那么订单状态为‘完成’"

    eligibility:
      description: "确定条件是否满足"
      example: "如果忠诚积分 > 1000 那么客户有资格获得折扣"

  documentation_template:
    inference: "如果 {conditions} 那么 {conclusion}"
    classification: "{Entity} 被分类为 {category} 当 {criteria}"

决策表

适用于具有多个条件的复杂规则:

decision_table:
  structure:
    conditions: "列出输入条件的行"
    actions: "列出可能动作的行"
    rules: "组合条件和动作的列"

  example:
    name: "订单折扣规则"
    conditions:
      C1: "客户类型"
      C2: "订单金额"
      C3: "支付方式"

    actions:
      A1: "应用折扣%"
      A2: "免费送货"

    rules:
      R1:
        C1: "VIP"
        C2: "> $500"
        C3: "任何"
        A1: "20%"
        A2: "是"

      R2:
        C1: "常规"
        C2: "> $100"
        C3: "信用卡"
        A1: "10%"
        A2: "否"

      R3:
        C1: "任何"
        C2: "任何"
        C3: "任何"
        A1: "0%"
        A2: "否"

决策表模板

┌─────────────────────────────────────────────────────────────┐
│ 决策表: {Name}                                              │
├─────────────────┬───────┬───────┬───────┬───────┬───────────┤
│ 条件             │  R1   │  R2   │  R3   │  R4   │  默认     │
├─────────────────┼───────┼───────┼───────┼───────┼───────────┤
│ {条件 1}        │   Y   │   Y   │   N   │   N   │     -     │
│ {条件 2}        │   Y   │   N   │   Y   │   N   │     -     │
├─────────────────┼───────┼───────┼───────┼───────┼───────────┤
│ 动作             │       │       │       │       │           │
├─────────────────┼───────┼───────┼───────┼───────┼───────────┤
│ {动作 1}        │   X   │       │   X   │       │           │
│ {动作 2}        │       │   X   │   X   │       │     X     │
└─────────────────┴───────┴───────┴───────┴───────┴───────────┘

规则文档模板

标准规则模板

rule_template:
  id: "BR-{domain}-{number}"
  name: "{描述性名称}"
  category: "constraint|derivation|inference|action|structural"
  statement: "{清晰、无歧义的规则陈述}"

  source:
    origin: "{利益相关者、文档、法规}"
    date: "{识别时间}"
    authority: "{谁可以更改此规则}"

  conditions:
    - "{condition 1}"
    - "{condition 2}"

  actions:
    - "{条件满足时的动作}"

  exceptions:
    - "{例外情况}"

  examples:
    positive:
      - "{规则适用的示例}"
    negative:
      - "{规则不适用的示例}"

  related_rules:
    - "{BR-xxx}"

  validation:
    testable: true
    test_approach: "{如何验证}"

  metadata:
    priority: "high|medium|low"
    volatility: "stable|volatile"
    enforcement: "automatic|manual"

SBVR风格模板

业务词汇和业务规则语义(OMG标准):

sbvr_template:
  vocabulary:
    term: "{term}"
    definition: "{业务上下文中的含义}"

  structural_rule:
    format: "必须/允许/禁止 {statement}"
    example: "必须每个订单至少有一个行项目"

  operative_rule:
    format: "如果 {condition} 那么 {consequence}"
    example: "如果订单总额超过1000美元那么需要经理批准"

引出技术

规则发现问题

discovery_questions:
  constraints:
    - "什么必须始终为真?"
    - "什么绝不能发生?"
    - "存在什么限制或边界?"
    - "在X之前必须满足什么条件?"

  calculations:
    - "X如何计算?"
    - "什么公式确定Y?"
    - "计算Z需要什么数据?"

  authorizations:
    - "谁可以批准这个?"
    - "需要什么权限?"
    - "谁有权限更改这个?"

  triggers:
    - "什么导致这个发生?"
    - "当X发生时发生什么?"
    - "什么事件启动这个过程?"

  exceptions:
    - "有任何特殊情况吗?"
    - "如果条件不满足怎么办?"
    - "什么覆盖这个规则?"

文档分析

document_sources:
  primary:
    - "政策手册"
    - "法规文档"
    - "合同和协议"
    - "程序文档"

  secondary:
    - "例外日志"
    - "帮助台票据"
    - "培训材料"
    - "系统文档"

  indicators:
    must_words: ["必须", "应", "需要", "强制性"]
    prohibition_words: ["不能", "禁止", "不允许", "严禁"]
    condition_words: ["如果", "当", "除非", "除", "只要"]
    calculation_words: ["等于", "计算", "推导", "总和"]

规则验证

完整性检查

completeness_validation:
  questions:
    - "所有条件都指定了吗?"
    - "默认情况定义了吗?"
    - "例外文档化了吗?"
    - "规则来源识别了吗?"
    - "规则可以测试吗?"

  checklist:
    - "[ ] 所有术语在词汇表中定义"
    - "[ ] 所有条件明确"
    - "[ ] 动作清晰指定"
    - "[ ] 例外文档化"
    - "[ ] 提供示例"
    - "[ ] 来源和权限识别"

一致性检查

consistency_validation:
  rule_conflicts:
    - "有任何规则相互矛盾吗?"
    - "有重叠条件导致不同结果吗?"

  terminology:
    - "术语跨规则使用一致吗?"
    - "定义匹配词汇表吗?"

  coverage:
    - "决策逻辑中有缺口吗?"
    - "规则集对所有场景完整吗?"

规则可追溯性

traceability:
  upstream:
    - "来源文档/利益相关者"
    - "支持的商业目标"
    - "法规/政策参考"

  downstream:
    - "实现此规则的需求"
    - "验证此规则的测试用例"
    - "强制执行此规则的系统组件"

  matrix:
    format: "规则ID → 需求ID → 测试ID → 组件ID"

输出格式

业务规则目录

rules_catalog:
  domain: "{domain}"
  version: "1.0"
  last_updated: "{ISO-8601}"

  glossary:
    - term: "高级客户"
      definition: "终身价值 > $50,000的客户"

  rules:
    - id: "BR-ORD-001"
      name: "最低订单数量"
      category: "constraint"
      statement: "订单数量必须至少为1"
      enforcement: "automatic"
      priority: "high"

    - id: "BR-ORD-002"
      name: "VIP折扣计算"
      category: "derivation"
      statement: "VIP客户在订单超过$100时获得20%折扣"
      formula: "折扣 = 订单总额 × 0.20 如果 客户类型 = 'VIP' 并且 订单总额 > 100"

  decision_tables:
    - name: "送货方式选择"
      conditions: [...]
      actions: [...]
      rules: [...]

  validation_summary:
    total_rules: 25
    by_category:
      constraint: 12
      derivation: 5
      inference: 4
      action: 4
    conflicts_found: 0
    gaps_identified: 2

集成点

与其他引出命令

# 在访谈中发现规则
/requirements-elicitation:interview --focus "business-rules"

# 从文档中提取规则
/requirements-elicitation:extract --source "policies.pdf" --type "rules"

# 与利益相关者验证规则
/requirements-elicitation:simulate --domain "orders" --focus "rule-validation"

规则到需求转换

transformation:
  constraint_to_requirement:
    rule: "订单数量必须在1到999之间"
    requirement: "系统应验证订单数量在范围1-999内"

  derivation_to_requirement:
    rule: "订单总额 = 所有(数量 × 单价)的总和"
    requirement: "系统应计算订单总额为行项目金额的总和"

  authorization_to_requirement:
    rule: "只有经理可以批准超过5,000美元的订单"
    requirement: "系统应要求经理角色用于批准超过5,000美元的订单"

参考文献

详细技术:

版本历史

  • v1.0.0 (2025-12-26): 初始发布 - 业务规则分析技能

最后更新: 2025-12-26