zoukankan      html  css  js  c++  java
  • odoo 工作流

    odoo工作流

    介绍

    • 新版本的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.one
    def button_done(self):
        self.state = 'read'
        self.message_post('变更——————草稿 ——> 已阅', subtype='mail.mt_note')
    
    @api.one
    def 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" 样式效果展示。

  • 相关阅读:
    使用Nginx搭建图片服务器(windows)
    Vue中使用百度地图——设置地图标注
    大型网站的 HTTPS 实践(三)——基于协议和配置的优化(转)
    大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响(转)
    大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理(转)
    TCP的状态兼谈Close_Wait和Time_Wait的状态
    SYN Flood攻击及防御方法 (转)
    LINUX下解决netstat查看TIME_WAIT状态过多问题(转)
    IP负载均衡技术
    ubuntu下安装Apache+PHP+Mysql
  • 原文地址:https://www.cnblogs.com/chenshuquan/p/10528649.html
Copyright © 2011-2022 走看看