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

目录
相关文章
|
7天前
|
前端开发
开发指南002-前后端信息交互规范-返回类ResponseResult
返回类有两个,一般返回类ResponseResult和分页返回类PageResult,本篇介绍ResponseResult
|
7天前
|
前端开发
|
7天前
|
前端开发
|
6月前
|
XML JavaScript 前端开发
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
65 0
|
4月前
|
移动开发 小程序 JavaScript
【uniapp 小程序开发页面篇】代码编写规范 | 页面编写规范 | 小程序API
【uniapp 小程序开发页面篇】代码编写规范 | 页面编写规范 | 小程序API
112 0
|
6月前
|
Web App开发 JavaScript 前端开发
通过 SAP UI5 ODataModel API 在 JavaScript 代码里访问 OData 元数据试读版
通过 SAP UI5 ODataModel API 在 JavaScript 代码里访问 OData 元数据试读版
51 1
|
XML 自然语言处理 JavaScript
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示
|
JavaScript
【Vue 开发实战】实战篇 # 40:自己封装一个支持自动校验的表单项
【Vue 开发实战】实战篇 # 40:自己封装一个支持自动校验的表单项
108 0
【Vue 开发实战】实战篇 # 40:自己封装一个支持自动校验的表单项
|
存储 安全 PHP
【Laravel】在企业级项目中使用Laravel框架中的工厂状态下的页面方法 Code Verifier以及错误处理
【Laravel】在企业级项目中使用Laravel框架中的工厂状态下的页面方法 Code Verifier以及错误处理
102 0
【Laravel】在企业级项目中使用Laravel框架中的工厂状态下的页面方法 Code Verifier以及错误处理
|
前端开发
前端工作小结36-富文本组件封装
前端工作小结36-富文本组件封装
73 0