引言

本文是“以服務(wù)為中心的企業(yè)整合”系列文章第二部分。在本文的姊妹篇 "以服務(wù)為中心的企業(yè)整合" ,我們探討了以服務(wù)為中心的企業(yè)集成的理論知識(shí),本文以一個(gè)經(jīng)過(guò)簡(jiǎn)化的實(shí)際案例為例,介紹了以服務(wù)為中心的企業(yè)集成的基本步驟,從業(yè)務(wù)分析,到服務(wù)建模,到架構(gòu)設(shè)計(jì),到系統(tǒng)開發(fā)的整個(gè)生命周期。以服務(wù)為中心的企業(yè)集成涉及到的主要技術(shù)被穿插在各個(gè)步驟中進(jìn)行了詳細(xì)的講解。

1. 案例背景

某航空公司的 IT 系統(tǒng)已有好幾十年的歷史。該航空公司的主要的業(yè)務(wù)系統(tǒng)構(gòu)建于上世紀(jì)七八十年代,以 IBM 的主機(jī)系統(tǒng)為主 包括運(yùn)行于 TPF 上的訂票系統(tǒng),和運(yùn)行在 IMS 上的航班調(diào)度系統(tǒng)等。在這些核心系統(tǒng)周圍也不乏基于 Unix 的非核心作業(yè)系統(tǒng),和基于 .Net 的簡(jiǎn)單應(yīng)用。這些形形色色的應(yīng)用,有的用匯編或 COBOL 編寫,運(yùn)行于主機(jī)和 IMS 之上,有的以 PRO*C 編寫,運(yùn)行在 Unix Oracle 上;這些應(yīng)用雖然以基于主機(jī)終端的界面,但是基于 Web GUI 的應(yīng)用也為數(shù)眾多。

近年來(lái),該公司在企業(yè)集成方面也是煞費(fèi)苦心-已經(jīng)在幾個(gè)主要的核心系統(tǒng)之間構(gòu)建了用于信息集成的信息 HUB(information HUB) ,其他應(yīng)用間也有不少點(diǎn)到點(diǎn)的集成。盡管這些企業(yè)集成技術(shù)在一定程度上增進(jìn)了系統(tǒng)間的信息共享,但是面對(duì)如此異構(gòu)的系統(tǒng),技術(shù)人員依然覺得企業(yè)集成困難重重:

  • 因?yàn)榇蟛糠趾诵膽?yīng)用構(gòu)建在主機(jī)之上,所以 Information Hub 是基于主機(jī)技術(shù)開發(fā),很難被開放系統(tǒng)使用;
  • Information Hub 對(duì) Event 支持不強(qiáng),被集成的系統(tǒng)間的事件以點(diǎn)到點(diǎn)流轉(zhuǎn)為主,被集成系統(tǒng)間耦合性強(qiáng);
  • 牽扯到多個(gè)系統(tǒng)間的業(yè)務(wù)協(xié)作以硬編碼為主,將業(yè)務(wù)活動(dòng)自動(dòng)化的成本高,周期長(zhǎng),被開發(fā)的業(yè)務(wù)活動(dòng)模塊重用性差;

為了解決這些企業(yè)集成中的問(wèn)題,該公司決定以 Ramp Control 系統(tǒng)為例探索一條以服務(wù)為中心的企業(yè)集成道路。本文將以 Ramp Control 系統(tǒng)中的 Ramp Coordination 流程為例說(shuō)明如何用以服務(wù)為中心的企業(yè)集成技術(shù)一步步解決該公司 IT 技術(shù)人員面臨的企業(yè)集成問(wèn)題。

為了便于說(shuō)明,示例中的業(yè)務(wù)系統(tǒng)和業(yè)務(wù)流程都進(jìn)行了必要的簡(jiǎn)化。

2. 業(yè)務(wù)環(huán)境分析

在航空業(yè)中, Ramp Coordination 是指飛機(jī)從降落到起飛過(guò)程中所需要進(jìn)行的各種業(yè)務(wù)活動(dòng)的協(xié)調(diào)過(guò)程。通常每個(gè)航班都有一個(gè)人負(fù)責(zé) Ramp Coordination, 這人通常稱為 Ramp Coordinator 。由 Ramp Coordinator 協(xié)調(diào)的業(yè)務(wù)活動(dòng)有,檢查機(jī)位環(huán)境是否安全,卸貨,裝貨,補(bǔ)充燃料等。

?1.JPG

2 是一個(gè) Ramp Coordination 的業(yè)務(wù)流程圖。由圖可見, Ramp Coordination 流程依次有下列活動(dòng)

1) 從提取協(xié)調(diào)過(guò)程中所需要的主要信息,通常會(huì)以工作單給 Ramp Coordinator;( 自動(dòng)活動(dòng) )

2) 檢查機(jī)位環(huán)境是否安全; ( 人工活動(dòng) )

3) 檢查卸貨; ( 人工活動(dòng) )

4) 檢查裝貨; ( 人工活動(dòng) )

5) 檢查關(guān)門; ( 人工活動(dòng) )

?2.JPG

實(shí)際上, Ramp Coordination 的流程因航班類型的不同,機(jī)型的不同有很大的差異。圖 2 所示的流程主要針對(duì)降落后不久就起飛的航班,這種類型的航班我們稱之為 short turn around 航班。除了 short turn around 航班,我們還有其他兩種類型的航班,如圖 3 所示, Arrival Only 的航班指降落后需要隔夜才起飛的。 Departure Only 的航班是指每天一早第一班飛機(jī)。這些航班的 Ramp Coordination 的流程和 Short Turn Around 類型的流程大部分的業(yè)務(wù)活動(dòng)是相似的。這三種類型的航班根據(jù)長(zhǎng)途 / 短途,國(guó)內(nèi) / 國(guó)外等因素還可以進(jìn)一步細(xì)分。每種細(xì)分的航班類型的 Ramp Coordination 的流程都是略有不同。

很明顯,如此形形種種的流程之間共享著一個(gè)業(yè)務(wù)活動(dòng)的集合,如此多種類型的流程都是這些業(yè)務(wù)活動(dòng)的不同組裝方式。以服務(wù)為中心的企業(yè)集成中流程服務(wù)就是通過(guò)將這些流程間共享的業(yè)務(wù)活動(dòng)抽象為可重用的服務(wù),并通過(guò)流程服務(wù)提供的流程編排的能力將它們組成各種大同小異的流程類型,來(lái)降低流程集成成本,加快流程集成開發(fā)效率的。以服務(wù)為中心的企業(yè)集成通過(guò)服務(wù)建模過(guò)程發(fā)現(xiàn)這些可重用的服務(wù),并通過(guò)流程模型將這些服務(wù)組裝在一起。

3. 服務(wù)建模

IBM 推薦使用組件業(yè)務(wù)建模 (Component Business Model) 和面向服務(wù)的建模和架構(gòu) (Service-Oriented Model and Architecture) 兩種方法學(xué)建立業(yè)務(wù)的組件模型,服務(wù)模型和流程模型。關(guān)于服務(wù)建模方法學(xué)已經(jīng)超出本文范圍,這里就不在累述。

3.JPG

服務(wù)模型是服務(wù)建模的主要結(jié)果。 Ramp Coordination 相關(guān)的服務(wù)模型如圖 4 所示。和 Ramp Coordination 流程相關(guān)的有兩個(gè)業(yè)務(wù)組件:

  • Ramp Control :負(fù)責(zé) Ramp Control 相關(guān)各種業(yè)務(wù)活動(dòng)的組件
  • Flight Management :負(fù)責(zé)航班相關(guān)信息的管理,包括航班日程,乘客信息等

這兩個(gè)業(yè)務(wù)組件分別輸出如下服務(wù):

1) Retrieve Flight BO: Flight Management 輸出,主要用于提取和航班相關(guān)的數(shù)據(jù)信息;

2) Ramp Coordination: Ramp Control 輸出,主要用于 Ramp Coordination 流程的編排;

3) Check Spot :由 Ramp Control 輸出,用于檢測(cè)機(jī)位安全信息;

4) Check Unloading :由 Ramp Control 輸出,用于檢查卸貨狀況;

5) Check Loading :由 Ramp Control 輸出,用于檢查裝貨狀況;

6) Check Push Back :由 Ramp Control 輸出,用于檢查關(guān)門動(dòng)作;

在服務(wù)建模確定系統(tǒng)相關(guān)的服務(wù)輸出后,我們還需要確定服務(wù)在當(dāng)前環(huán)境下的實(shí)現(xiàn)方式。在我們的案例中, Retrieve Flight BO 被實(shí)現(xiàn)為信息服務(wù), Ramp Coordination 被實(shí)現(xiàn)為流程服務(wù),通過(guò) BPEL4WS 方式實(shí)現(xiàn);其他四個(gè)服務(wù)都是 Staff Service 。需要注意的是,因?yàn)榄h(huán)境的不同,和隨著系統(tǒng)的演化,我們可能會(huì)改變服務(wù)的實(shí)現(xiàn)方式,比如 Check Push Back 現(xiàn)在通過(guò) Staff Service 即人工服務(wù)實(shí)現(xiàn)。將來(lái)隨著自動(dòng)化程度的增強(qiáng), Check Push Back 完全可能通過(guò)自動(dòng)化的系統(tǒng)實(shí)現(xiàn)。到那時(shí),我們只需重新實(shí)現(xiàn)這個(gè)服務(wù),而無(wú)需改變整個(gè)流程。這是服務(wù)的可替換性的一個(gè)典型實(shí)例。

4. IT 環(huán)境分析

IT 環(huán)境分析是調(diào)查現(xiàn)有應(yīng)用技術(shù)特點(diǎn)的重要手段。在我們的示例中, IT 環(huán)境分析主要用于調(diào)查現(xiàn)有應(yīng)用,為決定服務(wù)模型中服務(wù)的實(shí)現(xiàn)方式提供技術(shù)依據(jù)。同時(shí),它也是架構(gòu)設(shè)計(jì)的重要依據(jù)。

4.JPG

如上所述,在構(gòu)建 Ramp Control 系統(tǒng)之前,該航空公司已經(jīng)有大量 IT 系統(tǒng)。作為架構(gòu)設(shè)計(jì)的重要步驟的現(xiàn)有 IT 環(huán)境調(diào)研描繪了和 Ramp Control 相關(guān)的 IT 系統(tǒng)的狀況,包括周圍應(yīng)用和應(yīng)用提供的接口,這些應(yīng)用和 Ramp Control 交互的類型和數(shù)據(jù)格式。圖 5 是簡(jiǎn)化的 IT 環(huán)境視圖,它描繪了 Ramp Coordination 流程和周圍系統(tǒng)交互狀況。目前, Ramp Coordination 流程需要四種類型的外圍應(yīng)用交互:

  • 從乘務(wù)人員管理系統(tǒng)提取航班乘務(wù)員的信息;
  • 從訂票系統(tǒng)中提取乘客信息;
  • 從機(jī)務(wù)人員管理系統(tǒng)中提取機(jī)務(wù)人員信息;
  • 接收來(lái)自航班調(diào)度系統(tǒng)的航班到達(dá)事件;

5.JPG

如圖所示,象航班調(diào)度信息和定票信息都存儲(chǔ)在 IMS TPF 這些相當(dāng)封閉的主機(jī)系統(tǒng)之上。盡管主機(jī)系統(tǒng)提供一定的面向開放系統(tǒng)的集成能力,如 MQ Socket 。但是因?yàn)橹鳈C(jī)本身的特殊性,使得這些集成方法的使用都不是那么方便。所以如何方便地集成主機(jī)系統(tǒng)的信息成為 Ramp Coordination 中一個(gè)重要的技術(shù)問(wèn)題,同時(shí)也是整個(gè) IT 系統(tǒng)集成面臨的主要問(wèn)題。以服務(wù)為中心的企業(yè)集成為我們提供了更為開放的集成手段。在 Ramp Coordination 中,我們把這些主機(jī)上的數(shù)據(jù)進(jìn)行了集中,并通過(guò)信息服務(wù)的形式輸出給開放系統(tǒng)使用。如圖 6 所示,來(lái)自 IMS 的航班信息和機(jī)務(wù)人員信息,來(lái)自 Oracle 的乘務(wù)人員信息和來(lái)自 TPF 的乘客信息都被匯集為一個(gè)業(yè)務(wù)對(duì)象 Flight BO Retrieve Flight BO 服務(wù)提供訪問(wèn)這種業(yè)務(wù)對(duì)象的手段。 Retrieve Flight BO 服務(wù)隔離了底層實(shí)現(xiàn)的復(fù)雜性。外面的應(yīng)用系統(tǒng)看到的是前面開放的接口,而不是后面封閉的主機(jī)系統(tǒng)。即使將來(lái)后臺(tái)主機(jī)被開放系統(tǒng)替代,外面的應(yīng)用依然可以運(yùn)行依舊。

通過(guò)將主機(jī)應(yīng)用中的信息集中為粗粒度的業(yè)務(wù)對(duì)象,并通過(guò)信息服務(wù)輸出,為該公司的核心系統(tǒng)提供了更加通用的連接能力,同時(shí)為 IT 系統(tǒng)的平滑演進(jìn)提供了必需的條件。

5. 高層架構(gòu)設(shè)計(jì)

根據(jù)需求和設(shè)計(jì)階段的業(yè)務(wù)模型和現(xiàn)有 IT 環(huán)境調(diào)研結(jié)果,再結(jié)合傳統(tǒng)的 IT 應(yīng)用開發(fā)方法, Ramp Coordination 系統(tǒng)的高層架構(gòu)被設(shè)計(jì)了出來(lái),如圖 7 所示。


6.JPG如下四點(diǎn)簡(jiǎn)要介紹了本案例中的主要架構(gòu)元素以及它們間的工作關(guān)系。

1) 信息服務(wù)- Federation Service: Ramp Coordination 流程中需要從已有系統(tǒng)中提取四類信息,在 Service 建模階段這四類信息被聚合為 Flight BO Business Object )。如上文所述, Retrieve Flight BO 服務(wù)用于從已有系統(tǒng)中提取 Flight BO 。它實(shí)際上是一個(gè) Federation Service ,將來(lái)自乘務(wù)人員管理系統(tǒng)、機(jī)務(wù)人員管理系統(tǒng)和訂票系統(tǒng)中的信息聚合在一起。從這三個(gè)已有系統(tǒng)來(lái)的 Crew Info, Cockpit Info Passage Info 是在已有系統(tǒng)中已經(jīng)存在的業(yè)務(wù)邏輯或業(yè)務(wù)數(shù)據(jù),它們屬于可接入服務(wù) (on-ramp service) ,接入的協(xié)議分別為 JDBC, IMS J2C Connector socket 。乘務(wù)人員管理系統(tǒng)基于 Oracle 數(shù)據(jù)庫(kù), Crew Info 可以直接通過(guò) JDBC 獲得。機(jī)務(wù)人員管理系統(tǒng)基于 S/390 上的 IMS, IBM 已經(jīng)提供了 IMS J2C Connector 所以 Cockpit Info 可以通過(guò) J2C connector 獲得。訂票系統(tǒng)構(gòu)建在 IBM TPF 之上,由于實(shí)時(shí)性的要求, socket 是比較好的接入方法。 Retrieve Flight BO 被實(shí)現(xiàn)為一個(gè) EJB ,外部訪問(wèn)通過(guò) RMI/IIOP 綁定訪問(wèn)這個(gè)服務(wù)。在 Retrieve Flight BO 內(nèi)部, Flight BO SDO 來(lái)表示。

2) 企業(yè)服務(wù)總線中的事件服務(wù)- Event Service: 在檢查機(jī)務(wù)環(huán)境安全 (Check Spot) 前, Ramp Coordiator 需要被通知航班已經(jīng)到達(dá)。這個(gè)業(yè)務(wù)事件由航班調(diào)度系統(tǒng)激發(fā), Flight Arrival 是典型事件發(fā)現(xiàn)服務(wù) (Event Detect Service) ,它通過(guò) MQ 將事件傳遞給 Message Broker, 通過(guò) JMS Pub/Sub ,這個(gè)事件被分發(fā)給 Check Spot 。這里的 Event Service 是本例中 ESB 的重要組成部分。通過(guò) ESB 上的通用事件服務(wù),現(xiàn)有 Information Hub 的缺陷得到了克服。應(yīng)用程序間的事件集成不再需要點(diǎn)到點(diǎn)的方式,而是通過(guò) ESB 的事件服務(wù)完成訂閱發(fā)布,應(yīng)用程序間的耦合性得到了極大的緩解。

3) 流程服務(wù)- Process Service: Ramp Coordination 被實(shí)現(xiàn)為一個(gè) Process Service ,它被 WBI SF BPEL4WS 容器執(zhí)行, BPEL4WS 容器提供 Choreograph Service, Transaction Service Staff Service 支持。 Ramp Coordination 通過(guò) RMI/IIOP 協(xié)議調(diào)用,在 BPEL4WS 容器中 WSIF 被用于通過(guò)各種協(xié)議調(diào)用服務(wù) , 它成為 ESB Transport Service 的一部分。 Ramp Coordination 中的人工動(dòng)作被實(shí)現(xiàn)為 Staff Service 而集成到流程中。這里 Staff Service 通過(guò) Portlet 實(shí)現(xiàn),運(yùn)行在 Websphere Portal Server 上。 Portal Service 實(shí)現(xiàn)部分 Delivery Service 支持 PDA 設(shè)備, Ramp Coordinator 通過(guò) PDA 設(shè)備訪問(wèn)系統(tǒng)。

4) 企業(yè)服務(wù)總線中的傳輸服務(wù)- RCMS 是即將新建系統(tǒng)用于提供包括 Ramp Coordination 在內(nèi)的 Ramp Control 的功能。 RCMS 通過(guò)由 WSIF 實(shí)現(xiàn)的 Transport Service SOAP/HTTP 調(diào)用 Ramp Coordination 服務(wù)。

6. 開發(fā)過(guò)程

盡管以服務(wù)為中心的企業(yè)集成在開發(fā)階段和普通的應(yīng)用開發(fā)并沒有本質(zhì)的區(qū)別,但是它在角色,職責(zé)、工具和方法還是有不少自己的特色。下圖匯總了本文示例中開發(fā)角色,職責(zé),開發(fā)方法和工具,僅供大家參考。

7.JPG

7. 結(jié)束語(yǔ)

本文通過(guò)一個(gè)簡(jiǎn)單的案例,講解了以服務(wù)為中心的企業(yè)集成的主要步驟和涉及的技術(shù)。這些集成的技術(shù),無(wú)論是方法學(xué),體系結(jié)構(gòu),還是編程模型都在不斷的發(fā)展中。隨著這些技術(shù)的不斷完善,以服務(wù)為中心的企業(yè)集成方案的實(shí)施將更加簡(jiǎn)單高效。

?