摘 要: 以開源ERP Odoo為研究對(duì)象,從國(guó)內(nèi)自主化的核心技術(shù)發(fā)展、當(dāng)下ERP行業(yè)背景及自主化ERP的發(fā)展道路的選擇問題等方面,進(jìn)行了較為客觀的闡述,較為系統(tǒng)性地從Odoo既有自帶的應(yīng)用功能、技術(shù)架構(gòu)平臺(tái)、實(shí)施部署方案、性能負(fù)載測(cè)試綜合性等方面,論證了Odoo可以滿足國(guó)內(nèi)自主可控的先進(jìn)ERP管理系統(tǒng)的技術(shù)要求。最后總結(jié)結(jié)論是,通過Odoo完全能夠開發(fā)出一套具有世界先進(jìn)水平的自主可控的ERP管理系統(tǒng)。
關(guān)鍵詞: 安全可控; ERP; 企業(yè)信息化; 開源自主
中圖分類號(hào): TP 311文獻(xiàn)標(biāo)志碼: A
Development of self Self Controlled ERP System Based on
the? Open Source? Technology Platform of Odoo
YANG Xunbo
(General Manager Office, Zaoyuan Information Technology (Shanghai) Co., Ltd., Shanghai 200030, China)
Abstract: This article uses takes open source ERP The research object of oOdoo which is the core technology as research objective, to introduce the development of localization in China, the current ERP industry background and the choice of the development path of localization ERP in China. It systematically demonstrates that odoo Odoo can meet the requirements of domestic autonomy in terms of its own application function, technical architecture platform, implementation deployment scheme, performance load test comprehensiveness, etc. Technical requirements of Odoo can satisfy the controllable advanced ERP management system in China. Finally, the conclusion is that through odooOdoo, we can? develop a set of independent and controllable ERP management system that hao advanced level in the world.
Key words: safety controllability; ERP; enterprise informatization;? open? source autonomy
0 引言
本文主要以國(guó)內(nèi)自主化的核心技術(shù)發(fā)展、當(dāng)下ERP行業(yè)背景及自主化ERP的發(fā)展道路的選擇問題等方面,進(jìn)行了較為客觀的闡述,較為系統(tǒng)性地從Odoo既有自帶的應(yīng)用功能、技術(shù)架構(gòu)平臺(tái)、實(shí)施部署方案、性能負(fù)載測(cè)試綜合性等方面,論證了Odoo可以滿足國(guó)內(nèi)自主可控的先進(jìn)ERP管理系統(tǒng)的要求問題。最后總結(jié)結(jié)論是,通過Odoo完全能夠開發(fā)出一套具有世界先進(jìn)水平的自主可控的ERP管理系統(tǒng)。
1 發(fā)展自主可控的ERP系統(tǒng)必要性
1.1 國(guó)內(nèi)企業(yè)ERP系統(tǒng)的現(xiàn)狀
從筆者多年從事相關(guān)的企業(yè)信息化服務(wù)工作情況了解,在國(guó)內(nèi)的大型央企、合資企業(yè)、國(guó)企、醫(yī)療、銀行、教育等,均以美國(guó)企業(yè)為代表的商業(yè)ERP廠商SAP、ORACLE為主[1],這些ERP管理系統(tǒng)從本質(zhì)上是閉源的,以通過許可費(fèi)加服務(wù)實(shí)施費(fèi)的方式進(jìn)行收費(fèi),其中這些系統(tǒng)因?yàn)閷?duì)許可的授權(quán)監(jiān)控影響,均在服務(wù)交互端上插入了后門程序,用于收集客戶的使用信息情況,因而存在數(shù)據(jù)被監(jiān)測(cè)與收集的可能。
在國(guó)內(nèi)涉密類的企業(yè)采用的是國(guó)產(chǎn)金蝶和用友的ERP產(chǎn)品。以金蝶為例,其中客戶端與服務(wù)端必須安裝美國(guó)微軟公司提供的WINDOWS 桌面版的操作系統(tǒng),技術(shù)架構(gòu)也就被限定的只能使用美國(guó)制定的X86技術(shù)CPU架構(gòu)方案,如國(guó)內(nèi)自行研制的龍芯、海光、麒麟等CPU所架構(gòu)的服務(wù)端或是客戶端操作系統(tǒng)平臺(tái)無法支持,結(jié)論是雖然他們是國(guó)產(chǎn)的ERP管理系統(tǒng),但在服務(wù)支持層上依然存在后門數(shù)據(jù)收集等安全風(fēng)險(xiǎn)問題。
1.2 自主可控的ERP系統(tǒng)的技術(shù)路線選擇
對(duì)于國(guó)內(nèi)發(fā)展自主可控ERP的管理系統(tǒng)設(shè)計(jì)路徑有以下兩種方式:
完全按照當(dāng)前的安全可控的要求重新按照技術(shù)規(guī)范構(gòu)建ERP管理系統(tǒng)。
通過開源ERP Odoo的技術(shù)技術(shù)平臺(tái),進(jìn)行安全可控要求的移植與改造,轉(zhuǎn)化成為安全自主可控的ERP生態(tài)與產(chǎn)品。
Odoo采用的開源協(xié)議是LGPL V3;LGPL是GPL的一個(gè)主要為類庫使用設(shè)計(jì)的開源協(xié)議,和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協(xié)議不同,LGPL允許商業(yè)軟件通過類庫引用(LINK)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼,這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售[2]。
由于Odoo是通過GITHUB進(jìn)行開源共享,世界上有不少組織,包括一些歐洲的國(guó)家事業(yè)單位,如法國(guó)郵電集團(tuán)通過在GIT上進(jìn)行本地化的GIT版本分支,將分支的源碼通過GIT分布式的技術(shù)轉(zhuǎn)到法國(guó)郵電集團(tuán)內(nèi)部的GIT服務(wù)管理,通過內(nèi)部GIT管理進(jìn)行應(yīng)用的重構(gòu)和擴(kuò)展,同時(shí)保持內(nèi)核代碼部分與Odoo在GITHUB上的代碼一致。自己分支開發(fā)上層應(yīng)用,并重新定義私自的代碼分發(fā)協(xié)議,這里我們舉例Odoo官方企業(yè)版的版本協(xié)議控制和分發(fā)的圖來輔助上述解釋,如圖1所示。
從圖1可以得到結(jié)論:Odoo的開源的社區(qū)版是Odoo的企業(yè)版內(nèi)核,而企業(yè)版是社區(qū)版的增強(qiáng)應(yīng)用功能,在企業(yè)版的增強(qiáng)功能這部分應(yīng)用當(dāng)中所使用的是Odoo企業(yè)版自定義的協(xié)議OEEL,所以通過這個(gè)方式完全實(shí)現(xiàn)了商業(yè)版的自主控制分發(fā)權(quán)。如同前面所提到的法國(guó)郵電集團(tuán)的例子一致,我們?nèi)绻捎肙doo作為創(chuàng)新型的ERP技術(shù)平臺(tái)也是通過類似Odoo企業(yè)版和法國(guó)郵電集團(tuán)的方式一樣完成自定義的內(nèi)部版本分發(fā),將自主創(chuàng)新的功能細(xì)分為內(nèi)部協(xié)議、開源協(xié)議等多種交叉模式,如圖2所示。
第二種路徑方式對(duì)于國(guó)內(nèi)現(xiàn)實(shí)情況極為適用,包括中科院的麒麟操作系統(tǒng)(UBUNTU LINUX分支)等開源技術(shù)平臺(tái)均采用類似的第二種路徑方案。在發(fā)展國(guó)內(nèi)自主可控的ERP系統(tǒng)中,可以借鑒Odoo已有并成熟的完全開源可控的技術(shù)架構(gòu),同時(shí)將一些復(fù)雜的業(yè)務(wù)流程和配置類的ERP必須具有的屬性保留,再結(jié)合國(guó)內(nèi)實(shí)際企業(yè)的情況進(jìn)行深入改造,我們可以通過這樣的模式縮短產(chǎn)品研發(fā)期與推廣期的問題,生態(tài)上又很容易的快速建立,結(jié)論是通過Odoo的開源技術(shù)平臺(tái)發(fā)展國(guó)內(nèi)自主可控的ERP管理系統(tǒng),是非常適合的技術(shù)路徑方案。
2 通過Odoo構(gòu)建自主可控的先進(jìn)ERP系統(tǒng)
如圖3所示。
Odoo是基于PYTHON+HTML5語言所開發(fā)的快速開發(fā)平臺(tái)框架所構(gòu)建的具體模塊化的ERP應(yīng)用技術(shù)平臺(tái),我們從Odoo的平臺(tái)簡(jiǎn)介和技術(shù)架構(gòu)及部署方案3個(gè)層面分開闡述。
2.1 Odoo平臺(tái)介紹
Odoo,以前叫OPENERP,是比利時(shí)Odoo S.A.公司開發(fā)的一個(gè)開源自由的遵守國(guó)際LGPL開源協(xié)議的企業(yè)應(yīng)用軟件套件,開源套件包括一個(gè)企業(yè)應(yīng)用快速開發(fā)平臺(tái),以及2萬個(gè)以上的第三方開發(fā)的企業(yè)生態(tài)應(yīng)用市場(chǎng)。Odoo適用于各種類型規(guī)模的企業(yè)應(yīng)用,并且由于前端采用HTML5加后臺(tái)JS渲染,確保了跨平臺(tái),跨設(shè)備訪問,僅需標(biāo)準(zhǔn)瀏覽器即可訪問應(yīng)用。
Odoo默認(rèn)已有的基礎(chǔ)功能包含:企業(yè)基本的進(jìn)銷存、采購(gòu)、銷售、MRP生產(chǎn)制造、品保質(zhì)量保障、企業(yè)招聘、員工合同、休假、午餐管理、內(nèi)部論壇、車隊(duì)管理、內(nèi)部聊天IM溝通、客訴追溯管理、CRM客戶關(guān)系管理、VOIP、E-SHOP電子商務(wù)、企業(yè)網(wǎng)站、財(cái)務(wù)會(huì)計(jì)、銀行對(duì)賬、資產(chǎn)管理、HR工資管理、預(yù)算管理、WMS倉(cāng)庫庫存管理、POS、社區(qū)論壇、項(xiàng)目管理、條碼、PLM等。
Odoo是真正意義上的純B/S架構(gòu)設(shè)計(jì)理念,全網(wǎng)全設(shè)備覆蓋,支持市面上任何一種操作系統(tǒng)的客戶端與服務(wù)端的部署。客戶端僅需通過瀏覽器就能自適應(yīng)訪問,做到真正意義上的全網(wǎng)互聯(lián)。
基于上述的論述可以得到這樣的結(jié)論,無論從平臺(tái)特性還是與功能應(yīng)用覆蓋面上,Odoo已經(jīng)處于世界領(lǐng)先的ERP技術(shù)范疇、超越SAP、ORACLE等歐美發(fā)達(dá)國(guó)家所創(chuàng)造的一流先進(jìn)的ERP產(chǎn)品技術(shù)框架。同時(shí)徹底去客戶端化,通過標(biāo)準(zhǔn)瀏覽器即可訪問支持,更符合國(guó)內(nèi)未來企業(yè)的跨設(shè)備跨平臺(tái)的需求。
2.2 Odoo技術(shù)架構(gòu)
Odoo已經(jīng)整合了互聯(lián)網(wǎng)最新的第三方PYTHON技術(shù)類庫和JS技術(shù)類庫,又同時(shí)根據(jù)自身的MVC軟件工程規(guī)范邏輯進(jìn)行了模塊功能的解耦,將自己的數(shù)據(jù)層、邏輯層、表現(xiàn)層完全獨(dú)立化操作,甚至在語言及方法調(diào)用上做到了徹底的分離,同時(shí)兼顧快速開發(fā)平臺(tái)的高效建模的特性,又把復(fù)雜的動(dòng)作方法進(jìn)行標(biāo)簽定義。通過少量的PYTHON代碼加之Odoo自身ORM的框架特性,可以快速生成一個(gè)數(shù)據(jù)表單業(yè)務(wù)的基礎(chǔ)結(jié)構(gòu)。如圖4所示。
通過上述技術(shù)架構(gòu)藍(lán)圖中,我們可以看到,Odoo在關(guān)系型數(shù)據(jù)庫支持層采用了大型混合型開源自主可控的數(shù)據(jù)庫系統(tǒng)POSTGRESQL系統(tǒng),該數(shù)據(jù)庫的最大優(yōu)勢(shì)是數(shù)據(jù)負(fù)載量與高并發(fā)性能,可以媲美ORACLE。這可以使國(guó)內(nèi)企業(yè)未來在數(shù)據(jù)負(fù)載量與高并發(fā)性能中承擔(dān)更多的數(shù)據(jù)承載服務(wù)的需求。
模型層的快速建模的工作原理是通過ORM數(shù)據(jù)持久支持層作為數(shù)據(jù)庫交互通訊的接口,ORM API接口調(diào)用方法如:如記錄集方法@API.MULTI、單例記錄方法@API.ONE、類靜態(tài)方法@API.MODEL、動(dòng)作觸發(fā)方法@API.
ONCHANGE及@API.DEPENDS計(jì)算型方法等。
筆者編寫的代碼示例,可以看到通過@API.ONCHANGE方法來進(jìn)行系統(tǒng)反饋時(shí)間與服務(wù)器當(dāng)前日期的比對(duì)進(jìn)行錯(cuò)誤異常的JSON格式化文件的提醒拋出的具體編寫規(guī)范實(shí)例。
@API.ONCHANGE('MEMBER_ID')
DEF ONCHANGE_MEMBER_ID(SELF):
TODAY = FIELDS.DATE.TODAY()
IF SELF.REQUEST_DATE != TODAY:
SELF.REQUEST_DATE = FIELDS.DATE.TODAY()
RETURN {
'WARNING':{
'TITLE': 'CHANGED REQUEST DATE',
'MESSAGE': 'REQUEST DATE CHANGED TO TODAY.'
}
}
由于Odoo的ORM層承擔(dān)著開發(fā)平臺(tái)最重要的核心開發(fā)框架,但基于這之上還需要其他的公共應(yīng)用容器模組進(jìn)行封裝,如MESSAGE層承擔(dān)著各功能模塊間信息通訊的作用,Odoo自帶的每個(gè)表單模型默認(rèn)繼承MESSAGE層的技術(shù)應(yīng)用,將單據(jù)的所有操作記錄都寫入到MESSAGE數(shù)據(jù)表單之中。如圖5所示。
從圖5可以看到每個(gè)的單據(jù)工作變更記錄都寫入到MESSAGE數(shù)據(jù)表單,MESSAGE自帶推送機(jī)制,可以實(shí)現(xiàn)IM或是郵件的信息推送與數(shù)據(jù)交互。通過CONTROLLERS層進(jìn)行不同間的APP支持應(yīng)用層的通訊完成模塊數(shù)據(jù)的交互。CONTROLLERS層是主要通過內(nèi)部API規(guī)范進(jìn)行數(shù)據(jù)間的互動(dòng)調(diào)用來確保數(shù)據(jù)交互與模組間的安全分割。
以上測(cè)試集代碼用于搜索客戶及建立銷售合同、確認(rèn)銷售合同及合同打款單最具實(shí)際業(yè)務(wù)高并發(fā)的場(chǎng)景,用于測(cè)試Odoo依照線性訪問的性能優(yōu)勢(shì)。采用硬件測(cè)試環(huán)境,測(cè)試Odoo應(yīng)用服務(wù)器的硬件配置: I5雙核CPU,16G內(nèi)存,SSD硬盤;Odoo數(shù)據(jù)庫服務(wù)器硬件配置:12核CPU,16G內(nèi)存。按照之前測(cè)試代碼和OdooLOCUST用戶并發(fā)數(shù)模擬,最終測(cè)試結(jié)果如圖8所示。
1) 1個(gè)并發(fā)用戶和50個(gè)并發(fā)用戶,系統(tǒng)響應(yīng)速度幾乎沒有變化,5個(gè)操作的響應(yīng)時(shí)間都在2秒上下;
2) 當(dāng)100個(gè)并發(fā)用戶時(shí),系統(tǒng)響應(yīng)速度略有下降,響應(yīng)速度在2秒至2.5秒之間;
3) 從100個(gè)并發(fā)用戶到200個(gè)并發(fā)用戶,系統(tǒng)響應(yīng)速度略有波動(dòng),但都在2秒至3秒之間;
4) 以大型企業(yè)的用戶數(shù)800為例,連接用戶數(shù)200為例,平均并發(fā)用戶數(shù)50為例,峰值并發(fā)用戶數(shù)71的情況下,系統(tǒng)常見操作的響應(yīng)時(shí)間在2.5秒以下;
5) 考慮到將來的發(fā)展,如果用戶總數(shù)翻一倍,用戶數(shù)1600,連接用戶數(shù)400,平均并發(fā)用戶數(shù)100,峰值并發(fā)用戶數(shù)達(dá)到142人,系統(tǒng)常見操作的響應(yīng)時(shí)間在3秒以內(nèi);
6) 正常情況下,系統(tǒng)響應(yīng)時(shí)間在4秒內(nèi)(考慮增加1秒的網(wǎng)絡(luò)延遲)。根據(jù)用戶響應(yīng)時(shí)間標(biāo)準(zhǔn),這個(gè)響應(yīng)時(shí)間屬于“比較不錯(cuò)”的用戶體驗(yàn)。
通過上述結(jié)論,Odoo從部署架構(gòu)與性能測(cè)試的結(jié)果,完全可以承擔(dān)大型企業(yè)級(jí)的應(yīng)用,如果將POSTGRESQL的NOSQL特性發(fā)揮出來并進(jìn)行功能深入的改造,可以有更大性能提升,如達(dá)到上述假設(shè),將完全可以承擔(dān)國(guó)家級(jí)工業(yè)互聯(lián)網(wǎng)平臺(tái)化訪問并發(fā)量的需求。
3 總結(jié)
通過上述文中闡述,我們可以看到無論Odoo自身的開源技術(shù)特性、既有可移植使用的功能、先進(jìn)的平臺(tái)技術(shù)架構(gòu)、靈活的部署方案、性能壓力測(cè)試等關(guān)鍵性技術(shù)指標(biāo),已經(jīng)可以得到Odoo各方面的技術(shù)要求是足以滿足發(fā)展及構(gòu)建國(guó)內(nèi)自主可控ERP系統(tǒng)較為優(yōu)秀的技術(shù)路線方式。
參考文獻(xiàn)
[1] 馮明麗,陳志彬. 基于電信運(yùn)營(yíng)商的大數(shù)據(jù)平臺(tái)及去IOE應(yīng)用研究[J]. 電信技術(shù) ,2015(9):25-28.
[2] 周榮茂. 五種開源協(xié)議的比較(BSD,APACHE,GPL,LGPL,MIT)[J]. 開源時(shí)代, 2010.
[3] 周愛武,汪海威,李知兵. 計(jì)算機(jī)操作系統(tǒng)教程[M].北京: 清華大學(xué)出版社,2005.
(收稿日期: 2020.07.20)
作者簡(jiǎn)介:
楊潯波(1986-),男,本科,助理工程師,研究方向: Odoo ERP實(shí)施、開發(fā)、部署架構(gòu)等相關(guān)企業(yè)信息服務(wù)。