SlideShare a Scribd company logo
1 of 32
Download to read offline
ODOO / OPENERP 
PYTHON 环境的快速数据库应用开发 
李维 liwei@sandwych.com
内容概要 
传统管理系统开发的痛点 
Odoo简介 
实际开发演示 
总结
传统技术的痛点
定义:以数据库为中心的业务应用 
各种管理系统: 
◦进销存 
◦物流管理系统 
◦人事管理系统 
◦XXX 政务系统 
◦各种行业垂直系统
静态语言(Java & C#)很费劲 
大量样板代码用于链接语言和外部世界(想想Java的Hibernate) 
缺乏动态语言的灵活性 
需要编译运行,开发效率低 
C#支持dynamic,但静态动态代码混合非常别扭 
代码性能很高,但管理系统的瓶颈在IO(数据库、网络连接etc.)
顺带黑一下NODE.JS 
管理系统往往业务逻辑复杂,但吞吐量是可以预估的 
数据库采用异步操作将大大增加业务逻辑实现的复杂性
原来叫OpenERP,8.0 以后改名叫Odoo:http://www.odoo.com 
以GPL3 开源的跨平台Python 业务应用框架及ERP系统 
纯HTML5 界面 
对第三方友好:方法及数据均可通过JSON-RPC/XML-RPC 访问 
完全模块的结构: 
◦可利用现有模块做二次开发 
◦也可只用基础框架完全开发非ERP 系统
ODOO 的“三层”架构 
浏览器 HTML5 + JS 
应用服务器 
Python 
数据库 
PostgreSQL
简单的销售订单管理 
功能: 
◦产品信息CRUD 
◦客户信息CRUD 
◦销售订单CRUD 
模块名称:sales
模型(表)定义分析 
产品信息 
sales.product 
客户信息 
sales.customer 
销售单主表 
sales.order 
销售单明细表 
sales.order.line
模块结构 
sales 
模块目录 
__openerp__.py 
模块元信息 
__init__.py 
Python 包声明 
sales_view.xml 
视图数据定义 
sales.py 
模型(表)定义及 实现代码
模块元信息文件:__openerp__.py
标准的包导入文件:__init__.py
简单的ODOO 模型(sales.py) 
无聊的标准模块导入, blah…blah…
视图和菜单:sales_view.xml 
产品列表视图定义 
产品表单视图定义 
菜单动作定义 
菜单项定义
关于视图的一些解释 
视图是通过XML定义的数据导入数据库中,Odoo中的一切都是保存在数据库里的 
Odoo支持多种视图:树形/表单/日历/看板/图表,也支持使用HTML+CSS+JS 自定义 
没错,列表也是用tree 来定义的,Odoo允许显示层次数据 
表单视图包含多种部件(widget),如: 
◦多对一字段可使用默认widget 和标准下拉列表两种方式显示 
◦浮点数字段可使用数字文本框、进度条、时间框多种方式显示
总结一下我们刚才干了些什么 
1.定义了一个简单的Odoo模块 
2.创建了一个产品的模型 
3.定义了产品的视图、菜单动作及菜单项
安装我们开发的模块
我们的第一个CRUD:列表
我们的第一个CRUD:表单
也可以直接在列表里编辑
实现在列表里直接编辑 
不用定义表单视图 
tree 定义里增加editable=“bottom” 即可: 
◦“bottom”表示新纪录在下方新增 
◦“top”表示新纪录在上方新增
我们得到了什么结果? 
Odoo在数据库里帮我们建好了产品表,以后修改模型Odoo也会帮我们自动修改表 
◦增加列 
◦将列设为非空 
◦添加/删除索引 
◦etc… 
没写一句HTML/CSS/JS 就免费得到CRUD 界面,甚至支持数据导入和记录复制
稍微复杂的模型:订单
稍微复杂的模型:订单明细
订单的表单视图定义
订单列表
订单表单
10 行代码就能增加日历视图
自定义界面也没问题
ODOO 开发的优势 
大大减小用户界面开发工作量 
敏捷开发,CRUD 功能的开发时间数量级从天减为小时 
数据、代码均为文本可进行版本管理,从此摆脱多人开发数据库拷来拷去的问题 
全栈开发框架: 
◦框架内置完善的权限系统:用户、角色(用户组)、访问控制表、菜单视图权限、记录过滤 
◦Code-First 的ActiveRecordPattern ORM 
◦前台JS 模板系统QWeb 
◦定时任务 
◦报表系统 
◦多语言、多货币、多时区支持 
◦有限状态机工作流
感谢! 
源代码仓库:https://github.com/oldrev/odoodev-demo-2014

More Related Content

Viewers also liked

Viewers also liked (10)

SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
 
3 Super Easy Ways to Make An Eye-Catching Slide Template
3 Super Easy Ways to Make An Eye-Catching Slide Template3 Super Easy Ways to Make An Eye-Catching Slide Template
3 Super Easy Ways to Make An Eye-Catching Slide Template
 
Odoo 商用系統基本介紹
Odoo 商用系統基本介紹Odoo 商用系統基本介紹
Odoo 商用系統基本介紹
 
6 Ways to Cook Your Capability On Slides Preparation
6 Ways to Cook Your Capability On Slides Preparation6 Ways to Cook Your Capability On Slides Preparation
6 Ways to Cook Your Capability On Slides Preparation
 
小小技巧,讓你的溝通更有效率
小小技巧,讓你的溝通更有效率小小技巧,讓你的溝通更有效率
小小技巧,讓你的溝通更有效率
 
Making UX Matter to Your Company
Making UX Matter to Your CompanyMaking UX Matter to Your Company
Making UX Matter to Your Company
 
用社群形塑品牌形象 Social Media Marketing & Branding
用社群形塑品牌形象 Social Media Marketing & Branding用社群形塑品牌形象 Social Media Marketing & Branding
用社群形塑品牌形象 Social Media Marketing & Branding
 
What is ux?
What is ux?What is ux?
What is ux?
 
AWS電商和零售業解決方案介紹
AWS電商和零售業解決方案介紹AWS電商和零售業解決方案介紹
AWS電商和零售業解決方案介紹
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 

Similar to Open erp python-快速数据库应用开发

Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
kewuc
 
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
thinkinlamp
 
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
samon127
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
drewz lin
 
Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
yp_fangdong
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
Monster Supreme
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
yiditushe
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
areyouok
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
areyouok
 

Similar to Open erp python-快速数据库应用开发 (20)

Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
 
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
 
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
Ria lqj
Ria lqjRia lqj
Ria lqj
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
From Coders to Builders of the Intelligent World
From Coders to Builders of the Intelligent WorldFrom Coders to Builders of the Intelligent World
From Coders to Builders of the Intelligent World
 
Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
 
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
 
2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
Velocity2011分享
Velocity2011分享Velocity2011分享
Velocity2011分享
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
Android工作坊
Android工作坊Android工作坊
Android工作坊
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 

Open erp python-快速数据库应用开发