眾所周知,醫(yī)院信息系統(tǒng)的發(fā)展應(yīng)該是可持續(xù)的。為了實(shí)現(xiàn)新系統(tǒng)與醫(yī)院現(xiàn)有系統(tǒng)的無縫連接,就需要運(yùn)用高效的信息集成技術(shù)搭建一個(gè)可擴(kuò)展的集成平臺。作為醫(yī)院信息系統(tǒng)的集成平臺,主要考慮其集成的可擴(kuò)展性,即實(shí)現(xiàn)信息系統(tǒng)的無限擴(kuò)張,這是醫(yī)院信息系統(tǒng)發(fā)展的趨勢。
異構(gòu)數(shù)據(jù)集成技術(shù)
異構(gòu)數(shù)據(jù)庫的集成是數(shù)據(jù)庫領(lǐng)域的經(jīng)典問題,也是當(dāng)今信息技術(shù)的熱點(diǎn)。研究和開發(fā)異構(gòu)數(shù)據(jù)庫集成系統(tǒng),對于消除信息社會中的信息孤島、維護(hù)各部門間數(shù)據(jù)的一致性與完整性、促進(jìn)數(shù)據(jù)的共享、減少數(shù)據(jù)的管理成本等都有極其重要的意義。數(shù)據(jù)庫的異構(gòu)性包括3個(gè)方面:系統(tǒng)異構(gòu)、數(shù)據(jù)模型異構(gòu)和邏輯異構(gòu)。1. 系統(tǒng)異構(gòu) 是指硬件平臺、操作系統(tǒng)、并發(fā)控制、訪問方式和通信能力等的不同,具體細(xì)分為:計(jì)算機(jī)體系結(jié)構(gòu)的不同,即數(shù)據(jù)可以分別存在于大型機(jī)、小型機(jī)、工作站、PC 機(jī)或嵌入式系統(tǒng)等。(1)操作系統(tǒng)的不同,即數(shù)據(jù)的操作系統(tǒng)可以是Windows,、UNIX、Linux等。(2)開發(fā)語言的不同,例如C、C+ +、Java、Delphi等。(3)網(wǎng)絡(luò)平臺的不同,例如Ethernet(以太網(wǎng))、FDDI(光纖分布式數(shù)據(jù)接口)、ATM (異步傳輸模式)、TCP/IP(傳輸控制/網(wǎng)際協(xié)議)、IPX/SPX等。2. 數(shù)據(jù)模型異構(gòu) 是指數(shù)據(jù)庫管理系統(tǒng)本身的不同。例如數(shù)據(jù)交換系統(tǒng)可以是同為關(guān)系數(shù)據(jù)庫系統(tǒng)的Oracle、SQL Server作為數(shù)據(jù)模型,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫,例如關(guān)系、層次、網(wǎng)絡(luò)、面向?qū)ο蠡蚝瘮?shù)型數(shù)據(jù)庫等。3. 邏輯異構(gòu) 包括命名異構(gòu)、值異構(gòu)、語義異構(gòu)和模式異構(gòu)等。例如語義的異構(gòu)具體表現(xiàn)在相同的數(shù)據(jù)形式表示不同的語義,或者同一語義由不同形式的數(shù)據(jù)表示等。異構(gòu)數(shù)據(jù)庫集成可以通過轉(zhuǎn)換和標(biāo)準(zhǔn)化來實(shí)現(xiàn),在異構(gòu)數(shù)據(jù)庫系統(tǒng)集成中要解決平臺和網(wǎng)絡(luò)的透明性、數(shù)據(jù)模型的轉(zhuǎn)換、模式轉(zhuǎn)換和集成、分布式事務(wù)管理等問題。當(dāng)前異構(gòu)數(shù)據(jù)庫系統(tǒng)集成主要采用3種策略:公共編程界面、公共數(shù)據(jù)庫網(wǎng)關(guān)和公共協(xié)議:它們都是基于客戶/服務(wù)器體系結(jié)構(gòu)的,這樣可以綜合各種計(jì)算機(jī)協(xié)同工作,各盡其能,也可實(shí)現(xiàn)對計(jì)算機(jī)應(yīng)用系統(tǒng)的規(guī)模優(yōu)化和規(guī)??s小化。①公共編程界面包括客戶應(yīng)用編程界面和服務(wù)器應(yīng)用編程界面;②公共數(shù)據(jù)庫網(wǎng)關(guān)是一個(gè)轉(zhuǎn)換器,客戶通過它就可以訪問異構(gòu)數(shù)據(jù)庫;③公共協(xié)議是指對客戶和服務(wù)器間通訊的格式和協(xié)議及對數(shù)據(jù)庫語言進(jìn)行標(biāo)準(zhǔn)化。這是一種最理想的解決異構(gòu)數(shù)據(jù)庫系統(tǒng)集成的方法。這3種策略在異構(gòu)數(shù)據(jù)庫系統(tǒng)集成中可以配合使用,并不互斥。從各種數(shù)據(jù)庫產(chǎn)品所提供的異構(gòu)數(shù)據(jù)庫集成的主要機(jī)制來看,Gateway和API是當(dāng)今集成異構(gòu)數(shù)據(jù)庫的主要方法。工作流(workflow)是對工作流程及其各操作步驟之間業(yè)務(wù)規(guī)則的抽象、概括、描述。工作流建模即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對其實(shí)施計(jì)算。工作流要解決的主要問題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。工作流管理系統(tǒng)(workflow management system,WMS)的主要功能是通過計(jì)算機(jī)技術(shù)的支持去定義、執(zhí)行和管理工作流,協(xié)調(diào)工作流執(zhí)行過程中工作之間以及群體成員之間的信息交互。工作流需要依靠工作流管理系統(tǒng)來實(shí)現(xiàn)。1. 工作流管理系統(tǒng)主要產(chǎn)品結(jié)構(gòu):(1)定義工具:用來定義工作流,它生成工作流定義。在定義時(shí)可能會參考組織或角色數(shù)據(jù),還會引用外部應(yīng)用程序的編程接口。(2)工作流執(zhí)行服務(wù):用來執(zhí)行工作流,可能包含多個(gè)相互獨(dú)立、并行運(yùn)轉(zhuǎn)的工作流引擎。它可能會參考組織或角色數(shù)據(jù),還會調(diào)用外部應(yīng)用程序,維護(hù)工作流控制數(shù)據(jù),使用工作流相關(guān)數(shù)據(jù),生成工作列表。(3)工作流引擎:用來執(zhí)行單獨(dú)的流程實(shí)例。(4)用戶界面:用戶操縱工作流列表的界面,可能會調(diào)用外部的應(yīng)用程序。2. 工作流管理系統(tǒng)產(chǎn)品主要功能包括:(1)建造功能:對工作流過程及其組成活動(dòng)定義和建模。(2)運(yùn)行控制功能:在運(yùn)行環(huán)境中管理工作流過程,對工作流過程中的活動(dòng)進(jìn)行調(diào)度。(3)運(yùn)行交互功能:指在工作流運(yùn)行中,WMS與用戶(業(yè)務(wù)工作的參與者或控制者)及外部應(yīng)用程序工具交互的功能。(1)基礎(chǔ)的工作流系統(tǒng):提供引擎、設(shè)計(jì)器、相關(guān)接口等。應(yīng)用系統(tǒng)的開發(fā)商可以基于此類系統(tǒng)開發(fā)具有工作流管理功能的應(yīng)用軟件。(2)面向應(yīng)用的應(yīng)用級軟件系統(tǒng):應(yīng)用了工作流技術(shù),包括內(nèi)置較完整的工作流功能,直接面向最終用戶的流程化應(yīng)用。同時(shí),系統(tǒng)中還往往針對應(yīng)用需要,集成了其他功能。2. 根據(jù)實(shí)現(xiàn)的業(yè)務(wù)過程分類(1)管理型工作流(administrative workflow):在這類工作流中活動(dòng)可以預(yù)定義并且有一套簡單的任務(wù)協(xié)調(diào)規(guī)則,如大學(xué)里的課程選修、完成論文后的學(xué)位申請等。(2)設(shè)定型工作流(ad hoe workflow):與管理型工作流相似,但一般用來處理異?;虬l(fā)生機(jī)會比較小的情況,有時(shí)甚至是只出現(xiàn)一次的情況,這與參與的用戶有關(guān)。(3)協(xié)作型工作流(collaborative workflow):參與者和協(xié)作的次數(shù)較多。在一個(gè)步驟上可能反復(fù)發(fā)生幾次直到得到某種結(jié)果,甚至可能返回到前一階段。(4)生產(chǎn)型工作流(production workflow):實(shí)現(xiàn)重要的業(yè)務(wù)過程的工作流,特別是與業(yè)務(wù)組織的功能直接相關(guān)的工作流。與管理型工作流相比,生產(chǎn)型工作流一般應(yīng)用在大規(guī)模、 復(fù)雜的和異構(gòu)的環(huán)境下,整個(gè)過程會涉及許多人和不同的組織。3. 根據(jù)采用的任務(wù)項(xiàng)傳遞機(jī)制分類(1)基于文件的工作流系統(tǒng):以共享文件的方式來完成任務(wù)項(xiàng)傳遞。這種類型產(chǎn)品開發(fā)得最早、發(fā)展最成熟、產(chǎn)品品種較多。代表產(chǎn)品有FileNet的Visual WorkFlo、IBM 的Flow Mark、InConcert的InConcert。(2)基于消息的工作流系統(tǒng):通過用戶的電子郵件系統(tǒng)來傳遞文檔信息。這種類型的產(chǎn)品一般都提供與一種或多種電子郵件系統(tǒng)的集成接口。代表產(chǎn)品有Novell與FileNet合作開發(fā)的Ensemble、Jet-Form公司的InTempo、Keyfile公司的Keyflow。(3)基于Web的工作流系統(tǒng):通過WWW來實(shí)現(xiàn)任務(wù)的協(xié)作。這一類產(chǎn)品起步較晚(在1995年以后),但是發(fā)展迅速,其市場前景廣闊。許多供應(yīng)商紛紛改進(jìn)原有產(chǎn)品或開發(fā)新產(chǎn)品以增加對Web的支持。代表產(chǎn)品有Action Technologies公司的ActionWorks Metro、Ultimus 公司的Ultimus。(4)群件與套件系統(tǒng):雖然這一類產(chǎn)品與上面介紹的3種產(chǎn)品在任務(wù)傳遞方式上有很大程度的重疊,但是在這里卻有必要把它單獨(dú)劃分成一類,因?yàn)檫@一類產(chǎn)品都需要依賴于自己系統(tǒng)的應(yīng)用基礎(chǔ)結(jié)構(gòu),包括消息傳遞、目錄服務(wù)、安全管理,數(shù)據(jù)庫與文檔管理服務(wù)等,它們本身就構(gòu)成了一個(gè)完整的應(yīng)用開發(fā)環(huán)境。代表產(chǎn)品有IBM/Lotus公司的Lotus Notes、Microsoft公司的Office與Exchange、Novell公司的GroupWise。J2EE是Java2平臺企業(yè)版(Java 2 Platform,Enterprise Edition)。J2EE核心是一組技術(shù)規(guī)范與指南,其中所包含的各類組件、服務(wù)架構(gòu)及技術(shù)層次均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺之間存在良好的兼容性,解決過去企業(yè)后端使用的信息產(chǎn)品彼此之間無法兼容、企業(yè)內(nèi)部或外部難以互通的窘境。J2EE組件和“標(biāo)準(zhǔn)的”Java類的不同點(diǎn)在于,它被裝配在一個(gè)J2EE應(yīng)用中,具有固定的格式并遵守J2EE規(guī)范,由J2EE服務(wù)器對其進(jìn)行管理。J2EE規(guī)范是這樣定義J2EE組件的:客戶端應(yīng)用程序和applet是運(yùn)行在客戶端的組件;Java Servlet和Java Server Pages (JSP)是運(yùn)行在服務(wù)器端的Web組件;Enterprise Java Bean(EJB)組件是運(yùn)行在服務(wù)器端的業(yè)務(wù)組件。企業(yè)級應(yīng)用框架的需求在許多企業(yè)級應(yīng)用中,如數(shù)據(jù)庫連接、郵件服務(wù)、事務(wù)處理等都是一些通用企業(yè)需求模塊,這些模塊如果每次在開發(fā)中都由開發(fā)人員來完成的話,將會造成開發(fā)周期長和代碼可靠性差等問題。于是許多大公司開發(fā)了自己的通用模塊服務(wù)。這些服務(wù)性的軟件系列統(tǒng)稱為中間件。在這樣的需求基礎(chǔ)之上,許多公司都開發(fā)了自己的中間件,但其與用戶的溝通都各有不同,從而導(dǎo)致用戶無法將各個(gè)公司不同的中間件組裝在一塊為自己服務(wù)。從而產(chǎn)生瓶頸。于是提出標(biāo)準(zhǔn)的概念。其實(shí)J2EE就是基于JAVA技術(shù)的一系列標(biāo)準(zhǔn)。這種基于組件,具有平臺無關(guān)性的J2EE結(jié)構(gòu)使得J2EE程序的編寫十分簡單,因?yàn)闃I(yè)務(wù)邏輯被封裝成可復(fù)用的組件,并且J2EE服務(wù)器以容器的形式為所有的組件類型提供后臺服務(wù)。容器和服務(wù)容器設(shè)置定制了J2EE服務(wù)器所提供的內(nèi)在支持,包括安全、事務(wù)管理、JNDI(Java na-ming and directory interface)尋址、遠(yuǎn)程連接等服務(wù)。J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個(gè)應(yīng)用組件根據(jù)它們所在的層分布在不同的機(jī)器上。事實(shí)上,Sun設(shè)計(jì)J2EE的初衷正是為了解決兩層模式(client/server)的弊端,在傳統(tǒng)模式中,客戶端擔(dān)當(dāng)了過多的角色而顯得臃腫,在這種模式中,第一次部署的時(shí)候比較容易,但難于升級或改進(jìn),可伸展性也不理想,而且經(jīng)?;谀撤N專有的協(xié)議,通常是某種數(shù)據(jù)庫協(xié)議。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難?,F(xiàn)在J2EE的多層企業(yè)級應(yīng)用模型將兩層化模型中的不同層面切分成許多層。一個(gè)多層化應(yīng)用能夠?yàn)椴煌姆?wù)提供一個(gè)獨(dú)立的層,以下是J2EE典型的4層結(jié)構(gòu):①運(yùn)行在客戶端機(jī)器上的客戶層組件;②運(yùn)行在J2EE服務(wù)器上的Web層組件;③運(yùn)行在J2EE服務(wù)器上的業(yè)務(wù)邏輯層組件;④運(yùn)行在EIS服務(wù)器上的企業(yè)信息系統(tǒng)(enterprise information system)層軟件。1. JSP JSP是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*. htm,*. html)中加入Java程序片段(Seriptlet)和JSP標(biāo)簽,就構(gòu)成了JSP網(wǎng)頁。Java程序片段可以操縱數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,這樣大大降低了對客戶瀏覽器的要求,即使客戶瀏覽器端不支持Java,也可以訪問JSP網(wǎng)頁。通常JSP頁面很少進(jìn)行數(shù)據(jù)處理,只是用來實(shí)現(xiàn)網(wǎng)頁的靜態(tài)化頁面,提取數(shù)據(jù),不會進(jìn)行業(yè)務(wù)處理。JSP技術(shù)使用Java編程語言編寫類XML的tags和seriptlets,封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和seriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)的顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序開發(fā)變得迅速和容易。JSP(JavaServer Pages)是一種動(dòng)態(tài)頁面技術(shù),它的主要目的是將表示邏輯從Servlet中分離出來。自JSP推出后,眾多大公司都支持JSP技術(shù)的服務(wù)器,如IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應(yīng)用的服務(wù)器端語言。2. Servlet Servlet是在服務(wù)器上運(yùn)行的小程序。這個(gè)詞是在Java applet的環(huán)境中創(chuàng)造的,Java applet是一種當(dāng)做單獨(dú)文件跟網(wǎng)頁一起發(fā)送的小程序,它通常用于在客戶端運(yùn)行,結(jié)果得到為用戶進(jìn)行運(yùn)算或者根據(jù)用戶互作用定位圖形等服務(wù)。服務(wù)器上需要一些程序,常常是根據(jù)用戶輸入訪問數(shù)據(jù)庫的程序。這些通常是使用公共網(wǎng)關(guān)接口(common gateway interface,CGI)應(yīng)用程序完成的。然而,在服務(wù)器上運(yùn)行Java,這種程序可使用Java編程語言實(shí)現(xiàn)。在通信量大的服務(wù)器上,Javaservlet的優(yōu)點(diǎn)在于它們的執(zhí)行速度快于CGI程序。各個(gè)用戶請求被激活成單個(gè)程序中的一個(gè)線程,而無須創(chuàng)建單獨(dú)的進(jìn)程,這意味著服務(wù)器端處理請求的系統(tǒng)開銷將明顯降低。(1)實(shí)現(xiàn)過程:最早支持Servlet技術(shù)的是JavaSoft的Java Web Server。此后,一些其他的基于Java的WebServer開始支持標(biāo)準(zhǔn)的ServletAPI。Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。這個(gè)過程為:客戶端發(fā)送請求至服務(wù)器端→服務(wù)器將請求信息發(fā)送至Servlet→Servlet生成響應(yīng)內(nèi)容并將其傳給服務(wù)器(響應(yīng)內(nèi)容動(dòng)態(tài)生成,通常取決于客戶端的請求)→服務(wù)器將響應(yīng)返回給客戶端。(2)Servlet特點(diǎn):①快速性:Servlet只需被Web服務(wù)器加載一次,并且常駐內(nèi)存;②具備Java的所有優(yōu)點(diǎn):Servlet基于Java,繼承了Java的所有優(yōu)良特性;③可以訪問豐富的Java API:Java API提供對事務(wù)、數(shù)據(jù)庫、網(wǎng)絡(luò)分布式計(jì)算等方面的廣泛支持,從而使Servlet能進(jìn)行復(fù)雜的后臺處理。3. EJB EJB是Sun的服務(wù)器端組件模型,設(shè)計(jì)目標(biāo)與核心應(yīng)用是部署分布式應(yīng)用程序。憑借Java跨平臺的優(yōu)勢,用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺。EJB (enterprise JavaBean)是J2EE的一部分,定義了一個(gè)用于開發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。其特點(diǎn)包括網(wǎng)絡(luò)服務(wù)支持和核心開發(fā)工具(SDK)。在J2EE里,EJB稱為Java企業(yè)Bean,是Java的核心代碼,分別是會話Bean(session Bean)、實(shí)體Bean(entity Bean)和消息驅(qū)動(dòng)Bean(messagedriven Bean)。EJB是開發(fā)和配置基于組件的分布式商務(wù)應(yīng)用程序的一種組件結(jié)構(gòu)。用EJB結(jié)構(gòu)開發(fā)的應(yīng)用程序是可伸縮的、事務(wù)型的、多用戶安全的。這些應(yīng)用程序可能只需編寫一次,然而可以在支持EJB規(guī)范的任何服務(wù)器平臺上配置。EJB包含內(nèi)容:①EJB服務(wù)器;②EJB容器;③EJB類和實(shí)例;④EJB本地接口和EJB遠(yuǎn)程接口。(1)EJB服務(wù)器:管理多個(gè)EJB容器。提供一些系統(tǒng)服務(wù),如事務(wù)服務(wù)、安全服務(wù)等。(2)EJB容器:管理EJB類和實(shí)例、生成調(diào)用Bean的代碼、創(chuàng)建、初始化和銷毀Bean、 管理持久對象、提供EJB Server的服務(wù)給Bean。(3)EJB類型:會話Bean(有狀態(tài)/無狀態(tài));實(shí)體Bean;消息Bean。