【odoo】【知識(shí)雜談】關(guān)于odoo二開(kāi)模塊規(guī)范的一點(diǎn)思考
老韓頭的開(kāi)發(fā)日常 ? 【好書學(xué)習(xí)】系列
背景
作為丙方,完成了甲方的二開(kāi)需求。因此,在設(shè)計(jì)二開(kāi)模塊的時(shí)候,考慮的是當(dāng)時(shí)所列的需求清單,并整合到一個(gè)二開(kāi)模塊中。完成交付后,客戶評(píng)價(jià)蠻好的。因此,成功的為乙方爭(zhēng)取到了繼續(xù)合作的機(jī)會(huì)。然后,就沒(méi)我啥事了,尷尬...
再之后過(guò)了一兩個(gè)月,另一個(gè)丙方搞不定甲方的需求,所以我又被安排上線收拾殘局。而,此處接手的殘局有點(diǎn)坑,涉及多個(gè)開(kāi)發(fā)的二開(kāi)模塊。由于甲方的需求是分批提出,且由多個(gè)團(tuán)隊(duì)完成。因此,二開(kāi)模塊的間存在循環(huán)依賴的情況。在已經(jīng)跑起來(lái)的庫(kù)上運(yùn)行,沒(méi)有任何問(wèn)題,但是,在新庫(kù)上重新安裝的時(shí)候,會(huì)發(fā)現(xiàn)根本安裝不上。因此,決定花一個(gè)月的時(shí)間徹底拆分已有的二開(kāi)模塊。
為什么拆
問(wèn):一般情況下,odoo上線后基本上不會(huì)出現(xiàn)在新庫(kù)上重新部署的情況,為什么還要費(fèi)勁去拆分二開(kāi)模塊呢?
答:最核心的原因是,這可能是一個(gè)需要長(zhǎng)期維護(hù)的項(xiàng)目。
問(wèn):長(zhǎng)期維護(hù)的項(xiàng)目和單次分包的區(qū)別是什么?
答:長(zhǎng)期維護(hù)的項(xiàng)目,雖然在前期可能會(huì)付出更多的時(shí)間,但是可便于后期的項(xiàng)目管理,即便是最極端的情況發(fā)生,也可以以較快的速度恢復(fù)生產(chǎn);而單次分包的項(xiàng)目,一般只是為了去完成一份需求清單,而且即使設(shè)計(jì)了二開(kāi)的原因,也很少會(huì)有單次分包人員會(huì)遵守,因?yàn)楣ぷ髁繒?huì)增加。
怎么拆
- 針對(duì)基礎(chǔ)模塊的功能擴(kuò)展:比如庫(kù)存、銷售、采購(gòu)等,此類二開(kāi)模塊需僅包含針對(duì)該單一模塊的功能擴(kuò)展,且不能引用非odoo原生的模塊;
- 針對(duì)多基礎(chǔ)模塊的功能擴(kuò)展:比如針對(duì)銷售的業(yè)務(wù)中擴(kuò)展對(duì)調(diào)撥的業(yè)務(wù)處理邏輯,此類二開(kāi)模塊應(yīng)僅包含odoo原生的基礎(chǔ)模塊和1中二開(kāi)模塊;
- 針對(duì)獨(dú)立業(yè)務(wù)場(chǎng)景的功能擴(kuò)展:比如圖書館有借書還書的需求,就需要單獨(dú)根據(jù)業(yè)務(wù)場(chǎng)景擴(kuò)展功能模塊。
以上三項(xiàng)是否拆分的合理的一個(gè)主要的標(biāo)識(shí)是,1、2、3中的任意模塊均可獨(dú)立安裝(2、3中在__manifest__.py中添加所需依賴)
本項(xiàng)目的拆分效果如下:
各二開(kāi)模塊建議是甲方公司的簡(jiǎn)稱,便于標(biāo)識(shí)。
![]()
結(jié)論
由于業(yè)務(wù)是不斷變化和發(fā)展的,為了讓系統(tǒng)真正成為助力業(yè)務(wù)發(fā)展的工具,勢(shì)必會(huì)接觸到odoo的二開(kāi)市場(chǎng)。因此,不管是甲方還是可以長(zhǎng)期維護(hù)的乙方,都建議在二開(kāi)之初,可以參考上面提到的“怎么拆”章節(jié)。當(dāng)然,如果是單次分包,那就隨意吧。
本文來(lái)自博客園,作者:老韓頭的開(kāi)發(fā)日常,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/xushuotec/p/15758106.html


浙公網(wǎng)安備 33010602011771號(hào)