odoo 工作流程不工作,遵循 odoo 10 文档

odoo workflow not working, following odoo 10 documentation

我正在关注 odoo 10 workflow documentation tutorial,但我无法通过单击工作流按钮获得任何回复表单,未显示任何错误。

*请注意,在我的代码中,我正在开发的模块的名称是 "testModule",在 python 中写为 "test_module" 而不是 "openacademy"在文档教程中使用。并且视图文件是 views.xml 而不是 openacademy.xml ,其中任何一个会产生影响吗?

views.xml

...
<!-- this is the sessions views -->
    <!-- session form view -->
    <record model="ir.ui.view" id="session_form_view">
        <field name="name">session.form</field>
        <field name="model">test_module.session</field>
        <field name="arch" type="xml">
            <form string="Session Form">
              <header>
                    <button name="draft" type="workflow"
                          string="Reset to draft"
                          states="confirmed,done"/>
                    <button name="confirm" type="workflow"
                          string="Confirm" states="draft"
                          class="oe_highlight"/>
                    <button name="done" type="workflow"
                          string="Mark as done" states="confirmed"
                          class="oe_highlight"/>
                  <field name="state" widget="statusbar"/>
              </header>
                ...

session_workflow.xml

<odoo>
<data>
    <record model="workflow" id="wkf_session">
        <field name="name">OpenAcademy sessions workflow</field>
        <field name="osv">test_module.session</field>
        <field name="on_create">True</field>
    </record>
    <record model="ir.actions.server" id="set_session_to_draft">
        <field name="name">Set session to Draft</field>
        <field name="model_id" ref="model_test_module_session"/>
        <field name="code">
model.search([('id', 'in', context['active_ids'])]).action_draft()
        </field>
    </record>

    <record model="workflow.activity" id="draft">
        <field name="name">Draft</field>
        <field name="wkf_id" ref="wkf_session"/>
        <field name="flow_start" eval="True"/>
        <field name="kind">dummy</field>
        <field name="action"></field>
        <field name="action_id" ref="set_session_to_draft"/>
    </record>
    <record model="ir.actions.server" id="set_session_to_confirmed">
        <field name="name">Set session to Confirmed</field>
        <field name="model_id" ref="model_test_module_session"/>
        <field name="code">
model.search([('id', 'in', context['active_ids'])]).action_confirm()
        </field>
    </record>

    <record model="workflow.activity" id="confirmed">
        <field name="name">Confirmed</field>
        <field name="wkf_id" ref="wkf_session"/>
        <field name="kind">dummy</field>
        <field name="action"></field>
        <field name="action_id" ref="set_session_to_confirmed"/>
    </record>
    <record model="ir.actions.server" id="set_session_to_done">
        <field name="name">Set session to Done</field>
        <field name="model_id" ref="model_test_module_session"/>
        <field name="code">
model.search([('id', 'in', context['active_ids'])]).action_done()
        </field>
    </record>
    <record model="workflow.activity" id="done">
        <field name="name">Done</field>
        <field name="wkf_id" ref="wkf_session"/>
        <field name="kind">dummy</field>
        <field name="action"></field>
        <field name="action_id" ref="set_session_to_done"/>
    </record>

    <record model="workflow.transition" id="session_draft_to_confirmed">
        <field name="act_from" ref="draft"/>
        <field name="act_to" ref="confirmed"/>
        <field name="signal">confirm</field>
    </record>
    <record model="workflow.transition" id="session_confirmed_to_draft">
        <field name="act_from" ref="confirmed"/>
        <field name="act_to" ref="draft"/>
        <field name="signal">draft</field>
    </record>
    <record model="workflow.transition" id="session_done_to_draft">
        <field name="act_from" ref="done"/>
        <field name="act_to" ref="draft"/>
        <field name="signal">draft</field>
    </record>
    <record model="workflow.transition" id="session_confirmed_to_done">
        <field name="act_from" ref="confirmed"/>
        <field name="act_to" ref="done"/>
        <field name="signal">done</field>
    </record>
    <record model="workflow.transition" id="session_auto_confirm_half_filled">
        <field name="act_from" ref="draft"/>
        <field name="act_to" ref="confirmed"/>
        <field name="condition">taken_seats &gt; 50</field>
    </record>

</data>

manafest.py

中包含调用
 'data': [
    # 'security/ir.model.access.csv',
    'views/views.xml',
    'views/templates.xml',
    'views/partner.xml',
    'views/session_workflow.xml',

],

models.py

的会话模型中创建了字段和函数
state = fields.Selection([
    ('draft', "Draft"),
    ('confirmed', "Confirmed"),
    ('done', "Done"),
])

@api.multi
def action_draft(self):
    self.state = 'draft'

@api.multi
def action_confirm(self):
    self.state = 'confirmed'

@api.multi
def action_done(self):
    self.state = 'done'

最后我升级了模块

您在实施 session_workflow.xml

之前创建的会话会发生这种情况

它应该适用于您在实施 session_workflow.xml 后创建的会话。他们在示例中间的某处放置了一个警告。

Warning

A workflow associated with a model is only created when the model's records are created. Thus there is no workflow instance associated with session instances created before the workflow's definition