Skip to content

03. Odoo基础架构

多层应用程序

Odoo 采用多层架构,展示层、业务逻辑层和数据存储层是分离的。更具体地说,它采用三层架构:

Odoo三层架构图

展示层由 HTML5、JavaScript 和 CSS 组成。逻辑层完全采用 Python 编写,数据层仅支持 PostgreSQL 作为关系型数据库管理系统(RDBMS)。

注: 自 Odoo 15.0 版本起,Odoo 正积极转向使用自主研发的 OWL 框架作为呈现层的一部分, 旧版 JavaScript 框架目前仍受支持,但将逐步被弃用。

Odoo 模块

服务器端和客户端扩展均打包为模块,这些模块可选择性地加载到数据库中。模块是一组针对单一目的而设计的函数和数据的集合。

Odoo 模块既可以为 Odoo 系统添加全新的业务逻辑,也可以修改和扩展现有的业务逻辑。例如,可以创建一个模块,将用户所在国家的会计规则添加到 Odoo 的通用会计支持中;也可以创建另一个模块,为公交车队的实时可视化提供支持。

Odoo 中的所有内容都始于模块,也终于模块。

术语说明: 开发人员将业务功能归类到 Odoo 模块中。主要面向用户的模块会被标记并作为“应用”对外展示,但绝大多数模块并非“应用”。模块也可称为“插件”,而 Odoo 服务器通过“插件路径”(addons_path)查找模块。

模块的组成

一个 Odoo 模块可以包含多个元素:

业务对象 业务对象(例如发票)被声明为一个 Python 类。借助 ORM 层,这些类中定义的字段会自动映射到数据库列。

对象视图 定义用户界面显示

数据文件 声明模型数据的 XML 或 CSV 文件:

  • 视图或报表;
  • 配置数据(模块参数化、安全规则);
  • 演示数据;

Web 控制器 处理来自 Web 浏览器的请求。

静态 Web 数据 Web 界面或网站使用的图像、CSS 或 JavaScript 文件。

上述元素均非必备。某些模块可能仅添加数据文件(例如:特定国家的会计配置),而其他模块可能仅添加业务对象。在本教程中,将学习如何创建业务对象、对象视图和数据文件。

Web 控制器 处理来自 Web 浏览器的请求。

静态 Web 数据 Web 界面或网站使用的图像、CSS 或 JavaScript 文件。

这些元素均非必需。某些模块可能仅添加数据文件(例如特定国家的会计配置),而其他模块可能仅添加业务对象。在本教程中,将学习如何创建业务对象、对象视图和数据文件。

模块结构

每个模块都是模块目录下的一个子目录。模块目录通过 --addons-path 选项指定。

Odoo 模块由其清单文件定义。

当 Odoo 模块包含业务对象(即 Python 文件)时,这些文件会组织成一个包含 __init__.py 文件的 Python 包。该文件包含对模块中各种 Python 文件的导入语句。

以下是一个基础的模块目录结构:

module_name
├── models
│   ├── *.py
│   └── __init__.py
├── data
│   └── *.xml
├── __init__.py
└── __manifest__.py

Odoo 版本

Odoo 提供两个版本:Odoo Enterprise(授权版,源代码共享)和 Odoo Community(开源版)。除了技术支持和升级等服务外,Enterprise 版本还为 Odoo 提供了额外功能。从技术角度来看,这些功能实际上是在 Odoo Community(开源版)提供的模块基础上安装的新模块。

最近更新