开发者社区> openerp.hk> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ODOO 开发异步限制规范【表单类】

简介: ODOO 开发异步限制规范【表单类】 异步类型一:同时操作异步; 描述:两个访问者,同时对一张表单进行编辑。可能出现异步,导致最终存值出错。故此,需要在表单方法中添加检测是否有其他人在操作。 【未来,需要添加此表单正在被 N 人浏览及此表单正在被 partner_id 改写,等前端显示功能】 ODOO 框架支持并发控制,以防止由于同一文档的并发修改而导致数据丢失,即使这不是一个常见的问题(请参见下面的原因)。
+关注继续查看

ODOO 开发异步限制规范【表单类】

异步类型一:同时操作异步;

image

描述:两个访问者,同时对一张表单进行编辑。可能出现异步,导致最终存值出错。故此,需要在表单方法中添加检测是否有其他人在操作。

【未来,需要添加此表单正在被 N 人浏览及此表单正在被 partner_id 改写,等前端显示功能】

ODOO 框架支持并发控制,以防止由于同一文档的并发修改而导致数据丢失,即使这不是一个常见的问题(请参见下面的原因)。

该机制是通过乐观并发控制(OCC)实现的,并且自 Openerp5.0 开始就存在。不使用悲观锁,因为在无状态的基于 Web 的环境中(用户可以随时离开桌面)是不现实的, 而且在资源争用方面通常是一个不好的解决方案。大多数具有并发控制机制的现代框架都使用 OCC(Rails、Google 应用程序引擎等)。

实现方式;

ODOO 的 OCC 实现依赖于虚拟的 last_update 字段的使用,客户机可以在任何模型上作为常规 read()调用的一部分显式请求该字段。该值将从写入日期自动推断,并创建框架在任何记录上默认维护的日期字段。

当客户机稍后对同一条记录进行 write()调用时,它可以传递包含原始上次更新值的额外上下文结构,如果同时更新了记录,系统将自动引发错误。有关 last_update

详细信息,请参阅 _check_concurrency()方法。

当发生这种情况时,客户机堆栈可以做出适当的反应,例如显示记录详细信息并询问用户她想强制更新(在这种情况下,可以简单地更新最后一次更新的值)或放弃她的本地更改。

image
image

异步类型二:安装模块异步;
image

描述:在实际生产环境中,会出现系统运行时,安装模块的情况。这时,模块会把一些默认的值写入数据库,但没有更新缓存。

【因此,需要强制添加缓存更新方法】

为了保障:ODOO 在以下方法中,添加为了更新缓存,_cache.update

image

create 方法
new 方法
write 方法
_prefetch_field 方法

image
image
image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
why my own list cannot automatically scroll to load oData
Created by Wang, Jerry, last modified on Jan 26, 2015
29 0
.NET 调用CMD执行
using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Windows\System32\cmd.
852 0
+关注
openerp.hk
OpenERP.HK 国际业务覆盖老挝、加拿大、美国、印度、韩国等地,国内业务覆盖福建、重庆、四川、广州、上海、宁波、陕西、深圳、山东、云南等城市。 2016 年,OpenERP.HK 获中国电子报《成都市信息消费优秀解决方案》 2017年6月,上线saas平台,提供3000
11
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载