协同机制

Odoo Chatter 和 Activity 为什么这么重要:mail.thread 背后的协同机制

很多业务模块都继承了 mail.thread 和 mail.activity.mixin,但不少人只把它当“评论区”。本文讲清它为什么是 Odoo 协同能力的核心基础设施。

Odoo 开发 销售
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 6 阅读

先说结论

很多人把 Odoo 的 Chatter 只理解成“页面下面那块可以留言的地方”。

这理解太浅了。

更准确地说,mail.threadmail.activity.mixin 是 Odoo 里非常核心的一层协同基础设施。

它们负责把业务对象从“静态记录”变成:

  • 可跟踪
  • 可通知
  • 可分派待办
  • 可保留过程痕迹

也就是说,它们不是装饰品,而是很多业务协同体验的地基。


为什么业务系统需要 Chatter

因为真实世界里的业务不是静态表单。

一张销售单、一张采购单、一条工单、一条线索,背后往往都伴随着:

  • 谁改了什么
  • 谁通知了谁
  • 谁需要下一步跟进
  • 哪个时间点发生了什么

如果系统只有字段值,没有过程痕迹,那协同成本会非常高。

于是 Odoo 引入了一套统一机制,让业务对象可以天然携带:

  • 消息线程
  • 关注者
  • 字段变更追踪
  • 活动待办

这就是 Chatter 体系的价值。


mail.thread 本质上带来了什么

当一个模型继承 mail.thread,最核心的变化不是“界面多了一块评论区”。

而是这个模型开始具备:

  • 发消息和留痕的能力
  • 关注者订阅能力
  • 某些字段变更自动追踪能力
  • 与通知系统挂钩的能力

换句话说:

mail.thread 让业务对象具备了“可对话、可通知、可留痕”的属性。

这比“可以评论”重要得多。


mail.activity.mixin 又补了什么

如果说 mail.thread 偏向“发生了什么”,

mail.activity.mixin 更偏向“接下来该谁做什么”。

它引入的是任务推进视角:

  • 给某人安排一个待办
  • 设定截止日期
  • 标注活动类型
  • 做完后关闭或安排下一步

所以 Activity 不是聊天,它更像轻量流程驱动器。

这也是为什么 CRM、销售、审批、项目、帮助台这类模块特别爱用它。


为什么字段追踪这么实用

很多人一开始觉得“字段变更追踪”只是锦上添花。

实际项目做久了就知道,它非常值钱。

因为一旦业务对象多人协作,大家最常问的就是:

  • 谁改了报价金额?
  • 承诺日期什么时候变的?
  • 阶段是谁推进的?
  • 为什么今天状态和昨天不一样?

如果没有统一追踪,团队只能靠人回忆。

有了 Chatter 留痕,系统就能把“变化历史”沉淀在对象自己身上。

这就是协同效率差异的来源。


为什么 Activity 比“发消息提醒一下”更稳

因为消息容易飘,待办更有归属感。

发条消息只是说:

  • 我提醒过了

但 activity 更像在说:

  • 这件事明确轮到你
  • 截止时间在这里
  • 做完要闭环

所以在需要明确责任人的场景里,activity 往往比普通 chatter 消息更有效。

这也是很多定制开发里值得思考的一点:

有些场景该发 message,有些场景更该建 activity。


为什么很多模块都继承它们

因为这套机制很通用。

只要一个业务对象需要:

  • 被多人协作
  • 记录关键变化
  • 跟踪沟通过程
  • 指派后续动作

它就很适合接入 mail.thread / mail.activity.mixin

所以你会在很多核心模型里看到它们,不只是 CRM。

这不是“界面统一风格”,而是 Odoo 对协同能力的一种平台化设计。


实战里最容易踩的 5 个坑

1. 把 chatter 只当 UI 区块

结果你没真正利用通知和留痕能力。

2. 什么都发消息,不区分是否应该建 activity

最后团队收到很多提醒,但没人真正负责。

3. 追踪字段配太多

每改一点小东西都刷屏,反而降低可读性。

4. 定制逻辑只改字段,不考虑协同反馈

业务变了,但相关人没被通知。

5. 把 Activity 当审批引擎硬用

它适合轻流程,不适合替代完整工作流引擎。


一套很实用的设计原则

如果你在做协同类定制,我建议这样想:

1. 重要状态变化,优先考虑是否需要追踪

别让关键变化悄悄发生。

2. 需要责任人闭环的事,优先考虑 activity

不要只靠留言。

3. Chatter 信息密度要克制

过多噪音会让真正重要的留痕被淹没。

4. 把业务对象当协同载体,不只是数据容器

这是 Odoo 和很多纯表单系统的区别。


一句话记忆法

把这套机制记成一句话:

mail.thread 负责让业务对象可留痕、可通知、可协同,mail.activity.mixin 负责把“下一步谁来做”这件事落下来。

理解这一句,你会更知道什么时候该用 message,什么时候该用 activity。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。