第一章:架構概述?
多層應用程序?
Odoo 遵循 多層架構,這意味著演示、業務邏輯和數據存儲是分離的。更具體地說,它使用三層架構(來自維基百科的圖像):
表示層是HTML5、JavaScript和CSS的組合。邏輯層完全由Python編寫,而數據層僅支持PostgreSQL作為關系型數據庫管理系統。
根據您的模塊范圍,Odoo開發可以在任何這些層中完成。因此,在繼續之前,如果您在這些主題中沒有中級水平,刷新一下您的記憶可能是一個好主意。
為了完成本教程,您需要具備基本的HTML知識和中級的Python水平。高級主題需要更多其他學科的知識。有很多免費的教程可以訪問,因此我們無法推薦一個勝過另一個,因為這取決于您的背景。
供參考,這是官方的 Python 教程。
注解
自Odoo 15.0版本以來,Odoo正在積極過渡到使用其自己開發的 OWL框架 作為其演示層的一部分。傳統的JavaScript框架仍然受支持,但隨著時間的推移將被棄用。這將在高級主題中進一步討論。
Odoo 模塊?
服務器和客戶端擴展都打包成 模塊 ,可以選擇在 數據庫 中加載。模塊是針對單一目的的函數和數據的集合。
Odoo模塊可以向Odoo系統添加全新的業務邏輯,也可以修改和擴展現有的業務邏輯。一個模塊可以被創建來將你國家的會計規則添加到Odoo的通用會計支持中,而另一個模塊可以添加對公交車隊實時可視化的支持。
Odoo 中的一切都始于模塊,也以模塊結束。
術語:開發人員將其業務功能分組在Odoo的 模塊 中。主要面向用戶的模塊被標記并公開為 應用程序 ,但大多數模塊不是應用程序。 模塊 也可以稱為 插件 ,Odoo服務器找到它們的目錄形成 addons_path
。
模塊的組成?
一個Odoo模塊 可以 包含多個元素:
- 業務對象
一個業務對象(例如發票)被聲明為Python類。由于 ORM(對象關系映射) 層的存在,這些類中定義的字段會自動映射到數據庫列。
- 對象視圖
定義用戶界面顯示
- 數據文件
聲明模型數據的XML或CSV文件:
- Web控制器
處理來自Web瀏覽器的請求
- 靜態網頁數據
網站或 Web 界面使用的圖像、CSS 或 JavaScript 文件
這些元素都不是必需的。有些模塊可能只添加數據文件(例如特定國家的會計配置),而其他模塊可能只添加業務對象。在本培訓中,我們將創建業務對象、對象視圖和數據文件。
模塊結構?
每個模塊都是 模塊目錄 中的一個目錄??梢允褂?--addons-path
選項指定模塊目錄。
Odoo模塊是通過其 清單文件 聲明的。
當一個Odoo模塊包含業務對象(即Python文件)時,它們被組織成一個 `Python包<https://docs.python.org/3/tutorial/modules.html#packages>`_,其中包含一個 __init__.py
文件。該文件包含了模塊中各種Python文件的導入指令。
這是一個簡化的模塊目錄:
module
├── models
│ ├── *.py
│ └── __init__.py
├── data
│ └── *.xml
├── __init__.py
└── __manifest__.py
Odoo 版本?
Odoo有兩個版本可供選擇:Odoo Enterprise(許可和共享源代碼)和Odoo Community(開源)。除了提供支持或升級等服務外,企業版還為Odoo提供了額外的功能。從技術角度來看,這些功能只是在社區版提供的模塊之上安裝的新模塊。
準備好開始了嗎?在編寫實際代碼之前,讓我們去 下一章節 回顧一下Odoo的安裝過程。即使Odoo已經在您的系統上運行,我們強烈建議您閱讀本章節,以確保我們在開發新應用程序時處于同一頁面。