业务建模经常被理解成画流程、梳理数据模型、定义字段,或者把业务人员说的话整理成一套更规范的需求。
这些当然都是建模工作的一部分,但它们还没有回答一个更基础的问题:
建模究竟在做什么?
我目前更倾向于把它理解为:业务建模是在决定,现实业务进入数字世界之后,应该被怎样表征。
现实本身不会天然长成流程图、数据库表或页面字段。系统里最终出现哪些对象、哪些关系被保留、哪些变化值得记录、哪些规则需要显式表达,都是建模过程中作出的选择。
这些选择进一步决定了企业能看见什么、计算什么、治理什么,以及未来的 Agent 能理解和操作什么。
01|系统里的“业务”,不是现实业务本身
企业里每天发生的事情远比任何一个系统复杂。
一名客户提出采购需求,可能伴随着预算、交期、已有设备状况、历史合作关系和大量沟通背景;一台设备从采购、使用到维修和报废,会跨越多个部门、系统和时间周期;一个项目的真实进度,也不会天然存在于某一张“项目表”的进度字段里。
但系统不可能完整复制现实。
它必须选择一部分差异,把它们转成对象、字段、状态、关系、流程或规则。也就是说,我们真正建设的从来不是现实本身,而是现实的一种数字表征。
这也是为什么同一段现实,可以有完全不同的系统设计。
比如,一张“设备采购申请单”可以被设计成一张拥有几十个字段的表单,其中通过“采购类型”区分新购和换新。
但继续往业务里看,会发现新购和换新面对的其实不是同一个问题。
新购需要判断新增能力是否必要、场地和预算是否满足;换新则首先要判断原设备为什么需要替换、继续维修是否划算、旧设备如何处置。两者需要的信息、规则和后续决策都不一样。
如果这个差异会持续影响后续行为,那么“新购 / 换新”就不只是表单里的一个枚举值,而可能意味着两个不同的业务场景,甚至不同的决策结构。
业务建模真正做的,就是决定哪些现实差异值得进入数字世界,并赋予它们稳定的表达。
02|建模不是追求“完整”,而是保留会产生后续差异的区别
现实中的区别无限多,不可能全部建进系统。
一个设备有颜色、重量、采购日期、安装位置、历史故障、维修记录、使用频率,也可以继续描述它所在楼层的朝向、维修人员当天的心情。它们都是真实存在的信息,但并不都值得进入当前业务模型。
所以建模不是不断追求“信息更完整”,而是在判断:
哪些区别一旦忽略,会影响后续的判断、责任或行动?
例如,“最近维修结果”看起来可以直接作为一个设备字段。
但如果进一步追问,会发现它其实来自某一次维修业务。那次维修有自己的故障原因、处理过程、维修人员、时间和结果,也可能影响后续质控、费用结算和再次维修。
如果只在设备表上保留一个“最近维修结果”,系统虽然获得了一个方便展示的字段,却丢失了这个信息来自哪里、为什么变化,以及它与其他业务之间的关系。
同样,“交付完成”也不是一个天然清晰的状态。销售可能把发货视为交付,实施团队关心安装完成,客户则可能以最终验收为准。如果这些状态会触发不同责任、回款或任务,它们就不应该因为都叫“交付”而被压成同一个字段。
因此,一个很好用的判断标准是:
如果一个差异会导致后续状态、规则、责任、判断或行动不同,它通常就值得被明确表达。
反过来,如果一个区别不会对当前问题产生任何后续影响,把它建进来只会增加复杂度。
业务建模本质上是一种有目的的压缩。
但表征的压缩,是否意味着整个系统复杂度的下降?这需要进一步区分业务的必要复杂度与系统组织方式引入的额外复杂度。详见《复杂度不会消失,只会转移?》。
03|对象、关系和状态,是从现实里“切”出来的
这也是为什么建模常常不是把已有需求整理得更漂亮,而是在重新切分现实。
一张传统表单里,经常同时塞着很多不同性质的东西。
采购申请里可能同时存在需求、候选方案和审批判断;报价单里可能混着客户需求、报价方案和商务决策;设备详情里既有设备自身信息,又有维修、质控和资产管理产生的业务记录。
对人来说,这种混合有时候还能凑合使用,因为人会自动恢复语义:他知道这个字段是“为了维修看的”,那个状态其实是“上次流程留下来的”。
但对系统来说,如果这些区别没有被明确表达,它们最终只是一堆字段。
所以业务建模常常需要重新判断:
这里究竟有几个对象? 一个字段是在描述对象本身,还是另一次业务留下的结果? 两件事只是发生在同一张表里,还是它们在现实里真的属于同一个生命周期? 一次变化应该覆盖旧值,还是应该作为一个新的业务事件被保留下来?
这些问题没有唯一的、脱离场景的答案。
同一个现实对象,在不同业务域和不同目标下,也可能需要不同分辨率的表征。
例如同一台设备,维修人员关心故障、维修历史和备件,资产管理员关心归属和生命周期,管理者关心风险、利用率和成本。并不存在一份“绝对正确的设备详情页”能够同时满足所有场景。
因此,稳定的对象模型与面向场景的视图需要分开。
对象尽量保持稳定,表征可以根据业务域、视角、分辨率和当前意图变化。
这也是为什么“不断给不同角色配置字段显隐”最终很容易走向配置地狱:系统只知道谁能看哪些字段,却不知道这些信息为什么在当前场景下重要。
04|业务模型的产物,不应该只是一张图
传统建模很容易把“模型”理解成某一种图:流程图、ER 图、知识图谱或者架构图。
但现实业务本身包含的结构远不止一种。
身份和稳定属性适合用对象与字段表示;依赖关系可能更适合图;分类与分解关系适合树;生命周期需要状态机;价格、产能或库存判断可能依赖公式;业务边界可能是一组约束;大量经验、例外和解释仍然只能先保留在自然语言中。
因此,业务建模最终形成的应该是一套能够共同描述业务世界的表征,而不是强行把所有东西塞进某一种数据结构。
这套表征至少需要回答几类问题:
世界里有什么; 这些东西如何关联; 当前处于什么状态; 什么事情会让状态发生变化; 哪些规则和约束决定变化是否成立; 哪些信息是稳定定义,哪些只是当前实例和实时状态。
形式可以不同,关键是这些结构之间能够彼此指认,而不是分别散落在数据库、流程配置、制度文档和人的经验里。
这也是我把结构化数据、非结构化信息以及图、树、状态机、约束等 Cognitive IR 都看作表征层组成部分的原因。
现实不会因为数据库擅长二维表,就天然长成二维表;也不会因为大模型擅长自然语言,就天然适合全部写进 Markdown。
05|好模型不是“画得对”,而是能够支撑后续运行
业务模型最终不是给人欣赏的。
它是否有价值,要看它进入真实系统以后能不能继续工作。
一个模型如果足够好,同一套底层业务事实应该可以支持不同角色形成不同视图;对象发生变化时,相关状态、任务和指标能够被重新计算;规则调整后,可以找到哪些流程和判断受到影响;新的业务需求出现时,也能够判断它是在扩展已有结构,还是意味着原有模型需要被修正。
这也是业务建模和单纯需求文档最大的区别。
需求文档描述“这次要做什么”;业务模型则试图维护“这个世界现在被怎样理解”。
因此,业务模型天然应该允许演进。
现实业务会变,组织会变,对问题的理解也会变。今天看起来合理的对象边界,明天可能因为新的业务模式需要重新拆分;过去被认为只是一个字段的东西,也可能随着重要性增加,被提升成一个独立对象。
稳定不意味着永远不变,而是变化发生时,能够知道改了什么、为什么改,以及它会影响哪里。
06|AI 不会让业务建模消失,反而让它变得更重要
大模型很擅长从文本中恢复结构。
这很容易产生一种直觉:既然模型越来越聪明,是不是以后就不需要提前做那么多建模了?把文档、数据库和聊天记录都给 Agent,让它自己理解就可以。
AI 确实可以大幅降低建模成本,也可以帮助发现潜在对象、关系和规则。
但“发现结构”和“决定哪些结构应该成为企业共享的稳定定义”不是同一件事。
如果同一个“项目完成”,财务、人事和交付团队各有一套理解;如果不同系统里的“客户”指向不同主体;如果“审批通过”有时意味着作出了决策,有时只是代表流程结束,那么 Agent 每次都可以尝试在上下文里重新推断这些含义,但整个企业仍然没有一个稳定的共享世界。
Agent 越深入业务,这个问题越明显。
因为它不只是要回答问题,还需要持续读取状态、进行判断、调用系统并改变现实。到了这个阶段,业务模型不再只是给人理解系统的辅助材料,而开始成为人、系统与 Agent 共享的环境基础。
AI Native 并不意味着取消建模,而是让建模从“系统实施之前的文档工作”,变成“持续维护数字世界”的基础能力。
从这个意义上说,业务建模和表征其实是同一件事的两个方向。
表征讨论的是:现实以什么形式进入认知。
业务建模做的则是:主动设计这种表征。
再往后,Cognito Atlas 关心的是这些表征如何被进一步组织成一张稳定、共享、持续更新的业务地图;Decision Space 则从这张地图中,根据具体目标切出当前需要判断和行动的问题空间。
业务建模因此并不是企业 AI 之前的一项传统工作。
它本身就是在建设 AI 将要生活的数字世界。