odoo17发布了,如果说odoo16是一个承前启后的版本,那么odoo17则完全抛弃了历史包袱,全面简化了前端代码,是一个里程碑式的版本。
在学习odoo的过程中,结合对源码的阅读,对odoo的设计哲学有了一些自己的感悟。
一、odoo的定位
odoo的定位是为中小企业提供的一套企业信息管理低成本的解决方案。 重点有如下几点:
1、提供一整套解决方案,支持模块化开发和部署,将所有的模块集成到一个平台上,从源头解决信息孤岛的问题,
2、社区支持。首先,odoo官方提供了大量开发好的模块,开箱即用,即使不能满足需求odoo社区还有大量的第三方模块,可以花少量的钱甚至免费就可以使用这些模块。
3、高效的、低成本的开发方式。如果需要自己定制开发,那么odoo提供的开发方式也能极大的加快开发效率。odoo最大的便利在于提供了很多的前端组件,让开发者的重心放在后端业务逻辑的开发上,而不必在前端上浪费大量的时间和精力。 传统的开发方式,前端和后端分离,大家通过接口进行交互,一般来说需要两个人才能搞定,而odoo开发,不需要太过于关注前端,整体功能一个人完全可以搞定。
在企业数字化转型蓬勃发展的今天,对于中小企业而言,odoo是一个非常好的解决方案。
二、odoo的设计哲学
现在步入正题,谈谈odoo的哲学哲学。
1、从前后端分离的角度讲
odoo是一个前后端分离的系统,二者通过rpc或者orm服务进行通讯。 前端核心是owl组件系统,后端核心是orm。
2、从数据的角度理解
odoo是一个高度数据驱动的系统,数据分两个层面来理解:
2.1、数据定义
通过xml文件对数据进行定义, 包括菜单,动作,视图,字段,等等。odoo中的一切模型数据,都可以在xml中进行定义,可以继承,可以覆盖。但是最终xml中的也仅仅是定义,odoo并不会直接从xml中加载数据。
2.2、数据注册
xml中定义的数据在模块安装或者升级的时候都会插入到数据库中的表中,odoo启动的时候会读取相关的表来获取数据。
三、从逻辑的角度理解
从上往下可以分成5个层次,呈金字塔型,越上面的越简单,越下面的越复杂。
后面的文章中,我会分别就这五个层次结合源码进行讲解。