项目深度

Odoo 项目嵌入动作为什么不是“复制项目顺手带过去”:embedded actions、用户定制与共享配置的复制边界

项目复制时,很多人以为所有界面定制都会原样继承。但官方测试说明,embedded actions 配置会被区分为共享动作和用户私有动作:前者可复制,后者不能盲带。这个边界直接关系到模板项目和复制项目的可维护性。

项目
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 6 阅读

先说结论

复制 Odoo 项目时,界面上的“我看到什么”系统里“这个项目携带什么配置” 不是同一层东西。

/home/ubuntu/odoo-temp/addons/project/tests/test_project_embedded_action_settings.py 可以看出,官方对 embedded actions 的复制策略非常克制:

  • 与项目共享相关的嵌入动作,可以被复制到新项目
  • 纯用户私有的嵌入动作,不应该跟着模板或复制项目盲目复制
  • 项目删除时,关联的 embedded action settings 也要清理

这说明 embedded actions 不是普通装饰,而是介于:

  • 项目级工作台配置
  • 用户级界面偏好

之间的一层配置资产。

所以复制项目时,真正的问题不是“能不能全带走”,而是:

哪些属于项目模板能力,哪些只是某个用户的个人工作习惯。


第一层:为什么复制项目不能无脑复制所有界面配置

很多实施团队喜欢把“项目复制”想成“所有东西克隆一份”。

但这在界面配置上非常危险。

原因很简单:

  • 有些配置是项目自己需要的
  • 有些配置只是用户在自己界面里调了个顺手顺序

这两类东西如果不分开,复制后的结果会很怪:

  • 新项目带着旧用户的私人工作台偏好
  • 其他用户被迫继承不属于自己的布局
  • 模板项目开始携带大量历史使用痕迹

测试里正是在防这个问题。


第二层:什么是“应该复制”的共享动作

测试表明,如果 embedded action 是:

  • 共享的
  • 绑定在某个项目上下文
  • 但不属于某个特定用户私有配置

那么项目复制后,相关设置可以跟着复制。

这类动作更像什么?

  • 项目级快捷视图
  • 项目工作台里预置的功能块
  • 团队共用的嵌入入口

它们本质上是项目模板能力的一部分。

所以复制项目时保留这些东西,符合用户预期:

  • 新项目仍保留原来的工作台结构
  • 团队不用每次重新摆一遍

第三层:什么是“不该复制”的用户私有动作

测试还特别验证了一种情况:

  • user-specific embedded action
  • shared embedded action
  • 同时存在于旧项目设置里

复制项目后:

  • 共享动作可以复制
  • 用户私有动作不该照搬进新项目设置

这个设计非常关键。

因为用户私有动作本质上回答的是:

  • 这个用户喜欢把哪个块放左边
  • 想把哪个入口先显示
  • 对这个项目做了什么临时个性化安排

这些都不是项目模板资产,而是个人偏好。

如果强行复制,会产生两个问题:

  1. 污染模板:个人习惯被误当标准流程
  2. 污染新项目:复制后出现一堆别人看不懂或没权限的私有入口

第四层:为什么项目删除时要顺手清 embedded settings

测试最后还验证了:

  • 删除项目时,相关 embedded action settings 也应被清掉

这一步看起来普通,其实是配置治理问题。

如果项目删了,设置还留着,就会出现:

  • 悬空配置
  • 用户设置里残留指向不存在项目的 UI 片段
  • 后续查询、复制、渲染都变脏

所以这不是清洁癖,而是为了保证:

  • 项目生命周期结束
  • 它的界面级附属配置也同步结束

第五层:这对“模板项目”意味着什么

很多团队会把项目复制当模板机制来用。

那 embedded actions 的复制边界就尤其重要。

一个好的模板项目,应该携带的是:

  • 团队共用的视图入口
  • 公共工作台配置
  • 合理的默认展示顺序

不该携带的是:

  • 某个经理临时加的个人视图
  • 某个用户专属的自定义入口
  • 某次项目特殊操作留下的个人布局

所以模板项目真正要做的是“抽公共骨架”,而不是“冻结某个人的桌面”。


实施建议:如何管理 embedded actions 才不乱

1. 先定义哪些是团队共享动作

凡是复制后应该继续存在的,必须明确是共享资产。

2. 个人偏好一律当个人偏好管理

不要把个人工作习惯包装成项目标准配置。

3. 定期清理无效项目的残留配置

尤其是在大量复制 / 删除模板项目的环境里,配置垃圾会积得很快。

4. 复制项目前,先判断是“模板复制”还是“用户工作副本”

这两种复制诉求不一样,别用同一种期待去看结果。


最后一句

embedded actions 这类功能最容易暴露一个组织的配置治理水平。

真正成熟的做法不是“什么都复制”,而是分清:

  • 项目资产
  • 团队共享能力
  • 用户个人习惯

把这三层分开,复制项目才会稳定,模板项目才不会越用越脏。

DISCUSSION

评论区

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