您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > odoo10 开发学习笔记4―工作流
2017/12/25odoo10开发学习笔记4—工作流现在用户已经可以在系统添加请假单了。但是还没有审批流程。先来设置一个简单的审批流程,员工填写请假单(草稿状态)-提交请假单给领导(待审批状态)-领导审批(完成状态)。编辑类文件models/models.py#-*-coding:utf-8-*-fromodooimportmodels,fields,apiclassqingjiadan(models.Model):WORKFLOW_STATE_SELECTION=[('draft','草稿'),('confirm','待审批'),('complete','已完成')odoo10开发学习笔记4—工作流东子·3个月前首发于Odoo学习交流写文章登录2017/12/25odoo10开发学习笔记4—工作流]_name='qingjia.qingjiadan'name=fields.Char(string=申请人)days=fields.Integer(string=天数)startdate=fields.Date(string=开始日期)reason=fields.Text(string=请假事由)state=fields.Selection(WORKFLOW_STATE_SELECTION,default='draft',string='状态',readonly=True)@api.multidefdo_confirm(self):self.state='confirm'returnTrue@api.multidefdo_complete(self):self.state='complete'returnTrue添加了一个字段state,请假单状态,字段类型为fields.Selection,包含三个状态draft(草稿),confirm(待审批),complete(已完成),默认值为draft(草稿),readonly=True属性表示在form视图下是不能修改的。添加了两个方法do_confirm(),do_complete(),用于改变请假单状态。@api.multi修饰符还不明白用途。按钮事件方法必须有返回值,这里没有什么需要返回的值就返回returnTrue然后编辑视图资源文件views/views.xml中的form视图部分!--form视图--recordid=view_form_qingjia_qingjiadanmodel=ir.ui.viewfieldname=name请假单/fieldfieldname=modelqingjia.qingjiadan/fieldfieldname=archtype=xmlformheaderbuttonname=button_confirmstates=draftstring=提交type=workflowclass=oe_highlight/buttonname=button_completestates=confirmstring=批准type=workflowclass=oe_highlightgroups=base.group_user/!--右上角进度显示。--fieldname=statewidget=statusbar//headersheetgroupname=group_topstring=请假单首发于Odoo学习交流写文章登录2017/12/25odoo10开发学习笔记4—工作流=group_topstring=请假单fieldname=name/fieldname=days/fieldname=startdate/fieldname=reason//group/sheet/form/field/record添加了header.../header节,名称可知这是表单布局的头部。其中添加了三个元素,两个按钮,一个状态条。按钮的属性:name:指定按钮点击后的事件名,对应工作流的activity,后面会看到states:表示按钮在什么状态下显示,对应state字段的值type:工作流的按钮固定值workflowclass:按钮的class样式,oe_highlight样式为高亮显示groups:这里就是上一节提到的第三级权限,字段级权限状态条属性:name:状态条绑定字段名widget:类型,状态条固定值statusbar首发于Odoo学习交流写文章登录2017/12/25odoo10开发学习笔记4—工作流类型,状态条固定值statusbar________________________________________在tree视图中加入state字段显示!--tree视图--recordid=view_tree_qingjia_qingjiadanmodel=ir.ui.viewfieldname=name请假单列表/fieldfieldname=modelqingjia.qingjiadan/fieldfieldname=archtype=xmltreefieldname=name/fieldname=days/fieldname=startdate/fieldname=state//tree/field/record新建工作流资源文件views/workflow.xml添加工作流:!--工作流--recordid=workflow_qingjia_qingjiadanmodel=workflowfieldname=name请假单工作流/fieldfieldname=osvqingjia.qingjiadan/fieldfieldname=on_createTrue/field/record这个文件中定义了一个工作流,id为workflow_qingjia_qingjiadan。三个工作流活动,id分别为activity_draft,activity_confirm,activity_complete,两个工作流流转,id分别为transition_draft2confirm,transition_confirm2complete。工作流属性:model:工作流模型,固定为workflowname:工作流名称,任意填写osv:首发于Odoo学习交流写文章登录2017/12/25odoo10开发学习笔记4—工作流工作流绑定的对象模型on_create:创建一个绑定的对象模型的对象时,是否自动生成一个工作流对象。说起来有点绕口,其实就是创建一个请假单时,自动创建一个请假单工作流对象。添加工作流活动:!--工作流活动--recordid=activity_draftmodel=workflow.activityfieldname=name草稿/fieldfieldname=wkf_idref=workflow_qingjia_qingjiadan/fieldname=kinddummy/fieldfieldname=flow_startTrue/field/recordrecordid=activity_confirmmodel=workflow.activityfieldname=name待审核/fieldfieldname=wkf_idref=workflow_qingjia_qingjiadan/fieldname=kindfunction/fieldfieldname=actiondo_confirm()/field/recordrecordid=activity_completemodel=workflow.activityfieldname=name已完成/fieldfieldname=wkf_idref=workflow_qingjia_qingjiadan/fieldname=kindfunction/fieldfieldname=actiondo_complete()/field/recordmodel:工作流活动模型,固定为workflow.activityname:工作流活动名称,任意填写wkf_id:工作流活动所属的工作流idkind:首发于Odoo学习交流写文章登录2017/12/25odoo10开发学习笔记4—工作流:工作流活动类型,有三个可选项,'dummy'不执行任何动作,'function'执行action中定义的python代码,并且执行action_id中定义的serveraction,'subflow'触发subflow_id中指定的工作流。flow_start:表示流程的开始节点添加工作流流转:!--工作流流转--recordid=transition_draft2confirmmodel=workflow.transitionfieldname=act_fromref=activity_draft/fieldname=act_toref=activity_confirm/fieldname=signalbutton_confirm/field/recordrecordid=transition_confirm2completemodel=workflow.transitionfieldname=act_fromref=activity_confirm/fieldname=act_toref=activity_complete/fieldname=signalbutton_complete/field/recordmodel:工作流流转模型,固定为workflow.transitionact_from:流转起始的工作流活动idact_to:流转结束的工作流活动idsignal:触发流转的信号,还记得前面在form视图中添加的工作流按钮buttonname=button_confirmstates=draftstring=提交type=workflowclass=oe_highlight/buttonname=button_completestates=confirm首发于Odoo学习交流写文章登录2017/12/25odoo10开发学习笔记4—工作流=批准type=workflowclass=oe_highlightgroups=base.group_user/按钮name值就是发出的信号,触发对应的流转。最后工作流资源文件views/workflow.xml是这样的:?xmlversion=1.0encoding=UTF-8?odoodata!--工作流--recordid=workflow_qingjia_qingjiadanmodel=workflowfieldname=name请假单工作流/fieldfieldname=osvqingjia.qingjiada
本文标题:odoo10 开发学习笔记4―工作流
链接地址:https://www.777doc.com/doc-4006180 .html