介绍新版本的odoo开始缩小workflow的应用,举荐应用workflow-ish的形式来解决工作流过程很多模块中还是应用到工作流,这里我记录一个简略的实例,欢送大家给出倡议。在本实例中工作流能够分为两个局部,一部分是“view视图”,一部分是“model办法”和相干的“流程字段”定义流程流转字段state = fields.Selection([ ('draft', '草稿'), ('read', '已阅'), ('write', '已写心得'), ('submit', '已上传心得')], string='Status', default='draft', readonly=True, copy=False, track_visibility='onchange')Selection 是一个多值抉择的字段类型,外面能够定义一个数组集。
odoo工作流String 是一个字段前台显示的值。default 是一个默认的初始的状态新创建数据后会默认加载这个状态初始值。track_visibility 流程变更可见性。readonly 是定义改状态值是否只读。定义工作流程的 def@api.onedef button_done(self): self.state = 'read' self.message_post('变更——————草稿 ——> 已阅', subtype='mail.mt_note')@api.onedef button_confirm(self): self.state = 'submit' self.message_post('变更——————已写心得 ——> 已上传心得', subtype='mail.mt_note') for rel in self.employee_ids: domain = [('id', '=', rel.id)] employee = self.env['files.employee'].search(domain) data = { 'name': employee.name, 'email': employee.work_email, 'event_id': self.id, 'wx_number': employee.wx_number, } self.env['activity.registration'].create(data)定义页面的 View<record model="ir.ui.view" id="view_activity_form"> <field name="name">activity.event.form</field> <field name="model">activity.event</field> <field name="arch" type="xml"> <form string="党员流动"> <header> <button string="流动已阅" name="button_done" states="draft" type="object" class="oe_highlight" groups="base.group_user"/> <button string="已上传流动心得" name="button_confirm" states="read" type="object" class="oe_highlight" groups="base.group_user"/> <field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/> </header> <sheet>states="draft" 是button显示与否的判断条件,如果值是这个值,则改button显示可见,即可用。class="oe_highlight" 是引入的 button 的款式,可自定义款式并引入。name="button_done" 是调用模型中的办法字段,如该办法调用后盾 def button_done(self) 办法。string="流动已阅" String是该状态按钮显示的值,最好定义为英文,而后进行国际化i18n翻译。<field name="state"... 是工作流程流转的状态值显示,到哪个阶段显示到哪个阶段的值。widget="statusbar" 款式成果展现。