odoo技术开发白皮书

版本:0.17.3

作者: Kevin Kong

前言

Odoo是什么

从传统意义上说,Odoo是一个由python编写的开源ERP软件;依据官方的解释,Odoo的功能已经超越了ERP的范畴,是一种企业级的应用套件的集合;从企业角度,这是一个可以根据自己业务灵活定制的宝石;从Odoo官方合作伙伴的角度,这是一个星星之火可以燎原的金矿;从开发人员的角度,这是一个高度集成,可以快速开发业务的开发框架。

为什么叫Odoo

官方博客中有一段很有意思的段落,大意是odoo官方研究了全球顶尖的多个公司,然后发现他们的名字中都或多或少的包含了若干个O,官方也想借此寓意,因此起名为Odoo。另外的一种解释为,On Demands Open Object(按需定制,Open Object是Odoo底层的开发框架对象,借助此框架你甚至可以抛开既有模块开发完全独立的新应用)。

Odoo的历史大概可以分为三个时期,伴随着Odoo的三次改名。最早可以追溯到2004年,那时候还叫TinyERP(1.0版本),创始人Fabian在自家企业使用中开发而成,后来随着发展壮大,官方改名为OpenERP。版本也来到7.0,软件架构也有最初的C/S模式改为了B/S架构。到了8.0时代,官方再次改名为Odoo,也就是我们现在看到的版本。

odoo能做什么

笔者从2013年底开始接触Odoo,从最初的OpenERP 7到现在的odoo 16,中间有过一段时间的远离,现在机缘巧合下又重新出发。Odoo是一个优秀的开源ERP框架,有这诸多的优点,部署简单、开发迅速、可扩展性好,当然一个事物有有点就必定会有缺点,缺点就是语言小众,资料奇少,最重要的一点也是最致命的一点就是它真的只是一个框架,虽然有众多的第三方模块加成,但是真的很难做到开箱即用,这也就对它的潜在使用者造成了门楷,看起来美好,像用起来却不得不找专业的公司实施或者招一个懂行的人进行开发。

个人觉得,Odoo最好的使用模式,是公司或者集团内部,由IT团队进行支持开发,然后不断迭代,内化成自己公司的内部一套ERP系统是最合适的。IT团队懂技术,产品团队优化需求,再经过持续迭代和优化,最终能够成为一套不错的解决方案。因为IT团队本身就是需要投入,这样就能将成本摊平,提高软件使用的性价比。本系列教程也是从技术层面出发,希望能多的人能够了解到这套系统的架构,从中学到一些不错的思路,而对于商业化层面的东西,我只能说,偶尔兼个职也是不错的。

Odoo的架构

持久化层,Odoo使用的数据库是Postgresql。Postgresql是一个强大的开源关系数据库,相对于Mysql,Pg的知名度稍小,但是其性能远在Mysql之上,具笔者所知,国内很多互联网公司都在使用postgresql。

业务逻辑层,Odoo有自己一套ORM框架,虽然名为ORM,但是目前并不支持切换数据库,想要切换数据库的同学可以死心了。开发语言是Python,11.0版本之前使用python2,11.0版本开始支持Python3,12.0仅支持python3。ORM层类似但并非django的ORM框架,内置的web服务器使用的跟Flask框架一样的Werkzeug。

前端使用自己开发的Qweb框架,不需要写HTML代码,只需要根据Odoo定义好的xml结构编写布局文件即可。

这套框架和优势是,一旦学会了规则,实现业务高效简洁。缺点是,集成度高,且有学习门楷,对新手并不友好,框架层面的定制自由度不高。

社区版和企业版

TinyERP和OpenERP时代,源代码真的是完全开放的,但是不知道是不是由于盈利的压力,从9.0开始,Odoo官方将odoo分成了两个版本,一个社区版和一个企业版。社区版提供基础功能,一些高级模块则放到了企业版中,只有从官方或制定渠道购买了Lincese才能使用。坏消息是,从趋势上来看,社区版被阉割的情况越来越严重,留给社区版的标准功能越来越少。好消息是,对于开发者来说,这这两者使用的技术还是一致的。

Odoo在中国

Odoo最早由先安科技的校长引入中国,然后国内出现了多个专门做Odoo实施的咨询公司。经历了这些年的发展,国内的生态有了起色,越来越多的公司开始接触并使用odoo。由于Odoo的起源地是比利时,所以Odoo原生的操作模式和思维都是便西方式的,这对国内的用户来说可能是个不太友好的体验。笔者曾经供职的一家互联网公司,在实施过程中就曾不止一次听到过来同事的抱怨。可能在项目主导者眼中,这是一件利器,但在使用者眼中可能并非如此。

Odoo的国内市场,最为知名的合作伙伴是浪潮集团,浪潮将odoo重新打包成了一个新的产品PSCloud,实现odoo产品的本土化。但是就目前的态势来看,浪潮的思路也是做SAAS模式。个人并不看好这种模式,Odoo社区版虽然免费,但实施起来却需要相当的持续的投入,这对企业的长远来说并不算是一个性价比高的选择。笔者曾经供职的一家企业,在2014年开始使用Odoo,后来因为技术的支持不到位(也许有资金层面的原因),现在据说已经退回到金蝶用友的软件了。对于国内一些靠Odoo实施生存的企业来说,个人也持悲观模式,其实Odoo入华已经年头不少了,从6.0(2012)开始国内就有先驱开始做这块的市场,现在7年已经过去了,依旧没有看到一家能够壮大的专业实施公司。这里边需要思考的东西挺多,当官方都吃不饱(甚至跑过来跟代理商抢饭吃)的时候,处在下游的公司就更难说活得美好了。

为什么要写这样一本书

经常有网友咨询,问我有没有什么资料可以供他们进行学习参考,我在Google搜了一下互联网上搜了一下关于Odoo的教程,大多都是些零星的入门资料,不够系统也不够全面。国内社区也有人在组织自出版了一些纸质的资料,实施手册、开发手册什么的,也开始有正式的出版物面世,这对国内的开发环境都是好事,毕竟现在从事这方面开发工作的人还是少数。

我曾经在博客园也写过几篇教程类的文章,但是没能坚持下来,现在看也有些过时了。现在正好有时间,就争取写一个图文并茂,力求面面俱到的教程吧,也权当是对自己知识的一个重新梳理。本书的目的是给小白读者一个可以入门的实用教程和给老鸟们一个手头的参考资料。本书将采用电子版的方式发布,相关的代码都可以在我的github上面找到。

本书的结构

本书分为七个部分,第一个部门主要介绍开发的基础知识,供刚开始学习开发的小白们入门学习,这部分会带领读者编写一个全新的模块,让读者能够亲历亲为。第二个部分是高级知识,主要介绍一些比较高级底层的内容,属于小白进阶的内容,这部分内容在开发实战中会经常用到。第三个部分是技巧类参考内容,属于冷门知识,供对于底层有兴趣的同学和有一些特殊需求的同学参考的东西。第四部分主要介绍14.0之前的Odoo的前端组成,需要有一定的JS基础才可以看懂。第五部分为14.0时,Odoo官方推出的新前端框架OWL的介绍。第六部分为Odoo的相关部署和运维知识。第七部分为附录,主要是一些不属于前六个部分的内容和一些常用的第三方模块推荐。

本书基于odoo16.0,部分代码涉及了企业版代码。

视频教程

笔者于最近成为了B站萌新UP主浓眉大眼的长腿叔叔, 计划将第一部分的教程以视频的形式再做一遍, 欢迎有兴趣的小伙伴们关注并一键三连.

捐助和打赏

如果您觉得本书对您有所帮助,可以请笔者喝杯咖啡。

微信    支付宝

我们是谁

最后介绍一下我们自己。

笔者从2014年开始接触odoo的前身OpenERP,后来在北京某在线OTA互联网公司使用Odoo 8.0完成某智能硬件的供应链实施。2019年,离开了短暂停留4年的北京,回到了青岛,在某跨境电商公司任职,主要从事Odoo在供应链端的实施与应用。

2023年,创建了青岛欧姆网络科技,开始了新的征程,希望未来能够帮助更多中小企业完成信息化的过程,提高效率,节省成本,做一些有意义的事情。在此期间,我们做了自己的公众号,并拥有了不少的粉丝。如果你有兴趣可以扫码下面的二维码关注。

odoohub

我们始终认为,作为出色的企业应用odoo不仅应该是现在的发展现状,但是我们也应该认清现实,就是单一依靠odoo来给企业做信息系统是不容易孕育出一个有规模的公司的。因此,我们希望能够从众多客户的需求中提炼出一个个产品化的解决方案,然后推向市场。

如果你有这方面的需求,欢迎与我们联系。

oumu

results matching ""

    No results matching ""