近年來(lái), 大宗商品現(xiàn)貨交易作為一種新型的大宗商品交易模式, 在我國(guó)得到了迅猛發(fā)展, 中央、省、市各級(jí)地方政府及各大央企、國(guó)企、資本巨頭紛紛搶占先機(jī), 爭(zhēng)相布局、建立各類大宗商品現(xiàn)貨交易場(chǎng)所。根據(jù)統(tǒng)計(jì)數(shù)據(jù)表明, 截止2016年底, 全國(guó)共有各類大宗商品電子類現(xiàn)貨交易市場(chǎng)1231家, 其中能源化工類電子交易市場(chǎng)175家。由于大宗商品現(xiàn)貨交易具備生產(chǎn)資料大宗貨物的戰(zhàn)略儲(chǔ)備、調(diào)節(jié)物價(jià)、組織生產(chǎn)和套期保值4大基本功能, 因此對(duì)整個(gè)國(guó)民經(jīng)濟(jì)的發(fā)展起到了十分重要的促進(jìn)作用[1]。
浙江石油化工交易中心 (以下簡(jiǎn)稱“浙油中心”) 是由物產(chǎn)中大集團(tuán)股份有限公司 (以下簡(jiǎn)稱“物產(chǎn)中大集團(tuán)”) 與舟山市人民政府合作設(shè)立的一家石油化工類大宗商品現(xiàn)貨交易高技術(shù)服務(wù)平臺(tái), 立足現(xiàn)貨交易、服務(wù)實(shí)體經(jīng)濟(jì), 主要從事石油制品、化工原料及產(chǎn)品、燃料油、潤(rùn)滑油等大宗商品現(xiàn)貨交易及相關(guān)服務(wù)。浙油中心積極布局和實(shí)施“平臺(tái)化、集成化、國(guó)際化、專業(yè)化”的“四化”戰(zhàn)略, 努力成為石油化工產(chǎn)業(yè)的供應(yīng)鏈管理者、產(chǎn)業(yè)資源整合者和交易要素配置者, 著力打造集石油化工產(chǎn)品交易中心、定價(jià)中心、信息中心、結(jié)算中心、金融中心、物流中心于一體的國(guó)際化石油化工大宗商品電子交易平臺(tái), 立志做中國(guó)最優(yōu)秀的大宗商品交易集成服務(wù)商[2,3]。
以物產(chǎn)中大集團(tuán)分管領(lǐng)導(dǎo)及浙油中心班子成員等為核心的高層管理團(tuán)隊(duì)牽頭運(yùn)用互聯(lián)網(wǎng)聚合行業(yè)內(nèi)產(chǎn)品、渠道、金融、物流、信息等各類服務(wù)資源, 組織進(jìn)行了基于互聯(lián)網(wǎng)的新型大宗商品交易模式創(chuàng)新, 構(gòu)建了基于Spring MVC多層架構(gòu)的石油化工大宗商品現(xiàn)貨交易結(jié)算倉(cāng)儲(chǔ)一體化線上與線下相結(jié)合的服務(wù)體系[4,5]。按照軟件工程項(xiàng)目管理規(guī)范, 帶領(lǐng)技術(shù)團(tuán)隊(duì)并協(xié)同軟件廠商進(jìn)行了交易系統(tǒng)的需求調(diào)研、系統(tǒng)設(shè)計(jì)、程序開(kāi)發(fā)、軟件測(cè)試、數(shù)據(jù)準(zhǔn)備、仿真測(cè)試及上線運(yùn)行。系統(tǒng)在業(yè)務(wù)功能方面具有4個(gè)亮點(diǎn): (1) 軟件涵蓋了掛牌交易、競(jìng)價(jià)交易、采購(gòu)招標(biāo)及中遠(yuǎn)期交易等多種交易模式, 實(shí)現(xiàn)了交易方式的多樣化; (2) 軟件實(shí)現(xiàn)了交易結(jié)算倉(cāng)儲(chǔ)三位一體, 并支持銀商轉(zhuǎn)賬等多種結(jié)算模式, 確保業(yè)務(wù)流程的一體化; (3) 軟件實(shí)現(xiàn)了多級(jí)產(chǎn)品分類及屬性定制, 確保產(chǎn)品擴(kuò)展的便捷化; (4) 軟件實(shí)現(xiàn)了郵件、站內(nèi)信及短信等多種信息推送機(jī)制, 確保業(yè)務(wù)處理的高效化。
系統(tǒng)在技術(shù)應(yīng)用方面具有4個(gè)特點(diǎn): (1) 系統(tǒng)采用了基于J2EE、Spring MVC、i BATIS的多層架構(gòu)模式, 確保軟件具有很強(qiáng)的開(kāi)放性和可擴(kuò)展性; (2) 系統(tǒng)采用了大容量分布式處理和集群技術(shù), 確保軟件具有很強(qiáng)的可靠性和易維護(hù)性; (3) 系統(tǒng)采用了高端金融交易中間件技術(shù), 確保軟件的穩(wěn)定性和高效性; (4) 系統(tǒng)采用了CA認(rèn)證、二重密碼驗(yàn)證、數(shù)據(jù)加密、動(dòng)態(tài)碼、多級(jí)角色權(quán)限控制、業(yè)務(wù)復(fù)核、網(wǎng)絡(luò)隔離等整體安全解決方案, 確保軟件的安全可靠性[6,7]。
J2EE是近年來(lái)廣泛運(yùn)用的利用Java平臺(tái)來(lái)簡(jiǎn)化諸多與企業(yè)解決方案的開(kāi)發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu), 其核心是一組以Java平臺(tái)的標(biāo)準(zhǔn)版為基礎(chǔ)的技術(shù)規(guī)范與指南, 包含了各類組件、技術(shù)層次及服務(wù)架構(gòu)并具有良好的兼容性, J2EE的出現(xiàn)解決了傳統(tǒng)技術(shù)存在局限性導(dǎo)致的內(nèi)部和外部難以互通的困境。
Spring MVC框架作為Spring開(kāi)源框架的7大模塊之一, 具有面向切面編程和控制反轉(zhuǎn)的能力, 且具有完善的Controller控制器集成架構(gòu), 用戶可以通過(guò)先連接到前端控制器并由其判斷用戶的請(qǐng)求, 然后再根據(jù)需要指派給合適的控制對(duì)象來(lái)進(jìn)行處理, 而不需要直接連接到所需要的資源。Spring開(kāi)源框架的7大模塊如圖1所示。
i BATIS是軟件組織Apache的一個(gè)開(kāi)源項(xiàng)目, 一種輕量級(jí)的對(duì)象關(guān)系映射 (ORM) 框架, 其突出特點(diǎn)就是小巧且易于上手。它不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)通過(guò)DML/DDL等SQL語(yǔ)句操作數(shù)據(jù)庫(kù)表的操作方式, ORM通過(guò)面向?qū)ο蠓绞讲僮麝P(guān)系型數(shù)據(jù)庫(kù)。在Java面向?qū)ο缶幊陶Z(yǔ)言中, 所有的操作對(duì)象都是對(duì)象, ORM的功能就是把數(shù)據(jù)庫(kù)的表和Java編程語(yǔ)言中的對(duì)象對(duì)應(yīng)起來(lái), 把表的列和Java對(duì)象中的字段相互匹配, 在程序開(kāi)發(fā)過(guò)程中通過(guò)ORM提供的查詢語(yǔ)句操作普通的Java對(duì)象, 而非使用原始SQL語(yǔ)句去直接操作數(shù)據(jù)庫(kù)。ORM將其提供的對(duì)普通Java對(duì)象的查詢語(yǔ)句翻譯成SQL語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù), 從而屏蔽了不同數(shù)據(jù)庫(kù)SQL語(yǔ)句的差別, 簡(jiǎn)化了程序開(kāi)發(fā)工作, 提高了程序的可移植性。
項(xiàng)目開(kāi)發(fā)如果采用EJB等重量級(jí)框架會(huì)帶來(lái)很多技術(shù)上的困擾, 主要原因是EJB的服務(wù)組件提供了許多多余服務(wù), 且在存在擴(kuò)展方面的困難。因此, 選用Spring MVC框架和i BATIS技術(shù)的輕量級(jí)框架進(jìn)行設(shè)計(jì), 許多應(yīng)用不需要采用分布式、不需要J2EE中那些重量級(jí)的技術(shù), 開(kāi)發(fā)過(guò)程中可以進(jìn)行技術(shù)隔離和改造, 可以有針對(duì)性地對(duì)應(yīng)用進(jìn)行最常見(jiàn)、最簡(jiǎn)單的應(yīng)用設(shè)計(jì), 在提高系統(tǒng)開(kāi)發(fā)效率的同時(shí)還能降低開(kāi)發(fā)的復(fù)雜性, 確保系統(tǒng)的穩(wěn)定性、健壯性及安全性方面都能得到有效的提升。
視圖層承擔(dān)了用戶與系統(tǒng)進(jìn)行信息交互的重任, 是Spring MVC框架系統(tǒng)面向操作用戶最直接展示的操作界面。通過(guò)表單提交登錄信息進(jìn)行身份合法性驗(yàn)證時(shí), 控制器Login Controller處理登錄的業(yè)務(wù)邏輯是DispatchServlet通過(guò)配置文件進(jìn)行調(diào)度提供, 并以Spring Ioc注入屬性對(duì)后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行操作。在處理實(shí)現(xiàn)Spring MVC框架接口時(shí), 控制器Login Controller以handle Requst方法同時(shí)實(shí)現(xiàn)了接口包含的數(shù)據(jù)處理請(qǐng)求。在收到分發(fā)器Dispatch Servlet分配的數(shù)據(jù)請(qǐng)求時(shí), 控制器Login Controller會(huì)通過(guò)執(zhí)行handle Requst來(lái)驗(yàn)證判斷用于登錄系統(tǒng)的用戶名和密碼正確與否, 從而完成系統(tǒng)登錄處理的業(yè)務(wù)邏輯。如果用戶名和密碼驗(yàn)證通過(guò), 視圖解析器則將信息返回至Model And View對(duì)象, 通過(guò)Spring MVC框架控制器Bean配置文件beans-config.xml進(jìn)行處理, 并跳轉(zhuǎn)到登錄系統(tǒng)成功的操作界面。如果驗(yàn)證不通過(guò), 則跳轉(zhuǎn)到登錄系統(tǒng)失敗的操作界面。相關(guān)配置文件的部分代碼如下:
持久層在系統(tǒng)中主要承擔(dān)了與數(shù)據(jù)庫(kù)進(jìn)行交互的重任。i BATIS的系統(tǒng)結(jié)構(gòu)主要是根據(jù)JDBC規(guī)范建立與數(shù)據(jù)庫(kù)的連接, 并通過(guò)反射打通Java對(duì)象與數(shù)據(jù)庫(kù)參數(shù)交互之間相互轉(zhuǎn)化關(guān)系。i BATIS的框架結(jié)構(gòu)也是按照這種思想來(lái)組織類層次結(jié)構(gòu)的, 其實(shí)它是一種典型的交互式框架。在本項(xiàng)目應(yīng)用中, 系統(tǒng)通過(guò)web.xml中的context Config Location讀取i BATIS相關(guān)的配置文件Sql Map Config.xml、ibatis_beans.xml, 其中ibatis_beans定義了系統(tǒng)的數(shù)據(jù)源 (datasource) 、數(shù)據(jù)源包裝器 (data Source Proxy) 、spring事物管理器 (transaction Manager) 、基于bean屬性名的orm映射 (named ParameterJdbc Template) 、sql Map Client模板類 (sql Map Client Template) 以及sql Map Client對(duì)象, sql Map Client引用了系統(tǒng)各個(gè)數(shù)據(jù)庫(kù)表對(duì)象的映射文件, 通過(guò)mapping Locations屬性來(lái)讀入, 其中包括了登錄相關(guān)的sqlmap文件。i-BATIS相關(guān)配置文件的部分代碼如下:
業(yè)務(wù)層組件在Spring MVC框架中起到十分重要的作用, 提供了處理業(yè)務(wù)邏輯的服務(wù)組件。通過(guò)對(duì)業(yè)務(wù)對(duì)象建模, 可以將業(yè)務(wù)模型進(jìn)行抽象, 并且封裝在Model組件中。控制層組件通過(guò)接口方式向業(yè)務(wù)層組件發(fā)出所需服務(wù)的指令, 并根據(jù)其配置文件配置實(shí)例化業(yè)務(wù)層組件, 業(yè)務(wù)層將配置實(shí)例注入到控制層的組件中, 在Model組件中方便地調(diào)用DAO組件來(lái)存取數(shù)據(jù)。在業(yè)務(wù)層采用Spring MVC框架, 使得管理業(yè)務(wù)層的對(duì)象依賴更加方便, Model組件、DAO組件及事務(wù)處理、緩沖連接池等服務(wù)組件都能得到統(tǒng)一管理。并且, 系統(tǒng)中的業(yè)務(wù)校驗(yàn)、業(yè)務(wù)邏輯和系統(tǒng)事務(wù)管理得到了大大簡(jiǎn)化。同時(shí), 在系統(tǒng)的應(yīng)用和優(yōu)化層面, 采用Spring MVC框架可使得系統(tǒng)具有良好的兼容性和可擴(kuò)展性。以下為業(yè)務(wù)層登錄服務(wù)Login Service部分代碼:
Memcache是一項(xiàng)開(kāi)源的高性能、分布式內(nèi)存對(duì)象緩存技術(shù), 是解決系統(tǒng)訪問(wèn)量大、數(shù)據(jù)庫(kù)壓力倍增的有效方案之一。其主要策略是用內(nèi)存換磁盤讀寫(xiě), 通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù), 從而提高了系統(tǒng)訪問(wèn)的速度。部分用戶信息、系統(tǒng)常量存儲(chǔ)在高速緩存中, 在用戶登錄、高頻交易的業(yè)務(wù)中提供數(shù)據(jù)服務(wù)。只有當(dāng)緩存中數(shù)據(jù)過(guò)期時(shí), 再把數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取到緩存中, 從而減少了I/O讀寫(xiě)操作, 提高系統(tǒng)的性能。Memcache通過(guò)鍵值對(duì) (keyvalue) 的Hash Map形式在內(nèi)存中對(duì)任意的數(shù)據(jù) (比如字符串、對(duì)象等) 存儲(chǔ), 數(shù)據(jù)可以來(lái)自數(shù)據(jù)庫(kù)調(diào)用、API調(diào)用, 或者頁(yè)面渲染的結(jié)果。本系統(tǒng)采用“數(shù)據(jù)庫(kù)+緩存技術(shù)”的分布式緩存技術(shù)來(lái)優(yōu)化系統(tǒng)性能, 能夠減輕數(shù)據(jù)庫(kù)壓力、提高訪問(wèn)速度、提升系統(tǒng)運(yùn)行效率。以下為會(huì)員添加權(quán)限時(shí), 將權(quán)限更新至緩存服務(wù)器的代碼:
考慮到整個(gè)交易系統(tǒng)所面向的用戶群包括生產(chǎn)商、經(jīng)銷商、貿(mào)易商、終端消費(fèi)企業(yè)、銀行、倉(cāng)儲(chǔ)、監(jiān)管、擔(dān)保機(jī)構(gòu)、物流配送等, 涉及的交易模式也包括掛牌、競(jìng)價(jià)、商城、撮合等多種, 交易品種也會(huì)較多, 因而系統(tǒng)的整體架構(gòu)和數(shù)據(jù)的處理上比較復(fù)雜。為了保證整體業(yè)務(wù)流程的合理順暢, 數(shù)據(jù)流轉(zhuǎn)和處理的完整高效, 采用了如下圖中所示的“四個(gè)統(tǒng)一”作為整體業(yè)務(wù)功能設(shè)計(jì)的關(guān)鍵, 即統(tǒng)一用戶核心, 統(tǒng)一交易架構(gòu)設(shè)計(jì), 統(tǒng)一支付、結(jié)算管理, 統(tǒng)一數(shù)據(jù)中心。交易系統(tǒng)整體業(yè)務(wù)功能設(shè)計(jì)如圖2所示。
按照“統(tǒng)一規(guī)劃、分步實(shí)施”的在原則, 根據(jù)交易系統(tǒng)建設(shè)目標(biāo), 全力打造集資訊、交易、結(jié)算、倉(cāng)儲(chǔ)于一體、功能全面的電子交易平臺(tái), 因此, 在核心功能設(shè)計(jì)上提出了“一個(gè)支撐平臺(tái), 八大功能系統(tǒng), 一個(gè)統(tǒng)一異構(gòu)數(shù)據(jù)轉(zhuǎn)換”的系統(tǒng)結(jié)構(gòu)。其中, “一個(gè)支撐平臺(tái)”指的是系統(tǒng)運(yùn)行需要的基礎(chǔ)支撐平臺(tái), 如短信服務(wù)、郵件服務(wù)、搜索服務(wù)、CA認(rèn)證、電子簽章、報(bào)表等輔助支撐模塊, 為整個(gè)平臺(tái)的有效運(yùn)作和擴(kuò)展提供了基礎(chǔ)的服務(wù)和保證。“八大功能系統(tǒng)”主要是指門戶網(wǎng)站、電子交易系統(tǒng)、資金賬戶系統(tǒng)、融資系統(tǒng)、會(huì)員系統(tǒng)、統(tǒng)一登錄系統(tǒng)、信用評(píng)價(jià)、運(yùn)維后臺(tái)?!耙粋€(gè)統(tǒng)一異構(gòu)數(shù)據(jù)轉(zhuǎn)換”是指提供統(tǒng)一的異構(gòu)數(shù)據(jù)轉(zhuǎn)換模式, 與倉(cāng)儲(chǔ)管理等系統(tǒng)有效對(duì)接, 整合各種協(xié)同服務(wù)流程, 整合各種服務(wù)資源, 集成各種外部配套服務(wù)系統(tǒng), 形成有效的一站式服務(wù)體系。交易系統(tǒng)核心功能設(shè)計(jì)如圖3所示。
在網(wǎng)絡(luò)與信息安全、冗余、災(zāi)備等基礎(chǔ)設(shè)施方面, 結(jié)合交易業(yè)務(wù)的實(shí)際需求, 交易系統(tǒng)采用雙活集群部署, 對(duì)于關(guān)鍵數(shù)據(jù)通過(guò)Oracle數(shù)據(jù)庫(kù)的RAC技術(shù)進(jìn)行了雙機(jī)熱備, 以保證交易系統(tǒng)的高可用性。集群中兩節(jié)點(diǎn)同時(shí)運(yùn)行各自的應(yīng)用, 并且能實(shí)時(shí)相互監(jiān)控對(duì)方的運(yùn)行情況, 當(dāng)集群應(yīng)用中的一臺(tái)主機(jī)宕機(jī)后, 預(yù)先設(shè)定好的另一臺(tái)主機(jī)可立即接管它的一切工作, 確保前臺(tái)的交易業(yè)務(wù)不間斷進(jìn)行。這種設(shè)計(jì)方案可以最大程度地利用硬件資源, 一般要求各節(jié)點(diǎn)具有相等或相似的處理能力, 所有的服務(wù)在故障轉(zhuǎn)移后均保持可用, 確保交易系統(tǒng)安全、穩(wěn)定、高效運(yùn)行。交易系統(tǒng)網(wǎng)絡(luò)與信息安全設(shè)計(jì)如圖4所示。
分為3個(gè)階段:
(1) 完成需求調(diào)研和核心功能的開(kāi)發(fā), 包括門戶網(wǎng)站、電子交易系統(tǒng)、資金賬戶系統(tǒng)、融資系統(tǒng)、會(huì)員系統(tǒng)、統(tǒng)一登錄系統(tǒng)、信用評(píng)價(jià)、運(yùn)維后臺(tái)等功能以及外部接口的開(kāi)發(fā)并進(jìn)行測(cè)試, 平臺(tái)1.0版本上線試運(yùn)行, 并在選擇部分石油化工類產(chǎn)品進(jìn)行掛牌交易。計(jì)劃完成時(shí)間為2017年1月, 目前已經(jīng)完成。
(2) 深入會(huì)員企業(yè)開(kāi)展調(diào)研、考察與交流, 根據(jù)會(huì)員企業(yè)的反饋與需求, 與油品倉(cāng)儲(chǔ)、物流企業(yè)進(jìn)行戰(zhàn)略合作, 優(yōu)化相應(yīng)的軟件功能模塊并創(chuàng)新交易模式、拓展交易品種, 軟件版本進(jìn)行升級(jí), 推進(jìn)系統(tǒng)數(shù)據(jù)的本地、同城、異地3個(gè)階段的冷、熱備份處理, 進(jìn)一步提高交易系統(tǒng)的安全性。計(jì)劃完成時(shí)間為2017年7月, 目前正在進(jìn)行之中。
(3) 加大線下現(xiàn)貨會(huì)員向線上交易的轉(zhuǎn)化力度, 引導(dǎo)、調(diào)動(dòng)并激發(fā)會(huì)員企業(yè)的線上交易熱情, 在2016年底已有現(xiàn)貨會(huì)員228家、現(xiàn)貨貿(mào)易額達(dá)到139.73億元的基礎(chǔ)上, 爭(zhēng)取在2017年達(dá)到線上線下500家會(huì)員企業(yè)的規(guī)模, 線上線下交易額達(dá)到300億元以上, 并適時(shí)導(dǎo)入包括金融、倉(cāng)儲(chǔ)、物流在內(nèi)的供應(yīng)鏈管理集成服務(wù), 不斷優(yōu)化、更新平臺(tái)軟件版本, 目前正在進(jìn)行之中。
項(xiàng)目進(jìn)度表如圖5所示。
浙油中心從成立之日起就堅(jiān)持“專業(yè)、誠(chéng)信、公平、共贏”的經(jīng)營(yíng)宗旨, 以服務(wù)實(shí)體經(jīng)濟(jì)為己任, 以為客戶創(chuàng)造價(jià)值為目標(biāo), 在充分借鑒國(guó)內(nèi)外大宗商品電子經(jīng)驗(yàn)的同時(shí), 采用新穎的技術(shù)開(kāi)發(fā)、交易管理理念, 積極打造“互聯(lián)網(wǎng)+交易”新型商業(yè)模式, 協(xié)同國(guó)內(nèi)知名軟件廠商開(kāi)發(fā)了石油化工現(xiàn)貨交易細(xì)分領(lǐng)域內(nèi)的專業(yè)化、全面化、系統(tǒng)化的交易系統(tǒng)軟件, 全面滿足石油化工大宗商品現(xiàn)貨交易的需求, 對(duì)于提升浙油中心交易平臺(tái)的核心競(jìng)爭(zhēng)力、促進(jìn)國(guó)內(nèi)外石油化工大宗商品現(xiàn)貨交易商業(yè)模式創(chuàng)新等都具有十分重要的意義。
權(quán)所有©:上海陽(yáng)合儲(chǔ)運(yùn)
專業(yè)承接上海倉(cāng)庫(kù)租賃、上海倉(cāng)儲(chǔ)配送物流、上海電商倉(cāng)儲(chǔ)企業(yè)服務(wù)與微笑同在"的先進(jìn)理念不斷發(fā)展壯大。