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