一、OpenAdaptor背景
????? 德國的投資銀行,Dresdner Kleinwort Wassertein(DrKw),以 "openadaptor" 的名字公開了該軟件的源碼,被 DrKW 稱之為 "讓所有電子商務(wù)的異種系統(tǒng)無縫連接的一個(gè)最基本的部件。"DrKW 把源碼的發(fā)布的看作是 "加速投資銀行客戶之間的電子商務(wù)聯(lián)絡(luò)的一個(gè)重要一步。"
????? 根據(jù) DrKW 公司的聲明,“opendadptor 允許快速、簡單地把免費(fèi)代碼集成到其他的系統(tǒng)中,通過對網(wǎng)站的操作,使所有的供應(yīng)鏈和內(nèi)部系統(tǒng)整合成一個(gè)整體?!眔penadaptor 軟件原來是由 DrKW 內(nèi)部開發(fā)的,據(jù)說從 1998 年開始,已成功應(yīng)用于超過 40 個(gè)的項(xiàng)目。實(shí)際上,該軟件被用來配備 DrKW 銀行的全球交易系統(tǒng)。
????? Openadaptor 軟件早先是用 Java 寫的,支持很多金融和 IT 業(yè)的標(biāo)準(zhǔn),包括了:XML(可擴(kuò)展的標(biāo)記語言)、JMS (Java消息服務(wù)),JDBC (Java數(shù)據(jù)庫連接),以及 RMI(遠(yuǎn)程方式調(diào)用)等。它還有與第三方軟件包比如 Tibco 和 IBM 的 MQSeries 相互交換數(shù)據(jù)的接口界面。授權(quán)協(xié)議參考了 MIT 的 X license 的協(xié)議格式,該協(xié)議允許在任何開放源碼軟件或有版權(quán)的應(yīng)用程序中自由免費(fèi)的使用其源碼。
????? 為什么 DrKW 銀行會(huì)決定把 openadaptor 的源碼公開呢?在聲明中,DrKW 的 CIO,Al-Noor Ramji 談了一些做出這個(gè)決定背后的有意思的觀點(diǎn):
????? "我們需要為我們的客戶降低做生意的成本,這可不是一個(gè)容易解決的問題,因此我們必須采取的一項(xiàng)重要的基本措施是加快我們的客戶的聯(lián)絡(luò)速度,甚至我們因此還要付出幫助我們的競爭對手的高昂代價(jià)。因?yàn)槲覀兊目蛻舳际峭顿Y銀行的老客戶了,他們通常會(huì)選擇幾個(gè)服務(wù)商。讓客戶在網(wǎng)站上與他們選定的任何人打交道,將不只是增加市場的透明度和流動(dòng)性,而且使所有的客戶降低了成本,增加了商業(yè)機(jī)會(huì)。我們在繼續(xù)努力鞏固我們的 "客戶技術(shù)員" 的角色,為雙方提供更多的商機(jī) 。openadaptor 允許所有的客戶積極地參加這個(gè)開放環(huán)境,沒有任何侵權(quán)的顧慮。"
????? DrKW 的常務(wù)董事 Conor Killeen 是這樣說的:"這只是 DrKW 在 2001 年中一系列關(guān)鍵技術(shù)發(fā)布的開始,要為全球的客戶扮演一個(gè) "可依賴的顧問" 角色,在別人還只是在口頭上討論時(shí)就付諸實(shí)施以成為業(yè)界領(lǐng)導(dǎo)者是勢在必行的了。
二、OpenAdaptor簡介
??????現(xiàn)代企業(yè)需要將大量不同的系統(tǒng)連接在一起,使得它們之間可以進(jìn)行信息交互。原有的典型處理方法是直接的“點(diǎn)對點(diǎn)”的數(shù)據(jù)傳輸,并自行完成數(shù)據(jù)的安全性、可靠性、一致性等處理。隨著系統(tǒng)的不斷增加,直接的定向連接和定制編程的情況會(huì)急劇增加,這最終會(huì)成為信息流動(dòng)的瓶頸。
????? OpenAdaptor是一個(gè)基于Java/XML的軟件平臺(tái),允許用少量的或非常規(guī)的編程進(jìn)行快速地商業(yè)系統(tǒng)集成。它具有高擴(kuò)展性并已經(jīng)為JMS,LDAP,Mail,MQSeries,Oracle,Sybase,MSSQL Server和作為數(shù)據(jù)交換格式的XML構(gòu)建接口組件。OpenAdaptor為開發(fā)人員提供了大量接口組件,通過Source、Pipe、Sink組件鏈的形式實(shí)現(xiàn)系統(tǒng)和系統(tǒng)間的連接,從而完成數(shù)據(jù)的交換。
Source 數(shù)據(jù)獲取對象,是一個(gè)接口,可以根據(jù)數(shù)據(jù)獲取來源不同,實(shí)現(xiàn)很多子類,比如:FileSource、JMSSource等。它本身并沒有定義任何方法,但是擴(kuò)展了線程,所以它的核心方法應(yīng)該就是線程的run方法。
Pipe?? 對source獲取的數(shù)據(jù)進(jìn)行處理,比如過濾、重新組織等,比如:FilterPipe。最上層是一個(gè)抽象類,核心方法是processMessage()
Sink? 數(shù)據(jù)發(fā)布,將整合后的數(shù)據(jù),根據(jù)配置文件,發(fā)布出去,比如:FileSink、JMSSink等。定義了一個(gè)接口,核心方法是processMessage()
Controller 整個(gè)消息傳遞的控制類,是一個(gè)線程,負(fù)責(zé)對上面所說的三個(gè)對象的調(diào)用,完成一次消息的傳遞,每一次消息的傳遞都會(huì)新建一個(gè)線程實(shí)例。定義了一個(gè)接口。
DataObject 傳遞消息數(shù)據(jù)的對象,定義了一個(gè)接口。
Message 對DataObject對象集合的封裝,用來傳遞消息。
三、OpenAdaptor鏈接
??????https://www.openadaptor.org/????????????????????????OpenAdaptor
??????http://visualadaptor.sourceforge.net/????????????????Eclipse Plugin for the OpenAdaptor framework