自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

以表單為中心的Ruby on Rails面向表單編程

開發(fā) 架構(gòu)
以數(shù)據(jù)庫(kù)為中心的開發(fā)模式在企業(yè)中很常見(jiàn),本文通過(guò)一次開發(fā)案例介紹以表單為中心的開發(fā)模式:面向表單編程。

企業(yè)開發(fā)的很多特點(diǎn),決定了其經(jīng)常以數(shù)據(jù)庫(kù)為中心的開發(fā)模式。不過(guò)本文要講的是以表單為中心的開發(fā)模式,帶來(lái)了不少啟發(fā)。文章所述使用的是Ruby on Rails面向表單編程,不過(guò)基本理念應(yīng)該是通用的。

在國(guó)內(nèi)做過(guò)企業(yè)開發(fā)的人都知道,國(guó)內(nèi)的企業(yè)開發(fā)往往是業(yè)務(wù)多、時(shí)間短,這是普遍現(xiàn)象,所以軟件開發(fā)公司也都在追求快速進(jìn)行企業(yè)開發(fā)的方法。很多的開發(fā)公司做企業(yè)項(xiàng)目的時(shí)候,都是由需求人員與客戶交流,了解完需求后建立數(shù)據(jù)庫(kù)表(PowerDesigner是這個(gè)領(lǐng)域的王者,相信很多人都用過(guò)),然后將需求文檔和數(shù)據(jù)庫(kù)交給開發(fā)人員(當(dāng)然有的需求人員不建表,開發(fā)人員建表也常見(jiàn)),開發(fā)人員逐步實(shí)現(xiàn)需求。日后需求改變了,先修改數(shù)據(jù)庫(kù),然后修改程序上層界面。

這種開發(fā)模式以數(shù)據(jù)庫(kù)為中心,上層所有開發(fā)圍繞數(shù)據(jù)庫(kù)進(jìn)行,數(shù)據(jù)庫(kù)是連接需求端與開發(fā)端的橋梁。相信國(guó)內(nèi)不少公司都是采用的這種開發(fā)模式,也許正在閱讀本文的讀者所在公司也是吧?

當(dāng)然,今天我在本文想要介紹的經(jīng)驗(yàn),不是以數(shù)據(jù)庫(kù)為中心的開發(fā)模式,而是我認(rèn)為的更高級(jí)的以表單為中心的開發(fā)模式。當(dāng)然這也是我的實(shí)際工作經(jīng)驗(yàn)。看看以下這個(gè)例子:

以表單為中心的開發(fā)模式 

我們?cè)谧鲆粋€(gè)管理型項(xiàng)目的時(shí)候,用戶給了我們上面這個(gè)Excel文件,讓我們實(shí)現(xiàn)這個(gè)業(yè)務(wù),這個(gè)時(shí)候需求已經(jīng)很明確了,公司可以進(jìn)行開發(fā)了。

假如是先前的以數(shù)據(jù)庫(kù)為中心的開發(fā)模式,軟件公司需求人員需要先建表,依照Excel文件,逐個(gè)添加字段。然后把Excel文件和數(shù)據(jù)庫(kù)表給了開發(fā)人員,開發(fā)人員需要照著Excel文件做出軟件輸入界面,然后將輸入域與數(shù)據(jù)庫(kù)表格的字段一一對(duì)應(yīng)。把上面的事情做完,就算配合嫻熟的團(tuán)隊(duì),至少也得一天時(shí)間了。如果這時(shí)候用戶又提出,這個(gè)表單需要精確打印,隨時(shí)準(zhǔn)備蓋章存檔,那開發(fā)方的工作又多了很多。

以表單為中心的開發(fā)模式,不對(duì)數(shù)據(jù)庫(kù)建模,而是對(duì)表單建模,采用專門的表單建模的工具,類似于Excel,將用戶的Excel文件復(fù)制成模型,導(dǎo)出為XML格式的文件,以后這些XML文件就是我們需要維護(hù)的核心了。市場(chǎng)上表單建模工具有一些比較成熟的,比如用友的Cell組件,還有其他公司的報(bào)表軟件。我們公司獨(dú)立開發(fā)了一套工具(不對(duì)外銷售),使用這套工具可以很好的進(jìn)行面向表單的編程。 那么面向表單的編程如何解決上面用戶提出的需求呢?

用戶給我們一個(gè)Excel文件后,我們用建模工具做一個(gè)一摸一樣的表單(如果工具本身支持Excel復(fù)制則更快),將表單存為XML文件后發(fā)布到程序框架中,框架程序分析XML文件后自動(dòng)建表并添加字段。程序框架封裝了表單的讀、寫、刪、打印等常規(guī)操作,上層需要寫代碼的地方只有列表顯示功能。用一個(gè)Sql語(yǔ)句查出需要顯示的表單記錄,挑出需要在列表中顯示的字段即可。采用這種模式,不消20分鐘,上面用戶提出的需求便迎刃而解。這是最終做完后的界面之一:

新的表單 

除了實(shí)現(xiàn)上面這個(gè)界面,還可以實(shí)現(xiàn)更高級(jí)的功能,例如客戶端驗(yàn)證和運(yùn)算,保證某個(gè)單元格必填,或者某個(gè)單元格的值必須大于某個(gè)值,或者某幾個(gè)單元格必須保證相加、乘積的關(guān)系。這些功能不必寫代碼了,使用表單設(shè)計(jì)器內(nèi)置的功能即可。這種模式可以實(shí)現(xiàn)技術(shù)與業(yè)務(wù)分離。讓人專注于業(yè)務(wù),忘記技術(shù)。事實(shí)上,如果在開發(fā)項(xiàng)目的過(guò)程中,還在考慮用戶的需求從技術(shù)上怎么實(shí)現(xiàn),那無(wú)疑這個(gè)項(xiàng)目是很危險(xiǎn)的。

下面是表單建模工具設(shè)計(jì)時(shí)的界面:

表單建模工具設(shè)計(jì) 

面向表單的編程,日后需求發(fā)生的變化,大多數(shù)集中在表單的格式及表單流程上(因?yàn)楸韱纬休d了用戶的日常業(yè)務(wù)),我們只需要調(diào)整表單,重新發(fā)布就行了,不涉及到修改代碼。流程改變了也是同樣,修改后重新發(fā)布工作流文件即可。我想大多數(shù)軟件公司做項(xiàng)目的時(shí)候都有自己現(xiàn)成的框架,事先實(shí)現(xiàn)諸如用戶、權(quán)限這些常規(guī)的功能?;诒韱蔚拈_發(fā)模式,也需要軟件框架做不少事情,還需要獨(dú)立的表單設(shè)計(jì)器的配合,框架上的開發(fā)量比較大。但是當(dāng)框架上的積累達(dá)到很穩(wěn)定、很完善的時(shí)候。拿框架來(lái)做用戶的業(yè)務(wù)是很幸福的事?;诒韱蔚拈_發(fā)模式+ROR的快速開發(fā),再加上報(bào)表查詢引擎和工作流引擎的支持,開發(fā)企業(yè)應(yīng)用將是火箭般的速度。在那個(gè)狀態(tài)做項(xiàng)目,將不再是跟在用戶的后頭聽指揮,而是做的比用戶說(shuō)的快,能夠***用戶的思路,牽著用戶的鼻子走,到那個(gè)時(shí)候,開發(fā)進(jìn)度很好掌握,客戶關(guān)系很好維護(hù),要回項(xiàng)目款,自然也是不難的了。大家要更多的了解面向表單編程,可以參考用友U8和用友其他的財(cái)務(wù)軟件,里面全是表格,真是徹徹底底的面向表單編程,而且用友軟件其他的技術(shù)比較薄弱,界面很樸素,幾乎可以說(shuō)是一招走遍天下。

【編輯推薦】

  1. Ruby創(chuàng)始人談Ruby的blocks和closure結(jié)構(gòu)
  2. 牛人點(diǎn)評(píng)Ruby語(yǔ)言十大令人喜愛(ài)的特點(diǎn)
  3. Python和Ruby:流行動(dòng)態(tài)腳本語(yǔ)言之特點(diǎn)對(duì)比
  4. Ruby和Python的語(yǔ)法比較
  5. Ruby使用心得匯總:尋找高效的實(shí)現(xiàn)
責(zé)任編輯:yangsai 來(lái)源: JavaEye博客
相關(guān)推薦

2009-12-17 13:46:01

Ruby表單語(yǔ)句

2009-08-27 10:21:22

Ruby on Rai

2016-01-04 11:04:17

Web開發(fā)Ruby

2009-08-06 09:13:36

Ruby on Rai

2017-10-09 08:45:13

編程語(yǔ)言Amazon AtheSharePoint

2010-09-25 14:39:29

Bruce Tate

2009-09-29 17:04:29

2012-07-30 09:48:32

設(shè)計(jì)管理

2015-10-14 17:27:18

性能

2009-12-17 14:29:50

Ruby on Rai

2009-12-14 15:30:43

安裝Ruby on R

2015-10-10 11:00:05

RubyRails性能

2009-12-16 16:37:59

Ruby on Rai

2009-06-17 10:08:32

Ruby on Rai安裝Ruby

2009-07-20 09:12:54

Ruby on Rai

2022-01-14 10:43:50

Mendix

2009-12-16 15:23:33

Ruby on rai

2009-12-16 15:41:10

Ruby on Rai

2009-12-16 17:37:31

Ruby on Rai

2009-12-17 17:37:42

Ruby on Rai
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)