畢業(yè)后,做了很多年的中間件,有工作流,有數(shù)據(jù)持久層框架,還有個(gè)類似tomcat的server等,一直在思考,一個(gè)最適合業(yè)務(wù)的平臺(tái)應(yīng)該是什么樣子的。因一直沒有業(yè)務(wù)經(jīng)驗(yàn),因此,盡管有一些想法,但是也不知道這些想法靠不靠譜,最近一年參與了一個(gè)CRM項(xiàng)目的設(shè)計(jì),積攢了一些業(yè)務(wù)經(jīng)驗(yàn),心中的想法逐漸清晰了起來,也有了一些底氣,寫下來跟大家交流探討。
就如同變化多端的八卦卦象是由乾、兌、離等8個(gè)基本卦象組成,萬事萬物是由數(shù)種原子構(gòu)成,形態(tài)各異的高樓大廈是由磚頭和砂漿砌成,應(yīng)用也有構(gòu)成其的“元”,即構(gòu)件。
業(yè)務(wù)應(yīng)用是分層的,典型的分層是展現(xiàn)層、流程層、服務(wù)層、數(shù)據(jù)持久層,每一層次的關(guān)注點(diǎn)都不同,構(gòu)件也不相同,比如一個(gè)業(yè)務(wù)邏輯層的構(gòu)件輸出的數(shù)據(jù),會(huì)通過展現(xiàn)層的構(gòu)件來展現(xiàn)在界面上。且各層之間的貫通黏合(如MVC中的Controller層就是黏合邏輯),通常要耗費(fèi)比較多的開發(fā)精力,一個(gè)好的業(yè)務(wù)平臺(tái),除了在各層次分別提供可復(fù)用的構(gòu)件,需要能夠減少各層黏合的工作量。
面向特定領(lǐng)域的業(yè)務(wù)平臺(tái)的易用度與其適用面是魚和熊掌的關(guān)系,針對(duì)特定領(lǐng)域,要越易用,則平臺(tái)能力就要越面向特定領(lǐng)域,則越不通用,導(dǎo)致適用面越窄。因此,一個(gè)好的平臺(tái),要注意分層,比如分成通用的構(gòu)件和領(lǐng)域化的構(gòu)件。業(yè)務(wù)用戶可按需使用。同時(shí),還需要在各層次開放定制能力,供業(yè)務(wù)用戶在各層提供領(lǐng)域構(gòu)件。
現(xiàn)在的產(chǎn)品交付都是解決方案級(jí)的交付,解決方案由多個(gè)系統(tǒng)或子系統(tǒng)構(gòu)成,一個(gè)部門,一個(gè)項(xiàng)目組通常只是提供解決方案中的一個(gè)部件,負(fù)責(zé)端到端的業(yè)務(wù)功能中的一個(gè)環(huán)境,因此,需要支持構(gòu)件的組裝,以形成更大粒度的構(gòu)件,支撐軟件復(fù)用與集成。
開發(fā)一個(gè)子系統(tǒng)粒度的構(gòu)件通常是一件很復(fù)雜的事情,如CRM,需求瑣碎、變化頻繁、不同客戶要求不盡相同,如果缺乏一個(gè)好的支撐平臺(tái),人力成本會(huì)很高,TTM也會(huì)很長(zhǎng),因此,一個(gè)好的業(yè)務(wù)平臺(tái),也需要能夠支撐快速的構(gòu)件開發(fā)、定制。
解決構(gòu)件的組裝和集成,已經(jīng)有比較成熟的技術(shù)了,如ESB、SCA等,IBM、Oracle等大廠商都有提供集成化的開發(fā)環(huán)境和執(zhí)行環(huán)境。但如何支撐構(gòu)件的開發(fā)這塊,各大廠商也有支撐,比如在展現(xiàn)層,Oracle有ADF,在流程層,IBM和Oracle都提供了BPM,在service層,IBM和Oracle提供了規(guī)則引擎,VMWare的Spring,在持久層,Oracle提供了Toplink,還有就JBOSS大名鼎鼎的Hibernate。所有前面提到的這些都是業(yè)務(wù)無關(guān)的技術(shù)部件,且各層之間的靠業(yè)務(wù)開發(fā)人員自己來黏合,還是不夠領(lǐng)域化。因此,一個(gè)業(yè)務(wù)平臺(tái),僅僅去重復(fù)制造IBM、Oracle造過的輪子,是完全沒有競(jìng)爭(zhēng)力的(這里不算成本)。面向特定領(lǐng)域,評(píng)判一個(gè)業(yè)務(wù)平臺(tái)是否優(yōu)秀的標(biāo)準(zhǔn)是:
1、是否提供了豐富的領(lǐng)域構(gòu)件?
2、是否能夠節(jié)省業(yè)務(wù)開發(fā)人員黏合各層的工作量?
3、提供了什么樣的機(jī)制來應(yīng)對(duì)需求變化?比如有的客戶要求多加個(gè)字段、加個(gè)校驗(yàn),有的客戶要求少個(gè)字段、少個(gè)校驗(yàn)等等。
待續(xù)。。。