企業(yè)混搭應(yīng)用 讓用戶來(lái)體驗(yàn)SOA
企業(yè)混搭應(yīng)用是一個(gè)隨著Web 2.0潮流而產(chǎn)生的新興事物。本文從概念出發(fā),結(jié)合實(shí)際,介紹了企業(yè)混搭應(yīng)用。通過(guò)與相關(guān)概念的對(duì)比,以及實(shí)際工作和日常生活中的體會(huì),對(duì)可能推動(dòng)企業(yè)業(yè)務(wù)發(fā)展的混搭應(yīng)用作了列舉和展望。
一. 企業(yè)混搭應(yīng)用的概念
企業(yè)混搭應(yīng)用,又叫Enterprise Mashups Application。Mashup是什么?企業(yè)業(yè)務(wù)混搭從哪里來(lái)?它與SOA又有什么關(guān)系呢?我們從概念開(kāi)始。
什么是混搭
混搭(Mashup)是一種新型的基于Web的數(shù)據(jù)集成應(yīng)用程序。傳統(tǒng)上,Mashup源于流行音樂(lè),是一種音樂(lè)類型,也被稱為bastard pop,指的是藝術(shù)家組合或者混合兩首不同的歌曲(通常屬于不同的流派)的音樂(lè)和歌詞來(lái)創(chuàng)作新的歌曲。它擁有三個(gè)特征:天生的創(chuàng)新性,人們的經(jīng)驗(yàn)性和結(jié)果的和諧性。
特征一:天生的創(chuàng)新性。從起源上看,Mashup是一種內(nèi)容上的創(chuàng)新組合。這里重點(diǎn)是創(chuàng)新,雖然組合的元素通常都源自于本來(lái)無(wú)關(guān)但非常常見(jiàn)的東西,但這和任何創(chuàng)新活動(dòng)類似,一旦組合便會(huì)產(chǎn)生一種具有新意的新生事物。
特征二:人們的經(jīng)驗(yàn)性。這些組合都是人工進(jìn)行合成的,而不是通過(guò)計(jì)算算法來(lái)合成的,人們的經(jīng)驗(yàn)和思維在Mashup過(guò)程中起到了決定性作用。
特征三:結(jié)果的和諧性。無(wú)獨(dú)有偶,在現(xiàn)實(shí)社會(huì)中Mashup風(fēng)潮也影響著服裝時(shí)尚界,設(shè)計(jì)師們把街頭朋克元素引入到傳統(tǒng)的英格蘭服飾,用運(yùn)動(dòng)T恤混搭具有少女風(fēng)情的篷篷裙,產(chǎn)生了意想不到的匹配效果。時(shí)尚界也稱Mix & Match風(fēng)格,從字面上理解,Mix是混合,Match是匹配,合起來(lái)翻譯成混搭。指將不同風(fēng)格,不同材質(zhì),不同身價(jià)的東西按照個(gè)人口味拼湊在一起,從而混合搭配出完全個(gè)人化的風(fēng)格。Mix就是混合兩個(gè)或多個(gè)元素,來(lái)展現(xiàn)新的用戶體驗(yàn)。Match是指一種和諧相配的有機(jī)組合,否則就是“瞎搭”了。這就是特征三,混搭結(jié)果必須和諧匹配,具有這種既混且搭的東西,現(xiàn)實(shí)生活中除了音樂(lè)和服裝,還有中國(guó)火鍋,多元文化,多元的收藏,裝飾和建筑風(fēng)格等等,人們的情緒可以說(shuō)也是一種混搭的表現(xiàn)。
企業(yè)混搭應(yīng)用
把概念引申到計(jì)算機(jī)應(yīng)用,先看看維基百科的說(shuō)法:Mashup:網(wǎng)絡(luò)混搭是一種聚合應(yīng)用,有一個(gè)或者多個(gè)信息源整合起來(lái)的網(wǎng)站或者網(wǎng)絡(luò)應(yīng)用。由此可見(jiàn),Mashup是合并多個(gè)源的信息和服務(wù)的網(wǎng)頁(yè)或網(wǎng)站。一個(gè)熟知的Mashup典型范例是housingmaps.com,該網(wǎng)站合并了Google的地圖服務(wù)和Craigslist.com的公寓租售信息,包括與住宅購(gòu)買數(shù)據(jù)相結(jié)合,創(chuàng)建了一種交互式的房屋搜索工具。
對(duì)企業(yè)應(yīng)用來(lái)說(shuō),就如同創(chuàng)造新音樂(lè),新服裝那樣,它能讓業(yè)務(wù)人員創(chuàng)造針對(duì)特定的業(yè)務(wù)需求的業(yè)務(wù)混搭應(yīng)用。這里強(qiáng)調(diào)業(yè)務(wù)需求,這是企業(yè)混搭應(yīng)用的目標(biāo)。根據(jù)業(yè)務(wù)需求,企業(yè)可以開(kāi)發(fā)和部署不同構(gòu)架層次的Mashup應(yīng)用,在特定的Mashup編輯環(huán)境中,關(guān)聯(lián)并且組合不同的Mashup組件,從而自己定制出符合企業(yè)需求的應(yīng)用。我個(gè)人認(rèn)為,Mashup層次、組件和環(huán)境構(gòu)成了Mashup應(yīng)用的三要素,這在后文還有詳細(xì)的描述。
這種Mashup新技術(shù)也叫組合應(yīng)用(Composite Application)或者叫場(chǎng)景應(yīng)用(Situational Application)。在企業(yè)中,業(yè)務(wù)人員往往需要扮演特定的角色去完成一個(gè)特定的任務(wù)。特別在決策過(guò)程中,更需要多角度多方位的數(shù)據(jù)支持。不僅在內(nèi)容上,在界面上用戶也希望獲得更好的用戶體驗(yàn)。傳統(tǒng)的企業(yè)應(yīng)用局限于是由軟件開(kāi)發(fā)商預(yù)先定制的,并不能滿足這種基于特定場(chǎng)景的不斷變化的需求,而Mashup技術(shù)卻能夠讓業(yè)務(wù)人員根據(jù)其在不同場(chǎng)合下的需求Situational Need,在新的頁(yè)面上放置、移動(dòng)、更換、關(guān)聯(lián)不同的業(yè)務(wù)組件(Mashup組件)。新的頁(yè)面中顯示的數(shù)據(jù)不僅可以來(lái)自企業(yè)內(nèi)部,也可以來(lái)自外部服務(wù)。比如說(shuō)用一個(gè)業(yè)務(wù)組件顯示企業(yè)系統(tǒng)中的采購(gòu)合同列表,而列表中可能的供應(yīng)商信息卻來(lái)自外部公網(wǎng)組件。這樣,每個(gè)業(yè)務(wù)人員都擁有了更加便捷的方式“參與”到企業(yè)業(yè)務(wù)流程的創(chuàng)作活動(dòng)中來(lái),而創(chuàng)作的結(jié)果又能以最佳業(yè)務(wù)實(shí)踐的形式保存下來(lái)。在這種模式下既降低了系統(tǒng)的整體擁有成本,又能共享最佳業(yè)務(wù)實(shí)踐,使之經(jīng)過(guò)迭代后就能逐步更新完善,從中我們可以隱約看到SOA的概念。
Enterprise Mashups與SOA
混搭與SOA的關(guān)系則要從用戶需求談起。SOA在概念上一般被認(rèn)為是一種以用例為中心,以模型為驅(qū)動(dòng)的可迭代的構(gòu)架。SOA構(gòu)架通?;赪eb Service來(lái)實(shí)現(xiàn)。那為什么要采用這種構(gòu)架呢?Sandy Carter在《新商業(yè)語(yǔ)言》一書中用Flex-ponsive來(lái)形容SOA最為淺顯易懂,這個(gè)詞其實(shí)就是Flexible和Responsive的組合。企業(yè)為了適應(yīng)市場(chǎng)的變化,自身就要不斷調(diào)整策略,這樣就產(chǎn)生了對(duì)企業(yè)應(yīng)用需求的不斷變化。SOA構(gòu)架的目標(biāo)就是提供能適應(yīng)企業(yè)需求不斷變化的底層基礎(chǔ)構(gòu)架,要做到具有靈活的可適應(yīng)性和快速應(yīng)對(duì)變化的能力。
但SOA注重在后臺(tái)架構(gòu)上,講究服務(wù)、組件和流程。企業(yè)用戶往往看不見(jiàn),摸不著,所以比較難把握。而企業(yè)混搭應(yīng)用則在用戶表現(xiàn)層,講究豐富的用戶體驗(yàn)、創(chuàng)建并且部署特定應(yīng)用,能讓用戶來(lái)體驗(yàn)到SOA。Enterprise Mashup是SOA平臺(tái)的展現(xiàn),它在發(fā)布應(yīng)用程序的同時(shí),不僅可以集成企業(yè)內(nèi)部服務(wù),還可以利用外部Web 服務(wù),RSS提要和其他方式部署Mashup組件,然后將Mashup組件組合成新的應(yīng)用程序。可以這么說(shuō),Enterprise Mashup是需要基于SOA構(gòu)架的。
回過(guò)頭再來(lái)看看我們的目標(biāo):根據(jù)業(yè)務(wù)目標(biāo)調(diào)整系統(tǒng)應(yīng)用。在以前,即使有了SOA,企業(yè)內(nèi)部IT人員和業(yè)務(wù)人員還可能各自為政,企業(yè)外部供應(yīng)商的咨詢?nèi)藛T和開(kāi)發(fā)人員也會(huì)有不同分歧。企業(yè)混搭應(yīng)用就是希望使業(yè)務(wù)人員也有能力開(kāi)發(fā)和部署自己的應(yīng)用,從而拉近需求定義和開(kāi)發(fā)部署的距離,消除分歧。業(yè)務(wù)人員也正是通過(guò)了混搭應(yīng)用,固化了業(yè)務(wù)流程,適應(yīng)了需求變化,體驗(yàn)了SOA所帶來(lái)的價(jià)值。
二. 企業(yè)混搭應(yīng)用的三要素
雖然非技術(shù)人員可以通過(guò)Mashup來(lái)開(kāi)發(fā)和部署自己的應(yīng)用,但是該技術(shù)本生不是萬(wàn)能的,也不能覆蓋系統(tǒng)應(yīng)用的方方面面。我們必須給Mashup一個(gè)清晰的定位,讓它在相應(yīng)適應(yīng)的需求上發(fā)揮作用。這里所介紹的Mashup三要素分別指的是:混搭構(gòu)架層次,混搭組件和混搭開(kāi)發(fā)部署環(huán)境。在理解三要素的基礎(chǔ)上,就能對(duì)Mashup能為企業(yè)做什么有個(gè)大致的把握。
混搭構(gòu)架層次(Mashup Level)
一般來(lái)說(shuō),有3種類型的混搭應(yīng)用:表現(xiàn)型、數(shù)據(jù)型和邏輯型。如果從企業(yè)用戶角度來(lái)定位混搭,這3種類型就對(duì)應(yīng)著3種不同的混搭構(gòu)架層次。表現(xiàn)型混搭最簡(jiǎn)單,企業(yè)門戶就是一種具體體現(xiàn)。這種混搭應(yīng)用停留在用戶界面層次,通過(guò)調(diào)用UI組件或者嵌入式UI組件來(lái)豐富企業(yè)應(yīng)用。當(dāng)然通過(guò)手工方式實(shí)現(xiàn)該功能也不難,但混搭應(yīng)用避免了剪切、粘貼和在多個(gè)瀏覽器窗口里切換等操作,從而大幅提高了工作效率。
較為常見(jiàn)的企業(yè)應(yīng)用有:為了豐富像客戶,經(jīng)銷商,采購(gòu)商這樣的主數(shù)據(jù),組合并集成外部的地圖/位置服務(wù),黃頁(yè)信息服務(wù),商業(yè)網(wǎng)站的公司資料服務(wù),商務(wù)網(wǎng)站的公司股價(jià)服務(wù),財(cái)務(wù)信息服務(wù),產(chǎn)品信息服務(wù)和公司RSS新聞服務(wù)。為了對(duì)比采購(gòu)報(bào)價(jià)單的同類產(chǎn)品價(jià)格,組合并集成外部B2B網(wǎng)站的同類產(chǎn)品價(jià)格信息等。
如果這種集成的服務(wù)能提供有用的輸入信息,這類Mashup就顯得更有意義了。比如利用集成的地址驗(yàn)證組件服務(wù),郵編查詢組件服務(wù),信用額度查詢組件服務(wù),就能對(duì)企業(yè)數(shù)據(jù)進(jìn)行有效的檢驗(yàn)。數(shù)據(jù)型混搭收集來(lái)自多個(gè)數(shù)據(jù)源的信息,為方便比較而把他們都聚合在一起。這種混搭應(yīng)用用于信息聚合以及人員協(xié)同。這里典型的例子是把新聞組件,討論組Blog組件或著Wiki組件,顯示項(xiàng)目進(jìn)度的甘特圖組件,任務(wù)分配組件,投票決議組件,財(cái)務(wù)報(bào)表組件等等,加上一些通用的像文本編輯,網(wǎng)頁(yè)編輯,公共事件日歷,導(dǎo)入導(dǎo)出,消息收發(fā)等基礎(chǔ)組件混合起來(lái),由用戶來(lái)決定它們的組合和使用方式。
邏輯性混搭通常最復(fù)雜,這往往需要進(jìn)行與2個(gè)或更多應(yīng)用交互的混搭工作,有時(shí)候可能也需要技術(shù)人員的參與。這種混搭應(yīng)用用于企業(yè)業(yè)務(wù)流程的集成,包括對(duì)第三方服務(wù)的集成。比如把企業(yè)內(nèi)部銷售數(shù)據(jù)與市場(chǎng)研究公司的競(jìng)爭(zhēng)對(duì)手?jǐn)?shù)據(jù)集成,把企業(yè)內(nèi)部工資與ADP所得稅計(jì)算方案集成,把物流信息與UPS或者Fedex的物流信息服務(wù)集成,把企業(yè)內(nèi)部的支持中心與外部知識(shí)庫(kù)集成等?;齑钅軌虬堰@類集成體現(xiàn)在用戶界面上,可以想象,業(yè)務(wù)人員完全有可能定制組合這樣的頁(yè)面,在該頁(yè)面上,他可以查詢某個(gè)配送訂單,用地圖來(lái)查看UPS具體配送貨品的地理位置,同時(shí)用其他服務(wù)來(lái)計(jì)算成本等。
有了不同層次的混搭,就可以實(shí)現(xiàn)基于SOA的企業(yè)應(yīng)用網(wǎng)絡(luò)化。在企業(yè)內(nèi)部,適應(yīng)變化的需求,實(shí)現(xiàn)快速定制業(yè)務(wù)組件。在企業(yè)外部,通過(guò)與服務(wù)合作伙伴的合作,實(shí)現(xiàn)和內(nèi)部數(shù)據(jù)的協(xié)同。這就是SOA的理想目標(biāo),Mashup正是SOA在用戶體驗(yàn)上的體現(xiàn)。
混搭組件(Mashup Component)
Mashup的核心在于定義符合業(yè)務(wù)需求的數(shù)據(jù)或信息組件。其重要性使得我們有時(shí)候稱這些軟件應(yīng)用為“訊件” (infoware)而不僅僅是軟件。通常概念上的Mashup組件分為地圖組件,視頻和圖像組件,搜索組件,購(gòu)物組件和新聞組件。而其中地圖組件尤為典型,將物理地址同信息關(guān)聯(lián)起來(lái)的任何應(yīng)用都可作為地圖Mashup。除了housingmaps的案例以外,最初廣泛流行起來(lái)的另一個(gè)Web 站點(diǎn)將芝加哥警局在線數(shù)據(jù)庫(kù)中的犯罪記錄與Google Maps上的地圖復(fù)合在一起用戶可以與Mashup站點(diǎn)進(jìn)行交互,例如告訴它在圖形界面上顯示一個(gè)包含圖釘?shù)牡貓D,圖釘展示南加州最近所有入室搶劫案件的詳細(xì)信息。這種概念和呈現(xiàn)方式非常簡(jiǎn)單,犯罪和地圖數(shù)據(jù)復(fù)合之后提供的可視化的功能非常強(qiáng)大。
如果把概念移植到企業(yè)業(yè)務(wù)應(yīng)用上,也許我們會(huì)得出一些有用的企業(yè)用例。把某區(qū)域的道路交通流量顯示在地圖上,用戶可以直接可視地查看道路堵塞情況。把銷售代表一天的拜訪路線,或者服務(wù)工程師按訂單的服務(wù)路線顯示在地圖上,用戶就可以看到圖形化的路線圖。如何找到和定制那些對(duì)業(yè)務(wù)有用的企業(yè)混搭組件呢?也許可以從日本雨傘的發(fā)明得到啟發(fā)。日本人把雨傘設(shè)計(jì)成不同的品種,比如雨傘加手電筒,就形成了具有夜視功能的雨傘;還有比如雨傘加支架,就形成了可以站立的雨傘;另外比如雨傘加帽子就是可以直接套在頭上的雨傘;最近還聽(tīng)說(shuō)日本學(xué)生把雨傘加攝像頭,發(fā)明了既可以拍照上網(wǎng)又可以看照片的雨傘。
從這個(gè)例子可以看出,對(duì)企業(yè)應(yīng)用,我們需要找到像雨傘那樣的核心業(yè)務(wù),并加以組件化,這些是企業(yè)內(nèi)部業(yè)務(wù)組件的來(lái)源。企業(yè)外部Mashup組件就如同手電筒,支架那樣,需要找到合適的外部服務(wù)。另外還要指出的是,Mashup并不是特指2種組件的組合,事實(shí)上,一些復(fù)雜的業(yè)務(wù)必須混合好幾種類型的組件才能滿足特定要求。
混搭開(kāi)發(fā)部署環(huán)境(Mashup Environment)
說(shuō)到混搭的環(huán)境,大體分為業(yè)務(wù)(咨詢)人員Mashup環(huán)境和開(kāi)發(fā)人員Mashup環(huán)境。對(duì)于業(yè)務(wù)人員來(lái)說(shuō),他們了解業(yè)務(wù)流程,需要企業(yè)級(jí)的拖放式開(kāi)發(fā)環(huán)境。他們可以在這個(gè)環(huán)境下定義Mashup頁(yè)面,選擇相適應(yīng)的Mashup組件,設(shè)置Mashup組件的顯示數(shù)據(jù)以及組件間的數(shù)據(jù)輸入/輸出的關(guān)聯(lián)關(guān)系。這種環(huán)境強(qiáng)調(diào)集中化管理以及與其他SOA工具的整合。所有操作都應(yīng)該符合安全合規(guī)要求并可以進(jìn)行集中式監(jiān)控跟蹤。
對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),他們是企業(yè)IT人員或者是軟件供應(yīng)商的合作伙伴,他們可以獨(dú)立地定制開(kāi)發(fā)Mashup組件。目前平臺(tái)有微軟的ASP.Net,Adobe的Flex,以及Google的免費(fèi)網(wǎng)頁(yè)開(kāi)發(fā)工具包(Web Toolkit),也有開(kāi)源Ajax框架Ruby on Rails。
SAP產(chǎn)品中的企業(yè)混搭介紹
SAP面向中小企業(yè)解決方案Business ByDesign產(chǎn)品是基于SOA的按需定制的軟件套件,它的企業(yè)SOA軟件構(gòu)架平臺(tái)稱為BPP(Business Process Platform)。每個(gè)業(yè)務(wù)內(nèi)容被封裝成具有業(yè)務(wù)邏輯的業(yè)務(wù)對(duì)象BO(Business Object),而把一些語(yǔ)義相關(guān)的業(yè)務(wù)對(duì)象組裝起來(lái)成為過(guò)程組件PC(Process Component),實(shí)現(xiàn)一定的業(yè)務(wù)過(guò)程。對(duì)于其他基于服務(wù)的業(yè)務(wù),SAP通過(guò)A2X服務(wù)(A2X Service)來(lái)集成混合服務(wù)(Compound Service)。如果把過(guò)程組件和A2X服務(wù)用適當(dāng)?shù)腢I界面展現(xiàn)出來(lái),就是企業(yè)內(nèi)部的Mashup組件了。
過(guò)程組件和A2X服務(wù)形成了一類Mashup組件基礎(chǔ),它們被統(tǒng)一注冊(cè)在企業(yè)服務(wù)庫(kù)中ESR(Enterprise Service Repository),這樣用戶就可以按需來(lái)選擇定制企業(yè)服務(wù)了,這就是所要描述的組合(Composition)概念。近一步,為了滿足新的業(yè)務(wù)需求,可以創(chuàng)建出新的業(yè)務(wù)對(duì)象和過(guò)程組件。這類Mashup組件即是像雨傘那樣的企業(yè)業(yè)務(wù)的核心組件。
另外一類Mashup組件則通過(guò)UDDI(Universal Description Discovery and Integration)把外部的服務(wù)集成起來(lái)。從技術(shù)上來(lái)說(shuō),整個(gè)構(gòu)架中有一個(gè)Mashup組件庫(kù)(Mashup Component Repository)來(lái)統(tǒng)一管理Mashup組件,它分別與ESR和外部的UDDI通信,注冊(cè)并管理著所有可用的Mashup組件。
企業(yè)混搭應(yīng)用是基于內(nèi)部ESR和外部UDDI服務(wù)的,是Composition在用戶應(yīng)用層面的體現(xiàn)。在SAP產(chǎn)品中,用戶可以在CE(Composition Environment)來(lái)開(kāi)發(fā)和部署混搭應(yīng)用,選擇并且混搭Mashup組件。最后,從SAP ByDesign產(chǎn)品功能來(lái)看混搭層次(Mashup Level),表現(xiàn)型混搭就是把外部服務(wù)集成在目前ByDesign應(yīng)用的UI界面中,數(shù)據(jù)型混搭則是Workspace組件,邏輯型混搭可以認(rèn)為是Page Mashups,它的目標(biāo)是構(gòu)建基于工作流的按需協(xié)同應(yīng)用。
三. 企業(yè)混搭應(yīng)用的展望
展望未來(lái),企業(yè)混搭應(yīng)用需要基于大量業(yè)務(wù)組件的標(biāo)準(zhǔn)化,從而像宜家用戶DIY模式那樣進(jìn)行大規(guī)模按需裝配。這種業(yè)務(wù)組件化的發(fā)展,將形成以業(yè)務(wù)為核心的中間件市場(chǎng),使得專有業(yè)務(wù)組件開(kāi)發(fā)團(tuán)隊(duì)化,社區(qū)化,網(wǎng)絡(luò)化。企業(yè)混搭的技術(shù)也要依賴于輕量型編程模型,不過(guò)出于對(duì)企業(yè)應(yīng)用的安全性能考慮,輕量型編程模型需要提供比目前更強(qiáng)大的安全技術(shù)保障。