1. 程式人生 > >Odoo學習筆記

Odoo學習筆記

一:Odoo架構

1:資料庫伺服器層:postgreSQL資料庫伺服器,用於儲存所有應用資料。

2:openERP應用服務層:包含所有企業模組邏輯(報表引擎、工作流引擎等),向下提供ORM引擎,向上提供web服務,控制伺服器與瀏覽器的通訊。

3:客戶層:包括GUI客戶端以及Web客戶端。

客戶端通過JSON-RPC或者XML-RPC與伺服器進行通訊。

 

二:Odoo常用功能模組

企業管理模組

物料管理模組

財務管理模組

人力資源模組

客戶與供應商關係管理模組

專案管理模組

日常工作管理模組

溝通工具模組

業務流程管理模組

......

 

三:odoo開發簡介

odoo開發要實現以下功能:

資料訪問功能:資訊的增刪查改。基於MVC模式進行開發,其中Model用ORM了來對應資料庫表並操縱,而view則用XML來定製介面,Controller也是用XML來定義響應。

工作流開發:用軟體表達企業層級的工作協作關係。有兩種方式:XML方式定義、視覺化拖拽程式設計定義。

報表開發:把系統的資料以特定形式輸出列印。主要有:文件報表、圖形報表等。

 

四:繼承開發

Odoo提供了大量現成的模組給我們使用,但是某些情況下,我們需要制定符合自己需求的功能模組。Odoo開發的一條黃金準則是——不要修改現有的模組,以免改動後的程式碼與原有模組產生混淆。

因此,odoo提供了繼承機制,我們可以選擇一個基礎模組,然後繼承它,在它的基礎上進行修改、擴充套件,生成自己的模組。

開發自己的模組時,需要在模組所在目錄下,建立兩個檔案:__init__.py和__openerp__.py,在其中定義模組的初始化操作以及模組的描述。

然後使用自己的模組:把自己的模組路徑設定到odoo中,重啟odoo讓其搜尋到自定義模組,即可通過odoo進行安裝。

 

模組檔案目錄構成:

data:存放demo和data xml

models:存放模型定義:繼承models.Model類,定義出的模型類會自動與Odoo提供的ORM介面匹配,也就是說這些模型類會自動存入sql中。

controllers:存放http路徑控制(url請求處理)

views:網頁檢視檔案與模版檔案(xml檔案,使用QWEB語言進行描述)

static:靜態資原始檔,如css、js等

security:對模組的訪問許可權控制,在ir.model.access.csv檔案中定義。還可以新建一個record_rule.xml,在其中進行更細化的許可權控制。

繼承模組通過 _inherit=“繼承的模組”  屬性來實現。之後在新建立的模組中就可以新增field、修改父模組的field、過載方法了。

 

不僅僅模組可以繼承開發,檢視檔案也可繼承修改,對與檢視檔案中某個標籤,通過 ref=“繼承的檢視元素”進行繼承。

 

五:資料庫端開發

可以使用pgadmin3來對postgreSQL資料庫管理操作,如果SQLYog操作mysql一樣。

 

六:模組開發流程

1:分析模組模型,得出模型所需的欄位有哪些,然後定義模型類——python程式設計。

2:構建選單物件——在views資料夾下,使用xml定義選單項。

3:構建動作物件,關聯某個具體選單項的響應。

4:構建檢視物件:主要是list、tree、form、search檢視。

5:配置__init__.py和__openerp__.py

 

七:orderset

odoo8新增的ORM API,最常用的有 domain(fieldName,op,value) 方法 以及 search(fieldName,op,value)。

 

八:模型內的資料檔案

1:ID

所有儲存在Odoo底層資料庫中的記錄都有一個獨一無二的id。odoo通過ir.model.data模型來管理這些ID,這個模型對應資料庫中ir_model_data表,其儲存了ID與具體某條具體的記錄的對映關係。

2:匯入匯出資料

tree列表檢視下,可以匯入匯出資料。其中,匯入資料需要csv格式,匯出則可以為csv或excel格式。

3:標籤值

使用filed標籤指明某個欄位並賦值。賦值有兩種方式:<field>值<field/> 、<field name="" eval="計算標籤值的表示式"/>

 

九:工作流開發

工作流開發主要使用xml,有三種組成元素:workflow、activity、transition。