icop業(yè)務(wù)框架(Business Framework)里的技術(shù)框架(Technology Framework))

前面我們簡單介紹過前端部分的成果悍募,You-UI首show

我們最初的技術(shù)體系是下圖中沒有紅框的部分,發(fā)展到現(xiàn)在战转,引入了一些組件搜立,也自行實現(xiàn)了很多功能以躯,大部分都是業(yè)務(wù)框架方面的槐秧,但也有與具體業(yè)務(wù)關(guān)系沒那么強(qiáng)的,比如前面說的構(gòu)成前端You-UI體系的重要部分icop界面設(shè)計器忧设,基本上就是一個通用的組件刁标。其實圍繞后端,我們的開發(fā)也做了很多工作址晕,這些都是我們整個技術(shù)體系里進(jìn)行了重點增強(qiáng)的部分膀懈。

從標(biāo)題看就比較糾結(jié),業(yè)務(wù)框架(BF)里的技術(shù)框架(TF)谨垃,通常我們說的技術(shù)框架启搂,應(yīng)該是指基礎(chǔ)技術(shù)框架硼控,比如上面圖上所列的這些前端的react、jquery等胳赌,后端的spring牢撼、freemarker、shiro疑苫、dubbo等等熏版,這些在我們使用的iuap平臺框架里基本都提供了。而我們這里說的是業(yè)務(wù)框架里的技術(shù)框架捍掺,是說在這些基礎(chǔ)技術(shù)框架的基礎(chǔ)上撼短,結(jié)合一些業(yè)務(wù)或者與業(yè)務(wù)場景相關(guān)的特性,再進(jìn)行一層封裝挺勿,一方面與具體的技術(shù)實現(xiàn)進(jìn)行解耦曲横,另一方面更加貼近業(yè)務(wù)開發(fā)的需要,實際上是為了滿足業(yè)務(wù)框架的需要而進(jìn)行的技術(shù)框架進(jìn)一步封裝满钟。比如文件存儲引入了FastDFS胜榔,我們則對其做了進(jìn)一步封裝,形成附件管理的業(yè)務(wù)組件湃番,這個組件包含前后端實現(xiàn)夭织,前端負(fù)責(zé)圍繞文件上傳的交互,后端則利用FastDFS等基礎(chǔ)技術(shù)完成文件的存取吠撮,同時建立與業(yè)務(wù)的關(guān)系尊惰。有了這個組件,就可以通過之前介紹的界面設(shè)計器直接在任何單據(jù)上啟用附件功能泥兰,而上傳文件與單據(jù)的關(guān)系弄屡,文件如何存儲等等則完全不需要業(yè)務(wù)開發(fā)人員關(guān)注了,這大大簡化了業(yè)務(wù)開發(fā)人員的工作鞋诗,初步形成了一個獨立的單據(jù)附件管理的中臺微服務(wù)膀捷。基礎(chǔ)技術(shù)框架提供的是文件服務(wù)削彬,而用戶要的是合同附件全庸、質(zhì)檢照片等等業(yè)務(wù)意義上的單據(jù)附件。類似的有很多融痛,比如審批流微服務(wù)壶笼、日志微服務(wù)等等。

今天重點介紹在持久化方面的封裝雁刷。說到持久化覆劈,可能有人會說直接用JPA、mybatis之類不就行了嗎,干嘛還要再封裝一層责语。如果單純從完成一個軟件項目或者工程炮障,確實沒有必要再做這些封裝,直接去開發(fā)業(yè)務(wù)就好了坤候,但是我們的項目背景是要支撐各個團(tuán)隊共同以相對統(tǒng)一的標(biāo)準(zhǔn)完成開發(fā)任務(wù)铝阐,并且要滿足多組織多業(yè)務(wù)領(lǐng)域的復(fù)雜要求,如果不進(jìn)一步進(jìn)行封裝铐拐,業(yè)務(wù)開發(fā)會有大量的重復(fù)工作徘键。具體大概有下面這些點:

1、數(shù)據(jù)隔離等機(jī)制的底層實現(xiàn)遍蟋,這對多組織下的企業(yè)級應(yīng)用平臺非常重要吹害,通常可以有多種方式實現(xiàn)虚青,比如通過更底層的DB級切分結(jié)合應(yīng)用訪問不同數(shù)據(jù)源URL來實現(xiàn)它呀,但這類方式很難與上層的業(yè)務(wù)相結(jié)合,運維開發(fā)協(xié)同的工作量非常大棒厘,難于滿足實際業(yè)務(wù)的多樣化要求纵穿。因此,我們通過icop-jdbc對持久層進(jìn)行封裝以在應(yīng)用平臺層實現(xiàn)數(shù)據(jù)隔離的能力奢人。當(dāng)然這只是手段之一谓媒,可以和DB及其他邏輯和物理的隔離機(jī)制一起使用。數(shù)據(jù)隔離是個強(qiáng)制策略何乎,必須要在框架層來實現(xiàn)而不能由業(yè)務(wù)開發(fā)來處理句惯。實際使用中除了提供相應(yīng)機(jī)制和能力,結(jié)合業(yè)務(wù)應(yīng)用和運營的需要還有很多工作要做支救,但這些都不應(yīng)該是業(yè)務(wù)開發(fā)層來實現(xiàn)抢野。

2、快速查詢功能的實現(xiàn)各墨。通過配置就可以完成查詢功能的實現(xiàn)指孤,避免大量的開發(fā)工作。查詢設(shè)計器及查詢方案體系可以幫助開發(fā)自動實現(xiàn)查詢條件前端交互贬堵、后臺解析恃轩,結(jié)合icop-jdbc在持久層的封裝框架即可自動完成業(yè)務(wù)數(shù)據(jù)的查詢。根據(jù)用戶的使用習(xí)慣來調(diào)整查詢方案扁瓢,盡量自動給他提供他最想要看到的數(shù)據(jù)详恼,本質(zhì)上和今日頭條之類的類似补君,但作為企業(yè)應(yīng)用又有很大的不同引几,我們要摸索的還很多,但統(tǒng)一的一套中后臺機(jī)制和一定的基礎(chǔ)技術(shù)的封裝是必須的,只有這樣才能拿到相關(guān)的信息伟桅,才有進(jìn)一步的想象空間敞掘。

前端條件自動解析成后端SQL

3、結(jié)合元數(shù)據(jù)的實現(xiàn)通用數(shù)據(jù)服務(wù)體系楣铁,比如單據(jù)打印的統(tǒng)一數(shù)據(jù)服務(wù)玖雁、審批流運行態(tài)取業(yè)務(wù)單據(jù)數(shù)據(jù)、通用的移動端查詢服務(wù)等等盖腕,標(biāo)準(zhǔn)化并避免大量重復(fù)工作赫冬。

4、關(guān)系型數(shù)據(jù)到業(yè)務(wù)對象的轉(zhuǎn)換溃列,比如每個單據(jù)都會用到很多其他檔案的數(shù)據(jù)劲厌,在這一層能夠統(tǒng)一進(jìn)行處理,這在微服務(wù)架構(gòu)下非常重要听隐,避免了大量的重復(fù)開發(fā)工作补鼻。目前我們的業(yè)務(wù)開發(fā)只需要按照要求進(jìn)行相關(guān)服務(wù)的注冊和實體的注釋即可,平臺組件會根據(jù)需要到緩存和具體服務(wù)去進(jìn)行相關(guān)解析處理雅任。具體的處理機(jī)制要請后臺負(fù)責(zé)人胡鵬同學(xué)來展開一篇

5风范、統(tǒng)一標(biāo)準(zhǔn)業(yè)務(wù)功能的實現(xiàn)機(jī)制,比如統(tǒng)一制單人沪么、時間硼婿、組織等維度的自動補(bǔ)全機(jī)制,規(guī)范化并能夠避免大量重復(fù)工作

早期設(shè)計考慮

6禽车、提供統(tǒng)一的業(yè)務(wù)對象屬性擴(kuò)展機(jī)制(完善中)加酵,比如結(jié)合前端組件實現(xiàn)統(tǒng)一的單據(jù)擴(kuò)展機(jī)制,不是簡單的預(yù)留幾個字段哭当,我們需要預(yù)留字段結(jié)合縱向彈性域(為什么要這么復(fù)雜后面展開為另一篇)的設(shè)計方式來徹底滿足大量個性化需求的要求猪腕,不僅是提供一個方法,而是提供一個前端業(yè)務(wù)組件钦勘、后端標(biāo)準(zhǔn)服務(wù)(CRUD)相結(jié)合的整體解決方案陋葡,業(yè)務(wù)開發(fā)人員啟用即可。

7彻采、樂觀鎖機(jī)制的統(tǒng)一實現(xiàn)腐缤,不只是提供一個機(jī)制,這些機(jī)制都是框架或者說DB本身已經(jīng)具備的肛响,我們要做的是在這些基礎(chǔ)至上進(jìn)行封裝岭粤,比如在使用icop的框架保存單據(jù)時會自動去校驗TS字段,如果不成功怎么處理等等特笋,這些如果不封裝剃浇,我們所有的業(yè)務(wù)開發(fā)人員就都需要寫大量重復(fù)的代碼,并且可能會出現(xiàn)不同的人處理方式不同等問題

8、更方便與分析平臺打通虎囚,比如數(shù)據(jù)分析平臺可以利用這一層的數(shù)據(jù)服務(wù)快速完成數(shù)據(jù)建模角塑。目前有兩種機(jī)制為數(shù)據(jù)分析平臺提供服務(wù):1、批量獲取歷史業(yè)務(wù)對象(避免復(fù)雜的sql拼寫模型轉(zhuǎn)換)2淘讥、通過消息隊列提供流式數(shù)據(jù)? (進(jìn)kylin圃伶、進(jìn)ElasticSearch)。這兩種方式對應(yīng)兩種不同的業(yè)務(wù)場景蒲列,后面可以再展開一篇窒朋。

9、更精細(xì)的數(shù)據(jù)集級與字段權(quán)限的控制蝗岖,這部分如果要做也需要在這一級來進(jìn)行統(tǒng)一的處理炼邀。目前還沒有完成平臺級封裝,但可以快速實現(xiàn)一些簡單的邏輯控制剪侮,比如根據(jù)組織拭宁、制單人進(jìn)行一下規(guī)則性控制。

單據(jù)擴(kuò)展及控制相關(guān)考慮

為了更好的支持跨企業(yè)多領(lǐng)域應(yīng)用瓣俯,基于基礎(chǔ)技術(shù)框架進(jìn)行進(jìn)一步封裝是必須的杰标。WHY和WHAT已經(jīng)越來越清晰了,但HOW還有很多工作要做彩匕。目前這些特性我們有些還不是很完善腔剂,并且除了這些特性以外,還有很多支持跨企業(yè)多領(lǐng)域應(yīng)用的一些特性在不斷納入進(jìn)來驼仪。這一層的開發(fā)一方面需要精通相關(guān)底層技術(shù)框架掸犬,另一方面還需要對業(yè)務(wù)需求進(jìn)行歸納抽象,并且由于是共用的業(yè)務(wù)支撐體系绪爸,每一點小失誤都可能產(chǎn)生較大的影響湾碎,對我們的技術(shù)團(tuán)隊是一個很大的挑戰(zhàn)。但是經(jīng)常他們的寥寥幾行代碼卻可以代替我們廣大業(yè)務(wù)開發(fā)人員合計數(shù)千行的代碼奠货,大家已經(jīng)逐漸看到這些成果的巨大價值介褥。這個光榮又艱巨的使命由胡鵬為首的業(yè)務(wù)支撐平臺小隊在承擔(dān)。如果你不怕挑戰(zhàn)递惋,對技術(shù)感興趣柔滔,歡迎請加入他們吧。

歡迎聯(lián)系:wusna@yonyou.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末萍虽,一起剝皮案震驚了整個濱河市睛廊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杉编,老刑警劉巖超全,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咆霜,死亡現(xiàn)場離奇詭異,居然都是意外死亡卵迂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門绒净,熙熙樓的掌柜王于貴愁眉苦臉地迎上來见咒,“玉大人,你說我怎么就攤上這事挂疆「睦溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵缤言,是天一觀的道長宝当。 經(jīng)常有香客問我,道長胆萧,這世上最難降的妖魔是什么庆揩? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮跌穗,結(jié)果婚禮上订晌,老公的妹妹穿的比我還像新娘。我一直安慰自己蚌吸,他們只是感情好锈拨,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布购城。 她就那樣靜靜地躺著瓮床,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烛卧。 梳的紋絲不亂的頭發(fā)上佩微,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天缝彬,我揣著相機(jī)與錄音,去河邊找鬼哺眯。 笑死跌造,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的族购。 我是一名探鬼主播壳贪,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寝杖!你這毒婦竟也來了违施?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瑟幕,失蹤者是張志新(化名)和其女友劉穎磕蒲,沒想到半個月后留潦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡辣往,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年兔院,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片站削。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坊萝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出许起,到底是詐尸還是另有隱情十偶,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布园细,位于F島的核電站惦积,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猛频。R本人自食惡果不足惜狮崩,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹿寻。 院中可真熱鬧厉亏,春花似錦、人聲如沸烈和。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽招刹。三九已至恬试,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疯暑,已是汗流浹背训柴。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留妇拯,地道東北人幻馁。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像越锈,于是被迫代替她去往敵國和親仗嗦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容