Odoo

example

工作流程:

transition 相当过程, 连接两个activity, 每个activity 有自己的业务逻辑(做什么)

__init__.py

import test_model_workflow

__openerp__.py


# -*- coding: utf-8 -*-

{
    "name" : "workflow-sample",
    "description" : "Sample workflow to create a new instance based on another one's state",
    "version" : "0.1",
    "depends" : ["base"],
    "category": "Custom",
    "author" : "Matias Garcia Isaia",
    "url": "",
    "update_xml": ['test_workflow.xml'],
    "installable" : True,
    "active" : False
}

test_model_workflow.py

# -*- coding: utf-8 -*-
from openerp.osv import fields, osv

class test_model_end(osv.osv):
    _name = "test.model.end"
    _columns = { 'creado' : fields.char('Creado', size=64, required=False, readonly=False) }
    _defaults = { 'creado' : 'Por el aire' }
test_model_end()

class test_model_start(osv.osv):
    def create_other(self, cr, uids, ids):
        ends = self.pool.get('test.model.end')
        for start in self.browse(cr, uids, ids):
            ends.create(cr, uids, {'creado' : start.nombre })

    _name = "test.model.start"
    _columns = { 'crear_otro' : fields.boolean('Crear otro', required=False),
                'nombre' : fields.char('Nombre', size=64, required=False, readonly=False)
                }
    _defaults = { 'crear_otro' : False,
                 'nombre' : 'Moron' }

test_model_start()

test_workflow.xml

<?xml version="1.0" ?>
<openerp>
    <data>
        <record model="workflow" id="workflow_test_mio">
            <field name="name">workflow.test</field>
            <field name="osv">test.model.start</field>
            <field name="on_create">True</field>
        </record>

        <record model="workflow.activity" id="activity_start_dummy">
            <field name="wkf_id" ref="workflow_test_mio" />
            <field name="name">workflow.test.activity.dummy</field>
            <field name="kind">dummy</field>
            <field name="flow_start">True</field>
        </record>

        <record model="workflow.activity" id="activity_test">
            <field name="wkf_id" ref="workflow_test_mio" />
            <field name="name">workflow.test.activity</field>
            <field name="kind">function</field>
            <field name="action">create_other()</field>
            <field name="flow_end">True</field>
        </record>

        <record model="workflow.transition" id="transition_test">
            <field name="act_from" ref="activity_start_dummy" />
            <field name="act_to" ref="activity_test" />
            <field name="condition">crear_otro == True</field>
            <!-- 接收的信号 -->
            <field name="signal">ahora_crealo</field>
        </record>


        <record model="ir.ui.view" id="test_model_start_form">
            <field name="name">test.model.start.form</field>
            <field name="model">test.model.start</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="Start">
                    <field name="crear_otro" />
                    <field name="nombre" />
                    <!-- 触发信号 -->
                    <button name="ahora_crealo" string="Dale duro Otto" />
                </form>
            </field>
        </record>
        <record model="ir.ui.view" id="test_model_start_tree">
            <field name="name">test.model.start.tree</field>
            <field name="model">test.model.start</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <tree string="Start">
                    <field name="crear_otro" />
                    <field name="nombre" />
                </tree>
            </field>
        </record>

        <record model="ir.actions.act_window" id="test_model_start_window">
            <field name="name">Test Model Start</field>
            <field name="res_model">test.model.start</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
        </record>

        <record model="ir.ui.view" id="test_model_end_form">
            <field name="name">test.model.end.form</field>
            <field name="model">test.model.end</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="End">
                    <field name="creado" />
                </form>
            </field>
        </record>
        <record model="ir.ui.view" id="test_model_end_tree">
            <field name="name">test.model.end.tree</field>
            <field name="model">test.model.end</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <tree string="End">
                    <field name="creado" />
                </tree>
            </field>
        </record>

        <record model="ir.actions.act_window" id="test_model_end_window">
            <field name="name">Test Model End</field>
            <field name="res_model">test.model.end</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
        </record>

        <menuitem id="test_model_start_menu" name="TEEEST" action="test_model_start_window" />
        <menuitem id="test_model_end_menu" name="Finales" parent="test_model_start_menu" action="test_model_end_window" />
    </data>
</openerp>