一、基本概念
OpenERP 里的对象(Object),也叫Model,相当于我们一般说的类(Class),对象总是对应到数据库里的数据表。例如业务伙伴对象,其对象名是“res.partner”,对应表名是“res_partner”。表里的一条记录,也就是对象的一个实例,叫资源(Resource)。
ir_model
ir_model_fields
ir_ui_view
ir_ui_menu
ir_act_window
ir_values
Action 的最大玄机在表ir_values 中,如本例,表ir_values 中的字段model 和res_id 表示,本Action
的触发菜单是ir_ui_menu 表中的id=104 的菜单项,这正是“请假单”菜单。字段value 表示本Action 触发
哪个动作,本例中value=’ir.action.act_window,93’,表示点击菜单时触发表ir_action_act_window 中的id=93的Action,这个Action 正是“请假单”动作
OE前台操作对应的背后动作
1) 从表ir_ui_menu 中读取菜单信息,显示在画面上
2) 当用户点击菜单时,从表ir_values 中找到该菜单对应的Action
3) 从表ir_act_window 和ir_act_window_view 中,找到Action 关联的对象和视图
4) 从表ir_model 和ir_model_fields 取得对象和字段信息,构建访问对象(本例是x_qingjd)的SQL 文
5) 从表ir_ui_view 中取得视图信息,尤其是视图结构XML,根据视图结构XML 构造画面
6) 将对象数据显示在视图画面上。
二、工作流
状态图和活动图,是工作流的两个面,前者关注信息变化,后者关注处理步骤,二者是等价的,就是说可
以互相转换。
从一个状态到另一个状态,或者从一个活动到另一个活动,叫迁移(Transitions),在上述的请假申请
工作流中,有3 个迁移。迁移又分出迁移(Outgoing transitions)和入迁移(Incoming transitions),从活动A 到活动B 的迁移,对A 来说,是出迁移,对B 来说,是入迁移。伴随迁移,还有三个概念,一个是触
发(Trigger),一个是迁移条件(Condition),还一个是角色(Role)。从A 到B 的迁移,不会无缘无故发
生,通常有个触发事件,才会发生迁移,最典型的触发事件是用户按下某个按钮。
三、报表
OpenERP 报表有两种,一种是基于RML 的,一种是基于XSLT+XML 的。开发RML 报表的时候,需
要手工做好RML 文件,RML 文件类似于HTML 文件,它定义报表的显示格式。当我们做好了RML 文件
的时候,希望有个工具,能把RML 转换为PDF 文件,预览报表效果。基于XSLT+XML 的报表,在OpenERP
的内部处理中,是先把XSLT+XML 转换为RML 文件,再转换成PDF 报表。开发中,我们也需要工具转
换XSLT+XML 成RML,再转换成PDF 文件,以预览报表效果。