编辑: 过于眷恋 | 2019-07-06 |
x_shenqr'
,'
='
,user.id)] 2.2.4 工作流(审批) 工作流的设置是一个比较复杂的问题,这里只作流程的介绍,具体请深入学习OpeERP软件. 请假单的审批是一个过程,在OpenERP里面叫做工作流(workflow),拟定请假审批有4个状态,分别是 草稿(qingjd_draft) 、 待批(qingjd_wait_prove) 、 批准(qingjd_proved) 、 拒绝(qingjd_rejected) .首先在原先建的请假单模型中添加一个 状态 字段,各项如下: 其中 选择项目 内容为: 点击 保存并关闭 . 准备工作做完后,就开始制作工作流.首先拟定审批流程为:员工递交 请假申请 , 请假申请 的状态由 草稿 转变为 待批 ,经理批准或拒绝请假申请, 请假申请 状态由 待批 转变为 批准 或 拒绝 .在清楚了审批流程之后,就可以创建工作流了,点击菜单:设置/技术/工作流/工作流,点击 创建 ,用户可以任意命名,这里填 请假单审批 ,资源对象填先前创建的请假单对象 x_qingjd ,然后点击 添加一个项目 来创建4个状态,首先创建 草稿(qingjd_draft) 状态: 用同样的方法建立其他3个状态.? 待批(qingjd_wait_prove) 状态: Python动作 内容为: write({'
x_state'
:'
qingjd_wait_prove'
}) 批准(qingjd_proved) 状态: Python动作 的内容为: write({'
x_state'
:'
qingjd_proved'
}) 拒绝(qingjd_rejected) 状态: Python动作 的内容为: write({'
x_state'
:'
qingjd_rejected'
}) 状态建立好了之后,还需要在视图中显示,所以要修改原先的视图代码,这里只修改表单视图(form),如下: 状态之间会有转变,这里称之为 迁移 ,例如:员工递交请假单是从 草稿 转变到 待批 ;
经理批准请假,是从 待批 状态转变到 批准 状态.而状态的转变,在现实生活中是通过 递交 或者 签字 的方式进行的,而OpenERP是通过点击按钮. 首先, 草稿 只能转变为 待批 状态,所以点击 草稿(qingjd_draft) ,然后点击 迁移 ,在 目标活动 点击 添加一个项目 ,内容如下: 必须的用户组 选择 员工组 是因为请假单是员工递交的,与 审批组 成员无关(这里没有考虑审批组成员的请假). 待批(qingjd_wait_prove) 是由 草稿 转变而来,而其又可以转变为 批准 和 拒绝 ,所以同理,在 源活动 添加内容如下: 在 目标活动 添加下面两个 迁移 : 批准(qingjd_proved) 是由 待批 转变而来,而其实结束状态,所以在 源活动 添加内容如下: 拒绝(qingjd_rejected) 也是由 待批 转变而来,而其也是结束状态,所以在 源活动 添加内容: 所有 状态 和 迁移 就创建完毕,点击 保存 , 请假单审批 工作流就创建完毕,用户就可以使用 请假申请 和 请假审批 功能. 2.2.5 测试 回到主菜单,画面上增加了菜单 请假申请/请假单/请假单1 .点击请假单,进入列表视图,点击新建按钮,进入创建请假单画面. 点击 创建 . 点击 保存 . 2.2.6 深入数据库 在上述界面操作中,依次创建了对象、视图、菜单和系统动作,作成了 请假申请 的功能.在界面操作的背后,OpenERP内部做了哪些动作呢?实际开发工作中,总是会碰到这样那样的问题,只有明白了其背后动作,才知道从哪里查找原因,解决问题.本节深入OpenERP数据库,探求背后内幕. 对象 当在界面上创建x_qingjd对象时,OpenERP在数据库中新建了一张表x_qingjd,用于保存请假单对象,如下: X_qingjd Table x_qingjd对象及其字段的信息,也写入了数据表ir_model,字段信息在ir_model_fields.ir_model_fields通过model_id字段和ir_model外键关联.如下: ir_model Table ir_model_fields Table 视图界面上创建的视图,写入在表ir_ui_view,其中视图结构保存在arch字段中,是一段XML文本.如下: ir_ui_view Table 菜单和动作 在界面上创建菜单(父菜单和子菜单)时,菜单信息保存在表ir_uimenu,如下: ir_ui_menu Table 动作(Action)信息在表ir_act_window,ir_act_window_view,ir_values中.其中Action的基本信息在ir_act_window中,字段res_model定义了和本Action关联的对象.Action和视图的关联信息在ir_act_window_view中,和菜单的关联信息在ir_values中. ir_act_window Table ir_values Table Action的最大玄机在表ir_values中,如本例,表ir_values中的字段model和res_id表示,本Action的触发菜单是ir_ui_menu表中的id=104的菜单项,这正是 请假单 菜单.字段value表示本Action触发哪个动作,本例中value='