美文网首页
Odoo12实现定时任务

Odoo12实现定时任务

作者: 千年码妖 | 来源:发表于2019-06-20 22:24 被阅读0次

    在ERP实施过程中,定时自动执行一些数据处理任务是非常有必要的,比如每月初将上月某些数据设置为过期,可以大量减少人工工作量。

    在Odoo中提供了非常简洁的定时任务实现方式,不过每一代的Odoo版本中代码略有不同,此处以odoo12为例:

    1. 定义定时任务属性

    <record id="ir_cron_submit_ap_action" model="ir.cron">

                <field name="name">自动提交资金计划</field>

                <field name="model_id" ref="model_amount_plan"/>

                <field name="state">code</field>

                <field name="code">model.submit_amount_plan()</field>

                <field name="interval_number">1</field>

                <field name="interval_type">days</field>

                <field name="numbercall">-1</field>

                <field eval="True" name="doall"/>

                <field name="user_id" ref="base.user_root"/>

            </record>

    上文便定义了一个简单的每天执行的定时任务。其中主要参数说明如下:

    name:

    定时任务名称

    user_id:

    执行定时任务的用户,不同的用户是有不同权限的,为了保证能有足够权限执行定时任务,一般这里就是base.user_root

    interval_number:

    任务执行的频次,和interval_type字段一起决定了任务执行的间隔时间,比如这里为interval_number为2,interval_type为minutes,就是任务每2分钟执行一次。

    interval_type:

    任务执行频次的单位,可选项有: minutes,hours,days,work_days,weeks,months,意思很好理解,work_days是星期几执行。

    numbercall:

    循环运行的次数,比如你填10,那么任务执行10次后将不再执行,这里-1代表一直执行下去。

    doall:

    如果在服务器重启期间错过了执行时机,是否再次补充执行。

    model_id:

    任务方法所在模型,"model_"加上模型名

    code:

    任务方法,与mode_id一起决定了任务时机到来时,调用哪个方法执行。

    2. 在python中定义要定时执行的python代码

    在相应模型的代码中定义相应的python方法,如下:

    def submit_amount_plan(self):

            lines = self.env['amount_plan'].search([])

            for r in lines:

                r.write({'state':'20'})

    这个任务主要作用是定时将指定模型中的数据全部查找出来,并对其中字段值进行修改。

    相关文章

      网友评论

          本文标题:Odoo12实现定时任务

          本文链接:https://www.haomeiwen.com/subject/jzpsqctx.html