Odoo12实现定时任务

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

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

1. 定义定时任务属性

            自动提交资金计划

           

            code

            model.submit_amount_plan()

            1

            days

            -1

           

           

       

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

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实现定时任务)