odoo开发培训,技术栈与学习路线分享。第一重要的是对odoo的信心,在最优秀的框架上做好长期作战的准备。而最重要的技术要求,就是对 odoo 已有 “业务应用” 的掌握能力。开发者一方面是程序员,一方面也要把自己当客户,当项目经理。
Odoo 作为全球第一的开源ERP,不仅仅是一个优秀的开发框架,最重要的也是一个企业业务逻辑框架。一旦熟悉,可以高效快速的开发出适合企业业务的互联网化管理平台,作为一个前java开发者的感受,在企业erp这个领域里,效率会是java的5~10倍。同时odoo有着完整而庞大的生态,拥有三万多的开源odoo模块的开放市场,为甲乙双方提供了交互和增值的平台。所以odoo特别适合技术高手和小团队作战。
截至今年2021年,odoo已经连续6年保持65%的业绩增长,自有1700多的开发人员,全球用户达到500万以上。在近期的Gartner调研中,odoo首次进入CRM的三甲位置,打败微软的Dynamics crm,同时我们也看到创始人Fabien频发贺报,企业版业绩火箭般飙升。
Odoo 为我们开启了一道快速实现需求的门,这也导致了很多速成人员进入了odoo之门,要想在这条路上脱颖而出,走得稳,走得远,必须不断学习,进入高手的行列,才能实现对完整项目的控盘。作为乙方,如果你不具备长期技术钻研的条件并为之做好准备,建议尽早远离odoo。作为甲方,备好银子,找对附近的odoo伙伴就够了,时间最贵。
学习能力当然是第一重要的,我们分享一下内训和客户培训的odoo学习路线,主要是根据实践经验,从技术角度小结了下 Odoo 技术栈。
=============
越过了业务入门这道关口,后面就是常规的开发学习过程,多看源码。这里推荐我们这篇文章odoo学习必看-提问的智慧《How To Ask Questions The Smart Way》
然后就是自己动手写代码了,odoo有自己的开发规范,这篇也是学前必读 《odoo开发规范-开发必读-囊括模块视图后端前端规范》。
在持续的odoo学习过程中,我们也分享一个有效的ioLG学习法
- Inbox,记录各种不错的知识点,模块,源码。
- Organization,短期内回顾整理。
- bLog,形成体系文章,发布到网站论坛,群聊,乐为人师。
- Go,行动。这步是关键,把知识变现成方案,可以是规范的模块,也可以是具体的商业项目。
这就是ioLG,简称"我爱老公"学习法。每个小G的完成就是一个周期的里程碑。
将体系化的学习贯彻始终,参考如何才能让自己的学习体系化。
=============
1 odoo
1.1 思想准备
业务适配
功能全面
人财物
全面,快速,准确
全球化,集团化的顶层设计
技术适配
生态
持续,扩展
先进,快
适用性
长期作战的准备
善用资源
提问的智慧
人必自助而后人助之,而后天助之
https://www.sunpop.cn/how-ask-questions-smart-way/
技术栈
https://www.sunpop.cn/odoo_stack_development/
1.2 安装
版本选择
当前商业项目都基于 odoo13
计划,新项目2022年3月后odoo15
1.3 应用的熟悉
销售/采购/库存/制造
业务单据低耦合,通过补货组传递变更
MRP计算规则
会计与产品与业务的结合
用户与权限
翻译及重要性
其它
1.4 开发
环境准备
Windows
Ubuntu
Pycharm/Vscode
Git
开发规范
https://www.sunpop.cn/odoo_develop_guidelines_python_widget_javascript/
框架
标准MVC,三层架构
微服务架构
规范的业务模块化,自动生成web service接口供调用
数据库层
保存所有应用数据
不含任何业务逻辑,不使用存储过程
附件可存于数据库,可存于指定位置
实现PG标准功能,如集群、读写分离等
应用层
包含所有业务逻辑
ORM模型层
封装所有与数据库的交互与通信
Web层
路由控制器
Web通信,标准Json格式的数据输出
Webzerg标准功能,如负载均衡、CDN
客户端层
纯BS浏览器应用
web层
XML定义,转化成Jinja2用于web后台管理
report层
XML+Jinja2定义,转化成Jinja2用于单据与报表
website层
Jinja2定义用于对外网站
pos的特殊性
浏览器本地缓存
Qweb为基础的界面
widget
用于web/report层的通用组件
snippet
用于website层的可拖拖拽通用组件
owl:odoo15版本的mvvm架构
实例
odoo官方教程的第一模块
salei源码
继承机制
模型
视图
权限
widget/report/sippet
2 Python
2.1 语言基础
dict/list/tuple
2.2 主要库
request
pandas
wechat
3 Linux主机基础
3.1 基本指令
3.2 权限理解
3.3 排障,资源占用,安全,网络
4 数据库postgresql
4.1 原则上不允许对数据库操作,全部通过odoo orm
4.2 主要用于调试,升级与bug处理
4.3 时区的理解与处理
4.4 如何登录,选择数据,查看数据select
5 网页基础
5.1 html5/Jinja2框架
5.2 css/less/bootstrap
5.3 javascript/jquery/underscore
6 学习资料
6.1 开发规范及整体
https://www.sunpop.cn/odoo_develop_guidelines_python_widget_javascript/
6.2 开发起点,从开发第一个模块开始
https://www.odoo.com/documentation/13.0/howtos/backend.html
app_product_brand
https://github.com/guohuadeng/app-odoo
6.3 官网应用教程(Sunpop.cn 整理后的国内镜像)
https://www.sunpop.cn/documentation/user/12.0/zh_CN/index.html
6.4 官网开发教程(Sunpop.cn 整理后的国内镜像)
https://www.sunpop.cn/documentation/12.0/index.html
https://www.sunpop.cn/category/erp/odoo_developer/
https://www.odoo.com/documentation/13.0/
6.5 第三方翻译的开发教程
注意一定以官方为主
https://alanhou.org/category/odoo/
6.6 odoo软件(英文版)+odoo源码
https://github.com/odoo/odoo
6.7 官网应用市场/OCA
https://github.com/oca
6.8 odooHelp/Stackoverflow/Google/Baidu