Odoo 简介
Odoo历史
Odoo8的前身时"Tiny ERP",最初是由比利时的Fabien Pinckaers创建的。到2009年的时候,发布第5版本。公司获得风投,盈利迅速增长,软件更名为OpenERP。OpenERP这个名字最为人们熟知,当时软件已经包含几百个模块了,从财务管理、采购/销售管理、库存管理到人力资源管理、销售点管理、项目管理等等都有。当时可能某些模块的功能已经开始超过传统意义上的ERP(Enterprise Resource Planning,企业资源规划)的定义(不过最新的ERPⅡ定义则更广泛)。
而在2014年9月,软件发布第8版时,在之前版本逐渐优化的web client这一块的基础上,进行了大范围的功能增强。比如有了Website builder模块,可以方便公司快速架构出自己的网站;e-commerce模块方便公司快速搭建销售平台;还有business intelligence这个模块,可以辅助生成高质量的说明演示用的图形等等。这使得OpenERP这个名字已经不能很好地说明这个软件的壮志雄心了,于是软件更名为Odoo这个名字了,目前最新的版本是Odoo12(该版本为开发者版本,稳定版本为Odoo11)。
可以看得出来目前该软件的开发方向就是基于web client/server模型,将公司内部所涉及到的所有的信息流都整合起来,其不仅包括具体实施层面给,也包括分析决策层面。可以预见不久的将来Odoo开发将快速为公司构建出这样一个生态圈:
ERPⅡ或商业智能
随着信息时代的到来,商业也不可避免地走向信息化,智能化。最新的ERPⅡ的概念包含的内容如下所示:
- Business Intelligence商业智能,其主要关注于分析数据,并将数据变成知识这一过程;
- e-Commerce电子商务,关注对外战略;
- Enterprise asset management企业资产管理,有效可持续地管理公司的资产生命周期,用强有力的分析工具来提高资产使用率和削减成本;
- Procurement(SRM)采购,最大化的节约成本和支持终端对终端的采购,还有物流过程;
- Production(PLM)生产,帮助管理和优化生产力和物料资源。时MRP的设计版,这里谈论的PLM不仅要解决物料需求问题,还要解决生产的时间问题,从而达到优化生产能力的目的;
- Distribution(SCM)配送,控制仓库流程,使其能够对补给需求或更改做出快速的反应;
- Accounting会计,自动化财务管理,同时要确保管理的便捷和对绩效做出实时反映;
- Human Resource人力资源,维护一个完整的雇员数据库,更好地使用所有雇员;
- Corporate performance and governance公司表现监管,对公司的各个部门更高的控制,目标让他们能够流水线作业;
- Customer services(CRM)客服,获取和维护与客户的关系,充分利用客户的体验来进行知识管理评估(与BI模块结合紧密);
- Sales销售,具体的订单确认,下单,货运和开发票等;
商业智能
商业智能(Business intelligence)的概念由Howard Dresner(1989年)通俗化而被人们广泛了解。其将商业智能定义为:一类由数据仓库(Data warehouses)、查询报表、数据分析、数据挖掘、数据备份和数据恢复等部分组成的、以帮助企业决策为目标的技术及其应用。目前商业智能被理解为将企业中的现有数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账日、客户和供应商资料及来自企业所处行业和竞争对手的数据,以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策既可以是作业层的,也可以是管理层和策略层的决策。商业智能(BI)的架构示意图:
典型BI系统包括:
- ETL过程:ETL过程是指对于数据的提取(Extraction)、转换(Transformation)和装载(Load)。该部分从各业务系统中抽取、转换、装载数据导数据仓库,此部分通常提供一些配置手段,使得用户能够比较方便的从各种数据源获得数据,并设置规则,将数据转换成需要的形式,Odoo带有ETL模块;
- 数据仓库:用于存放ETL抽取回来的数据,此部分通常是经过数据仓库优化的关系数据库。用于数据仓库的关系数据库特别适合于处理大数据量及多维数据集。Odoo的BI模块直接以PostgreSQL数据库作为数据仓库;
- OLAP:通常是实现了MDX(多维数据查询,Multi-Dimentional eXpress)语言的多维数据集(Cube)查询器。MDX有些类似SQL,但比SQL更简单,是数据分析语言的事实标准,OpenERP的BI模块支持MDX语言;
- 报表工具:用于展现MDX的查询结果,通常提供方便手段访问和格式化数据,提供丰富的数据呈现方式。Odoo的BI模块以pyChart作为报表工具,报表开发方法和Odoo中的Graph视图类似;
下图很好地说明了Odoo技术框架:
- PostgreSQL:数据库;
- Object Relation Mapping:就是大家熟知的SQL ORM包装曾,Odoo除了使用基本的Python之外,ORM层是Odoo自己写的;
- Base Module Distribution:官方基本模块;
- Report Engine:负责生成各种报表,目前支持的报表格式有PDF,OpenOffice,HTML三种;
- Workflow Engine:工作流引擎,支持任意复杂度的工作流;
- WebService:提供网络调用接口,目前支持Net-RPC,XML-RPC两种,Odoo和flask一样使用Werkzeug作为WSGI层的包装,jinja2作为模板工具,然后剩下的框架部分是Odoo自己写的;
Python模块分析
Odoo这个框架使用了很多模块,从这些模块的使用我们可以大致看出Odoo的工作原理,其中主要的模块有:
- psycopg2 PostgreSQL数据库接口,其ORM层Odoo是自己写的,python中有类似的模块SQLAlchemy或者peewee等;
- Werkzeug和jinja2作为Odoo网络服务器框架的基础,同样flask也基于这两个模块;
- babel为网页提供国际化方案,MarkupSafe可处理Markdown标记语言;lxml用于分析网页,mock和unittest2用于单元测试加强,pyserial用于串口通信,pyusb用于处理usb;requests用于处理网络协议,xlwt用来支持excel表格,pillow用于图像处理。这些模块都较好,目前也处于活跃开发中,已支持Python3;
- pyPDF模块用来处理PDF的,以后推荐使用pypdf2模块。pychart这个模块也被废弃了,关于后台运算和绘图推荐使用numpy和matplotlib来解决;
原文地址:https://www.cnblogs.com/love9527/p/9172792.html