專利名稱:開發(fā)和執(zhí)行平臺的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及計算機(jī)系統(tǒng)開發(fā)和執(zhí)行領(lǐng)域,更具體地說,本發(fā)明涉及在計算機(jī)系統(tǒng)中用于執(zhí)行業(yè)務(wù)邏輯,同時減輕書寫專用代碼的負(fù)擔(dān)的系統(tǒng)和方法。
背景技術(shù):
目前,開發(fā)并執(zhí)行一種計算機(jī)系統(tǒng)要求一個或多個有經(jīng)驗的程序員的編程時間的巨大投資。雖然存在用來輔助程序員為系統(tǒng)生成源代碼的開發(fā)工具,但那些工具并未消除對這些源代碼的需要。一些開發(fā)工具創(chuàng)造了減少這種工作的專用語言,但是同樣的,這些開發(fā)工具并不能免除這種工作本身。
典型的系統(tǒng)開發(fā)工程包括生成(通過書寫代碼或使用專用代碼生成工具)用于執(zhí)行業(yè)務(wù)邏輯本身的代碼、和書寫或者生成處理處理非業(yè)務(wù)邏輯任務(wù),如訪問數(shù)據(jù)庫和提供系統(tǒng)服務(wù)等的代碼。代碼必須被書寫以用于同數(shù)據(jù)庫服務(wù)器、郵件服務(wù)器、電話服務(wù)器等這些系統(tǒng)所使用的資源進(jìn)行通信。傳統(tǒng)方法并不將業(yè)務(wù)邏輯與非邏輯分離開來。因而,開發(fā)人員必須努力不僅要使業(yè)務(wù)邏輯正確地執(zhí)行,而且要使那些通常構(gòu)成開發(fā)大部分內(nèi)容的非邏輯方面正確地執(zhí)行。
必須進(jìn)行通信的用戶(用戶指的是人或計算機(jī)程序)和資源幾乎總是有變化很大的接口要求。因而,為與不同的用戶和資源進(jìn)行通信必須書寫各自的代碼,這樣即使不提及為完成這種任務(wù)所需的附加的復(fù)雜性和專門技術(shù),也極大地增加了必須花費在系統(tǒng)開發(fā)上的時間和工作。維護(hù)按這種方法開發(fā)的系統(tǒng)也是繁重的。如果用戶或資源發(fā)生變化,那么同該部分相關(guān)的編碼的業(yè)務(wù)邏輯也必須被改變。同樣,如果業(yè)務(wù)邏輯發(fā)生變化,非邏輯代碼部分也必須被改變的情況是經(jīng)常發(fā)生的。
圖1概括了開發(fā)具有基于Web的用戶接口、CORBA接口、數(shù)據(jù)庫和其它資源訪問的系統(tǒng)的現(xiàn)有技術(shù)的結(jié)構(gòu)。開發(fā)者必須為系統(tǒng)的每個方面書寫源代碼110。例如,必須按照CORBA(公共對象請求代理體系結(jié)構(gòu))規(guī)范對業(yè)務(wù)邏輯120編碼。CORBA是一種結(jié)構(gòu)和規(guī)范,用來創(chuàng)建、分配和管理網(wǎng)絡(luò)中的分布式程序?qū)ο蟆?br>
開發(fā)者必須額外地為系統(tǒng)書寫非邏輯代碼122來連接CORBA用戶,并為CORBA用戶書寫非邏輯代碼124。此外,開發(fā)者必須為系統(tǒng)書寫非邏輯代碼126來連接數(shù)據(jù)庫資源,并按照數(shù)據(jù)庫規(guī)范書寫非邏輯代碼128來訪問該資源。
系統(tǒng)也為最終用戶提供基于Web的用戶接口,并且必須書寫一組相似的代碼130來允許系統(tǒng)與Web通信。另外,也必須為系統(tǒng)書寫附加代碼140來訪問如電子郵件、電話及其它服務(wù)器等的附加資源。
用于定義對象接口的現(xiàn)有技術(shù)的代碼,如代碼122、126,必須被專門書寫來處理可能出現(xiàn)的大量帶有各種名稱、接受參數(shù)集和返回數(shù)據(jù)值的命令和可能出現(xiàn)的大量具有各種數(shù)據(jù)成員和數(shù)據(jù)類型的數(shù)據(jù)集。如圖2所示,一個名為Sample的現(xiàn)有技術(shù)接口的實例定義了一個用于檢索一些被請求信息的名為getRequesterInfo的命令。此例子是用作為面向?qū)ο蠼涌诙x形式的接口定義語言(IDL)書寫的。
實例中的接口定義200包括命令定義210。該命令定義具有唯一的命令名稱211、參數(shù)集212和返回數(shù)據(jù)類型213。
典型地用于命令定義210的復(fù)合數(shù)據(jù)類型需要具體的定義,如數(shù)據(jù)結(jié)構(gòu)RequesterInfo 230。當(dāng)在邏輯120和非邏輯122、124(圖1)中書寫或改變代碼時,那么那些定義必須跟隨。此外,由于那些定義對于正在應(yīng)用的業(yè)務(wù)邏輯的數(shù)據(jù)要求而言是特定的,因而必須為每個數(shù)據(jù)要求定義單獨的數(shù)據(jù)類型。
緊隨圖2中的、一個系統(tǒng)被開發(fā)用于檢索一些請求信息的例子,圖3示出了用于檢索來自數(shù)據(jù)庫的請求信息的一個極度簡化的Java程序300。開發(fā)者必須處理在任何程序設(shè)計語言中所固有的許多內(nèi)務(wù)事務(wù),如訪問數(shù)據(jù)庫、處理錯誤捕獲/異常310、315和數(shù)據(jù)庫330中的無效數(shù)據(jù)等。
必須書寫附加代碼來提供系統(tǒng)服務(wù)。例如,在用戶源代碼中需要圖4中的另一個簡化的、用作CORBA servlet的Java程序400。
可見,當(dāng)開發(fā)者必須設(shè)計代碼來執(zhí)行如邏輯120的業(yè)務(wù)邏輯的同時,如今,開發(fā)者的工作的實質(zhì)部分是專心致力于創(chuàng)建同系統(tǒng)的各個部分通信的必要的非邏輯代碼以及在不同的地方編碼業(yè)務(wù)邏輯來處理不同的技術(shù)。因而,目前存在對一種通過最小化編程和調(diào)試時間來加速系統(tǒng)的建立的開發(fā)和執(zhí)行平臺的需要。更特別地,存在對一種允許開發(fā)者專注于業(yè)務(wù)邏輯而不用對使用多種程序設(shè)計語言和技術(shù)類型的工作而分心的開發(fā)和執(zhí)行平臺的需要。就發(fā)明者所知,目前還沒有提供這樣的系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明通過提供一種將開發(fā)者的任務(wù)減少到僅為業(yè)務(wù)邏輯編碼的開發(fā)和執(zhí)行平臺來解決上面所述的需要。由于本發(fā)明的平臺處理內(nèi)務(wù)工作,本發(fā)明允許開發(fā)者以一種同傳統(tǒng)程序設(shè)計語言相比更為簡化的格式書寫業(yè)務(wù)邏輯。
在本發(fā)明的一個實施例中,開發(fā)平臺是用來建立一個向用戶提供服務(wù)的系統(tǒng)。平臺包括用于提供系統(tǒng)管理和執(zhí)行業(yè)務(wù)邏輯的引擎,至少一個具有服務(wù)端插件模塊接口的服務(wù)端(北區(qū))插件模塊,和與引擎通信并與所有服務(wù)端插件模塊通信的唯一的服務(wù)端接口。所述服務(wù)端接口包含唯一的命令。服務(wù)端接口支持所有服務(wù)端插件模塊接口(單接口技術(shù)),并且該命令支持所有服務(wù)端插件模塊接口的命令(單命令技術(shù))。
此外,平臺可以包括至少一個資源端(南區(qū))插件模塊;和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口。這種情況下,資源端接口包含唯一的命令。所述至少一個資源端插件模塊的每一個可以具有一個資源端插件模塊接口。這種情況下,每一個資源端插件模塊被用來與資源中的至少一個相連接、所述資源端接口支持所有資源端插件模塊接口(單接口技術(shù)),并且所述資源端接口的唯一的命令支持資源端插件模塊接口的所有命令(單命令技術(shù))。
系統(tǒng)可以通過用戶定義的配置文件進(jìn)行配置。
服務(wù)端插件模塊中的一個可以連接到包含用于說明基于Web的最終用戶接口的最終用戶接口源代碼的Web服務(wù)器。這種情況下,引擎許動態(tài)加載最終用戶接口源代碼,從而在運行時間內(nèi)不用重啟系統(tǒng)就可以重新加載最終用戶接口源代碼。最終用戶接口源代碼可以被定義在XML文件和HTML文件中。
此外,平臺可以包括用來對說明業(yè)務(wù)邏輯的主源代碼進(jìn)行解釋的解釋器。這種情況下,引擎可以允許動態(tài)加載主源代碼,從而在運行時間內(nèi)不用重啟系統(tǒng)就可以重新加載主源代碼。主源代碼可以被定義在XML文件中。
每個服務(wù)端插件模塊是可執(zhí)行的。
引擎可以允許動態(tài)加載資源端插件模塊,從而在運行時間內(nèi)不用重啟系統(tǒng)就可以重新加載資源端插件模塊。
所述服務(wù)端接口可以以接口定義語言IDL定義。同樣的,資源端接口可以以IDL定義。
在本發(fā)明的另一個實施例中,提供了用于在包括引擎、至少一個服務(wù)端插件模塊和與引擎通信并與所有服務(wù)端插件模塊通信的唯一的服務(wù)端接口的平臺上執(zhí)行業(yè)務(wù)邏輯的方法。所述服務(wù)端接口包括唯一的命令,該方法執(zhí)行唯一的命令來支持服務(wù)端插件模塊接口的所有命令的步驟。
此外,執(zhí)行此方法的平臺可以包括至少一個資源端插件模塊和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口。所述資源端接口包括唯一的命令。此外,每個資源端插件模塊可以包括一個資源端插件模塊接口,而每一個資源端插件模塊用于與至少一個資源相連接。在這種情況下,所述資源端接口支持所有資源端插件模塊接口,并且所述方法還包括執(zhí)行該唯一的命令來支持資源端插件模塊接口的所有命令的步驟。
此外,所述方法可以包含通過用戶定義的配置文件配置系統(tǒng)來進(jìn)行管理的步驟。
所述服務(wù)端插件模塊中的一個可以連接到包含用于說明基于Web的最終用戶接口的最終用戶接口源代碼的Web服務(wù)器。在這種情況下,所述方法還可以包括在運行時間內(nèi)不用重啟系統(tǒng)而重新加載最終用戶接口源代碼的步驟。最終用戶接口源代碼可以被定義在XML文件和HTML文件中。
此外,所述方法可以包括對在引擎中的用于說明業(yè)務(wù)邏輯的主源代碼進(jìn)行解釋的步驟。解釋主源代碼的步驟被執(zhí)行,以使在運行時間內(nèi)不用重啟系統(tǒng)就能夠重新加載主源代碼。主源代碼可以被定義在XML文件中。
所述方法還可以包含在運行時間內(nèi)不重啟系統(tǒng)而動態(tài)加載資源端插件模塊的步驟。
在本發(fā)明的另一個實施例中,開發(fā)平臺是用于建立為用戶提供服務(wù)的系統(tǒng)。所述平臺包含用于提供系統(tǒng)管理和執(zhí)行業(yè)務(wù)邏輯的引擎,至少一個服務(wù)端插件模塊每個都是可執(zhí)行的,以及與引擎通信并與所有服務(wù)端插件通信的唯一的服務(wù)端接口。服務(wù)端接口僅包括唯一的命令。
此外,平臺可以提供與至少一個資源的連接,所述平臺還包括至少一個資源端插件模塊;和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口;所述資源端接口包括唯一的命令。
每一個所述至少一個資源端插件模塊具有一個資源端插件模塊接口,每一個資源端插件模塊用于連接至少一個資源。在這種情況下,所述資源端接口支持所有資源端插件模塊接口,和所述資源端接口的所述唯一的命令支持資源端括件模塊接口的所有命令。
本發(fā)明的另一個實施例是一種計算機(jī)程序產(chǎn)品,包括具有記錄于其上的包含代碼裝置的計算機(jī)程序的計算機(jī)可讀記錄介質(zhì),當(dāng)該代碼在計算機(jī)上執(zhí)行時,所述代碼裝置用于指示所述計算機(jī)來控制上述方法中的步驟。
圖1是用于建立具有基于Web的用戶接口、CORBA接口和對數(shù)據(jù)庫及其它資源的訪問的系統(tǒng)的現(xiàn)有技術(shù)結(jié)構(gòu)的原理圖。
圖2是定義在IDL中用于檢索一些請求信息的現(xiàn)有技術(shù)接口的示意代碼段。
圖3是使用圖2中的接口定義來檢索請求信息的現(xiàn)有技術(shù)的Java代碼的示意代碼段。
圖4是圖2中的例子所需要的現(xiàn)有技術(shù)附加Java代碼的示意代碼段。
圖5是根據(jù)本發(fā)明的開發(fā)和執(zhí)行平臺的結(jié)構(gòu)原理圖。
圖6是根據(jù)本發(fā)明的開發(fā)和執(zhí)行平臺的一個例子的結(jié)構(gòu)原理圖。
圖7是在圖6的例子中使用的在IDL中的使用單接口技術(shù)和單命令技術(shù)的接口定義的一個例子的示意代碼段。
圖8是用于定義圖6的例子中的引擎所使用的XML中的主源代碼的文檔類型定義(DTD)的一個例子。
圖9是根據(jù)本發(fā)明的一個實施例的由用戶定義的、用于檢索在圖2、3和4中請求信息的系統(tǒng)配置文件的一個例子。
圖10是根據(jù)本發(fā)明的一個實施例用于檢索在圖2、3和4中的請求信息的XML格式下的主用戶源代碼的一個例子。
圖11是示出可以運行本發(fā)明的部分或所有平臺的計算機(jī)的一個例子的簡化原理圖。
具體實施例方式
圖5的簡化原理圖示出了包括所發(fā)明的系統(tǒng)510和相關(guān)聯(lián)的用戶代碼550的結(jié)構(gòu)500。系統(tǒng)510包含三個主要部分在核心處是軟件引擎520,與引擎通信的是與其分離的接口530、540,和接口插件模塊531、541。在這里,結(jié)構(gòu)500有時被稱為DOPA。
引擎520、接口530、540和接口插件模塊531、541包括預(yù)先建立的軟件包,它包括除了業(yè)務(wù)邏輯本身以外的、將被開發(fā)的目標(biāo)系統(tǒng)的其它所有方面。引擎520、接口530、540和接口插件模塊531、541是一般的,它們不是專門用于如電信或銀行的任何工業(yè)。平臺不包括與特別任務(wù)相關(guān)的業(yè)務(wù)邏輯。
另一方面,如建立數(shù)據(jù)庫連接和提供系統(tǒng)服務(wù)的所有其它非邏輯任務(wù),被本發(fā)明的預(yù)先書寫和預(yù)先測試對象所執(zhí)行。那些對象是彼此獨立的。
與產(chǎn)生的新代碼必須稍后在每個應(yīng)用中被測試的自動代碼生成技術(shù)相比,本發(fā)明使用了預(yù)先建立、預(yù)先測試對象,用于除將被書寫的業(yè)務(wù)邏輯外的系統(tǒng)的其它所有方面。那些方面包括常用的或者遵循標(biāo)準(zhǔn)的對象。因而,隨著系統(tǒng)的其它所有方面都被預(yù)先建立和預(yù)先測試,開發(fā)者能夠完全集中精力在編碼和調(diào)試系統(tǒng)的業(yè)務(wù)邏輯部分。
引擎520的主函數(shù)用于提供對整個系統(tǒng)的控制和管理并處理用戶邏輯。引擎520可以包括一個函數(shù)的集合,它在概念上類似于包含于許多編程語言中的函數(shù),用于為開發(fā)者方便起見而預(yù)先書寫一些常用代碼的目的。
主源代碼552和最終用戶接口源代碼551包含用戶書寫的開發(fā)代碼550。主源代碼552是用引擎支持的語言書寫的,而最終用戶接口源代碼551是用Web接口插件模塊532和Web服務(wù)器分別支持的語言書寫的。主源代碼552定義了被系統(tǒng)執(zhí)行的業(yè)務(wù)邏輯,并且最終用戶接口源代碼551定義了基于Web的最終用戶接口。當(dāng)業(yè)務(wù)邏輯變化時主源代碼是唯一必須被修改的地方。在這里所使用的術(shù)語“業(yè)務(wù)邏輯”的意思是被計算機(jī)系統(tǒng)執(zhí)行的、用于正在開發(fā)的特別應(yīng)用的一個任務(wù)或決定或者任務(wù)或決定的序列。本發(fā)明所使用的開發(fā)代碼的例子將在下面參考圖10進(jìn)行解釋。
服務(wù)端接口530和資源端接口540,都是使用本發(fā)明的單接口技術(shù)(SIFT)的接口。SIFT允許一個接口定義來支持不同的接口。SIFT也支持多種接口類型,如CORBA、HTTP、SOAP、Telnet、Java等等和將來將出現(xiàn)的新的接口類型。
服務(wù)端接口530和資源端接口540,均是引擎和所有插件模塊之間的中間層,它們吸收各種插件模塊接口的差異將其符合成一個接口,并使用該接口同引擎通信。接口使用本發(fā)明的單命令技術(shù)來實現(xiàn)這個獨特的功能。
單命令技術(shù)553是支持具有各種不同的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)、所有可能的參數(shù)集和各種返回數(shù)據(jù)值的各種不同命令的命令定義。
與下面將被更詳細(xì)描述的一樣,單命令技術(shù)允許引擎以單一方式處理所有命令并允許用戶以更簡化的格式書寫源代碼552,因而簡化了書寫業(yè)務(wù)邏輯的處理。這一概念顯著地縮短了軟件開發(fā)周期,允許快速建立適應(yīng)性好、大規(guī)模的能夠支持各種系統(tǒng)特性的軟件系統(tǒng)。調(diào)試和代碼維護(hù)變得簡單快捷。
引擎520僅同服務(wù)端接口530和/或者資源端接口540通信。由于引擎520僅同這些接口通信,則引擎520不必隨不同的接口插件模塊而修改。換句話說,SIFT允許引擎520保持不變。
服務(wù)端接口530支持服務(wù)端接口插件模塊531,如基于Web的圖形最終用戶接口模塊532。資源端接口540支持資源端接口插件模塊541,提供與如數(shù)據(jù)庫的資源542的交互。
如果其接口定義已知,接口插件模塊531、541可以被預(yù)先建立。例如,通過使用IDL接口定義,CORBA接口模塊可以被預(yù)先建立。該模塊能夠被用于所有CORBA接口,并且不必為專門應(yīng)用而重新書寫。另外一個例子,基于Web的最終用戶接口插件模塊532可以被預(yù)先建立在用于Web服務(wù)器的服務(wù)端接口之上。
將接口插件模塊從該接口本身分離出來的好處如下第一,這使得每個接口模塊成為插件,而不是硬連線的,因而可以變換不同的接口技術(shù)而不會沖擊系統(tǒng)的其它部分;第二且更重要的是,由于其預(yù)先定義、面向所有目的(all-purpose)且通用的單接口技術(shù),它可以支持將來的新技術(shù);第三,它也可以支持專門的用戶接口。
引擎520支持熱插拔。它使用現(xiàn)有的動態(tài)對象加載技術(shù),借此在運行時間內(nèi)不用中斷服務(wù)就能夠熱插拔系統(tǒng)配置、用戶源代碼和接口插件模塊。
具有同樣的接口插件模塊或不同的插件模塊的系統(tǒng)的多個例子可以同時運行。
具體實施方式
本發(fā)明系統(tǒng)結(jié)構(gòu)的具體實施方式
600由圖6示意性地示出。它包括DOPA系統(tǒng)610和開發(fā)者代碼660。在這里被包括的例子是本發(fā)明的一個實施例的圖解,并且決不意在限制本發(fā)明的范圍。本領(lǐng)域的普通技術(shù)人員將發(fā)現(xiàn)使用其它的編程語言和技術(shù)也可以實現(xiàn)本發(fā)明的系統(tǒng)和方法。
具體實施方式
中的DOPA系統(tǒng)610包括DOPA引擎620、北區(qū)的服務(wù)端接口630、兩個服務(wù)端預(yù)先建立的CORBA插件模塊631、632、用于最終用戶調(diào)試器的服務(wù)端預(yù)先建立的命令行對象插件模塊637、連接于一個CORBA接口插件模塊632的服務(wù)端預(yù)先建立的DOPA servlet引擎633、南區(qū)的資源端接口640和連接于南區(qū)的資源的若干資源端預(yù)先建立的插件模塊641到646。
開發(fā)者代碼660包括由DOPA servlet引擎633讀取的、用于基于Web的顯示的、HTML/XML的Web源代碼661,由系統(tǒng)610讀取的、用于動態(tài)地管理系統(tǒng)的配置代碼662,定義系統(tǒng)消息、包括錯誤的XML的消息代碼663,以及用于業(yè)務(wù)邏輯的、由DOPA引擎620讀取的DOPA主源代碼664。
預(yù)先建立的CORBA服務(wù)器接口模塊631向CORBA客戶635提供服務(wù)。相同的CORBA插件模塊的另一個實例632被用于與DOPAservlet引擎633進(jìn)行通信,所述DOPA servlet引擎633為網(wǎng)頁瀏覽器636連接Web服務(wù)器634。因而,在兩個實例中重用了相同的CORBA接口模塊。可見,可以為客戶預(yù)先建立接口模塊,以減輕開發(fā)者為這些接口模塊書寫代碼的任務(wù)。
預(yù)先建立的CORBA客戶接口模塊643被用于與CORBA服務(wù)器653相聯(lián)系。CORBA服務(wù)器可以是一個在DOPA系統(tǒng)中的CORBA服務(wù)器。在此例子中的系統(tǒng)610包括附加的預(yù)先建立的接口插件模塊用于數(shù)據(jù)庫651的ODBC接口插件模塊641;用于另一個數(shù)據(jù)庫652的JDBC接口插件模塊642;用于郵件服務(wù)器654的郵件接口插件模塊644,和用于電話服務(wù)器655的電話接口插件模塊645。本領(lǐng)域的普通技術(shù)人員將發(fā)現(xiàn)其它的接口模塊也可以被以相似的方式預(yù)先建立來被使用和重用。
在圖6的示范系統(tǒng)的實現(xiàn)中,開發(fā)者如下所述地書寫開發(fā)者源代碼660主源代碼664,如上面所討論的用于業(yè)務(wù)邏輯的XML文件,以若干HTML/XML文件661書寫、用于由DOPA servlet引擎633所使用的Web源代碼661,用于提供基于Web的用戶接口,如下面所討論的被系統(tǒng)610讀取的配置文件662,以及將被用于系統(tǒng)中的、由開發(fā)者所定義的消息文件663。
開發(fā)者源代碼660不需要用特別的數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)來聲明數(shù)據(jù),因為如下所述,平臺僅有唯一的命令和一個數(shù)據(jù)結(jié)構(gòu)來進(jìn)行工作。變量var_name=value被定義為和數(shù)據(jù)類型無關(guān)。必要時DOPA引擎620和DOPA servlet引擎633能夠根據(jù)上下文將變量轉(zhuǎn)換為適當(dāng)?shù)臄?shù)據(jù)類型。它也允許用戶在一個命令中使用盡可能多的參數(shù)而不需要在相應(yīng)的命令中預(yù)先定義參數(shù)集。
圖7示出了根據(jù)本發(fā)明使用單接口技術(shù)的、用于服務(wù)端接口和資源端接口的、IDL中的接口定義700的例子。如圖6所示,單服務(wù)端接口630是在DOPA引擎620和北區(qū)的接口模塊631、632、637之間定義的唯一的接口。這對于DOPA引擎620和南區(qū)的接口插件模塊641到646之間的單資源端接口640是相同的。
回到圖7中,單接口750的例子取代了用于與之連接的用戶和資源的多種接口技術(shù)、數(shù)據(jù)庫等所需要的多個分離的接口。多個分離的接口的存在需要開發(fā)者在所連接的項目變化或增加新項目時使用現(xiàn)有技術(shù)改變系統(tǒng)的核心代碼或者添加新代碼。因而當(dāng)添加對新的接口插件模塊的支持以用于不同的技術(shù)時,不需要添加或改變存在的接口定義(如圖7中的接口定義700),從而改變引擎620。
通過使用具有一個命令名稱775的單命令770(本例子中的DopaCommand),單個接口750的例子是可行的。單命令770的元素允許唯一的命令能夠處理所有命令,這樣系統(tǒng)可以接收和實現(xiàn)所有的要求。單命令的元素提供命令所使用的數(shù)據(jù)和操作。
通過使用單數(shù)據(jù)技術(shù),單個命令770的例子是可行的。單數(shù)據(jù)技術(shù)是支持所有可能的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型和數(shù)據(jù)元素的多個數(shù)字的數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型。
圖7示出了本發(fā)明中的使用單數(shù)據(jù)技術(shù)的單數(shù)據(jù)結(jié)構(gòu)的例子。單數(shù)據(jù)結(jié)構(gòu)被稱為rdata 710。在單命令770中的數(shù)據(jù)類型被稱為rdatas720,這里rdatas 720是rdata 710的序列。結(jié)構(gòu)710的元素715提供通用性和靈活性來支持單命令770內(nèi)的所有數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型。
DTD(文檔類型定義)文件800(圖8)定義了在XML中的開發(fā)者的DOPA主源代碼664中使用的元素或標(biāo)識名。ROOT元素被定義用來包含零個或更多的COMMAND元素,而COMMAND類似于傳統(tǒng)程序設(shè)計語言中的“方法”。遵循在DTD800中已設(shè)定的規(guī)則的COMMAND元素包括包含可選擇的聲明(STMT)和零個或更多的參數(shù)(PARAM)的零或更多的DATA元素,用來允許命令以相同格式執(zhí)行所有業(yè)務(wù)邏輯。若干的屬性目錄820提供與元素COMMAND和DATA相關(guān)聯(lián)的附加信息。由此例子可以看出,執(zhí)行業(yè)務(wù)邏輯的任務(wù)已經(jīng)被減少為遵循定義在圖8中的簡單的DTD來書寫XML文件。在圖8中的DTD例子中,多個COMMAND元素可以被用于執(zhí)行業(yè)務(wù)邏輯。每個COMMAND元素可以包含包括可選擇的STMT(聲明)元素和任一個PARAM(參數(shù))元素的多個DATA元素。
回到圖7中的具體實施方式
,本發(fā)明的平臺僅利用了一種數(shù)據(jù)結(jié)構(gòu)和一種數(shù)據(jù)類型。從而根本不需要數(shù)據(jù)類型,以至簡化了開發(fā)者代碼,因為所有數(shù)據(jù)共享同樣的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)。平臺具有基于上下文內(nèi)部辨別適當(dāng)?shù)臄?shù)據(jù)類型,并根據(jù)需要在一個序列720中使用結(jié)構(gòu)710中的元素715來傳遞所有數(shù)據(jù)值的智能。因而,開發(fā)者可以根據(jù)需要使用數(shù)據(jù)而不需關(guān)心數(shù)據(jù)類型聲明的正確性和預(yù)先定義的參數(shù)集的匹配性。
為檢索如圖2中舉例說明的請求信息的目的,圖9和圖10分別示出了DOPA配置文件652和XML中的用于業(yè)務(wù)邏輯的DOPA主源代碼654的例子。圖9中的配置文件900建立了系統(tǒng)的配置,它包括一個具有端口的CORBA服務(wù)器和一個具有數(shù)據(jù)庫名稱、數(shù)據(jù)庫驅(qū)動和登錄信息的數(shù)據(jù)庫。
圖10的XML文件1000描述了開發(fā)者使用圖8所示DTD書寫的業(yè)務(wù)邏輯。在此例子中,一個稱為“getRequesterInfo”的COMMAND元素被使用。它有兩個DATA元素塊,一個包含PARAM元素塊1020,另外一個包含STMT元素塊1030。
PARAM塊1020聲明了一個稱為“用戶”的參數(shù)并傳遞登錄用戶的身份。STMT塊1030包含用于訪問名為PEOPLE的數(shù)據(jù)庫表來為用戶提取請求信息的業(yè)務(wù)邏輯。STMT塊1030內(nèi)的SQL語句與包含于在圖3的320所示的現(xiàn)有技術(shù)的用戶源代碼是相同的。值得注意的是,在圖2、4中顯示的現(xiàn)有技術(shù)系統(tǒng)所必需的附加編碼被去除了,因為這些附加編碼可以提前被獲知,并因而可以在DOPA系統(tǒng)中被預(yù)先書寫和預(yù)先測試。
上面描述的發(fā)明是模塊化的框架,并就像可觸知地體現(xiàn)在程序存儲器裝置上的應(yīng)用程序一樣作為軟件來配置。用于執(zhí)行的應(yīng)用代碼可以常駐于本領(lǐng)域的普通技術(shù)人員所知的多個不同類型的計算機(jī)可讀介質(zhì)上。執(zhí)行本發(fā)明的實施例的指令的計算機(jī)1121的簡單實施例由圖11示出。被描繪的典型硬件環(huán)境示出了計算機(jī)典型的硬件配置。計算機(jī)1121包括CPU 1123、存儲器1125、程序存儲器裝置1127、公共通信總線1129、網(wǎng)絡(luò)接口1131和用戶接口1139。網(wǎng)絡(luò)接口1131允許在計算機(jī)1121、其它計算機(jī)和使用已知通信協(xié)議的外部兼容設(shè)備之間的雙向通信??蓤?zhí)行指令被從程序存儲器裝置1127加載到內(nèi)存1125中。CPU1123執(zhí)行在存儲器1125中存儲的兼容指令。本領(lǐng)域的普通技術(shù)人員將知道本發(fā)明可以在不背離本發(fā)明的范圍的情況下被應(yīng)用于多種其它配置上。
前述的詳細(xì)說明應(yīng)該被理解為在每個方面是說明性和實例性的,而不是限制性的,并且這里所公開的本發(fā)明的范圍不能由“發(fā)明內(nèi)容”決定,而是由根據(jù)專利法允許的全部范圍所解釋的權(quán)利要求書所決定的。例如,當(dāng)例子主要涉及CORBA接口的時候,具有如HTTP、SOAP等其它接口技術(shù)的系統(tǒng)也可以利用本發(fā)明進(jìn)行開發(fā)和執(zhí)行。這里顯示和描述的實施例應(yīng)該被理解為僅是對本發(fā)明的原理的說明,而且本領(lǐng)域的普通技術(shù)人員在不背離本發(fā)明的范圍和精神的情況下可以進(jìn)行各種修改。
權(quán)利要求
1.一種開發(fā)平臺,用于建立為用戶提供服務(wù)的系統(tǒng),所述平臺包括引擎,用于提供系統(tǒng)管理和執(zhí)行業(yè)務(wù)邏輯;至少一個具有服務(wù)端插件模塊接口的服務(wù)端插件模塊;和與引擎通信并與所有服務(wù)端插件模塊通信的唯一的服務(wù)端接口;所述服務(wù)端接口包括唯一的命令并且所述服務(wù)端接口支持所有服務(wù)端插件模塊接口;所述唯一的命令支持服務(wù)端插件模塊接口的所有命令。
2.根據(jù)權(quán)利要求1的平臺,還包含至少一個資源端插件模塊;和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口;所述資源端接口包括唯一的命令。
3.根據(jù)權(quán)利要求2的平臺,其中所述至少一個資源端插件模塊的每一個都具有一個資源端插件模塊接口,每一個資源端插件模塊用于與資源中的至少一個相連接;所述資源端接口支持所有資源端插件模塊接口;而且所述資源端接口的所述唯一的命令支持資源端插件模塊接口的所有命令。
4.根據(jù)權(quán)利要求1的平臺,其中,所述引擎被配置用于通過用戶定義的配置文件來管理系統(tǒng)。
5.根據(jù)權(quán)利要求1的平臺,其中,所述服務(wù)端插件模塊中的一個連接到包含用于說明基于Web的最終用戶接口的最終用戶接口源代碼的Web服務(wù)器。
6.根據(jù)權(quán)利要求5的平臺,其中,所述引擎允許動態(tài)加載最終用戶接口源代碼,從而在運行時間內(nèi)不用重啟系統(tǒng)就可以重新加載最終用戶接口源代碼。
7.根據(jù)權(quán)利要求5的平臺,其中,所述最終用戶接口源代碼包括一個XML文件。
8.根據(jù)權(quán)利要求5的平臺,其中,所述最終用戶接口源代碼包括一個HTML文件。
9.根據(jù)權(quán)利要求1的平臺,還包括用于對說明業(yè)務(wù)邏輯的用戶源代碼進(jìn)行解釋的解釋器。
10.根據(jù)權(quán)利要求9的平臺,其中,所述引擎允許動態(tài)加載主源代碼,從而在運行時間內(nèi)不用重啟系統(tǒng)就可以重新加載主源代碼。
11.根據(jù)權(quán)利要求9的平臺,其中,所述主源代碼包括一個XML文件。
12.根據(jù)權(quán)利要求1的系統(tǒng),其中,每一個服務(wù)端插件模塊都是可執(zhí)行的。
13.根據(jù)權(quán)利要求2的平臺,其中,所述引擎允許動態(tài)加載資源端插件模塊,從而在運行時間內(nèi)不用重啟系統(tǒng)就可以重新加載資源端插件模塊。
14.根據(jù)權(quán)利要求1的平臺,其中,所述服務(wù)端接口以接口定義語言被定義(IDL)。
15.根據(jù)權(quán)利要求2的平臺,其中的所述資源端接口以接口定義語言被定義(IDL)。
16.用于在包括引擎、至少一個服務(wù)端插件模塊和與引擎通信并與所有服務(wù)端插件模塊通信的唯一的服務(wù)端接口的平臺上執(zhí)行業(yè)務(wù)邏輯的方法,所述服務(wù)端接口包括唯一的命令,該方法包括如下步驟執(zhí)行唯一的命令來支持服務(wù)端插件模塊接口的所有命令。
17.根據(jù)權(quán)利要求16的方法,其中,所述平臺還包括至少一個資源端插件模塊和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口,所述資源端接口包括唯一的命令。
18.根據(jù)權(quán)利要求17的方法,其中,所述資源端插件模塊的每一個還包括一個資源端插件模塊接口,每一個資源端插件模塊用于與至少一個資源相連接;所述資源端接口支持資源端插件模塊接口的所有命令;并且其中,所述方法還包括如下步驟執(zhí)行該唯一的命令來支持資源端插件模塊接口的所有命令。
19.根據(jù)權(quán)利要求16的方法,還包括如下步驟配置所述引擎以通過用戶定義的配置文件來管理系統(tǒng)。
20.根據(jù)利要求16的方法,其中,所述服務(wù)端插件模塊中的一個連接到包含用于說明基于Web的最終用戶接口的最終用戶接口源代碼的Web服務(wù)器。
21.根據(jù)權(quán)利要求20的方法,還包括如下步驟在運行時間內(nèi)不用重啟系統(tǒng)而重新加載最終用戶接口源代碼。
22.根據(jù)權(quán)利要求20的平臺,其中,所述最終用戶接口源代碼包括一個XMI文件。
23.根據(jù)權(quán)利要求20的平臺,其中,所述最終用戶接口源代碼包括一個HTML文件。
24.根據(jù)權(quán)利要求16的方法,還包括如下步驟對在引擎中的用于說明業(yè)務(wù)邏輯的主源代碼進(jìn)行解釋。
25.根據(jù)權(quán)利要求24的方法,其中,所述解釋主源代碼的步驟被執(zhí)行,以使在運行時間內(nèi)不用重啟系統(tǒng)就能夠重新加載主源代碼。
26.根據(jù)權(quán)利要求24的方法,其中,所述主源代碼包含一個XML文件。
27.根據(jù)權(quán)利要求16的方法,還包括如下步驟在運行時間內(nèi)動態(tài)加載資源端插件模塊而不重啟系統(tǒng)。
28.一種開發(fā)平臺,用于建立為用戶提供服務(wù)的系統(tǒng),所述平臺包括引擎,用于提供系統(tǒng)管理并執(zhí)行業(yè)務(wù)邏輯;至少一個服務(wù)端插件模塊,每一個模塊都是可執(zhí)行的;和與引擎通信并與所有服務(wù)端插件模塊通信的唯一的服務(wù)端插件模塊;所述服務(wù)端接口包括唯一的命令。
29.根據(jù)權(quán)利要求28的平臺,其中,所述平臺還提供與至少一個資源的連接,所述平臺還包括至少一個資源端插件模塊;和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口;所述資源端接口包括唯一的命令。
30.根據(jù)權(quán)利要求29的平臺,其中每一個所述至少一個資源端插件模塊具有一個資源端插件模塊接口,每一個資源端插件模塊用于與至少一個資源相連接;所述資源端接口支持所有資源端插件模塊接口;和所述資源端接口的所述唯一的命令支持資源端插件模塊接口的所有命令。
31.一種計算機(jī)程序產(chǎn)品,包括具有記錄于其上的包含代碼裝置的計算機(jī)程序的計算機(jī)可讀記錄介質(zhì),當(dāng)該代碼在計算機(jī)上執(zhí)行時,所述代碼裝置用于指示所述計算機(jī)來控制用于在一個平臺中執(zhí)行業(yè)務(wù)邏輯的方法中的步驟,所述平臺包括引擎、至少一個服務(wù)端插件模塊和與引擎通信并與所有服務(wù)端插件模塊通信的唯一的服務(wù)端接口,所述服務(wù)端接口包括唯一的命令,所述方法包括如下步驟執(zhí)行唯一的命令來支持服務(wù)端插件模塊接口的所有命令。
32.根據(jù)權(quán)利要求31的產(chǎn)品,其中,所述平臺還包括至少一個資源端插件模塊和與引擎通信并與所有資源端插件模塊通信的唯一的資源端接口,所述資源端接口包括唯一的命令。
33.根據(jù)權(quán)利要求32的產(chǎn)品,其中,所述資源端插件模塊還包括資源端插件模塊接口,每個資源端插件模塊用于與至少一個資源相連接;所述資源端接口支持資源端插件模塊接口的所有命令;并且其中,所述方法還包括如下步驟執(zhí)行唯一的命令來支持資源端插件模塊接口的所有命令。
全文摘要
本發(fā)明公開了一種用于執(zhí)行業(yè)務(wù)邏輯的系統(tǒng)的開發(fā)和執(zhí)行結(jié)構(gòu),包括提供系統(tǒng)管理和執(zhí)行業(yè)務(wù)邏輯的引擎。單服務(wù)端接口將引擎和服務(wù)端插件模塊相連接,而且單資源端接口將引擎和資源端插件模塊相連接。服務(wù)器端和資源端插件模塊分別連接到用戶和資源。單接口將插件模塊接口符合為一個接口來與引擎通信。單接口使用了單命令定義。定義業(yè)務(wù)邏輯的開發(fā)代碼是由用戶書寫并由引擎執(zhí)行的。
文檔編號G06F9/44GK1932760SQ20061012746
公開日2007年3月21日 申請日期2006年9月11日 優(yōu)先權(quán)日2005年9月12日
發(fā)明者田村張福 申請人:全智科技公司