第1章:体系结构概述

多层应用

Odoo遵循多层架构 multitier architecture ,这意味着表示层、业务逻辑层和数据存储层是分离的。更具体地说,它使用了三层架构(图片来自维基百科Wikipedia):

三层体系结构

表示层是HTML5、JavaScript和CSS的组合。逻辑层用Python编写,而数据层只支持PostgreSQL作为数据库(RDBMS)。

根据模块的范围,Odoo 开发可以在这些层中的任何一层中完成。因此,在继续学习之前,如果您对这些主题的了解不是中级水平,那么刷新一下记忆可能是一个好主意。

为了完成本教程,您将需要非常基础的HTML知识和中级的Python。高级的主题需要其他学科更多的知识。有很多免费的教程,所以我们不能给你推荐,因为这取决于你的背景。

这是官方的 Python tutorial

注解

从15.0版本开始,Odoo正在积极过渡到使用自己内部开发的 OWL框架 作为其表示层的一部分。遗留的JavaScript框架仍然受到支持,但随着时间的推移将被弃用。这将在高级主题中进一步讨论。

Odoo 模块

服务器和客户端扩展都打包为 模块(module ) ,可选地加载到 数据库 中。模块是针对单一目的的函数和数据的集合。

Odoo 模块可以向 Odoo 系统添加全新的业务逻辑,也可以改变和扩展现有的业务逻辑。可以创建一个模块将你国家的会计规则添加到Odoo的通用会计支持中,而另一个模块可以添加对车队实时可视化的支持。

Odoo 中的一切都以模块开始和结束。

术语: 开发人员将他们的业务特性分组到Odoo 模块(modules) 中。主要面向用户的模块被标记为 Apps ,但大多数模块都不是 Apps。模块 也可以被称为*a ddons*, Odoo服 务器找从`` addons_path``中 到找到他们

Composition of a module

Odoo 模块 可以 包含一些元素:

Business objects

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

Object views

定义用户界面显示

Data files

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

Web controllers

处理来自浏览器的请求

静态web数据

网页界面或网站使用的图像、CSS或JavaScript文件

这些元素都不是强制性的。有些模块可能只添加数据文件(例如特定国家的会计配置),而其他模块可能只添加业务对象。在培训期间,我们将创建业务对象、对象视图和数据文件。:ref: Web controllers <howto/rdtraining/G_website> 和 :ref: static Web data <howto/rdtraining/I_jswidget> 是高级主题。

模块结构

每个模块都是 模块目录 中的一个目录。模块目录通过使用 --addons-path 选项来指定。

Odoo模块由 manifest 声明。

When an Odoo module includes business objects (i.e. Python files), they are organized as a Python package with a __init__.py file. This file contains import instructions for various Python files in the module.

Here is a simplified module directory:

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

Odoo 版本

Odoo is available in two versions: Odoo Enterprise (licensed & shared sources) and Odoo Community (open-source). In addition to services such as support or upgrades, the Enterprise version provides extra functionalities to Odoo. From a technical point-of-view, these functionalities are simply new modules installed on top of the modules provided by the Community version.

Ready to start? Before writing actual code, let’s go to the next chapter to review the Odoo installation process. Even if Odoo is already running on your system, we strongly suggest you go through this chapter to make sure we start on the same page during the development of our new application.