程嬌華
(福建農(nóng)林大學(xué)軟件工程學(xué)院,福建福州350002)
隨著著中國市場經(jīng)濟(jì)的日趨成熟,中國企業(yè)面對的競爭壓力越來越大,企業(yè)要想生存,在提高企業(yè)內(nèi)部管理效率、充分利用企業(yè)內(nèi)部資源的基礎(chǔ)上,必須不斷擴(kuò)展銷售渠道,擴(kuò)大消費(fèi)群體,提高企業(yè)的競爭力。隨著信息化時(shí)代的到來,電子商務(wù)網(wǎng)站成為企業(yè)對外展示商品信息、從事商務(wù)活動的窗口。如何建立企業(yè)的電子商務(wù)網(wǎng)站,把企業(yè)業(yè)務(wù)擴(kuò)展到Internet上,已成為現(xiàn)代企業(yè)發(fā)展的一個(gè)重點(diǎn)。
因此,本文通過對Rails框架的體系結(jié)構(gòu)進(jìn)行深入分析的基礎(chǔ)上,結(jié)合Rails框架的特點(diǎn),設(shè)計(jì)出了基于Rails框架的電子商務(wù)網(wǎng)站。通過該網(wǎng)站,一方面可以加強(qiáng)對企業(yè)產(chǎn)品銷售的標(biāo)準(zhǔn)化、規(guī)范化管理,全面提高企業(yè)營銷的管理水平和信息化程度;另一方面能夠合理利用人力和物力資源,有效地管理各種業(yè)務(wù)與關(guān)系,縮短銷售周期、降低銷售成本、增加收益,從而增強(qiáng)企業(yè)的市場競爭力。
Rails是一個(gè)用Ruby編程語言編寫的、開源的Web應(yīng)用程序框架,它為程序開發(fā)人員提供強(qiáng)大的框架支持。Rails的目標(biāo)是可以用輕松直接的方式,并用盡量少的代碼來開發(fā)Web應(yīng)用。Rails不同于現(xiàn)有復(fù)雜的Web開發(fā)框架,它是一個(gè)更符合實(shí)際需要而且更高效的Web框架,它結(jié)合了PHP體系快速開發(fā)的優(yōu)點(diǎn)和Java體系程序規(guī)整的優(yōu)點(diǎn)。Rails框架實(shí)現(xiàn)了MVC(model-view-controller,模型-視圖-控制器)體系結(jié)構(gòu)。MVC是一個(gè)設(shè)計(jì)模式集,它分離了數(shù)據(jù)模型、用戶界面和應(yīng)用程序的控制邏輯。分離后的代碼保存在3個(gè)層中[1,2]:
(1)模型層:封裝了應(yīng)用程序中數(shù)據(jù)操作相關(guān)的代碼。應(yīng)用程序?qū)υ紨?shù)據(jù)存儲的任何動作都會經(jīng)由此層。修改或添加數(shù)據(jù)存儲中的數(shù)據(jù)含義的操作代碼要在此層中執(zhí)行。
(2)視圖層:即表現(xiàn)層,封裝了程序的頁面和表單。它負(fù)責(zé)向用戶展示應(yīng)用程序的執(zhí)行結(jié)果。
(3)控制器層:包含了應(yīng)用程序的控制邏輯。控制程序流程的代碼以及用戶觸發(fā)某個(gè)方法后將要執(zhí)行的代碼存放在此層中。
各個(gè)組件之間的關(guān)系如圖1所示。
基于Rails框架的電子商務(wù)網(wǎng)站主要就是實(shí)現(xiàn)網(wǎng)上購物的信息化管理,因此電子商務(wù)網(wǎng)站最核心的功能就是實(shí)現(xiàn)網(wǎng)上在線銷售功能,以擴(kuò)展企業(yè)的銷售渠道,擴(kuò)大企業(yè)產(chǎn)品消費(fèi)群體,提高企業(yè)的效益。
作為開源語言,Ruby被移植為可以在許多不同計(jì)算機(jī)平臺和架構(gòu)體系上運(yùn)行的語言。包括M icrosoftWindows(95/98/XP/Vista)、Linux、MS-DOS、BSD、BeOS等。為了方便起見,本課題選擇在Windows XP下搭建開發(fā)平臺。首先下載并安裝最新的Ruby 1.9.1-p378一鍵安裝包。然后通過RubyGems安裝Rails,RubyGems是標(biāo)準(zhǔn)的Ruby包管理器,它的功能類似于Linux下的apt-get。使用RubyGems可以方便地從遠(yuǎn)程服務(wù)器下載并安裝Rails。安裝成功后,在命令行窗口中輸入并運(yùn)行rails–v,系統(tǒng)將會顯示Rails的版本信息,如圖2所示,顯示的Rails版本為2.3.5。
圖2 Rails的版本信息
目前Ruby語言只支持以下幾種數(shù)據(jù)庫:Oracle、IBM DB2、MySQL、PostgreSQL、SQLite、Microsoft SQL Server和Firebird,這些數(shù)據(jù)庫各有優(yōu)劣。由于MySQL是一個(gè)優(yōu)秀的開源數(shù)據(jù)庫管理系統(tǒng),它具有快速、易用的特點(diǎn),因此受到了全球開發(fā)者的廣泛支持,而且Ruby on Rails框架直接集成了到MySQL數(shù)據(jù)庫的接口,因此MySQL數(shù)據(jù)庫比較適合作為Ruby on Rails開發(fā)的后臺數(shù)據(jù)庫。本文也使用MySQL數(shù)據(jù)庫管理系統(tǒng)對后臺進(jìn)行創(chuàng)建和管理。
通過對網(wǎng)站進(jìn)行需求分析可知,電子商務(wù)網(wǎng)站中使用的數(shù)據(jù)庫實(shí)體對象分別為商品類型、商品信息、商品訂單、商品訂單明細(xì)和管理員實(shí)體。其中,商品訂單實(shí)體對應(yīng)的數(shù)據(jù)表如表1所示。
表1 商品訂單信息表
3.3.1 網(wǎng)站首頁設(shè)計(jì)
在電子商務(wù)網(wǎng)站的首頁商品展示區(qū)中應(yīng)該能夠使客戶在第一時(shí)間看到該企業(yè)最新推出的精品展銷、最新商品及熱門商品,而且在“商品分類列表”中客戶可以對商品進(jìn)行分類瀏覽查詢,并根據(jù)自己的喜好購買所需的商品。
在/app/views/main路徑下,編寫B(tài)ook_Info.rhtm l視圖,用于顯示企業(yè)展示商品的基本信息。部分代碼片段如下:
展示商品信息頁面不會被重載,頁面內(nèi)容也不會被刷新,只是局部更新,這是由于程序中使用了Rails框架中的Ajax技術(shù)??蛻艨梢酝ㄟ^點(diǎn)擊展示商品信息模塊中的商品照片,直接進(jìn)入購物車管理頁面。
3.3.2 購物車管理模塊設(shè)計(jì)
購物車功能的實(shí)現(xiàn)是電子商務(wù)網(wǎng)站設(shè)計(jì)的關(guān)鍵,主要用于顯示及管理用戶的購物信息。用戶通過購物車管理頁面,可以進(jìn)行查看和編輯商品信息等操作。購物車管理頁面實(shí)現(xiàn)的功能主要包括添加商品到購物車、瀏覽購物車中的商品信息、修改購物車中的商品信息、刪除購物車中的商品和清空購物車等。
本頁面通過在admin_control.rb控制器文件中添加list_product方法實(shí)現(xiàn)添加購買商品記錄進(jìn)數(shù)據(jù)庫,代碼片段如下:
系統(tǒng)調(diào)用了Rails提供的paginate方法來返回當(dāng)前頁的product對象和paginator對象(用于分頁設(shè)置),這些product對象是按照OrderTime和product_id進(jìn)行排序的;并且,在paginator對象中將每頁最多顯示的記錄條數(shù)設(shè)置為5。然后,將返回的product對象和paginator對象分別賦值給@products_pages和@products兩個(gè)實(shí)例變量。
在adm in_control.rb控制器文件中添加destroy_product方法實(shí)現(xiàn)從數(shù)據(jù)庫中刪除一條商品記錄,代碼片段如下:
Model文件中不需要另外添加任何代碼??蛻粼跒g覽所有商品的頁面中選擇一條購買商品記錄,單擊它的“刪除”鏈接,并在確認(rèn)提示窗口中單擊“確定”按鈕,即可看到瀏覽所有商品的頁面中少了一條剛才刪除的購買商品記錄。
3.3.3 在線支付模塊設(shè)計(jì)
在線支付功能一般由兩部分組成,一是選擇在線支付方式,二是填寫自己的支付卡號和支付密碼,完成訂單支付。為了拓展銀行業(yè)務(wù),目前許多大型銀行都在網(wǎng)上開設(shè)了網(wǎng)上銀行業(yè)務(wù),并提供相應(yīng)的網(wǎng)上銀行支付接口。因此,客戶在完成購物車中的商品信息的修改后,電子商務(wù)網(wǎng)站將給客戶生成一個(gè)訂單(有一個(gè)唯一的訂單號),單擊“提交”按鈕即可進(jìn)入“選擇支付方式”頁面(PayWay.rhtm l),在該頁客戶可以選擇在線支付方式進(jìn)行在線付款,其運(yùn)行效果如圖3所示。
實(shí)現(xiàn)該功能的具體步驟如下:首先將一個(gè)表格(Table)控件置于PayWay.rhtm l頁中,為整個(gè)頁面進(jìn)行布局。然后從“工具箱/標(biāo)準(zhǔn)”選項(xiàng)卡中拖放17個(gè)ImageButton控件,設(shè)置各個(gè)控件的ImageUrl屬性值,用于顯示在線支付方式。最后在Click事件下跳轉(zhuǎn)到銀行的在線支付頁填寫支付信息,完成訂單支付。基于Rails框架的電子商務(wù)網(wǎng)站流程圖如圖4所示,
為了驗(yàn)證系統(tǒng)平臺的各個(gè)功能,系統(tǒng)通過使用Selenium和Selenium on Rails插件進(jìn)行自動化測試。Selenium的內(nèi)核,即Selenium Core,是用JavaScript實(shí)現(xiàn)的,它可以直接在瀏覽器里運(yùn)行,而不需要在另一個(gè)進(jìn)程里運(yùn)行。因此,采用Selenium編寫的腳本可以發(fā)出類似于鼠標(biāo)單擊這樣的命令,從而模擬客戶瀏覽器和Web應(yīng)用程序之間,以及管理員瀏覽器和Web應(yīng)用程序之間的真實(shí)交互[3]。例如,我們可以寫一個(gè)腳本,模擬客戶訪問租賃信息管理模塊,先在車輛租賃登記模塊中填寫好內(nèi)容,然后單擊“預(yù)定”按鈕提交。這時(shí),Selenium可以檢查發(fā)送是否正確,即通過檢查下一個(gè)顯示頁面上是否包括預(yù)期的內(nèi)容,所有的這些動作都是通過Selenium命令實(shí)現(xiàn)的。
Selenium on Rails是由Jonas Bengtsson開發(fā)的一個(gè)插件,它把Selenium集成到Rails框架中。這個(gè)插件提供了很多特性來簡化Rails中Selenium的使用。
隨著Internet的發(fā)展和普及,網(wǎng)上購物這一新型的購物方式已逐漸被人們所接受,并迅速改變甚至取代了傳統(tǒng)的購物觀念。而在線交易作為新的商業(yè)運(yùn)營模式也被越來越多的企業(yè)所運(yùn)用。本文所設(shè)計(jì)的基于Rails框架的電子商務(wù)網(wǎng),充分利用了Rails框架的優(yōu)點(diǎn),從整體上降低了企業(yè)成本,加快企業(yè)對市場的響應(yīng)速度,從而大大提高了企業(yè)的服務(wù)質(zhì)量和競爭力。
[1] 劉志軍,黃志明.基于Ruby on Rails的Web應(yīng)用研究[J].電腦知識與技術(shù),2009,18:4770~4771.
[2] Anon.Ruby on Rails[J].Database and Network Journal,2005,35(6):6-7.
[3] Geer,David.Will software developers ride ruby on rails to success?[J].2006,39(2):18-20.
[4] 柳靖,曹璐,趙丹.Ruby on Rails快速Web應(yīng)用開發(fā)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2006,8.
[5] 周迅飛,王崑聲.基于MVC模式的Rails框架研究[J].計(jì)算機(jī)仿真,2006,2:270~274..