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