工作流程:
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>