You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo v11移除工作流原因及Odoo10-11工作流适配咨询

Odoo 10 vs Odoo 11 工作流差异及迁移方案

嘿,刚接触Odoo 11就碰到工作流的坑,太能理解你的郁闷了——Odoo 11对工作流系统做了彻底的重构,旧的工作流引擎直接被移除了,这就是你模块跑不起来的核心原因。下面给你拆解清楚差异和修改方向:

核心差异:旧工作流引擎被完全废弃

Odoo 10及之前的工作流是基于<workflow>、<activity>、<transition>这些XML标签定义的一套独立引擎,但从Odoo 11开始,这套系统被彻底砍掉,官方转而主推状态字段+方法动作+自动化规则的组合来管理业务流程。

具体需要修改的点(肯定要改XML和Python代码)

  1. 废弃的XML标签:
    你原来写在workflow.xml里的所有<workflow>、<activity>、<transition>、<signal>标签在Odoo 11里完全失效,这些文件直接可以删掉或者重写。

  2. 状态管理从工作流转为模型字段:
    原来工作流控制的记录状态(比如草稿、确认、完成),现在要直接在对应模型里定义一个selection类型的字段:

    state = fields.Selection(
        [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')],
        string='Status',
        default='draft',
        tracking=True
    )
    
  3. 工作流流转替换为Python方法+视图按钮:
    原来的工作流信号触发(比如点击按钮发送confirm信号触发流转),现在要换成:

    • 在模型里写对应的方法,负责切换状态+处理业务逻辑:
      def action_confirm(self):
          for rec in self:
              rec.write({'state': 'confirmed'})
              # 这里加入原来工作流活动里的逻辑,比如创建关联单据、发送邮件
              rec.send_confirmation_email()
      
    • 在视图XML里添加绑定该方法的按钮:
      <button name="action_confirm" string="Confirm" type="object" states="draft" class="oe_highlight" />
      
  4. 自动流转/定时触发的替代方案:
    如果原来的工作流有自动触发的规则(比如满足某条件自动流转、定时执行),现在可以用Odoo 11的**自动化动作(Automated Actions)**来实现:

    • 路径:Settings > Technical > Automation > Automated Actions
    • 可以配置基于字段值变化、定时触发,执行服务器动作(比如调用模型方法、更新字段)

简单迁移示例对比

Odoo 10 旧工作流(workflow.xml)

<workflow id="sale_order_workflow" model="sale.order">
    <activity id="draft" name="Quotation" initial="True" />
    <activity id="confirmed" name="Confirmed" />
    <transition id="draft_to_confirmed" src="draft" dest="confirmed" signal="order_confirm" />
</workflow>

Odoo 11 迁移后实现

  1. 模型添加状态字段+方法:
class SaleOrder(models.Model):
    _inherit = 'sale.order'

    def action_confirm(self):
        res = super(SaleOrder, self).action_confirm()
        # 这里加入自定义逻辑,比如原来工作流里的额外操作
        return res
  1. 视图添加按钮(如果原有视图没有的话):
<record id="view_sale_order_form_inherit" model="ir.ui.view">
    <field name="name">sale.order.form.inherit</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">
        <!-- 若需要自定义按钮位置,可在这里调整 -->
        <button name="action_confirm" position="after">
            <button name="action_custom" string="Custom Action" type="object" states="confirmed"/>
        </button>
    </field>
</record>

总结一下:你需要把原来基于工作流引擎的逻辑,拆解成「状态字段」+「方法动作」+「视图按钮/自动化规则」的组合,workflow.xml肯定要废弃重写,同时补充对应的Python方法和视图调整。

内容的提问来源于stack exchange,提问作者Muhsin k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:45:16