使用TIBCO構建Web Service

可能各位看到這篇文章的標題時,腦子中都會浮現這樣一個疑問:TIBCO是什麼?
       首先我在這裏簡單介紹一下TIBCO,TIBCO 軟件公司 (納斯達克股票代碼:TIBX) 的總部設在加利福尼亞州的帕羅奧多,該公司致力於研發企業軟件,幫助各大公司在面向服務的架構 (SOA) 和業務流程管理 (BPM) 方面取得成功。TIBCO 擁有 3000 多家客戶,在 40 個國家/地區設立了辦事處,爲世界頂級的企業創造了更好的知名度和敏捷度 - TIBCO 稱之爲“The Power of Now?”。 TIBCO 着眼於利用並拓展其軟件能力,幫助各公司邁向 Predictive Business:這是一種令人欣喜而又新穎的業務運行方式,它能夠讓公司預見客戶的需要、創造商機並避免潛在問題。作爲在企業內部實時傳輸數據的基礎,TIBCO 軟件能夠獨一無二地將公司的運營和業績信息與期望的業務表現和業務規則信息關聯起來,使企業能夠在出現威脅和機遇之前做出預測和響應。
       TIBCO BusinessWorks是第一個利用Web服務標準(如SOAP、WSDL、UDDI和WSFL)提供高級業務集成(包括業務流程集成、實時監控和企業門戶)的解決方案。通過推出TIBCO BusinessWorks,TIBCO公司提供了這樣一種組件式解決方案,使幾乎所有的企業都可迅速進行業務集成,不論他們解決業務問題的方法如何。TIBCO BusinessWorks擴展了TIBCO提供的解決方案範圍,並與所有TIBCO產品完全兼容,從而允許BusinessWorks客戶可隨着企業的成長逐步發展爲一個企業級集成平臺。TIBCO估計BusinessWorks 將使集成技術對全世界70%多的企業客戶產生吸引力。
       使用TIBCO一年左右了,在這期間有不少的痛苦和感慨,和別的技術不一樣,TIBCO在遇到問題的時候,Google基本是沒有什麼用的,網上相關的資料少之又少,好在TIBCO提供的幫助文檔足夠強大。
TIBCO環境的簡單介紹
       TIBCO需要一個自己的Runtime Agent環境來支持整個系統的運行,其上通過BusinessWorks來提供高級業務集成,程序的部署通過TIBCO Administrator來實現。程序的開發有自己的一套IDE,稱爲TIBCO Designer
DesignerTIBCO Designer啓動界面
       TIBCO Designer是一個基於流程的可視化開發環境,TIBCO裏面封裝了很多拖拽即可使用的適配器(組件),如JDBC、TCP、JSM、RMI、SOAP。。。(當然也可以自己添加adapter)。開發人員在開發的時候只需要根據自己的流程畫出自己的“流程圖”就好了,不需在去做底層的開發,這樣使設計和開發人員可以把更多的精力用於實際業務的處理。大家看他的安裝目錄會發現Spring的部分組件和JDOM、log4J等Jar包含其中。其實他的基本實現原理還是基於IOC的,甚至就直接使用Spring的jar。這個相信你在使用的時候會發現的。
設計一個簡單的Web Service
       首先新建一個Project,然後按照下圖所示,建立好相應的文件夾:
Folder       在Resources/Connections/Http Connections目錄下拖拽一個HTTP Connection組件進來,建立一個Http監聽連接。
Http_Conn
注:圖中紅圈處可以選擇端口號、是否使用SSL安全連接
       我們的需求是,用戶傳過來一個Name,我們根據這個Name到數據庫中檢索對應的記錄,並將檢索結果返回給用戶,所以我們還需要建立一個JDBC連接,用來連接數據庫。
JDBC_Conn_Type
注:圖中紅圈處可以選擇連接類型,包括JDBC、JNDI等
JDBC_Conn
注:圖中紅圈處可以選擇使用的JDBC驅動
       在對應的地方填寫數據庫地址、用戶名、密碼等,然後點擊下方的“Test Connection”按鈕,對JDBC連接進行測試。
JDBC_Conn_Test_Success
JDBC連接成功
JDBC_Conn_Test_Failed
JDBC連接失敗
       現在我們來定義Web Service的輸入、輸出、失敗數據結構,在這裏我們使用XML Schema來定義,在/Resources/XMLSchema目錄中拖拽一個XML的Schema組件,當然在這裏我們也可以導入一個已經存在的xsd文件。
Add_XMLSchema
       雙擊拖拽過來的XML Schema組件,進入Schema的編輯界面,在這裏定義數據結構
XMLSchema_Editor        建立WSDL,在/Resources/WSDL文件夾中拖拽一個WSDL組件
Add_WSDL       雙擊這個拖拽過來的WSDL組件,進入WSDL設計界面,在這裏我們拖拽幾個Message組件進來,用來添加Web Sevice的輸入、輸出、 失敗等信息
Add_WSDL_Choose_Input
       再拖拽一個PortType組件進來,雙擊這個PortType組件,來定義相關的Operation
Add_WSDL_PortType
Add_WSDL_PortType_Operation        選中這個Operation,點擊下方的Message Table右側的“+”號,來添加輸入、輸出、異常的數據結構,這裏的Message Details只能選擇前面我們在WSDL中定義好的Message
Add_WSDL_PortType_Operation_Config        這樣我們的WSDL文檔就定義好了,現在我們來實現這個WSDL,我們在/MainProc目錄中拖拽一個Process進來,TIBCO中的一個Process其實在運行的時候是相當於一個單獨線程,每個Process都有一個“Strat”和一個“End”,表示Process的開始和結束。我們能夠根據業務的流程通過可視化的操作方式來實現程序。
Add_Process       雙擊拖拽過來的Process組件,進入Process設計界面,由於我們需要實現一個Web Service,所以我們需要拖拽一個SOAP的SOAPEventSource組件進來,在SOAPEventSource這個組件中,我們需要選擇剛剛定義好的WSDL、HTTP Connection、SOAP版本等,如果我們在一個WSDL文檔中定義了多個PortType和Operation,那麼在這裏我們要選擇實現哪一個PortType的哪一個Operation。
Add_Process_SOAP_Start         在SOAPEventSource這個組件的Advance選項卡中,我們還可以對Web Service的請求進行一些個性化定義(比如增加一個Header驗證信息等等)
Add_Process_SOAP_Header        我們在SOAPEventSource這個組件的WSDL Resource選項卡中看到WSDL信息(裏面的內容大家看着很眼熟吧?哈哈)
Add_Process_SOAP_WSDLResource        由於我們要根據用戶的請求數據,對數據庫進行檢索,那我們拖拽一個JDBC Query組件進來,來實現對數據庫的檢索。在這個組件中我們要選擇需要使用的JDBC Connection。
Add_Process_JDBCQuery        在組件中我們可以填寫對應的SQL語句,在SQL Statement中可以使用“?”來實現數據的傳入,如果在SQL Statement中使用了“?”,則需要在下面的Prepared Paramenters中增加對應的定義(注意:Prepared Paramenters中的定義順序要和SQL Statement中的順序一致)。
       打開JDBC Query的Input選項卡,對剛剛在Prepared Paramenters中定義的變量進行賦值。
 Add_Process_JDBCQuery_SetValue
Add_Process_SetValue_GlobalVariables
        打開JDBC Query的Output選項卡,可以看到ResultSet的輸出結構,如果看不到的話,可以點擊下方的“Fetch”按鈕。
Add_Process_JDBCQuery_Output        下面進行異常處理,來防止Process僵死,首先我們要在End組件中添加自定義的ErrorSchema。
Add_Process_ErrorSchema        在這裏我們選擇如果沒有檢索到結果集,則拋出我們自定義的異常信息。我們需要拖拽一個Generate Error組件進來,在這個組件中我們可以選擇剛剛在End組件中添加的自定義ErrorSchema。
Add_Process_ErrorSchema_Choose        在連接線中我們選擇Condition Type,並填寫判斷條件信息
Add_Process_Condition_Context
Add_Process_Condition        捕獲自定義的異常信息,有時候我們需要對異常信息進行處理(比如說做一些回滾什麼的),在Catch組件中我們可以選擇需要捕獲的異常,當然也可以選擇Catch All
 Add_Process_Catch_ErrorSchema
Add_Process_Catch_All
       返回相關信息,在異常情況下需要返回SOAPSendFault,正常情況下返回SOAPSendReply。在這兩個組件中我們可以對返回值進行設置
Add_Process_ErrorSchema_SetErrorMessage
Add_Process_ErrorSchema_CopyValue        到這裏一個Web Service就建立好了,在這個過程中各位會發現我們就寫了一行SQL查詢語句,沒有寫一行Java代碼,這就是TIBCO的強大之處——Zero Code。
 
       好了,下次我會介紹一些對這個程序的優化,這個簡單的程序可優化之處還是很多的,在後面我還會介紹如何使用TIBCO Administrator進行程序的部署等等……
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章