如果你是電信行業(yè)的程序員,大名鼎鼎的拓?fù)鋱D工具TWaver你一定耳熟能詳;但是如果一提到TWaver你就想到一個(gè)Swing組件包,那你毫無疑問已經(jīng)out了。經(jīng)過十幾年的發(fā)展,TWaver看上去已經(jīng)不再是一個(gè)簡單的Swing拓?fù)浣M件,這些年TWaver陸續(xù)推出了AJAX+SVG的Web版、GIS版,現(xiàn)在又出了Flex版。什么?Flex版TWaver?小玩具吧?能做企業(yè)甚至電信應(yīng)用么?看看TWaver Flex這個(gè)令人震撼的在線demo,相信你會(huì)有自己的答案。反正我堅(jiān)信Flex技術(shù)必將在電信行業(yè)應(yīng)用中大展拳腳——至少它絕不再僅僅是一個(gè)花瓶和玩具。
粗略觀察了一下TWaver在線demo(http://servasoftware.com/demo/twaver_flex/twaver-flex-online-demo.html),不少功能令人耳目一新。就說下圖這個(gè)經(jīng)典的TWaver PSTN例子,細(xì)節(jié)上就比Swing版細(xì)膩很多。整個(gè)TWaver Flex很多地方甚至已經(jīng)體現(xiàn)出比TWaver Java的Swing版本更強(qiáng)的方面。

此外,還觀察到了TWaver Flex中更多有趣的特性。
全新告警渲染方式
記得早年看Micromuse的NetCool時(shí)候,對其告警呈現(xiàn)方式很有印象:一個(gè)告警色的菱形底座,既直觀又美觀。如今TWaver Flex中也提供了這種全新的告警渲染方式,而且還有各種形狀的“底座”可以選擇:

另外,記得在使用Eclipse時(shí)如果有編譯錯(cuò)誤,代碼tree上是如何呈現(xiàn)的嗎?一個(gè)動(dòng)態(tài)產(chǎn)生的警告小圖標(biāo)疊加在tree icon上,既簡潔,又清晰:

TWaver Flex中也提供了類似效果。這種效果可以直接通過一個(gè)參數(shù)設(shè)置,不需要通過復(fù)雜的代碼進(jìn)行實(shí)現(xiàn):

TWaver Flex中,告警在樹上的渲染還不止圖標(biāo)的變化,demo中還提供了更多復(fù)雜的呈現(xiàn)方法,例如在icon后面再疊加一些額外信息,例如告警信息統(tǒng)計(jì)等等。例如demo中,一個(gè)交換機(jī)端口上產(chǎn)生了3個(gè)Critical(嚴(yán)重)告警,可以在tree icon后方再顯示一個(gè)球形icon以及告警數(shù)量和告警級別信息。另外交換機(jī)的邊框上告警傳播的模糊漸變渲染效果也比TWaver Java中更加細(xì)膩、生動(dòng):

再加上一些新提供的告警表格、告警統(tǒng)計(jì)、chart等元素,TWaver Flex中告警的呈現(xiàn)確實(shí)給人耳目一新的感覺:

全新連線捆扎呈現(xiàn)法
連線捆扎是TWaver比較有意思的特性:多個(gè)首尾相同的Link可以雙擊閉合和展開。TWaver Flex的demo中提供了更加豐富的特性。除了傳統(tǒng)的連線雙擊動(dòng)態(tài)捆扎和打開外,還可以分組捆扎、捆扎形狀定義、捆扎代理動(dòng)態(tài)定義、告警代理呈現(xiàn),等等。

上圖中下方的一組連線,其中藍(lán)色、紅色、綠色的連線可以有不同的形狀,他們可以分別雙擊展開、閉合。雙擊任意藍(lán)色連線和綠色連線,上圖變成下圖這樣(注意link捆扎后會(huì)顯示被捆扎的link數(shù)量):

更多自動(dòng)布局算法
自動(dòng)布局算法是我比較感興趣的部分。看到一個(gè)個(gè)拓?fù)鋱D變魔術(shù)一樣的被布局成千變?nèi)f化的形狀,確實(shí)很有成就感。在TWaver Flex的demo中,感覺自動(dòng)布局更加流暢、清晰。另外demo中的彈簧算法似乎也比TWaver Java中的更加流暢、有質(zhì)感。

另外一個(gè)就是網(wǎng)絡(luò)總線布局。以前在TWaver Java的例子中也看到過總線布局,不過TWaver Flex中的總線布局效果更加細(xì)膩(看看它總線的立體效果)。另外,總線的形狀還會(huì)隨著窗口大小變化而動(dòng)態(tài)調(diào),相當(dāng)有趣:

矢量圖支持
TWaver Flex中有一個(gè)demo是現(xiàn)實(shí)了矢量的美國地圖各個(gè)州以及一些chart現(xiàn)實(shí)出來的數(shù)據(jù)。仔細(xì)研究其代碼,發(fā)現(xiàn)是使用了xml定義的矢量圖格式,并用這些格式動(dòng)態(tài)生成了一些節(jié)點(diǎn)對象。這樣,這些節(jié)點(diǎn)就不僅僅是地圖對象,還可以表示一些業(yè)務(wù)網(wǎng)絡(luò)并攜帶一些業(yè)務(wù)數(shù)據(jù)。這個(gè)功能在電信資源管理、網(wǎng)管系統(tǒng)里面肯定會(huì)非常有用。

另外一個(gè)可以使用矢量圖的地方是節(jié)點(diǎn)圖片。除了位圖外,還可以使用Flex簡化的一個(gè)SVG圖形格式,這樣就可以實(shí)現(xiàn)圖片的無級縮放了。例如TWaver Flex中這個(gè)demo中的節(jié)點(diǎn),通過縮放后,可以觀察到確實(shí)使用了無失真的矢量圖格式:

如果對其中的節(jié)點(diǎn)圖片進(jìn)行拖拽放大,會(huì)看到矢量效果,不會(huì)失真:

設(shè)備網(wǎng)格
以前在做電信綜合網(wǎng)管之類的系統(tǒng)時(shí)候,如何呈現(xiàn)各種廠商、各種型號、各種類型的電信設(shè)備,是個(gè)頭大的事情。如果使用美工效果圖,工作量巨大;如果使用簡單的方格,則顯示效果過于簡單。TWaver Flex中的網(wǎng)格呈現(xiàn)方法感覺效果比較好。通過對設(shè)備面板進(jìn)行網(wǎng)格化,通過定義每個(gè)板卡占用的寬和高等,就可以比較清晰、容易的定義設(shè)備的結(jié)構(gòu),并且呈現(xiàn)的效果也不錯(cuò):

通過網(wǎng)格以及漸變效果表現(xiàn)設(shè)備板卡、模塊

通過網(wǎng)格+圖片表現(xiàn)板卡、端口
當(dāng)然使用網(wǎng)格+圖片的方式會(huì)有更好的效果:

通過網(wǎng)格和圖片表現(xiàn)整個(gè)設(shè)備機(jī)架圖
更多特效
當(dāng)然,沒點(diǎn)動(dòng)畫、特效的話,怎么體現(xiàn)出Flex的優(yōu)勢呢?例如這個(gè)拓?fù)鋱D魚眼,絕對可以讓一臉古板的電信網(wǎng)管軟件增添一點(diǎn)生動(dòng)。

其他還有很多動(dòng)畫效果其他特殊渲染效果,大家可以跑一下demo自己看看,這里就不啰嗦了。
流程圖
最后還發(fā)現(xiàn)一個(gè)流程圖的編輯器,可以直接拖拽出來一個(gè)流程圖,還可以導(dǎo)出XML格式進(jìn)行保存,有點(diǎn)意思:

總結(jié)
看到這些TWaver Flex新特性后,感覺到Flex離我們電信開發(fā)者也越來越近了。記得一年前和朋友提起Flex在電信行業(yè)應(yīng)用的前景,很多人都嗤之以鼻:嚴(yán)肅的電信行業(yè)怎么可能考慮這種“玩具”呢?現(xiàn)在,似乎這種態(tài)度的開發(fā)者已經(jīng)越來越多少了,很多電信軟件企業(yè)已經(jīng)不再一再排斥Flex,甚至很多企業(yè)已經(jīng)在大量使用了。尤其混合了傳統(tǒng)Web和Flex的應(yīng)用已經(jīng)越來越多,這是一件好事。如果有一天Flex被完整的支持在iPhone、Android等移動(dòng)設(shè)備上,那么,有了TWaver Flex,“掌上運(yùn)維”、“掌上監(jiān)控”等概念則不再僅僅是概念,而變成實(shí)實(shí)在在的殺手級應(yīng)用。
那么,TWaver Flex以及大量優(yōu)秀的Flex產(chǎn)品,是否會(huì)給傳統(tǒng)的電信軟件開,發(fā)尤其是UI部分帶來變革呢?其實(shí)電信軟件向來嚴(yán)肅、嚴(yán)謹(jǐn),“電信級”意味著比“企業(yè)級”要求更高一籌。穩(wěn)定性、效率、可擴(kuò)展性、容災(zāi)…都有很高的要求。無論是網(wǎng)管系統(tǒng),還是各種監(jiān)控系統(tǒng)、資源管理系統(tǒng),大多都是C/S結(jié)構(gòu)的天下。雖然Web的發(fā)展和成熟,基于Web模式的電信應(yīng)用也開始多起來,尤其各種業(yè)務(wù)管理系統(tǒng),而底層的網(wǎng)管系統(tǒng)還是以C/S的居多。不過,當(dāng)年以AJAX、JS等技術(shù)為代表的Web技術(shù)也面臨現(xiàn)在Flex同樣的質(zhì)疑,而現(xiàn)在Web開發(fā)甚至變成了主流技術(shù)(看看所謂的SSH流行程度就可以感受到)。Flex作為一個(gè)UI部分的新技術(shù),在復(fù)雜圖形方面的處理能力無疑是傳統(tǒng)Web應(yīng)用的強(qiáng)有力補(bǔ)充。這也使得網(wǎng)管類的系統(tǒng)應(yīng)用Web+Flex的混合方式成為可能。但是如果要開發(fā)全Flex的大型電信業(yè)務(wù)系統(tǒng),目前來說還有一些劣勢。一個(gè)是由于Flex在通用組件方面與發(fā)展了多年的Web產(chǎn)品相比(例如Extjs等)還有一定差距,另外一方面HTML的成熟、簡單、易用,也不是Flex能夠相比的,短期甚至相當(dāng)長的一段時(shí)期內(nèi),各種電信系統(tǒng)恐怕還是以C/S、Web、Flex的混合方式為主。Flex雖然不大可能成為今后電信系統(tǒng)開發(fā)的主流,但絕對可以成為一個(gè)傳統(tǒng)Web系統(tǒng)強(qiáng)有力的補(bǔ)充。從這一點(diǎn)上來說,F(xiàn)lex會(huì)給電信軟件的開發(fā)帶來變革,一個(gè)UI開發(fā)方式的變革。
所以,我的結(jié)論是:TWaver Flex是個(gè)優(yōu)秀的產(chǎn)品。給電信軟件開發(fā)帶來變革?有點(diǎn)大;不過,要說給電信軟件UI開發(fā)或拓?fù)溟_發(fā)帶來變革,那是深信不疑。
Flex來了,而且來勢洶洶。無論是做電信應(yīng)用還是企業(yè)應(yīng)用,我們不必逃避它,還是緊緊的擁抱它吧!