專利名稱:可擴充的分布企業(yè)應(yīng)用集成系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在計算機領(lǐng)域已知的“中間件”,特別是配置在網(wǎng)絡(luò)企業(yè)交叉點的集成應(yīng)用程序的可擴充的分布系統(tǒng)和方法。
對于典型的組織,應(yīng)用網(wǎng)絡(luò)已經(jīng)有機地成為收集特殊的應(yīng)用集成計劃。當(dāng)它增加實施新應(yīng)用程序的時間時,這個收集在商務(wù)上有很嚴重的影響,妨礙了高級管理層得到商務(wù)的實際情況,簡而言之,阻塞了集團的動脈。盡管應(yīng)用集成已經(jīng)對企業(yè)集團的生存變成至關(guān)重要,但為此目的,企業(yè)集團以巨大的長期花費,在現(xiàn)有技術(shù)中手工操作或“砍掉”客戶代碼是可接受的。同樣地,長期應(yīng)用綜合決定只是根據(jù)個人的計劃標(biāo)準(zhǔn)在最低的級別上做出。因為決定這些問題的困難性質(zhì),所以還沒有找到一個有效的企業(yè)應(yīng)用集成(EAI)解決辦法。
因特網(wǎng)的出現(xiàn)、用戶/服務(wù)器計算、企業(yè)合并和收購、全球化、商務(wù)流程的重新設(shè)計已經(jīng)強迫企業(yè)信息技術(shù)(IT)部門繼續(xù)尋找新的(常常是手工的)方式使得相互之間進行不同系統(tǒng)的交流-不管這些系統(tǒng)是多么陳舊。在隨之發(fā)生混亂中,不適當(dāng)?shù)耐ㄐ畔到y(tǒng)在商務(wù)需要快速反應(yīng)的IT能力上有弱化的影響。
IT中的最近趨勢只是增加(常常是數(shù)量級)支持他們的內(nèi)部接口的數(shù)量而惡化了這個問題。目前,企業(yè)應(yīng)用程序已經(jīng)實施了這樣的函數(shù),像數(shù)據(jù)層庫、企業(yè)資源計劃(ERP)和便利的電子商務(wù)。因此,簡短回顧這三種技術(shù)將幫助理解長期感覺到的但還沒有解決的EAL問題。
數(shù)據(jù)倉庫技術(shù)要求大量的清潔的歷史數(shù)據(jù),該數(shù)據(jù)在規(guī)則的基礎(chǔ)上必須從許多操作系統(tǒng)移入倉庫。資源數(shù)據(jù)通常被構(gòu)建為在線交易處理(OLTP),同時,典型的數(shù)據(jù)倉庫也適應(yīng)在線分析處理(OLAP)格式。因此,當(dāng)資源數(shù)據(jù)被轉(zhuǎn)移到倉庫時,資源數(shù)據(jù)必須經(jīng)歷廣泛的集合和重新格式化。
按照現(xiàn)有技術(shù)的典型數(shù)據(jù)倉庫包括4個步驟(a)提取資源數(shù)據(jù);(b)清潔這些提取的數(shù)據(jù);(c)以許多尺寸集合清潔的、提取的數(shù)據(jù);(d)裝載倉庫。每一個倉庫資源需要特殊數(shù)據(jù)提取的空間、純化、集合和裝載程序。Forrester研究估計,每一個大公司大約有4個數(shù)據(jù)倉庫。在兩年中,這個數(shù)將增加到6個。包括在每一個倉庫中的平均數(shù)據(jù)量將在同一時期加倍-從大約130千兆比特到260千兆比特。
與永遠增加的速度生長的這些數(shù)據(jù)有關(guān)的問題由資源數(shù)據(jù)的質(zhì)量所惡化。按照META小組進行的研究,今天,數(shù)據(jù)倉庫裝載的數(shù)據(jù)有20%是低質(zhì)量的數(shù)據(jù)。相同研究指出,使用提取、純化和裝載處理的應(yīng)答大約70%是由手工編碼的。關(guān)于所要求的集合處理和軼事證據(jù)也表明單完成這個函數(shù)就需要50小時的計算機時間。很明顯,大量的維護工作將涉及以這種方式編碼的程序。
另一方面,典型的EPR系統(tǒng)(例如,由WAALLDORF OF SAP AG研制的企業(yè)應(yīng)用程序,以及由PeopleSoft、Oracle、Baan研制的軟件)基本上是支持核心商務(wù)功能的大的、集合的軟件包應(yīng)用程序,例如,工資清單、生產(chǎn)、一般的分類賬和人力資源。大公司發(fā)現(xiàn)從單個渠道購買這樣的軟件解決方案特別具有吸引力,因為在公司內(nèi)部研制這種功能的軟件比購買這樣的軟件多花10-20倍的成本。然而,由于多種原因,實施ERP系統(tǒng)是一個無法抗拒的過程。
首先并是最重要的,大公司正在購買產(chǎn)品,但沒有建立解決方案。這意味著大公司內(nèi)的商務(wù)單元必須適應(yīng)產(chǎn)品,和它如何工作,沒有其它方式可以選擇。此外,現(xiàn)代的EPR系統(tǒng)不能夠代替所有大公司的客戶解決方案。因此,他們必須有效地與其它傳統(tǒng)的系統(tǒng)通信。最后,典型的是大公司使用超過一個和完全不同的EPR系統(tǒng),因為單個賣主通常不能夠滿足每一個組織的需要。
結(jié)果,使數(shù)據(jù)入出ERP系統(tǒng)的選擇權(quán)排除了用于數(shù)據(jù)倉庫的已知方法。每一個ERP系統(tǒng)具有專用數(shù)據(jù)模式,該數(shù)據(jù)模式常常由它的賣主增強了。運行這種模式的寫入提取和裝載程序不僅是復(fù)雜的,賣主也不鼓勵用戶這樣做,因為在企業(yè)應(yīng)用程序中固有的數(shù)據(jù)確認和商業(yè)規(guī)則很可能被回避。ERP系統(tǒng)要求在商務(wù)目標(biāo)級上交互作用,改目標(biāo)級處理特殊的實體,例如,一般的分類賬、預(yù)算和應(yīng)付款。實施和使用一種眾所周知和廣泛接受的ERP系統(tǒng)的詳細描述出現(xiàn)在Que公司所出版的使用SAPR/3的專題(第二版),ISBN0-7897-1351-9(1997)中。
以一種形式或另一種形式的電子商務(wù)已經(jīng)使用了許多年了?;旧?,他開始于電子數(shù)據(jù)內(nèi)部交換(EDI)。EDI允許公司電子地傳送它們的訂單和發(fā)票,并繼續(xù)在發(fā)展,以至今天的公司使用EDI用于供應(yīng)鏈管理。然而,直到最近之前爆發(fā)的使用在線網(wǎng)站買、賣、甚至拍賣,有興趣的項目對魯棒和有效的EAI產(chǎn)生了巨大的需求。見美國專利5,627,972。
應(yīng)用程序獲得發(fā)展,以便在分配的時間范圍內(nèi)完成特殊的商務(wù)目標(biāo)。在一個典型的大的組織中,不同部門的員工使用廣泛分類的操作系統(tǒng),DBMS和研發(fā)工具研制了數(shù)百個應(yīng)用程序。在每一種情況中,滿足了特殊的要求而沒有考慮到與其它任何應(yīng)用程序集成。
幾個強有力的趨勢已經(jīng)驅(qū)使市場進行應(yīng)用程序集成。例如,在對等網(wǎng)絡(luò)和分布處理中的重要發(fā)展已經(jīng)使得較好的集成它們自己的職能部門以及與它們的合伙人和供應(yīng)商集成成為可能。前面提到的因特網(wǎng)/“企業(yè)內(nèi)部互聯(lián)網(wǎng)”/“企業(yè)外部互聯(lián)網(wǎng)”的激增也對新類“人類活動”應(yīng)用程序提出了要求,其要求與后端傳統(tǒng)應(yīng)用程序集成。在適應(yīng)企業(yè)應(yīng)用程序包(例如,SAP R/3)的世界范圍內(nèi)的巨大發(fā)展也要求與后端傳統(tǒng)應(yīng)用程序的集成。最后,信息定向中間產(chǎn)品(MOM)如IBM的MQSeries信息排隊產(chǎn)品已經(jīng)變得很通用。一旦用戶了解到一對一應(yīng)用程序與MOM連接的好處,就會增加它們對多對多應(yīng)用程序集成的興趣。
當(dāng)需要對商務(wù)的集成增加時,花在集成應(yīng)用程序的費用快速增長。按照各種工業(yè)分析,對“任務(wù)臨界”應(yīng)用程序集成的需要將驅(qū)動MOM和“信息經(jīng)紀人”的組合市場,其從1997年的3億美元增長到1999年的7億美元。按照IBM對大客戶的調(diào)查,現(xiàn)在,所有編碼的近70%是由接口、協(xié)議和其它程序構(gòu)成,以便建立與各種系統(tǒng)的連接。機智的IT執(zhí)行官清楚地看到,通過得到盡可能滿足這個需要的現(xiàn)用軟件節(jié)約了大量經(jīng)費。
信息經(jīng)紀人是軟件中心,它記錄和管理信息的發(fā)行人(發(fā)送者)和訂戶(接收者)之間的契約。當(dāng)商務(wù)事件發(fā)生時,應(yīng)用程序?qū)?yīng)該商務(wù)事件發(fā)布該信息。經(jīng)紀人察看訂戶表,并向每一個訂戶發(fā)送這個信息類型。訂戶直接接收他定閱的數(shù)據(jù)。由一個應(yīng)用程序發(fā)布的信息可以由多個用戶應(yīng)用程序預(yù)定。類似地,預(yù)定應(yīng)用程序可以從多個發(fā)布應(yīng)用程序接受信息。
在應(yīng)用程序發(fā)布或預(yù)定信息之前,他們必須向經(jīng)紀人注冊它們的權(quán)益。有兩種基本的和不同的方法用于應(yīng)用程序在信息類型中注冊權(quán)益---主題基于尋址和信息內(nèi)容篩選。在主題基于尋址中,經(jīng)紀人使用主題識別信息和把該信息路由到所有對該主題感興趣的訂戶。主題是一個用于描述信息內(nèi)容的詞。例如,姓名的主題“hr.emp.new”將適合于新雇員的分類信息(例如,姓名、地址、雇員號碼等)。另一方面,在信息內(nèi)容路由中,預(yù)定基于信息內(nèi)的領(lǐng)域的內(nèi)容。預(yù)定可以基于信息類型和/或有關(guān)信息內(nèi)領(lǐng)域的特殊選擇標(biāo)準(zhǔn)。例如,貸款批準(zhǔn)申請將預(yù)定所有超過100,000美元的訂單。
具有兩個發(fā)布/預(yù)定模式的一個優(yōu)點是避免需要單個預(yù)定應(yīng)用程序的地址信息。此外,可以增加新的預(yù)定應(yīng)用程序而沒有對發(fā)布軟件進行任何改變。
典型的發(fā)布/預(yù)定經(jīng)紀人使用魯棒的傳送載體用于應(yīng)用程序之間的信息的實際分配。當(dāng)任務(wù)臨界信息在外部和內(nèi)部網(wǎng)絡(luò)上傳送時,系統(tǒng)軟件確保信息決不會丟失或在網(wǎng)絡(luò)故障中信息被復(fù)制。時常,使用存儲轉(zhuǎn)發(fā)信息排隊提供了不同步信息傳送能力。在這個模式中,當(dāng)預(yù)定應(yīng)用程序可用時,排隊到排隊轉(zhuǎn)移發(fā)生在偽-實時中。如果預(yù)定應(yīng)用程序不可用,則信息被存儲在永久排隊中,用于以后的傳送。
為提高效率,信息傳送載體必須包括商務(wù)交易協(xié)調(diào)功能。商務(wù)交易基本上由幾個工作單元構(gòu)成。每一個工作單元必須按順序完成出現(xiàn)的交易。如果一個工作單元失敗,整個交易失敗,那么,所有完成的工作單元必須重新進行。這些交易是長期進行的,并需要對多個數(shù)據(jù)庫更新信息。商務(wù)交易協(xié)調(diào)功能提供了這種管理支持。
兩個其它的部件是基于規(guī)則的引擎和數(shù)據(jù)轉(zhuǎn)換部件。商務(wù)規(guī)則引擎允許公司根據(jù)它們商務(wù)的唯一需要處理信息。典型地,商務(wù)規(guī)則引擎提供了可視前端,以避免以程序語言編程。根據(jù)這個靈活的方法,商務(wù)處理中的變化可以容易地反映在修改的規(guī)則設(shè)置中。
數(shù)據(jù)轉(zhuǎn)換部件被用于發(fā)展應(yīng)用程序特殊適配器。這些適配器從發(fā)送應(yīng)用程序轉(zhuǎn)換數(shù)據(jù)格式和應(yīng)用程序的語義到接收應(yīng)用程序。存在許多轉(zhuǎn)換要求。它們的范圍從基本的數(shù)據(jù)轉(zhuǎn)換到解決結(jié)構(gòu)(即,語法)、含義(即,語義)和必須分享的信息的時序之間存在的不兼容。
按照現(xiàn)有技術(shù),有兩種主要的策略用于應(yīng)用程序適配器。一個策略是轉(zhuǎn)換所有的資源數(shù)據(jù)和把應(yīng)用程序同步到一個標(biāo)準(zhǔn)的規(guī)范形式。在這個標(biāo)準(zhǔn)的形式中,信息從資源適配器移動到同步適配器。在同步適配器中,信息被轉(zhuǎn)換成為同步應(yīng)用程序的格式。
第二個用于應(yīng)用程序適配器的策略是在一個步驟中從發(fā)送應(yīng)用程序自動轉(zhuǎn)換格式和語義到接收應(yīng)用程序,而沒有任何中間格式。在這種方法中,對于兩個應(yīng)用程序只需要一個適配器用于相互之間的通信,它可以與任何一個應(yīng)用程序集成。
基于規(guī)則的引擎和數(shù)據(jù)轉(zhuǎn)換部件一起工作,以協(xié)調(diào)應(yīng)用程序之間的差別。例如,在兩個應(yīng)用程序根據(jù)一個指令被集成之前,涉及處理指令的商務(wù)規(guī)則必須在每一個系統(tǒng)中確定。在應(yīng)用程序“A”,指令可能包括從多個文件或數(shù)據(jù)庫收集數(shù)據(jù);在應(yīng)用程序“B”,指令可能是嵌套在商務(wù)交易的大文件中的單個信息。困難的挑戰(zhàn)是解決在每一個應(yīng)用程序中確定的數(shù)據(jù)格式和指令下面的內(nèi)容。
信息經(jīng)紀人提供許多潛在的商務(wù)便利。首先是容易的應(yīng)用程序集成。和信息經(jīng)紀人一致,新應(yīng)用程序與傳統(tǒng)或第三方的應(yīng)用程序的集成可以在較短時間內(nèi)完成。集成可以發(fā)生而不需要理解每一個應(yīng)用程序的內(nèi)部結(jié)構(gòu)和設(shè)計。通過把接口作為信息,現(xiàn)存的應(yīng)用程序集成時具有最小的干擾。
支持電子商務(wù)是信息經(jīng)紀人提供的第二個便利。當(dāng)商務(wù)開始自動化他們的賣方和合伙人的供應(yīng)鏈時,對于獨立的應(yīng)用程序需要以松散的連接方式通信。這正好是信息經(jīng)紀的精髓和強項。信息經(jīng)紀人完全適應(yīng)商務(wù)需要。
最后,但肯定不是最不重要的,是對繼續(xù)的不均勻性的信息經(jīng)紀的支持。當(dāng)新技術(shù)卷入時,新的結(jié)構(gòu)發(fā)展了,不均勻性隨時增加。設(shè)計的信息經(jīng)紀的方法學(xué)協(xié)調(diào)當(dāng)代的不均勻世界,并在將來是很有用的。新的、不同的應(yīng)用程序可以隨時加到發(fā)布者或訂戶,而沒有改變存在于信息經(jīng)紀人內(nèi)的應(yīng)用程序。
總之,信息經(jīng)紀人具有提供最小公共分母(least common denominator)方法的潛力,以在企業(yè)內(nèi)部集成不均勻的應(yīng)用程序。用戶可為每一個單獨的應(yīng)同軟件選擇最好的技術(shù),不論是Java(SUN微系統(tǒng)公司的注冊商標(biāo))、ActiveX(微軟公司的注冊商標(biāo))或CORBA(對象管理公司的注冊商標(biāo)),而不考慮在企業(yè)內(nèi)部應(yīng)用程序如何與其它應(yīng)用程序集成。因此,信息經(jīng)紀人在將來的應(yīng)用程序和不同的復(fù)雜的產(chǎn)品及存在于當(dāng)前的應(yīng)用程序分類的技術(shù)之間架起了橋梁。
盡管采用信息經(jīng)紀人策略有許多好處,但是一定要記住他也存在潛在的缺陷。根據(jù)它的松散連結(jié)靈活性,信息經(jīng)紀的強項可能也是它的最弱項。如上面提到的一樣,信息經(jīng)紀人軟件的性質(zhì)是很通用化的。因為它被設(shè)計為處理許多不同的情況,但測試所有可能的端對端編碼路徑是不可超越的任務(wù)。來自這種“事故”的損害在企業(yè)內(nèi)將是最強烈的,其中信息經(jīng)紀人被用來集成任務(wù)臨界交易處理應(yīng)用程序。例如,在金融交易中,傳送一個單個信息將值幾百萬美元,同時,沒有傳送或延遲傳送將導(dǎo)致失去幾百萬美元。
信息經(jīng)紀人的第二個風(fēng)險是外國應(yīng)用程序?qū)?jīng)紀人引入未授權(quán)信息的可能性。例如,這可以在銀行業(yè)造成損失,假冒的信息將被公布,因此,引起提款和資金的侵占。
信息經(jīng)紀人的第三個風(fēng)險是標(biāo)準(zhǔn),“單點故障”?,F(xiàn)有技術(shù)的信息經(jīng)紀人基本實施在“中心和輻條”結(jié)構(gòu)。這意味著主要的信息流通過較少的中心。如果這些中心之一發(fā)生斷電或物理故障,商務(wù)的任務(wù)臨界操作將會終止。
分布中心的另一個問題是管理信息經(jīng)紀人非常困難。因為信息經(jīng)紀人把許多不同的商務(wù)應(yīng)用程序集成到幾個合并的中心,所以管理信息經(jīng)紀人復(fù)雜性要求的天才和專門技能是不可能達到的。
無論什么技術(shù)被應(yīng)用到企業(yè)的任務(wù)臨界交易處理應(yīng)用程序,暴露的潛在風(fēng)險是大的,信息經(jīng)紀的一個問題是它操作任務(wù)臨界信息。相對來說,信息經(jīng)紀是相當(dāng)新的。然而,當(dāng)某些早先具有信息經(jīng)紀概念的適配器公司取得很大的成功時,在信息經(jīng)紀人面前需要的更多,EAI可以進入主流。
在80年代,軟件系統(tǒng)發(fā)展集中在不同系統(tǒng)相互之間通信的能力上。大部分原因是由于專用通信協(xié)議的激增。任何新發(fā)展的系必需實施多個、定制化應(yīng)用程序的特殊轉(zhuǎn)換方案。這個無法完成的需要擺在全球經(jīng)濟需要的面前。系統(tǒng)必須與它連接或通信的系統(tǒng)應(yīng)用程序和數(shù)據(jù)格式一致,或為這樣的應(yīng)用程序提供特殊的轉(zhuǎn)換。因此,所有軟件都或大或小的定制化。
在今天的快速變化的環(huán)境中,世界范圍的數(shù)以千計的研究人員的共同努力集中在研制一種系統(tǒng),該系統(tǒng)滿足不同應(yīng)用程序相互之間通信的需要,而不需要實施多個、定制化的應(yīng)用程序特殊轉(zhuǎn)換方案。這個無法完成的需要擺在全球經(jīng)濟需要的面前。
發(fā)明簡述因此,本發(fā)明的目的是提供一種集成企業(yè)應(yīng)用程序的系統(tǒng)和方法,同時,對這些企業(yè)應(yīng)用程序提供全面的管理,包括中心化的監(jiān)控、操作和設(shè)置。
本發(fā)明的一個特殊的目的是提供代理人適配器結(jié)構(gòu)和信息圖解,在這樣的系統(tǒng)和方法中,他們一起改善了信息記錄和操作。
本發(fā)明的另一個目的是在這個系統(tǒng)和方法中提供了加強的安全特點,包括鑒別、授權(quán)、保密、認可和審核。
本發(fā)明的另一個目的是提供一種集成企業(yè)應(yīng)用程序的系統(tǒng)和方法,包括故障恢復(fù)、故障保險翻轉(zhuǎn)、信息重放和雙站登錄。
本發(fā)明的總的目的是快速和簡單的集成ERP應(yīng)用程序、客戶/傳統(tǒng)應(yīng)用程序、打包的應(yīng)用程序和數(shù)據(jù)庫。特別地,本發(fā)明的一個目的是減少或基本上消除在傳統(tǒng)上要求集成應(yīng)用程序的昂貴的自定義碼。
本發(fā)明的另一個目的是提供一種具有分布結(jié)構(gòu)的EAI系統(tǒng),其滿足現(xiàn)代企業(yè)的長期可靠性、可量測性、靈活性和可擴展性。
本發(fā)明的另一個目的是提供一種EAI系統(tǒng),使得企業(yè)能夠調(diào)節(jié)它的現(xiàn)存的IT投資,增加企業(yè)的投資回報,加快進入市場的速度,較快地完成解決方案和實現(xiàn)收益,并減少運行成本。
本發(fā)明的另一個目的是提供一種EAI系統(tǒng),其為企業(yè)的客戶和記費信息提供了快速存取,以便企業(yè)能夠有效地服務(wù)于它的客戶,并與客戶建立緊密的、有效的關(guān)系。
本發(fā)明的另一個目的是提供一種具有多對多點集成的EAI系統(tǒng),其基本上排除了常規(guī)中心和輻條系統(tǒng),及單點故障風(fēng)險。
本發(fā)明的另一個目的是提供一種EAI系統(tǒng),通過實際上對所有應(yīng)用程序和平臺提供集成的中心點,簡化了企業(yè)的IT結(jié)構(gòu)。
本發(fā)明的另一個目的是提供一種EAI系統(tǒng),其提供了高效率的效能成本核算的信息分享。
在此論述的方法、設(shè)備和生產(chǎn)的物品將或的上述目的及按照本發(fā)明的其它目的、優(yōu)點和新穎的特征,同時,避免了上述的問題。
按照本發(fā)明的一個重要方面,方法包括計算機執(zhí)行裝置,用于在第一計算機應(yīng)用程序和第二計算機應(yīng)用程序之間通過信息。這種方法一般包括步驟(a)從第一個計算機應(yīng)用程序提供具有第一數(shù)據(jù)結(jié)構(gòu)的第一個信息;(b)發(fā)布第一個信息以獲得第一個發(fā)布的信息;(c)把第一個發(fā)布的信息的第一個數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成為第二數(shù)據(jù)結(jié)構(gòu)以獲得第二個信息;(d)發(fā)布第二個信息以獲得第二個發(fā)布的信息;(e)向第二個計算機應(yīng)用程序提供第二個發(fā)布的信息。
按照本發(fā)明的另一個重要方面,設(shè)備包括集成多個計算機應(yīng)用程序的系統(tǒng)。這樣的設(shè)備一般包括用于在系統(tǒng)內(nèi)路由信息的裝置;存儲多個數(shù)據(jù)轉(zhuǎn)換和多個規(guī)則的裝置;把數(shù)據(jù)轉(zhuǎn)換設(shè)置應(yīng)用到信息的裝置;把規(guī)則應(yīng)用到信息的裝置;在系統(tǒng)內(nèi)路由信息的裝置和計算機應(yīng)用程序之間路由信息的裝置;為各自計算機應(yīng)用程序路由信息的專用裝置。
本發(fā)明的設(shè)備包括集成多個計算機應(yīng)用程序的系統(tǒng)。這樣的設(shè)備一般包括在計算機應(yīng)用程序之間通過信息的企業(yè)信息系統(tǒng);連接到企業(yè)信息系統(tǒng)的數(shù)據(jù)庫存儲系統(tǒng),該系統(tǒng)存儲多個數(shù)據(jù)轉(zhuǎn)換設(shè)置和多個規(guī)則;也連接到企業(yè)信息系統(tǒng)的集成服務(wù),并包括使用存儲在數(shù)據(jù)庫存儲系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換設(shè)置的數(shù)據(jù)轉(zhuǎn)換引擎和使用存儲在數(shù)據(jù)庫存儲系統(tǒng)中的規(guī)則的規(guī)則評價引擎;連接到企業(yè)信息系統(tǒng)的多個代理-適配器,每一個代理-適配器連接到各自的計算機應(yīng)用程序,以在企業(yè)信息系統(tǒng)和各自的計算機應(yīng)用程序之間通過信息。
按照本發(fā)明的另一個重要方面,生產(chǎn)的物品包括嵌入代碼段的計算機可讀介質(zhì),用于集成多個計算機應(yīng)用程序。這樣的“計算機可讀介質(zhì)”的非限制例子包括任何磁硬盤、軟盤、光盤(例如,CD-ROM、CD-R、CD-RW或任何適應(yīng)已知DVD標(biāo)準(zhǔn)的盤);磁-光盤;磁帶;存儲芯片;用于攜帶計算機可讀電子數(shù)據(jù)的載波,例如用于發(fā)射和接收電子郵件,或用于訪問網(wǎng)絡(luò),包括因特網(wǎng)、企業(yè)內(nèi)部互聯(lián)網(wǎng)、企業(yè)外部互聯(lián)網(wǎng)、虛擬專用網(wǎng)(VPN)局域網(wǎng)(LAN)和廣域網(wǎng)(WAN);或任何其它的由計算機可訪問的存儲數(shù)據(jù)的存儲裝置。這種“代碼段”的非限制例子不僅包括資源代碼段和對象代碼段,也包括任何語言、命令、對象、軟件、的計算機程序或任何控制計算機的裝置。這樣的代碼段一般包括(a)在計算機應(yīng)用程序之間通過信息的第一代碼段;(b)用于執(zhí)行信息的數(shù)據(jù)轉(zhuǎn)換的第二代碼段;(c)把規(guī)則應(yīng)用到信息的第三代碼段;(d)多個第四代碼段,每一個代碼段在各自的計算機應(yīng)用程序和第一代碼段之間通過信息。
按照本發(fā)明的另一個重要方面,系統(tǒng)和方法由計算機控制。“計算機”的非限制的例子包括任何一般目的的計算機;大型機;PC機;網(wǎng)絡(luò)瀏覽器;電子郵件用戶;電子郵件服務(wù)器;網(wǎng)絡(luò)文件或信息服務(wù)器;因特網(wǎng)設(shè)備;無線電話;尋呼機;個人數(shù)字助手(PDA);傳真機;數(shù)字靜止或攝像機;數(shù)字語音或視頻記錄器;數(shù)字復(fù)制機或掃描儀;交互電視;任何上面的計算機裝置和交互電視機的合成組合;或任何其它包括處理器、存儲器、有能力接收輸入和產(chǎn)生輸出的設(shè)備。
當(dāng)與下面的附圖一起考慮時,本發(fā)明的其它創(chuàng)新和相等的重要方面將通過詳細描述變得很明顯。
圖1(b)顯示了第一種情況,在這種情況中,圖1(a)所示的系統(tǒng)被用來把企業(yè)資源計劃(ERP)軟件包應(yīng)用程序與定制常規(guī)系統(tǒng)集成。
圖1(c)顯示了第二種情況,在這種情況中,圖1(a)所示的系統(tǒng)被用來集成兩個或多個不同的ERP軟件包應(yīng)用程序。
圖1(d)顯示了第三種情況,在這種情況中,圖1(a)所示的系統(tǒng)被用來把一個或多個決策軟件包應(yīng)用程序與一個或多個事物部門的軟件包應(yīng)用程序集成。
圖1(e)顯示了第四種情況,在這種情況中,圖1(a)所示的系統(tǒng)使用兩個或多個完全不同關(guān)系的數(shù)據(jù)庫管理系統(tǒng)(RDBMS)或多維數(shù)據(jù)庫管理系統(tǒng)集成數(shù)據(jù)倉庫軟件應(yīng)用程序。
圖2是由圖1(a)到圖1(e)所示的EAI系統(tǒng)的方框圖。
圖3顯示圖1(a)所示系統(tǒng)所用的適配器研制工具。
圖4(a)顯示了按照本發(fā)明第一實施例的基本代理-適配器結(jié)構(gòu)。
圖4(b)顯示了按照本發(fā)明第二實施例的可擴充的代理-適配器結(jié)構(gòu)。
圖4(c)是按照本發(fā)明的代理-適配器的優(yōu)選實施例的方框圖。
圖5(a)到5(c)顯示了用在本發(fā)明系統(tǒng)中的設(shè)計和集成對象。
圖6顯示了用在本發(fā)明系統(tǒng)中的信息方案。
圖7顯示了本發(fā)明的另一個對象。
圖8顯示本發(fā)明所用的典型的轉(zhuǎn)換處理。
圖9進一步顯示了圖8所示的轉(zhuǎn)換處理。
圖10(a)和(b)顯示了本發(fā)明的信息中心的優(yōu)點。
圖11(a)到圖11(c)表示各種操作環(huán)境,在該環(huán)境中,管理本發(fā)明的節(jié)點和服務(wù)。
圖12是本發(fā)明系統(tǒng)服務(wù)的方框圖。
圖13是按照本發(fā)明必需產(chǎn)生信息而沒有轉(zhuǎn)換原始數(shù)據(jù)步驟的流程圖。
圖14是按照本發(fā)明通過轉(zhuǎn)換原始數(shù)據(jù)必需產(chǎn)生信息步驟的流程圖。
圖15(a)顯示了按照本發(fā)明第一實施例從一個應(yīng)用程序到信息實例產(chǎn)生信息的方法。
圖15(b)顯示了按照本發(fā)明第二實施例從一個應(yīng)用程序到信息實例產(chǎn)生信息的方法。
圖15(c)顯示了按照本發(fā)明第三實施例從一個應(yīng)用程序到信息實例產(chǎn)生信息的方法。
圖15(d)顯示了按照本發(fā)明第四實施例從一個應(yīng)用程序到信息實例產(chǎn)生信息的方法。
圖16是本發(fā)明的第一級框圖。
圖17是本發(fā)明第二級框圖。
發(fā)明詳細描述企業(yè)計算運行時間環(huán)境現(xiàn)在參考附圖,像參考字或數(shù)字指定的一樣,或?qū)?yīng)每一個視圖的部分,圖1(a)顯示了一個簡化的企業(yè)計算運行時間環(huán)境10。典型的運行時間環(huán)境10使用多個軟件包應(yīng)用程序,包括用于企業(yè)資源計劃(ERP)的“事物部門”應(yīng)用程序20和用于客戶關(guān)系管理(CRM)的“決策”應(yīng)用程序(30)、一個或多個定制化傳統(tǒng)系統(tǒng)40、一個或多個多維/關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)50。
在過去的幾十年中,商務(wù)企業(yè)已經(jīng)設(shè)計或購買了許多大的、單目的的軟件應(yīng)用程序。這些“傳統(tǒng)”應(yīng)用程序繼續(xù)在使用,并常被設(shè)計為完成特殊的功能(例如,貨物清單、金融、會計、銷售人員自動化和人力資源)。最近,這些相同的企業(yè)也已經(jīng)進行了實質(zhì)的投資從軟件發(fā)展商購買軟件包應(yīng)用程序,例如,從SAP、Peopleoft、Oracle和Baan購買。每一個軟件包應(yīng)用程序享受它們自己唯一的實力。因此,典型的商務(wù)企業(yè)在相同的運行時間環(huán)境中使用兩個或多個完全不同的軟件包應(yīng)用程序。這樣的軟件包應(yīng)用程序在開始沒有設(shè)計成與其它的軟件包應(yīng)用程序分享信息。結(jié)果,強迫企業(yè)必須把它們的軟件包應(yīng)用程序與昂貴的自定義碼集成。這樣的集成常常需要幾個月(如果不是幾年的話)才能完成。
因此,企業(yè)應(yīng)用程序集成(EAI)系統(tǒng)例如圖1(a)所示的系統(tǒng)100成為必需的。然而,不像現(xiàn)有技術(shù)的EAI系統(tǒng),系統(tǒng)100包括解決方案定向中間件,通過單個、公共下部構(gòu)造,該軟件便利用戶修改和全面集成駐留在完全不同的應(yīng)用程序內(nèi)的信息。它允許用戶無縫隙地、透明地和快速地在雇員、客戶和供應(yīng)商中移動信息,以獲得最大生產(chǎn)率。
以這種方式,系統(tǒng)100為集成完全不同的企業(yè)應(yīng)用程序提供了可靠的存儲轉(zhuǎn)發(fā)信息系統(tǒng)、有能力的信息經(jīng)紀工具和強有力的代理-適配器結(jié)構(gòu)。它適合于分布并被設(shè)計成容易管理。它的目標(biāo)是滿足大企業(yè)的完全的、不均云的計算要求。它智能化地鏈接各種應(yīng)用程序,所以它們可以存取和分享信息。它是適配于應(yīng)用程序的中間件,而不是強迫應(yīng)用程序適配于它。
使用最少的自定義碼,使得它的用戶通過企業(yè)鏈接ERP應(yīng)用程序20、軟件包應(yīng)用程序30、定制和傳統(tǒng)應(yīng)用軟件40和數(shù)據(jù)庫50。當(dāng)完全集成時,企業(yè)可以快速地把全球商務(wù)和分支機構(gòu)同步,并快速響應(yīng)不斷變化的市場需求。根據(jù)快速訪問客戶和計費信息,用戶的公司可以較有效地服務(wù)于客戶,并與客戶建立緊密的和有效的關(guān)系。系統(tǒng)100是商務(wù)中心企業(yè)集成解決方案,其是把商務(wù)分析人員作為目標(biāo)的集成流動設(shè)計環(huán)境。分析人員確定營業(yè)期中的問題,和產(chǎn)品處理的技術(shù)問題。
例如,如圖1(b)所示,企業(yè)資源計劃(ERP)與定制傳統(tǒng)系統(tǒng)集成的共同情況要求公司在標(biāo)準(zhǔn)ERP實施內(nèi)適當(dāng)?shù)貕嚎s復(fù)雜性處理-這不是容易做到的事情。許多公司為標(biāo)準(zhǔn)商務(wù)處理如存貨清單和訂單管理選擇軟件包應(yīng)用程序。但軟件包應(yīng)用程序很少用于垂直處理。為這些目的,系統(tǒng)100是理想的。它為ERP系統(tǒng)22、24、26、28提供了對象接口,以及包裝產(chǎn)生技術(shù)用于鏈接到傳統(tǒng)系統(tǒng)44、48。
全球供應(yīng)鏈的擴展也要求中間件在兩個或多個完全不同的ERP系統(tǒng)22、24、26、28上架起橋梁。如圖1(c)所示,它可以容易地升值,因為(可以容易地理解)沒有任何事情比商務(wù)合作重要。因此,系統(tǒng)100扮演了關(guān)鍵的角色,在內(nèi)部ERP交易中,在一個系統(tǒng)(例如,SAP系統(tǒng)22)中的商務(wù)事件調(diào)用另一個系統(tǒng)(例如,Baan系統(tǒng)28)中的對應(yīng)事件,而沒有公開詳細的下層技術(shù)。
公司的決策部門與它的事物部門的集成是一個重要的功能,其允許決策應(yīng)用程序?qū)蛻粲杏绊懀员闩c事物部門生產(chǎn)應(yīng)用程序合作。例如,參考圖1(d),非常重要的是客戶支持系統(tǒng)與ERP存貨清單模塊合作。因此,系統(tǒng)100無隙縫地和透明地使最好種類的決策部門和事物部門的應(yīng)用程序集成。
在圖1(e)所示的數(shù)據(jù)倉庫情況中,不同系統(tǒng)的數(shù)據(jù)必需移到中央處理倉庫或資料庫中。從幾個ERP系統(tǒng)(未在圖1(e)中示初)移動實時信息到包括多個不同數(shù)據(jù)庫53、56、59的中央關(guān)聯(lián)或多維數(shù)據(jù)庫是這個問題的示范。然而,數(shù)據(jù)倉庫研制者可以為實時數(shù)據(jù)集成或其它操作調(diào)節(jié)系統(tǒng)100的數(shù)據(jù)轉(zhuǎn)換操作,下面將詳細描述。因此,數(shù)據(jù)被轉(zhuǎn)換成為可理解的和意義明確的狀態(tài)。
定義如下文使用的一樣,下面的術(shù)語將由本領(lǐng)域技術(shù)人員按照他們原來的和習(xí)慣的意思解釋。對于出現(xiàn)在下面的內(nèi)容,定義與本領(lǐng)域技術(shù)人員已知的常規(guī)定義不同,這樣的術(shù)語在下文清楚地以這樣的方式闡明,告知本領(lǐng)域技術(shù)人員申請人旨在重新定義權(quán)利要求術(shù)語。
“存取器”是在信息定義中指定的功能,系統(tǒng)100用來存取數(shù)據(jù)。存取器識別應(yīng)用程序數(shù)據(jù)段和系統(tǒng)信息單元的開始和結(jié)束,并移動或插入標(biāo)識符。
“適配器實現(xiàn)”是為特殊的應(yīng)用程序設(shè)計的代碼,其可以提取數(shù)據(jù)和產(chǎn)生系統(tǒng)信息;接收系統(tǒng)信息和更新數(shù)據(jù);或響應(yīng)請求提取數(shù)據(jù)。當(dāng)用戶創(chuàng)建適配器使用在集成信息流時,用戶在適配器實現(xiàn)周圍建立了它。系統(tǒng)適配器實現(xiàn)提供基本例外處理,并能夠處理任何信息定義。用戶使用ADK創(chuàng)建定制適配器實現(xiàn),并在下面將詳細論述。
“適配器”是集成信息流對象,其與企業(yè)應(yīng)用程序相互作用以提取數(shù)據(jù)或插入、更新或刪除數(shù)據(jù)。
“管理控制臺”是圖形用戶接口(GUI),通過該接口,系統(tǒng)管理器設(shè)置和管理系統(tǒng)100的節(jié)點和服務(wù)。
“代理服務(wù)”向適配器提供代理服務(wù)。在每一個運行適配器的主機上需要一個代理服務(wù)。
“類途徑”是一個變化的環(huán)境,告訴Java虛擬器在那找到類庫,包括用戶定義的類庫。
“客戶”是遠程訪問例如計算能力和大存儲容量這樣的計算機服務(wù)器資源的過程。典型的系統(tǒng)客戶是集成工作臺120和管理控制臺160(圖2)。
“連接”是為適配器指定啟動或連接參數(shù)的對象。例如,RDBMS連接指定JDBC驅(qū)動器、數(shù)據(jù)庫的URL、用戶名和密碼。
“轉(zhuǎn)換”數(shù)據(jù)是一種方法,在信息定義中指定的轉(zhuǎn)換器把應(yīng)用的本機數(shù)據(jù)類型轉(zhuǎn)換成系統(tǒng)100支持的Java數(shù)據(jù)類型,反之亦然。
“轉(zhuǎn)換器”是在信息定義中指定的功能,系統(tǒng)100用來轉(zhuǎn)換數(shù)據(jù)。以這樣的方式,轉(zhuǎn)換器把本機數(shù)據(jù)類型轉(zhuǎn)換成系統(tǒng)100支持的Java數(shù)據(jù)類型,反之亦然。
“定制適配器實現(xiàn)”是為特殊應(yīng)用程序設(shè)計的代碼,其可以提取數(shù)據(jù)和產(chǎn)生系統(tǒng)信息;接收系統(tǒng)信息和更新數(shù)據(jù);或響應(yīng)請求提取數(shù)據(jù)。使用ADK創(chuàng)建的定制適配器實現(xiàn)可以連接到系統(tǒng)100當(dāng)前不支持的應(yīng)用程序上。
“定義對象”是為系統(tǒng)將實施的步驟提供命令的集成信息流對象。
“定界符”是把數(shù)據(jù)中的數(shù)據(jù)段與企業(yè)應(yīng)用程序分割的記號或標(biāo)記,“持久預(yù)訂”是系統(tǒng)的信息中心的特性,其確保中心目標(biāo)對象接收所有接到它們的信息。如果目標(biāo)對象成為不活動的,系統(tǒng)記住這些目標(biāo)已經(jīng)接收的信息。當(dāng)下一個目標(biāo)成為活動的,系統(tǒng)發(fā)送目標(biāo)還沒有接受的信息。
“企業(yè)應(yīng)用程序”是程序,適配器從該程序中提取數(shù)據(jù)或傳送數(shù)據(jù)(例如,SAP R/3或MQ Series)。
“企業(yè)信息服務(wù)(EMS)”,本發(fā)明使用Java信息服務(wù)(JMS)。它使得系統(tǒng)100使用多信息節(jié)點,并支持信息中心和提供信息保留性,“企業(yè)資源計劃(ERP)”應(yīng)用程序為共同商務(wù)問題提供監(jiān)管系統(tǒng)解決方案(例如,倉庫管理、人力資源管理和材料管理)。ERP產(chǎn)品的例子是SAP R/3、PeopleSoft和Baan。
“總體X經(jīng)紀人(ETB)”是一個交叉平臺,按照本發(fā)明是一個信息定向中間件,其鏈接大型機、Windows NT、UNIX應(yīng)用程序和部件、因特網(wǎng)和企業(yè)內(nèi)部互聯(lián)網(wǎng)客戶、ActiveX和Java工作站。
“篩選定義“是從集成信息流中篩選信息指定標(biāo)準(zhǔn)的定義對象。
“功能主機”是計算機平臺,例如,Windows NT服務(wù)器或工作站,或OS/390大型機。
“中心”是從資源對象接收信息的集成信息流對象,并保持信息直到系統(tǒng)100發(fā)送它們到指定的目標(biāo)對象。中心允許適配器和轉(zhuǎn)換器非同步地交換信息。它們對于集中信息流也是很有用的;產(chǎn)生同類信息的多對象都可以把這些信息發(fā)送的一個信息中心,其簡化了對象中的鏈接。
“IDoc提取器”閱讀SAP R/3處理程序WE63產(chǎn)生的平面文件,以創(chuàng)建實施設(shè)置和信息定義,并把它們存儲在系統(tǒng)的資料檔案庫服務(wù)中。
“實施設(shè)置”是用于適配器的運行時間參數(shù)(例如,輪詢間隔)。
“集成信息流”是一系列鏈接的系統(tǒng)對象,其從一個或多個企業(yè)應(yīng)用程序移動數(shù)據(jù)到另一個企業(yè)應(yīng)用程序。
“集成對象”是集成信息流對象,其發(fā)送信息、接收信息,或兩者。見適配器、中心和轉(zhuǎn)換器。
“集成工作臺”時圖形用戶接口(GUI),通過該接口,用戶設(shè)計集成信息流。
“中間文件(IDoc)”是由R/3使用的SAP R/3數(shù)據(jù)格式,并與其它R/3系統(tǒng)和其它應(yīng)用程序交換數(shù)據(jù)。
“項信息單元”是包含數(shù)據(jù)的信息單元。項是在信息定義的分層結(jié)構(gòu)中最下級的信息單元。它們不含有其它信息單元。
“Java數(shù)據(jù)庫連接(JDBC)”是用于SQL基于數(shù)據(jù)庫存取的JavaAPI標(biāo)準(zhǔn)。
“Java研發(fā)工具(JDK)”是用于以Java編程語言編寫應(yīng)用程序的軟件研發(fā)環(huán)境。
“Java信息服務(wù)(JMS)”是SUN微系統(tǒng)公司為信息指定的JavaAPI。
“Java命名和目錄接口(JNDI)”是一組API,其幫助接合多命名和多目錄服務(wù)。
“Java運行時間環(huán)境(JRE)”是Java研發(fā)工具的子設(shè)備,用于重新分配Java虛擬器、Java核心類和支持文件組成的運行時間環(huán)境。
“Java虛擬器(JVM)”是負責(zé)解釋字節(jié)碼的Java虛擬器的部分。
“鏈接標(biāo)識符”是把數(shù)據(jù)中的數(shù)據(jù)段與企業(yè)應(yīng)用程序分割的記號或定界符。
“信息定義分類”是用于信息定義的邏輯組。
“信息定義”是定義對象,其識別系統(tǒng)100將從企業(yè)應(yīng)用程序提取的數(shù)據(jù)和傳送到企業(yè)應(yīng)用程序的數(shù)據(jù)。信息定義也確定系統(tǒng)100如何從企業(yè)應(yīng)用程序數(shù)據(jù)構(gòu)造系統(tǒng)信息或如何從系統(tǒng)信息產(chǎn)生企業(yè)應(yīng)用程序數(shù)據(jù)。
“信息單元”是由信息定義的信息圖解構(gòu)成的數(shù)據(jù)對象。信息單元以分層結(jié)構(gòu)排列,其可以是段、表格或項。
“信息定向中間件(middleware)”(MOM)是使用信息的軟件,使得在相同或不同平臺上的應(yīng)用程序通信。通信協(xié)議被隱藏在應(yīng)用程序中。MOM的例子是MQSeries、EntireX Broker和JMS。
“信息保留”涉及在可恢復(fù)介質(zhì)上存儲信息。系統(tǒng)把每一個信息寫到該介質(zhì),并從一個集成對象發(fā)送到另一個,以穩(wěn)定存儲在用戶指定的位置內(nèi)。如果系統(tǒng)發(fā)生故障,而同時信息正在傳送中,當(dāng)系統(tǒng)100被重新存儲時,系統(tǒng)100可以從存儲中恢復(fù)信息,并發(fā)送該信息到它的目標(biāo)。
“信息圖解”是信息定義的部分,其定義如何構(gòu)建信息。信息圖解包括段、圖表和排列在分層結(jié)構(gòu)中的項信息單元。
“監(jiān)控器服務(wù)”存儲系統(tǒng)運行時間數(shù)據(jù),包括系統(tǒng)登錄和統(tǒng)計信息。
“節(jié)點”是支持一個或多個系統(tǒng)和應(yīng)用程序服務(wù)的物理過程(或Java虛擬器)。
“節(jié)點主機”是軟件,其使得用戶在機器上設(shè)置和運行節(jié)點。用戶在每一個機器上必須安裝節(jié)點主機,而不是節(jié)點管理器,器將主機一個節(jié)點。
“節(jié)點管理器”是一個接口,通過該接口管理節(jié)點。接口允許用戶設(shè)置、開始、暫?;蛲V狗?wù)。以及節(jié)點管理器啟動和停止節(jié)點。節(jié)點管理器保持所有分配到該節(jié)點的服務(wù)狀態(tài)。此外,節(jié)點管理器保持節(jié)點或信息的狀況信息(例如,當(dāng)前狀態(tài)或活動層級)。
“點對點通信”是用于中心的信息類型,系統(tǒng)只發(fā)送每一個到達中心的信息到單個中心目標(biāo)(即,第一個可用目標(biāo))。
“主輸入信息”是在轉(zhuǎn)換器定義中指定的系統(tǒng)轉(zhuǎn)換處理的主要輸入數(shù)據(jù)。系統(tǒng)獲得輸入數(shù)據(jù),并將其轉(zhuǎn)換,然后,創(chuàng)建目標(biāo)應(yīng)用程序需要的輸出數(shù)據(jù)。
“發(fā)布/預(yù)訂信息”是用于中心的信息類型,系統(tǒng)把到達中心的每一個信息發(fā)送到所有中心目標(biāo)。
“應(yīng)答器”,當(dāng)轉(zhuǎn)換器在數(shù)據(jù)轉(zhuǎn)換處理期間請求它時,系統(tǒng)對象如應(yīng)答適配器提供數(shù)據(jù)。
“應(yīng)答適配器”是集成對象,通過從應(yīng)用程序提取數(shù)據(jù)并發(fā)送他到請求的對象,集成對象回答從另一個集成對象對數(shù)據(jù)的請求。請求器發(fā)送包含在關(guān)鍵信息單元內(nèi)數(shù)據(jù)的系統(tǒng)信息,應(yīng)答適配器把數(shù)據(jù)插入有關(guān)的信息單元,并發(fā)送系統(tǒng)信息返回。
“資料檔案庫服務(wù)”通過Java本身的目錄接口接入,并存儲用于所有設(shè)置服務(wù)和集成信息流對象的設(shè)置。
“路由服務(wù)”使得系統(tǒng)根據(jù)信息的內(nèi)容導(dǎo)引信息通過系統(tǒng),包括按照用戶確定的標(biāo)準(zhǔn)篩選信息內(nèi)容。路由服務(wù)支持篩選。
“系統(tǒng)信息”是一種平臺中立格式的信息,系統(tǒng)使用該信息在應(yīng)用程序之間移動數(shù)據(jù)。
“段信息單元”是非重復(fù)信息單元組,其不包括實際的數(shù)據(jù)。它包括其它的包含數(shù)據(jù)的信息單元(即,它們包括項)。段可以包括任何信息單元類型的組合。
“服務(wù)”是提供產(chǎn)品功能的方法。系統(tǒng)由系統(tǒng)、信息、集成和代理服務(wù)組成。
“資源適配器”是從企業(yè)應(yīng)用程序提取數(shù)據(jù)的集成對象,從數(shù)據(jù)構(gòu)建系統(tǒng)信息,并發(fā)送信息到其它的系統(tǒng)集成對象。
“資源對象”是提供信息到其它對象的集成信息流對象。見資源適配器、轉(zhuǎn)換器和中心。
“支持輸入信息”是對系統(tǒng)轉(zhuǎn)換處理選項的輸入數(shù)據(jù),如在轉(zhuǎn)換器定義指定的一樣。轉(zhuǎn)換處理使用支持輸入信息數(shù)據(jù)補充主輸入信息數(shù)據(jù)。系統(tǒng)獲得輸入數(shù)據(jù),并將其轉(zhuǎn)換,然后,創(chuàng)建目標(biāo)應(yīng)用程序需要的輸出數(shù)據(jù)。
“表格信息單元”是一組稱為行的段信息單元,其可以重復(fù)任何次數(shù)。表格單元不包括任何實際的數(shù)據(jù)。它包括其它的包含數(shù)據(jù)的信息單元(即,它們包括項)。表格可以包括任何信息單元類型的組合。
“目標(biāo)適配器”是從其它集成對象接收系統(tǒng)信息的集成對象,從系統(tǒng)信息創(chuàng)建應(yīng)用程序數(shù)據(jù),并把數(shù)據(jù)傳送到目標(biāo)應(yīng)用程序。
“目標(biāo)集成對象”是從其它對象接收信息的集成信息流對象。見目標(biāo)適配器、轉(zhuǎn)換器和中心。
“交易處理監(jiān)控器(TPM)”是為許多用戶設(shè)計的最佳使用計算資資源的軟件系統(tǒng),例如,存儲和應(yīng)用程序。
“轉(zhuǎn)換數(shù)據(jù)”是一種方法,在這種方法中,轉(zhuǎn)換器把從一個或多個企業(yè)應(yīng)用程序獲得的數(shù)據(jù)修改成為其它企業(yè)應(yīng)用程序需要的數(shù)據(jù)。
“轉(zhuǎn)換服務(wù)”使得系統(tǒng)轉(zhuǎn)換信息,包括分離信息、組合信息和生成信息數(shù)據(jù)。轉(zhuǎn)換裝置支持轉(zhuǎn)換器。
“轉(zhuǎn)換步驟”是由轉(zhuǎn)換方法組成的指令。每一個步驟讀取輸入信息數(shù)據(jù)、轉(zhuǎn)換和映像輸入信息數(shù)據(jù)到輸出信息定義,或把轉(zhuǎn)換的數(shù)據(jù)寫成輸出數(shù)據(jù)。
“轉(zhuǎn)換器定義”是定義對象確定系統(tǒng)將如何把從一個或多個企業(yè)應(yīng)用程序提取的系統(tǒng)信息轉(zhuǎn)換成為其它企業(yè)應(yīng)用程序需要的系統(tǒng)信息。
“轉(zhuǎn)換器”是完成轉(zhuǎn)換器定義的集成對象。轉(zhuǎn)換器從資源集成對象集合輸入信息,轉(zhuǎn)換信息數(shù)據(jù)的內(nèi)容和格式,產(chǎn)生并把輸出信息發(fā)送到目標(biāo)集成對象。
“用戶接口服務(wù)(UIS)提供了便利運行客戶部件的用戶接口(即,集成工作臺120和管理控制臺160)。
現(xiàn)參考圖2,系統(tǒng)100一般包括多個設(shè)計部件110和多個運行時間管理部件150。而設(shè)計部件110特別地包括集成工作臺120、適配器研發(fā)工具(ADK)130和資料檔案庫服務(wù)140。而運行時間管理部件150特別地包括管理控制臺160、集成服務(wù)器170、集成服務(wù)器170包括企業(yè)信息引擎180、節(jié)點服務(wù)部件190、多個智能代理-適配器200。
集成工作臺120一般包括用于集成項目發(fā)展的圖形模式和設(shè)置工具。它被用來確定事件、與這些事件有關(guān)的信息、集成信息流、與這些集成信息流有關(guān)的商務(wù)規(guī)則、以及識別發(fā)布和預(yù)訂確定的事件的代理人。此外,集成工作臺120為一致性檢查和測試集成信息流提供了診斷。
ADK130被用來設(shè)置和產(chǎn)生定制化的智能代理-適配器200。圖3詳細示出,ADK130一般包括對象結(jié)構(gòu),該結(jié)構(gòu)包括類庫132、向?qū)?34和模板136。ADK130產(chǎn)生可以由常規(guī)研發(fā)工具存取的對象。而系統(tǒng)100包括多個用于寬范圍應(yīng)用程序和資源的標(biāo)準(zhǔn)智能代理-適配器200,可能有特殊的應(yīng)用程序沒有這種標(biāo)準(zhǔn)的智能代理-適配器。在那種場合,ADK130還允許熟悉目標(biāo)應(yīng)用程序環(huán)境提供的發(fā)布的接口的研發(fā)人員構(gòu)建一個定制的智能化的代理-適配器。
資料檔案庫服務(wù)140一般包括有關(guān)的數(shù)據(jù)庫,其包括所有系統(tǒng)100的規(guī)范、元數(shù)據(jù)、信息經(jīng)紀服務(wù)規(guī)則、到有關(guān)數(shù)據(jù)庫的接口。
管理控制臺160被用來設(shè)置和管理系統(tǒng)100的運行時間環(huán)境,一般地包括圖形控制臺。它作為系統(tǒng)設(shè)置、維修、監(jiān)控和診斷的控制點。通過管理控制臺160,管理系統(tǒng)100的每一個單獨的部件,包括全面服務(wù)、某一部件的啟動和中斷、內(nèi)置軟件分布。
集成服務(wù)器170通過觸發(fā)和執(zhí)行集成數(shù)據(jù)流實現(xiàn)智能信息處理事件。它執(zhí)行靜態(tài)和動態(tài)范圍敏感規(guī)則,以評價、修改和路由事件數(shù)據(jù)。如上面提到的一樣,集成服務(wù)器170包括企業(yè)信息引擎180,引擎180包括管理所有事件數(shù)據(jù)的分布信息子系統(tǒng)。一方面,它是系統(tǒng)100的關(guān)鍵部件。另一方面,它對系統(tǒng)100的任何用戶是完全透明的,一般操作在屏幕的后面。它為非臨界、高容量信息請求支持全連續(xù)、一次-只一次信息發(fā)送、內(nèi)存儲器模式。
節(jié)點服務(wù)部件190管理系統(tǒng)100的開始/重新開始恢復(fù)、例外處理和動態(tài)設(shè)置。它為自動系統(tǒng)安裝和跨越所有參與的客戶和服務(wù)器的遠程管理提供便利。此外,它很容易地遠程安裝和更新部件。
如上面提到的一樣,多個智能代理-適配器200不僅包括分布于系統(tǒng)100的標(biāo)準(zhǔn)代理-適配器200,也包括由ADK130研發(fā)的定制智能代理-適配器200。不管每一個智能代理-適配器200的類型,它一般包括把特殊的一個外部應(yīng)用資源300連接到系統(tǒng)100的運行時間接口模塊。
現(xiàn)參考圖4(a)和4(b),按照本發(fā)明的特別重要方面,智能代理-適配器200組合了具有適配器技術(shù)的自助代理人的功能。代理部件210的作用就像獨立的軟件程序,其包括一個或多個適配器部件220(圖4(a)),或222和224(圖4(b))。它壓縮了復(fù)雜的功能,例如,存儲和轉(zhuǎn)寄高速緩存、篩選、資源輪詢和調(diào)度。
這個代理-適配器結(jié)構(gòu)的主要優(yōu)點是它包容復(fù)雜商務(wù)邏輯的能力,以便保持狀態(tài)和與應(yīng)用資源300談判交易。這個能力被稱為“談話模式處理”,其在交易性質(zhì)的集成應(yīng)用資源300是特別有判斷力的。時常,從應(yīng)用資源300要求的經(jīng)紀信息的數(shù)據(jù)單元被深深嵌套在子-交易中。因此,這些深深嵌套的子-交易只在與交易應(yīng)用資源300交談后才能獲得。否則,過去使用的簡單的適配器不適合于從事交易應(yīng)用資源300的復(fù)雜行為。
如圖4(a)所示,本發(fā)明典型的智能適配器200包括代理部件210和適配器部件220。在這個結(jié)構(gòu)的一邊,代理210遵照系統(tǒng)100指定的事件和信息模式。在這個代理-適配器結(jié)構(gòu)的另一邊,適配器220使用特殊的應(yīng)用資源300的原來的應(yīng)用編程接口(API)510,或其它的適合的發(fā)布的接口機構(gòu)。代理210和適配器220一起協(xié)調(diào)接口協(xié)議和數(shù)據(jù)結(jié)構(gòu)中的差異,以提供商務(wù)事件發(fā)布和消費的唯一的、規(guī)格化的窗口。
不像過去EAI的方法,上述的代理-適配器結(jié)構(gòu)是可擴展的。它不僅簡化了無隙縫地容留現(xiàn)存API變化的能力,而且,它也繼續(xù)使用具有傳統(tǒng)系統(tǒng)的現(xiàn)存API。清楚地顯示在圖4(b),這個可擴展的代理-適配器結(jié)構(gòu)一般包括代理210,其壓縮了第一適配器A′222和第二適配器A″224。
例如,適配器A′222對應(yīng)具有基本組API A′的應(yīng)用資源300。另一方面,適配器A″224對應(yīng)具有較新的API A″的相同應(yīng)用資源300。因此,這樣的可擴展的代理-適配器結(jié)構(gòu)的用戶可以選擇同時適配兩個接口A′和A″。例如,基本組API A′可以對應(yīng)生產(chǎn)環(huán)境,同時,新組API A″可以對應(yīng)特殊應(yīng)用資源300的新版本的再生產(chǎn)環(huán)境。因此,新組API A″被測試為“活”在系統(tǒng)100內(nèi),同時,基本組API A′將被用于保持以前的測試,并證明功能性。以這樣的方式,這個可擴展的代理-適配器結(jié)構(gòu)使得對應(yīng)用資源300增加變化的完美的無隙縫處理成為集成環(huán)境。
現(xiàn)參考圖4(c),按照本發(fā)明優(yōu)選實施例,顯示了代理-適配器200的放大圖。如圖4(a)和4(b)隨時的代理-適配器一樣,圖4(c)所示的代理-適配器200被用來在系統(tǒng)100和企業(yè)應(yīng)用程序的原來的API510之間通信(未示出)。然而,按照這個實施例,代理-適配器200包括三個適配器222、224和226。下面將詳細描述,適配器222是資源適配器變體、適配器224是目標(biāo)適配器變體、適配器226是應(yīng)答適配器變體。因此,本領(lǐng)域技術(shù)人員可以容易地了解到,本發(fā)明這個實施例的代理-適配器200沒有局限于任何特別指定的代理210壓縮的適配器的數(shù)量。例如,下面將詳細描述的類型要求的適配器228可以與適配器222、224或226連同使用,或代替這些適配器。
此外,按照本發(fā)明的另一個特殊的重要方面,代理210包括多個有用的擴展代理-適配器200能力的對象230-240。例如,目前的對象230包括局部地在代理-適配器200本身便利履行其它的系統(tǒng)100的中心功能。對象231類似地包括誤差管理對象,對象232是連接管理對象,對象234是規(guī)則管理對象。代理-適配器200的進一步擴展沒有局限于附加對象235-240的數(shù)量,其可以與代理210放置在一起。
上面所述是本發(fā)明的一個特殊重要方面,因為它便利了系統(tǒng)100的信息處理的分散。因此,確保了分布企業(yè)應(yīng)用程序的集成,因為本發(fā)明實施例的代理-適配器200可以與系統(tǒng)100交叉的任何節(jié)點關(guān)聯(lián)。
系統(tǒng)100在企業(yè)應(yīng)用程序中分享數(shù)據(jù)的方式由集成信息流確定,下面將詳細討論。典型的集成信息流使用一個或多個系統(tǒng)信息。每一個系統(tǒng)信息一般包括以平臺中立格式通信,其從一個軟件應(yīng)用程序移動選擇的數(shù)據(jù)到另一個軟件應(yīng)用程序。而集成信息流由多個對象和這些對象中的鏈接組成。每一個對象完成涉及系統(tǒng)信息的特殊任務(wù),其在企業(yè)應(yīng)用程序之間攜帶數(shù)據(jù)。
現(xiàn)參考圖5(a)到5(c),例如,在集成信息流540中的對象包括定義對象510或集成對象530。存在三種基本類型的定義對象510,按照本發(fā)明它們被用于(1)信息定義512;(2)轉(zhuǎn)換器定義514;和(3)篩選定義516。定義對象510可以重復(fù)地使用在任何給定的集成信息流540。例如,相同的信息定義512肯定被指定給所有對象510和530,其將處理使用信息定義512產(chǎn)生的系統(tǒng)信息。此外,相同的篩選定義516可以使用在集成信息流540的多段中。
信息定義對象512識別系統(tǒng)100將從企業(yè)應(yīng)用程序541、549提取或傳送的數(shù)據(jù)。它也確定系統(tǒng)100如何不僅從企業(yè)應(yīng)用程序數(shù)據(jù)構(gòu)建系統(tǒng)信息,而且也從系統(tǒng)信息產(chǎn)生企業(yè)應(yīng)用程序數(shù)據(jù)。
轉(zhuǎn)換器定義對象514定義系統(tǒng)100將如何把從一個或多個企業(yè)應(yīng)用程序提取的系統(tǒng)信息轉(zhuǎn)換為其他企業(yè)應(yīng)用程序所需的系統(tǒng)信息。
篩選定義對象516確定了系統(tǒng)100將使用的標(biāo)準(zhǔn),從集成信息流中篩選出不想要的系統(tǒng)信息。例如,在把新客戶數(shù)據(jù)轉(zhuǎn)化為發(fā)票的集成信息流中,一個篩選定義對象516是有用的,其把客戶早已經(jīng)付款的系統(tǒng)信息篩選除去。
有三種基本類型的集成對象530,其實際上發(fā)送和接收系統(tǒng)信息。三種基本類型的集成對象530是(1)適配器220;(2)信息中心518;(3)轉(zhuǎn)換器520。此外,如上所述,有四種基本類型的適配器220;(a)資源適配器222;(b)目標(biāo)適配器224;(c)應(yīng)答適配器226;(d)請求適配器228。
資源適配器222從源企業(yè)應(yīng)用程序提取數(shù)據(jù),從該數(shù)據(jù)構(gòu)建系統(tǒng)信息,發(fā)送這些系統(tǒng)信息到其它的集成對象530(例如,信息中心518)。目標(biāo)適配器從其它集成對象530接收系統(tǒng)信息(例如,通過篩選定義對象516的轉(zhuǎn)換器520),從這些系統(tǒng)信息產(chǎn)生應(yīng)用數(shù)據(jù),并傳送該數(shù)據(jù)到目標(biāo)企業(yè)應(yīng)用程序。通過從應(yīng)用程序提取數(shù)據(jù),應(yīng)答適配器226從某些其它集成對象530應(yīng)答對該數(shù)據(jù)的請求,然后,發(fā)送該數(shù)據(jù)到請求對象530。
一般說來,使用信息中心518從一個或多個資源集成對象530接收系統(tǒng)信息,并保持這些系統(tǒng)信息,直到系統(tǒng)100可以傳送這些信息到一個或多個目標(biāo)集成對象530。
通常使用轉(zhuǎn)換器520在三步中完成轉(zhuǎn)換器定義。首先,從資源集成對象530收集系統(tǒng)信息(例如,信息中心518)。在收集步驟之后,它們轉(zhuǎn)換在這個系統(tǒng)信息內(nèi)獲得的內(nèi)容和數(shù)據(jù)格式。最后,產(chǎn)生和發(fā)送輸出系統(tǒng)信息到目標(biāo)集成對象530(例如,目標(biāo)適配器224)。
按照本發(fā)明,信息定義512是主對象,在其周圍建立了集成信息流540。當(dāng)用戶產(chǎn)生一個信息流時,信息定義在該信息流中被指定給每一個對象510、530。信息定義不僅識別對象510、530將要處理的系統(tǒng)信息的種類,它也要確定該系統(tǒng)信息的分層結(jié)構(gòu)或圖解。
例如,信息定義512必需被指定給用戶集成信息流540中的每一個資源適配器222。根據(jù)用戶已經(jīng)指定的信息定義512,每一個資源適配器222知道它將產(chǎn)生哪中信息。適配器220、中心518和篩選516只處理一個信息定義512。另一方面,轉(zhuǎn)換器定義514和轉(zhuǎn)換器520能夠處理作為輸入和輸出的多個信息定義512。
某些應(yīng)用程序可以產(chǎn)生系統(tǒng)100支持的Java數(shù)據(jù)類型。在這些情況中,資源適配器222可以提取在信息定義512中指定的數(shù)據(jù)類型,并直接將其存儲在系統(tǒng)信息中。同樣地,目標(biāo)適配器224可以從系統(tǒng)信息恢復(fù)數(shù)據(jù)類型,并將它們直接插入應(yīng)用程序(例如,目標(biāo)企業(yè)應(yīng)用程序549)。其它應(yīng)用程序使用確定好的信息格式描述它們本機數(shù)據(jù)的布置。在這些情況中,用于資源適配器222的信息定義512必須包括從應(yīng)用數(shù)據(jù)產(chǎn)生Java數(shù)據(jù)類型的指令。類似地,用于目標(biāo)適配器224的信息定義512必須包括從系統(tǒng)Java對象產(chǎn)生應(yīng)用數(shù)據(jù)的指令。
由集成對象530使用的特殊種類的信息定義512從其它系統(tǒng)對象510、530請求數(shù)據(jù)。例如,信息定義512也可以指定信息生效標(biāo)準(zhǔn)。系統(tǒng)100使用這個標(biāo)準(zhǔn)確定由適配器220和轉(zhuǎn)換器520產(chǎn)生的系統(tǒng)信息是否包含有效數(shù)據(jù)(例如,用戶包括信息定義512定義信息,該信息包括雇員工資信息)。因此,用戶可以防止不準(zhǔn)確的工資數(shù)據(jù)進入系統(tǒng)100。例如,如果信息定義512包括一個項目單元“工資”,那么,用戶將對該項目陳述確定生效的標(biāo)準(zhǔn),即,只當(dāng)“工資”中的值是正數(shù)時,該信息才是有效的。用戶可以把有關(guān)的信息定義512組織成稱為信息分類的邏輯組。例如,假定用戶正在使用系統(tǒng)100集成三個應(yīng)用程序。在用戶的方案中,用戶可以把信息組織稱為三個信息分類。每一個對應(yīng)一個應(yīng)用程序。
應(yīng)當(dāng)注意,在這個接合點,信息定義512的特殊信息圖解600是由稱為信息單元的數(shù)據(jù)對象構(gòu)成的,如圖6所示,它們以分層結(jié)構(gòu)排列。一般說來,信息圖解600包括一個或多個段620、一個或多個表格640和一個或多個項660。段620或表格640必需呈現(xiàn)在信息600分層的頂部。
段620是非重復(fù)信息單元組。這樣的段單元本身不包括實際數(shù)據(jù)。它們只包括含有數(shù)據(jù)的其它信息單元(即,它們包括項660)。段620包含任何組合的信息單元類型。
表640是一組稱為行的段單元,其可以重復(fù)任何次數(shù)。表單元也不含有實際數(shù)據(jù)。它們包含含有數(shù)據(jù)的其它信息單元(即,它們含有項)。表640包含任何組合的信息單元類型。
項660是含有數(shù)據(jù)的信息單元。項660在信息定義的分層中是最低層的信息單元。它們不含有其它信息單元。
每一個信息定義512含有根據(jù)該定義用于生效信息的標(biāo)準(zhǔn)。即,當(dāng)用戶確定了信息定義時,用戶可以指定標(biāo)準(zhǔn),以便在單個信息單元中的數(shù)據(jù)必需滿足在系統(tǒng)100內(nèi)被認為是有效的信息。
用戶可以為所有層級的信息指定生效標(biāo)準(zhǔn)。即,用戶可以為段內(nèi)或表內(nèi)的信息項指定標(biāo)準(zhǔn)。整個信息通過生效標(biāo)準(zhǔn)并繼續(xù)通過信息流,或沒有通過生效標(biāo)準(zhǔn)并被放棄。如果表的一行沒有通過指定的標(biāo)準(zhǔn),整個信息沒有通過。在適當(dāng)?shù)男畔⒍x中使用生效標(biāo)準(zhǔn),系統(tǒng)100確定每一個由適配器220或轉(zhuǎn)換器520產(chǎn)生的信息。
適配器220與企業(yè)應(yīng)用程序連接,以提取或傳送數(shù)據(jù)。每一個適配器220產(chǎn)生、接收或應(yīng)答用戶指定的信息定義512的信息。系統(tǒng)100為他將集成的應(yīng)用程序提供標(biāo)準(zhǔn)適配器220。如上面提到的一樣,每一個標(biāo)準(zhǔn)適配器220是資源適配器222、目標(biāo)適配器224、應(yīng)答適配器226或請求適配器228,并被設(shè)計為特殊的代理服務(wù)類型。例如,對于EntireXBroker,系統(tǒng)提供了ETB標(biāo)準(zhǔn)資源適配器和ETB標(biāo)準(zhǔn)目標(biāo)適配器。標(biāo)準(zhǔn)適配器是類屬的。它們提供了基本的例外處理并能夠處理任何信息定義。如果標(biāo)準(zhǔn)適配器220不包括用戶需要與應(yīng)用程序交互作用的所有代碼(例如,用戶想指定較詳細的例外處理),用戶可以使用ADK130產(chǎn)生定制適配器220。用戶也可以使用ADK130產(chǎn)生系統(tǒng)100當(dāng)前不支持的應(yīng)用程序的定制適配器220。同樣,用戶可以使用ADK130產(chǎn)生定制適配器220,其連接到具有JAVA應(yīng)用程序編程接口(API)的任何應(yīng)用程序。
為在集成信息流540中使用標(biāo)準(zhǔn)或定制適配器220,用戶必須對其進行設(shè)置,以處理特殊信息定義512。用戶可以設(shè)置需要數(shù)量的每一種類型的適配器220,以處理用戶需要包括在集成信息流540中的所有信息。
資源適配器222從企業(yè)應(yīng)用程序提取數(shù)據(jù),并產(chǎn)生發(fā)送到其它集成對象530的信息。特別地,資源適配器222(1)輪詢或由特殊類型事件的應(yīng)用程序通知,事件已經(jīng)發(fā)生在應(yīng)用程序中(例如,新客戶的數(shù)據(jù)已經(jīng)被輸入);(2)從應(yīng)用程序提取有關(guān)事件的數(shù)據(jù);(3)使用信息定義指令,從該數(shù)據(jù)構(gòu)建系統(tǒng)信息;(4)產(chǎn)生信息并發(fā)送其到一個或多個目標(biāo)集成對象530。
目標(biāo)適配器224在集成信息流540中從其它系統(tǒng)對象510、530接收信息,并發(fā)送信息數(shù)據(jù)到企業(yè)應(yīng)用程序541、549。特別地,目標(biāo)適配器224(1)從一個或多個資源集成對象530接收系統(tǒng)信息;(2)使用來自信息定義512的指令,從系統(tǒng)信息產(chǎn)生應(yīng)用程序數(shù)據(jù);(3)通過插入新數(shù)據(jù)、更新數(shù)據(jù)或刪除適當(dāng)?shù)臄?shù)據(jù),把該數(shù)據(jù)發(fā)送到目標(biāo)應(yīng)用程序549。
當(dāng)由如轉(zhuǎn)換器520這樣的集成對象530所請求時,應(yīng)答適配器226從企業(yè)應(yīng)用程序541、549提取數(shù)據(jù)。特別地,應(yīng)答適配器226(1)從集成對象530接受一個請求信息;(2)從企業(yè)應(yīng)用程序541、549提取請求的數(shù)據(jù);(3)根據(jù)作為請求信息的相同信息定義512,在應(yīng)答信息中發(fā)送該數(shù)據(jù)到轉(zhuǎn)換器520。
連同應(yīng)答轉(zhuǎn)換器522一起的請求適配器228被用于從企業(yè)應(yīng)用程序541、549提取數(shù)據(jù),而沒有從這些應(yīng)用程序中要求特殊的請求。如圖7所示,恢復(fù)它們預(yù)期的信息可能是應(yīng)用對象710提出另一個請求所需要的。例如,來自應(yīng)用對象710的請求可能簡單為如此“我想察看客戶運輸數(shù)據(jù)”。包括客戶運輸數(shù)據(jù)的所有數(shù)據(jù)在事先提出,并放置在該請求的相同信息定義中,然后,被“移到”應(yīng)用程序?qū)ο?10。特別地,請求適配器228(1)從應(yīng)用程序?qū)ο?10接收請求信息;(2)直接在系統(tǒng)100中從另一個對象540提取預(yù)期的數(shù)據(jù),或得到應(yīng)答轉(zhuǎn)換器522的幫助,從應(yīng)答轉(zhuǎn)換器522提取預(yù)期的數(shù)據(jù);(3)根據(jù)作為請求信息的相同信息定義512,在信息中發(fā)送該數(shù)據(jù)到應(yīng)用程序?qū)ο?10。
下面將詳細描述代理服務(wù)包容適配器220的情況。代理服務(wù)提供了連接到它的應(yīng)用程序的信息適配器220(例如,密碼和用戶識別符)。系統(tǒng)100為他將集成的每一個企業(yè)應(yīng)用程序提供了代理服務(wù)。即,提供了SAP R/3代理服務(wù)、EntireX Broker代理服務(wù)等。系統(tǒng)100也為用戶使用ADK130產(chǎn)生的定制適配器提供代理服務(wù)。
用戶對使用系統(tǒng)100集成的每一個企業(yè)應(yīng)用程序需要一個代理服務(wù)。例如,如果用戶想把三個SAP R/3系統(tǒng)與一個RDBMS集成,則用戶需要三個SAP R/3代理服務(wù)和一個RDBMS代庫無。每一個代理服務(wù)容納所有的適配器220,用于代理連接的企業(yè)應(yīng)用程序。
轉(zhuǎn)換器定義514確定了一種處理,該處理把從一個或多個應(yīng)用程序提取的含有數(shù)據(jù)的信息轉(zhuǎn)換成為由一個或多個應(yīng)用程序需要的含有數(shù)據(jù)的信息。通過從資源對象收集輸入信息,轉(zhuǎn)換器520實施轉(zhuǎn)換器定義514,轉(zhuǎn)換數(shù)據(jù),并發(fā)送輸出信息到目標(biāo)對象。
如圖8所示,在轉(zhuǎn)換器定義514中確定的轉(zhuǎn)換處理總是包括至少兩種信息主輸入信息和一個或多個輸出信息。主輸入信息基本上包括大多數(shù)或所有用戶想以輸出信息發(fā)送到目標(biāo)應(yīng)用程序的數(shù)據(jù)。輸出信息包括來自輸入信息的數(shù)據(jù),并為目標(biāo)應(yīng)用程序必需轉(zhuǎn)換的數(shù)據(jù)。
當(dāng)用戶產(chǎn)生轉(zhuǎn)換器定義514時,首先在805,用戶指定主輸入信息的名稱。然后,在810,用戶識別信息定義512,該定義確定了用戶想使用為主輸入的信息。然后,在815,指定任何支持輸入信息。其次,在820,用戶識別確定這種支持輸入信息的信息定義512。單個轉(zhuǎn)換處理可以產(chǎn)生任何數(shù)量的輸出。因此,在825,用戶必需指定這些輸出信息,并識別信息定義512,該定義512確定了用戶想產(chǎn)生作為輸出的信息。
從835開始,用戶產(chǎn)生一系列步驟840、845、850、855、860、865,這些步驟確定了何時讀取輸入數(shù)據(jù)、如何轉(zhuǎn)換輸入數(shù)據(jù)、如何從輸入信息定義到輸出信息定義映像輸入數(shù)據(jù)、以及,何時把轉(zhuǎn)換的數(shù)據(jù)寫給實際的輸出信息。
用戶以任何必需的方式轉(zhuǎn)換輸入數(shù)據(jù),以產(chǎn)生用戶需要的輸出信息。例如,用戶可以產(chǎn)生一個轉(zhuǎn)換表達,該表達指定了包含客戶名和姓的一串信息項,因為目標(biāo)應(yīng)用程序要求客戶的全名在一個數(shù)據(jù)段中。用戶產(chǎn)生了一個轉(zhuǎn)換表達,該表達從信息項中只選擇某些字,或把信息項填如空間,使得它具有適當(dāng)?shù)拈L度,用于目標(biāo)應(yīng)用程序中的對應(yīng)數(shù)據(jù)段。然后,在轉(zhuǎn)換處理中,通過把他們寫在不同點上,用戶產(chǎn)生了不同的輸出信息。
當(dāng)主輸入信息沒有包含產(chǎn)生輸出信息的所有數(shù)據(jù)時,用戶可以使用請求/應(yīng)答信息定義為轉(zhuǎn)換處理獲得支持輸入。例如,假定在轉(zhuǎn)換器定義中,用戶正在使用的主輸入信息使用了美國州名的縮寫(例如,VA是維吉尼亞)。
例如,假定目標(biāo)應(yīng)用程序要求全州名。未獲得全州名,需要產(chǎn)生輸出信息,用戶將使用能夠發(fā)送縮寫到應(yīng)用程序的請求/應(yīng)答信息定義,并接收返回的州名。
在用戶已經(jīng)產(chǎn)生了轉(zhuǎn)換器定義514之后,用戶測試該轉(zhuǎn)換器定義,并在使用它之前,確保在集成信息流中產(chǎn)生適當(dāng)?shù)妮敵鲂畔?。然后,用戶把轉(zhuǎn)換器定義指定給一個或多個轉(zhuǎn)換器520。
轉(zhuǎn)換器520實施轉(zhuǎn)換器定義514。當(dāng)用戶產(chǎn)生轉(zhuǎn)換器520時,用戶指定對象510、530作為主輸入信息的資源,對象510、530將是輸出信息的目標(biāo)。用戶也指定將應(yīng)答支持輸入請求的對象。當(dāng)轉(zhuǎn)換器520從資源對象540接收主輸入信息時,它運行確定在轉(zhuǎn)換器定義514中的步驟序列,該步驟構(gòu)成了轉(zhuǎn)換處理。然后,它讀取主和支持輸入信息,轉(zhuǎn)換輸入數(shù)據(jù),把轉(zhuǎn)換的數(shù)據(jù)寫給一個或多個輸出信息,然后,發(fā)送輸出信息到目標(biāo)對象540。基本的轉(zhuǎn)換處理顯示在圖9中。轉(zhuǎn)換器520從中心518接收主輸入信息920。然后,它從應(yīng)答適配器226獲得支持輸入信息940。最后,轉(zhuǎn)換器520把兩個不同的輸出信息960、980發(fā)送到兩個不同的目標(biāo)適配器224。
中心518是適配器220和轉(zhuǎn)換器520的保持區(qū)域。中心518允許適配器220和轉(zhuǎn)換器520非同步地交換信息,并簡化對象中的鏈接。例如,用戶可以具有產(chǎn)生信息到轉(zhuǎn)換器520的資源適配器222。用戶可能希望適配器222產(chǎn)生和發(fā)送它的信息,而不管轉(zhuǎn)換器520是否準(zhǔn)備好接收它們。用戶將設(shè)置適配器222發(fā)送信息到信息中心518,并設(shè)置轉(zhuǎn)換器520從該中心518接收適配器的信息。然后,當(dāng)目標(biāo)準(zhǔn)備好接收它們時,系統(tǒng)100從中心518傳送信息到目標(biāo)對象540。
此外,用戶可能有三個資源適配器222,其根據(jù)相同信息定義512發(fā)送信息到五個目標(biāo)224、520。如果用戶不使用中心518(如圖10(a)所示),則用戶將必須在這些對象中產(chǎn)生15個鏈接。另一方面,如果用戶使用中心518(如圖10(b)所示),則用戶將必須產(chǎn)生和保持8個鏈接。信息中心518可以只保持一種信息(即,從單個信息定義512產(chǎn)生的信息)。中518的目標(biāo)具有持久預(yù)訂。系統(tǒng)100保持從中心518已經(jīng)接收的每一個目標(biāo)對象224、520的信息的紀錄,以及還沒有接受到的目標(biāo)對象224、520的紀錄。如果目標(biāo)對象224、520變成為不活動,系統(tǒng)100記住目標(biāo)對象已經(jīng)接收的最后信息。當(dāng)下一個目標(biāo)對象224、520變成為活動的,系統(tǒng)100只發(fā)送這些目標(biāo)對象224、520還沒有接受到的信息。如果中心預(yù)訂不是持久的,當(dāng)目標(biāo)對象224、520是活動的,則目標(biāo)對象224、520就會接收到達中心518的信息,但是,當(dāng)目標(biāo)對象224、520是不活動的,目標(biāo)對象224、520決不會接收到達中心518的信息。
用戶可以從兩個信息類型選擇,用戶希望系統(tǒng)100何時從中心518傳送信息(1)點對點,系統(tǒng)100只把每一個信息傳送到第一個可用目標(biāo);或(2)發(fā)布/預(yù)訂,系統(tǒng)100把每一個信息發(fā)送到用戶已經(jīng)識別作為中心518的目標(biāo)的每一個對象。
如果用戶想從集成信息流的部分篩選出某種數(shù)據(jù),用戶必須使用篩選定義516。篩選定義516根據(jù)信息數(shù)據(jù)指定標(biāo)準(zhǔn)(即,通過標(biāo)準(zhǔn)的數(shù)據(jù)繼續(xù)通過信息流),而沒有通過標(biāo)準(zhǔn)的數(shù)據(jù)被放棄。
當(dāng)用戶想篩選某種數(shù)據(jù)時,用戶產(chǎn)生篩選定義516,并把它指定給處理這種信息的對象540之間的一個或多個鏈接。系統(tǒng)100在篩選定義516中應(yīng)用該標(biāo)準(zhǔn)到沿著這些鏈接發(fā)送的所有信息。
例如,考慮中心518發(fā)送包含新客戶數(shù)據(jù)的信息到目標(biāo)適配器224的情況。用戶只希望還沒有付款的客戶數(shù)據(jù)到達目標(biāo)適配器。為達此目的,用戶將產(chǎn)生篩選定義516,其指定了標(biāo)準(zhǔn)“狀態(tài)=付款”,并把它指定給中心518和目標(biāo)適配器224之間的鏈接。
用戶可以在用戶的集成信息流540中為每一個信息定義512產(chǎn)生一個或多個篩選定義516。用戶可以把單個篩選定義516指定給多個鏈接,或用戶可以為同類信息把不同的篩選定義516指定給不同的鏈接。
例如,考慮中心518發(fā)送包含新客戶數(shù)據(jù)的信息到兩個適配器220的情況。用戶可能希望一個適配器220只接收已經(jīng)付款的客戶數(shù)據(jù),另一個適配器220只接收還沒有付款的客戶數(shù)據(jù)。因此,用戶將產(chǎn)生兩個篩選定義516。一個指定標(biāo)準(zhǔn)“狀態(tài)=未付款”,另一個指定標(biāo)準(zhǔn)“狀態(tài)=付款”,然后,用戶把每一個篩選定義516指定給適當(dāng)?shù)逆溄印?br>
當(dāng)用戶為不包括表格數(shù)據(jù)的信息產(chǎn)生篩選定義516時,用戶指定的標(biāo)準(zhǔn)影響了整個信息。整個信息通過篩選標(biāo)準(zhǔn)并繼續(xù)通過信息流,或沒有通過標(biāo)準(zhǔn)并被放棄。
當(dāng)用戶為包括表格數(shù)據(jù)的信息產(chǎn)生篩選定義516時,用戶可以指定影響整個信息的標(biāo)準(zhǔn),或只影響表格內(nèi)的數(shù)據(jù)。如果用戶在段620中為信息項指定標(biāo)準(zhǔn),整個信息通過標(biāo)準(zhǔn)并繼續(xù)通過信息流,或沒有通過標(biāo)準(zhǔn)并被放棄。如果用戶在表格640中為信息項指定標(biāo)準(zhǔn),只有通過標(biāo)準(zhǔn)的數(shù)據(jù)行繼續(xù)通過信息流。沒有通過標(biāo)準(zhǔn)的行被放棄。
例如,考慮包含9行數(shù)據(jù)的表格640的情況,一行對應(yīng)一個新客戶。如果用戶設(shè)置篩選定義516,其篩選出花費1000美元或少于此數(shù)的客戶,包含花費超過1000美元客戶數(shù)據(jù)的行繼續(xù)通過信息流,而包含花費1000美元或少于此數(shù)的客戶數(shù)據(jù)的行將被放棄。
在用戶已經(jīng)產(chǎn)生篩選定義516之后,用戶測試該篩選定義,并在使用它之前,確保它在集成信息流540中適當(dāng)?shù)毓ぷ鳌?br>
一旦用戶想在集成信息流540中使用的系統(tǒng)對象存在,用戶顯示用戶希望系統(tǒng)100如何路由它們中的信息。為達此目的,用戶設(shè)置集成對象530中的鏈接。每一個連結(jié)建立了作為資源的一個對象和作為目標(biāo)的另一個對象,或一個對象作為請求器,另一個對象作為應(yīng)答器。資源適配器總是信息資源。它們把信息發(fā)送到相同代理服務(wù)類型的目標(biāo)適配器(例如,SAP R/3源適配器可以發(fā)送信息到SAP R/3目標(biāo)適配器)、信息中心518和轉(zhuǎn)換器520。
轉(zhuǎn)換器520可以是目標(biāo)、請求器和資源。它們可以從資源適配器222、信息中心518、和其它轉(zhuǎn)換器520接收主輸入信息。它們也可以從應(yīng)答適配器226和信息中心518請求支持輸入信息940,并把輸出信息960、980發(fā)送到目標(biāo)適配器224、中心518和其它轉(zhuǎn)換器520。信息中心518可以是目標(biāo)和資源。目標(biāo)適配器224總是目標(biāo)。它們可以從相同代理服務(wù)類型的資源適配器222、中心518和轉(zhuǎn)換器520接收信息。
通過缺省,系統(tǒng)100使用“信息保留”。即,系統(tǒng)把每一個信息寫到該介質(zhì),并從一個集成對象發(fā)送到另一個,以穩(wěn)定存儲在用戶指定的位置內(nèi)。如果系統(tǒng)發(fā)生故障,而同時信息正在傳送中,當(dāng)系統(tǒng)100被重新存儲時,系統(tǒng)100可以從存儲中恢復(fù)信息,并發(fā)送該信息到它的目標(biāo)。
因為信息保留增加了系統(tǒng)的內(nèi)部操作,所以系統(tǒng)100允許用戶為任何集成對象530斷開連續(xù)。然而,如果系統(tǒng)發(fā)生故障,而同時到達或來自對象的信息正在傳送中,則這些信息可能會丟失。系統(tǒng)100提供了另外的發(fā)送有關(guān)的選項,其幫助用戶管理用戶的系統(tǒng)資源。系統(tǒng)100在集成信息流中為每一個集成對象維持信息保持區(qū)域。用戶也可以控制保持區(qū)域的尺寸。
用戶可以限制系統(tǒng)100為每一個對象一次保持信息的數(shù)量,用戶可以限制系統(tǒng)100保持每一個信息的時間長度。如果集成對象530產(chǎn)生的信息比目標(biāo)接收的快,這些限制可以防止對象保持區(qū)域增長到變形系統(tǒng)資源的尺寸。
用戶在工作臺120上的方案內(nèi)設(shè)計所有的集成信息流。用戶設(shè)計和保留的這些集成信息流(即,用戶產(chǎn)生的定義510和集成對象530,并在它們中間鏈接)都存儲在資料檔案庫140中。方案是一種邏輯結(jié)構(gòu),其讓用戶察看資料檔案庫140。每一個系統(tǒng)100有一個方案和一個資料檔案庫140。
現(xiàn)在將公開在系統(tǒng)100內(nèi)所有信息生產(chǎn)者使用的信息對象的一般結(jié)構(gòu)和設(shè)計原理。在此公開的信息模式是無限可擴展的,并對轉(zhuǎn)換本機的文件格式和從本機的文件格式轉(zhuǎn)換是很有用的,以及,在系統(tǒng)100內(nèi)的節(jié)點之間發(fā)送內(nèi)部信息。信息是分層結(jié)構(gòu),并使用名稱/數(shù)值對模式代表數(shù)據(jù)。按照本發(fā)明,信息模式代表的數(shù)據(jù)總是基于對象的。它是某類的Java對象的實例。每一個數(shù)據(jù)節(jié)點基本上是安全類型,它只包含指定分類的數(shù)據(jù)。信息結(jié)構(gòu)是元數(shù)據(jù)驅(qū)動。
即,很好構(gòu)建的信息總是使用配置在已知信息定義512的對象內(nèi)的圖解編譯。某些“類型”的每一個信息從相同信息定義512被編譯。信息定義512本身就是一個信息的實例,盡管它的節(jié)點已經(jīng)被擴展為包括如何編譯它所描述的格式的實例信息,以及,如何轉(zhuǎn)換數(shù)據(jù)到本機應(yīng)用文件格式和從本機應(yīng)用文件格式轉(zhuǎn)換的選項信息。
如上面提到的一樣,信息600是簡單和復(fù)合對象的樹結(jié)構(gòu)集合。所有出現(xiàn)在信息中的對象是各種類型的“信息條目”。在本發(fā)明的優(yōu)選實施例中,信息條目包括下面類型之一(1)數(shù)據(jù)單元;(2)陣列單元;(3)表格單元;(4)段單元或“信息鏈接”。信息在樹的頂部總是有單個段單元,已知為“頂層段”。這個和其它的段包括任何四個單元類型的實例。
數(shù)據(jù)單元包括“原子”數(shù)據(jù),盡管該數(shù)據(jù)被包封在Java分類中。例如,整數(shù)數(shù)據(jù)被存儲在java.lang.Integer object,數(shù)據(jù)/時間信息被壓縮在java.util.Calendar object等。陣列單元是一個或多個原始單元的集合。陣列的長度是在元數(shù)據(jù)中指定的,盡管這個長度可以在允許的范圍內(nèi)指定,在該范圍內(nèi),由分列本機應(yīng)用的文件紀錄確定長度。表格單元實際上是段單元的同構(gòu)集合,其意味著表格的每一行含有完全相同的名稱和類型組合的段。它也有一個潛在變化范圍的明細表。信息鏈接在系統(tǒng)中是對另一個持久信息定義的指向器,并被用于合并格式。這對實施“重新定義”是有用的。像信息定義所顯示的一樣,信息可以代表選項數(shù)據(jù),以及缺省值。
在它的最簡單的用法中,通過在信息定義分類中調(diào)用靜態(tài)工廠法(static factory method)產(chǎn)生一個空類信息。這就產(chǎn)生一個具有適當(dāng)名稱/數(shù)值對,但每一個數(shù)據(jù)項被設(shè)置為零。只當(dāng)公共輸出信息設(shè)計者需要信息定義作為參數(shù),并確保適當(dāng)?shù)男问?。信息API提供訪問它的單元的方式,或通過名稱查找,或通過段迭代。在這個接合點內(nèi)應(yīng)當(dāng)注意,使用可設(shè)置的分離器,信息支持可分層的名稱方案,并允許全部或相對的“路徑名”訪問分層中的任何部件。
段620是非重復(fù)信息單元組。這樣的段單元本身不包括實際數(shù)據(jù)。它們包括含有數(shù)據(jù)的其它信息單元(即,它們含有項600)。段620可以包括信息單元類型的任何組合。
表格640是一組段單元,稱為可以重復(fù)任何次數(shù)的行。表格單元也不包括實際數(shù)據(jù)。它們包括含有數(shù)據(jù)的其它信息單元(即,它們包括項)。表格640可以包括信息單元類型的任何組合。
項660是含有數(shù)據(jù)的信息單元。項660在信息定義的分層中是最低層的信息單元。它們不合有其它信息單元。
用戶在工作臺120上的方案內(nèi)設(shè)計所有的集成信息流。用戶設(shè)計和保留的這些集成信息流540(即,用戶產(chǎn)生的定義610和集成對象620,并在它們中間鏈接)都存儲在資料檔案庫140中。方案是一種邏輯結(jié)構(gòu),其讓用戶察看資料檔案庫140。每一個系統(tǒng)100有一個方案和一個資料檔案庫140。
按照本發(fā)明的另一個重要方面,系統(tǒng)100包括一個分布的系統(tǒng)。即,用戶運行系統(tǒng)部件,該系統(tǒng)部件在一個或多個物理機器(即,主機)上構(gòu)成了系統(tǒng)100,但所有部件工作在一起作為一個應(yīng)用。
節(jié)點是一個物理處理,其運行在主機上并支持一個或多個服務(wù)。每一個節(jié)點是Java虛擬器(JVM)并由操作系統(tǒng)識別為javaw.exeprocess。用戶必需為每一個主機至少產(chǎn)生一個節(jié)點,該主機運行用戶希望集成的企業(yè)應(yīng)用程序。用戶可以有用戶的商務(wù)要求指定一樣多的節(jié)點。
在系統(tǒng)100中有兩個主接口(1)工作臺120;(2)管理控制臺160。工作臺120為產(chǎn)生和修改集成信息流540提供工具,而管理控制臺160為管理系統(tǒng)節(jié)點和服務(wù)提供所有的工具。下面將詳細論述。
按照本發(fā)明,產(chǎn)生集成信息流可以按下面的方式進行。首先,用戶必須從系統(tǒng)100得到代理服務(wù)。然后,在管理控制臺上,用戶設(shè)置每一個主機的系統(tǒng)節(jié)點,在該主機上,用戶希望集成的應(yīng)用程序正在運行。然后,用戶在節(jié)點上設(shè)置所要求的服務(wù),包括用戶將集成的每一個應(yīng)用程序的代理服務(wù)。
為了設(shè)計集成信息流,用戶應(yīng)當(dāng)確定下列因素。例如,用戶必需確定它需要從應(yīng)用程序提取和傳送到應(yīng)用程序的數(shù)據(jù)類型。用戶也將考慮(1)用戶如何路由系統(tǒng)對象中的信息;(2)用戶如何從一個應(yīng)用程序轉(zhuǎn)換數(shù)據(jù),以便它可以由另一個引用程序使用;(3)用戶是否需要從信息流篩選出某些數(shù)據(jù)。
在工作臺120,用戶首先應(yīng)當(dāng)產(chǎn)生一個方案,然后,以下列的方式產(chǎn)生一個集成信息流。首先,用戶應(yīng)當(dāng)設(shè)置與用戶的應(yīng)用程序交互工作的適配器220,并產(chǎn)生用戶需要在集成信息流540中產(chǎn)生適當(dāng)信息的信息定義512。然后,測試這些這些信息定義512,以確保它們產(chǎn)生了適當(dāng)?shù)男畔ⅰ?br>
其次,用戶應(yīng)當(dāng)產(chǎn)生中心518,以保持來自適配器220和轉(zhuǎn)換器518的信息。然后,用戶產(chǎn)生映像定義514,把來自資源應(yīng)用程序514的信息轉(zhuǎn)換到用于目標(biāo)應(yīng)用程序549的信息。此外,用戶可以產(chǎn)生簡單的輸入信息920、940,并使用它們測試每一個映像定義514,確保它產(chǎn)生了適當(dāng)?shù)妮敵鲂畔?60、980。
然后,用戶將產(chǎn)生必需實施這些映像定義514的轉(zhuǎn)換器520。如需要,可將適配器220、轉(zhuǎn)換器520和中心626鏈接起來。如果用戶需要從信息流540篩選出某些數(shù)據(jù),用戶應(yīng)當(dāng)產(chǎn)生篩選定義516。最好使用樣本信息,用戶下一步將測試篩選定義516,確保它們篩選出適當(dāng)?shù)臄?shù)據(jù)。然后,用戶可以把篩選定義516指定到對象之間的鏈接。
在工作臺120,用戶檢查集成信息流540的有效性,并在需要時校正它。然后,用戶保存并關(guān)閉該方案。在管理控制臺160,用戶將設(shè)置紀錄察看器,所以用戶可以察看系統(tǒng)活動時的信息。如果用戶希望察看系統(tǒng)活動的統(tǒng)計表(例如,在特殊時間間隔由單個轉(zhuǎn)換器產(chǎn)生的信息數(shù)),那么,用戶將設(shè)置統(tǒng)計察看器。
在管理控制臺160,通過啟動相應(yīng)的系統(tǒng)節(jié)點和服務(wù),包括用于用戶準(zhǔn)備集成的應(yīng)用程序的代理服務(wù),用戶可以啟動集成信息流。下一步,用戶將檢查記錄和統(tǒng)計,確認集成信息流540正在適當(dāng)?shù)倪\行。如果用戶需要修改集成信息流540,因此,用戶在管理控制臺停止了相應(yīng)的服務(wù),在工作臺120修改集成信息流540,然后,在管理控制臺160重新啟動服務(wù)。
按照本發(fā)明,對于本領(lǐng)域技術(shù)人員來說,下面論述的具有資源適配器向?qū)?、目?biāo)適配器向?qū)Ш蛻?yīng)答適配器向?qū)У某绦蚨歼m當(dāng)?shù)卦O(shè)置了適配器220。一般來說,有四個分離處理步驟。
首先,必須完成下面普通的步驟(1)命名適配器200;(2)選擇要求容納適配器220的代理服務(wù);(3)選擇定義512,用于適配器220將產(chǎn)生、接收或應(yīng)答的信息。其次,必須完成下面普通的步驟(1)選擇將被設(shè)置的特殊的適配器220(即,標(biāo)準(zhǔn)或定制);(2)提供連接信息;(3)提供實施信息。時常,提供實施信息的步驟包括提取適配器220的信息定義512的步驟。
第三個處理步驟取決于將被產(chǎn)生的適配器220的類型。如果正在產(chǎn)生資源適配器222,必需指定適配器222將發(fā)送信息到的目標(biāo)。另一方面,如果正在產(chǎn)生目標(biāo)適配器224,必需指定適配器將從資源接收信息。此外,如果正在產(chǎn)生應(yīng)答適配器226,必需指定適配器將發(fā)送應(yīng)答信息到的請求器(即,轉(zhuǎn)換器520)。
最后,必需為適配器的信息指定傳送選項(例如,信息壽命)。然而,在產(chǎn)生適配器220之前,將容納適配器的代理服務(wù)必需存在于管理控制臺160。例如,在產(chǎn)生EntireX Broker適配器之前,用于EntireXBroker的代理服務(wù)必需存在。如果也希望使用適配器向?qū)е付ㄙY源、目標(biāo)或請求器對象,在打開適配器向?qū)е?,這些對象必需存在。
再次參考圖4(a)和4(b),代理-適配器200一端與應(yīng)用程序資源連接,另一端與系統(tǒng)100的下部結(jié)構(gòu)連接。一方面,每一個代理-適配器200的一半適配器使用它的特殊的的應(yīng)用程序資源的API,或任何其它的發(fā)布的接口裝置。另一方面,下面將詳細論述,代理端遵照系統(tǒng)100的事件和信息模式。在組合中,代理和適配器協(xié)調(diào)接口協(xié)議和數(shù)據(jù)結(jié)構(gòu)中的差別,以提供商務(wù)事件發(fā)布和消費的唯一的、規(guī)格化的窗口。
不像其它應(yīng)用程序集成解決方案,可擴展的適配器結(jié)構(gòu)的設(shè)計提供了--無隙縫地調(diào)節(jié)應(yīng)用程序接口的變化的能力,而且,仍然支持當(dāng)前的基本接口。這對早已經(jīng)在生產(chǎn)中的系統(tǒng)是特別重要。例如,具有基本接口A′的打包應(yīng)用程序由代理-適配器200的特殊版本支持。如果應(yīng)用程序的新版本合并新接口A″,則用戶可以同時選擇適應(yīng)于生產(chǎn)環(huán)境的老接口A′,和適應(yīng)于生產(chǎn)前的環(huán)境的接口A″,以便測試該新接口。使用這個工具,在集成環(huán)境內(nèi)增加的變化可以無隙縫地處理。
系統(tǒng)100的每一個部件分布交叉在所有支持平臺上。代理-適配器200靈活地擴展這些部件分享應(yīng)用程序。因此,系統(tǒng)10的關(guān)鍵部件(例如,代理-適配器200或集成服務(wù)器26)可以與應(yīng)用程序放置在一起,或遠程訪問或,兩者。眾多的配置設(shè)置時可能的-最佳化的環(huán)境平衡了可用性、性能和管理要求。
系統(tǒng)100有許多標(biāo)準(zhǔn)適配器200,包括SAP、MQSeries、ENTIREBroker、RDBMS&CICS。同樣地,適配器200支持這些信息資源的快速配置和容易集成。它們也減少了訓(xùn)練和技巧的要求。包括所有自動向?qū)0宓腁DK130提供了高生產(chǎn)率。它適合于任何用戶的IDE,它便利定制化供給適配器和發(fā)展定制接口。適配器200由通用的語言和接口連接構(gòu)成,包括C++、Java、EJB、CORBA、COM和自然語言。以這種方式,它們接通任何用戶的環(huán)境和工具。它們調(diào)節(jié)內(nèi)部語言專門知識,并且,它們適應(yīng)復(fù)雜的資源接口要求。因此,按照本發(fā)明的代理-適配器結(jié)構(gòu)提供了遠大與簡單化接口的強有力的工具支持。它確保相同的事件跨越在資源文件上。
代理-適配器子系統(tǒng)包括連接外部應(yīng)用程序到EAI的運行時間模塊。在適配器一邊,對外部應(yīng)用程序它是物理接口。代理這邊的作用就像代表適配器容納適配器、管理資源和發(fā)布事件的主機。
在系統(tǒng)100內(nèi)的基適配器分類如下?!斑m配器主群組”類為適配器提供了啟動本身和處理它的設(shè)置定義的能力。它也負責(zé)例示由四種可能類型的適配器通信所用的分類的實例。“適配器接收機”類為適配器提供了從EAI接收文檔并傳送該文檔到第三方軟件包的能力。“適配器發(fā)送器”類為適配器提供了從第三方軟件包接收文檔并傳送該文檔到EAI的能力。“適配器響應(yīng)器”類為適配器提供了從EAI接收文檔,傳送該文檔到第三方,接收第三方軟件包的響應(yīng)和返回該響應(yīng)到EAI的能力?!斑m配器請求器”類為適配器提供了從第三方軟件包接收文檔,傳送該文檔到EAI用于處理,從EAI接收響應(yīng)和返回該響應(yīng)到第三方軟件包的能力。
本發(fā)明的EAI代理-適配器接口由實施幾個Java接口的適配器實現(xiàn)的,而適配器到代理接口是由使用已知方法的節(jié)點/代理部件的適配器實現(xiàn)的。
按照本發(fā)明的另一個重要方面,每一個適配器必須執(zhí)行下列接口。對于適配器網(wǎng)橋,方法initialize(代理-適配器設(shè)置)在初始化期間由代理調(diào)用并由適配器到引導(dǎo)程序本身使用。適配器網(wǎng)橋是在該方法中,以至適配器220、220′、220″必須詢問代理210,確定什么文檔定義將被處理,對每一個文檔提供什么處理類型。使用下面的代理方法完成處理GetSendDocumentDefinitions ( )GetReceiveDocumentDefinitions ( )GetRequestDocumentDefinitions ( )GetResponseDocumentDefinitions ( )然后,這個方法將分列適配器設(shè)置文檔,定位屬于特殊文檔定義的分段,隱藏文檔特殊設(shè)置信息,根據(jù)處理類型(發(fā)送、接收、請求或響應(yīng))產(chǎn)生特殊分類的實例。隨后,當(dāng)信息到達時,它將啟動一個Thread(發(fā)送或請求類型),發(fā)布Agent.setReceiveListener()(接收類型),或發(fā)布Agent.setResponseListener()(響應(yīng)類型),以注冊將被調(diào)用的代理回叫信號。
Restart()方法由代理220、220′、220″調(diào)用,以使得適配器210終止所有活動,重新裝載設(shè)置數(shù)據(jù)和重新啟動它本身。在終止處理期間,由代理220、220′、220″調(diào)用shutdown()方法。
如下面論述的一樣,下面的接口也由適配器220實施,onReceiveMessage(接收數(shù)據(jù))根據(jù)JMS信息接收,由代理210調(diào)用方法,代理將發(fā)送文檔到適配器處理。這個處理是在JMS對話調(diào)度單位的控制下發(fā)生的。適配器處理基本上是使用應(yīng)用程序提供的接口由文檔的一路路由到第三方軟件應(yīng)用程序構(gòu)成的。然而,應(yīng)當(dāng)注意,在這種呼叫類型上不要期望應(yīng)用程序有響應(yīng)。適配器220、220′、220″將只期望來自應(yīng)用程序的成功或失敗的響應(yīng)。如果EAI正在期望來自第三方系統(tǒng)的實際響應(yīng),則不使用ResponseListener接口。
對于SendListener接口,如果適配器220、220′、220″正在使用節(jié)點/代理的定時器特點,代理210調(diào)用OnSendTimerEvent(發(fā)送數(shù)據(jù))方法。當(dāng)文檔將被發(fā)送到EAI處理,第三方接口沒有辦法實施事件驅(qū)動通知時,這個特點是很有用的。
對于RequestListener接口,如果適配器220、220′、220″正在使用節(jié)點/代理的定時器特點,代理210調(diào)用on RequestTimerEvent(請求數(shù)據(jù))方法。當(dāng)文檔將被發(fā)送到EAI處理,第三方接口沒有辦法實施事件驅(qū)動通知時,這個特點是很有用的。然而,在這個接合點上應(yīng)當(dāng)注意,RequestListener接口不同于SendListener接口,RequestListener接口將發(fā)送文檔到EAI并等候文檔的響應(yīng)。然后,這個響應(yīng)將被返回到第三方系統(tǒng)。
對于ResponseListener接口,根據(jù)JMS信息接收,由代理210調(diào)用onResponseMessage(響應(yīng)數(shù)據(jù))方法,代理210將發(fā)送文檔到適配器220、220′、220″處理。這個處理是在JMS對話調(diào)度單位的控制下發(fā)生的。適配器處理將使用應(yīng)用程序提供的接口由文檔的路由到第三方軟件應(yīng)用程序構(gòu)成的,然后,發(fā)送返回響應(yīng)到系統(tǒng)100用于處理。然而,如果系統(tǒng)100不期望來自第三方系統(tǒng)的實際響應(yīng),則不使用ReceiveListener接口。
當(dāng)用戶安裝系統(tǒng)100時,用戶安裝的主部件是圖12所示的節(jié)點管理器1210。節(jié)點管理器1210是Java虛擬器(JVM),其為所有其它節(jié)點提供了服務(wù)并為用戶在系統(tǒng)中的安裝提供了服務(wù)。在容納節(jié)點管理器1210的機器上,系統(tǒng)安裝自動底產(chǎn)生了資料檔案庫服務(wù)1220、用戶接口服務(wù)(UIS)1230和監(jiān)控器服務(wù)1240。
在用戶開始客戶1205對話之前(例如,管理控制臺160或集成工作臺120),用戶必須啟動節(jié)點管理器1210。如上所述,節(jié)點管理器1210自動啟動資料檔案庫服務(wù)1230和UIS1240。除非這些服務(wù)正在運行,否則用戶不能夠使用管理控制臺160或集成工作臺120。根據(jù)用戶正在完成的特殊管理控制臺160或集成工作臺120的任務(wù),也可以要求其它的服務(wù)。
節(jié)點管理器1210一旦運行,用戶必須設(shè)置系統(tǒng)節(jié)點和服務(wù),包括用于用戶期望集成的應(yīng)用程序的代理服務(wù)1250。用戶首先使用管理控制臺160對話啟動代理服務(wù)。然后,用戶啟動集成工作臺120對話,并開始設(shè)計如圖5(c)所示的集成信息流540。當(dāng)用戶完成這樣的集成信息流540的設(shè)計時,用戶使用啟動節(jié)點啟動它們,并從管理控制臺160對話啟動服務(wù)。
當(dāng)用戶開始客戶對話時,用戶識別節(jié)點管理器1210作為客戶的服務(wù)器1215。用戶可以把用戶的商務(wù)需要指定的一樣多的管理控制臺160對話和集成工作臺120連接到節(jié)點管理器1250。所有這樣的管理控制臺160對話和集成工作臺120將是只讀形式的。連接到節(jié)點管理器1250的控制對話可以存取正運行在節(jié)點管理器1250的檔案資料庫520服務(wù)的內(nèi)容。當(dāng)以系統(tǒng)100一起工作時,用戶必須迎接電管理器1210、管理控制臺160對話和集成工作臺120對話。
節(jié)點如上所述的節(jié)點,現(xiàn)參考圖13(a)到13(c),并連同圖12,節(jié)點1310是運行在主機1300上的物理過程,并支持一個或多個服務(wù)。每一個節(jié)點1310是Java虛擬器(JVM),并由操作系統(tǒng)識別為javaw.exe.process。用戶必須為每一個主機1300產(chǎn)生至少一個節(jié)點1310,該主機運行用戶期望集成的企業(yè)應(yīng)用程序。用戶可以有用戶的商務(wù)需要指定的一樣多的節(jié)點1310。
服務(wù)是提供產(chǎn)品功能性的一個對象。系統(tǒng)100一般包括系統(tǒng)服務(wù)和應(yīng)用程序服務(wù)。像集成工作臺120或管理控制臺160一樣的客戶圖形用戶接口(GUI)使得用戶能夠與系統(tǒng)110一起工作。客戶1205(圖12)可以運行在正在運行節(jié)點1310和服務(wù)的相同的物理主機1300上,或它可以運行在不同的主機1200上。
每一個企業(yè)也必須有節(jié)點管理器1210。在系統(tǒng)100內(nèi),節(jié)點管理器1210為所有其它節(jié)點1310提供服務(wù)。它運行用戶接口服務(wù)(UIS)1230和資料檔案庫服務(wù)1220。圖13(a)顯示了具有三個主機1300的一種環(huán)境。主機1正在運行節(jié)點管理器1210,而主機1和主機2兩者正在運行節(jié)點1310。
系統(tǒng)100是系統(tǒng)服務(wù)和應(yīng)用程序服務(wù)的集合。系統(tǒng)服務(wù)支持節(jié)點和服務(wù)。例如,監(jiān)控器服務(wù)1240為節(jié)點1310和服務(wù)存儲系統(tǒng)運行時間數(shù)據(jù)。應(yīng)用程序服務(wù)提供了系統(tǒng)100的功能性。例如,CICS代理服務(wù)支持需要連接到CICS應(yīng)用程序的適配器。
系統(tǒng)服務(wù)按照本發(fā)明的系統(tǒng)服務(wù)一般包括用戶接口服務(wù)(UIS)1230、資料檔案庫服務(wù)1220和監(jiān)控器服務(wù)1240。UIS1230特別地提供了必須運行客戶部件的便利(即,集成工作臺120和管路控制臺1600。同樣,資料檔案庫1220存儲了所有社者服務(wù)和集成信息流對象540的設(shè)置數(shù)據(jù)。最后,監(jiān)控器服務(wù)1240存儲系統(tǒng)運行時間數(shù)據(jù),包括系統(tǒng)記錄和統(tǒng)計信息。
應(yīng)用服務(wù)再一次參考圖12,可以看到,系統(tǒng)100使用的應(yīng)用服務(wù)包括企業(yè)信息服務(wù)(EMS)1260,其使得系統(tǒng)100使用多信息節(jié)點,這些節(jié)點包括點對點、發(fā)布/預(yù)定和請求/應(yīng)答信息。EMS1260也支持信息中心并提供信息保留。應(yīng)用程序服務(wù)也包括集成服務(wù)(IS)1270,其使得系統(tǒng)100轉(zhuǎn)換信息,包括分離信息、組合信息和處理信息數(shù)據(jù)。IS1270也支持轉(zhuǎn)換器。RIM工廠服務(wù)(未示出)也選擇性地被用作為應(yīng)用服務(wù),以管理遠程方法調(diào)用鏈接到外部應(yīng)用程序。路由服務(wù)1280也包括應(yīng)用服務(wù),其使得系統(tǒng)100根據(jù)信息的內(nèi)容導(dǎo)引信息通過系統(tǒng),包括按照用戶確定的標(biāo)準(zhǔn)篩選信息內(nèi)容,并確定信息是否是有效的。路由服務(wù)1280也支持篩選器。代理服務(wù)1250支持適配器。用戶必須在運行用戶期望集成企業(yè)應(yīng)用程序的每一個主機600上安裝一個代理服務(wù)器。如圖13(b)所示,主機1和主機2都運行服務(wù)。主機3不能夠運行服務(wù),因為它沒有節(jié)點1310。
客戶系統(tǒng)100包括兩個使得用戶與集成信息流540一起工作的GUI??蛻艨梢赃\行在任何主機1300上,不管主機1300是否運行節(jié)點管理器1210、運行節(jié)點1310和服務(wù),或沒有運行任何節(jié)點1310或服務(wù)。用戶可以安裝用戶的商務(wù)需求指定一樣多的客戶。例如,用戶可能想在網(wǎng)絡(luò)點主機上安裝客戶1205,以便從遠程與用戶的集成信息流540一起工作。在圖13(c)中,主機2和主機3都正在運行管理控制臺160和集成工作臺120客戶。另一方面,主機1沒有運行管理控制臺160或集成工作臺120客戶。
在系統(tǒng)100內(nèi)有兩個主接口(1)工作臺120和管理控制臺160。工作臺120為產(chǎn)生和修改集成信息流700提供了工具,而管理控制臺120為管理系統(tǒng)節(jié)點和服務(wù)提供了所有工具。下面將詳細論述。
按照本發(fā)明產(chǎn)生集成信息流700可以按下述方式作。首先用戶必須從系統(tǒng)100獲得代理服務(wù)。然后,在管理控制臺160,用戶設(shè)置每一個主機的系統(tǒng)節(jié)點,在該主機上,用戶期望集成的應(yīng)用程序正在運行。然后,用戶在節(jié)點上設(shè)置所要求的服務(wù),包括用戶準(zhǔn)備集成的每一個應(yīng)用程序的代理服務(wù)。
為設(shè)計集成信息流,用戶應(yīng)當(dāng)確定下列因素。例如,用戶必須確定用戶需要從應(yīng)用程序提取和發(fā)送到應(yīng)用程序的數(shù)據(jù)種類。用戶也應(yīng)當(dāng)考慮(1)用戶在系統(tǒng)對象中如何路由信息;(2)用戶需要如何從一個應(yīng)用程序轉(zhuǎn)換數(shù)據(jù),以便該數(shù)據(jù)可由另一應(yīng)用程序使用;(3)用戶是否需要從信息流中篩選某些數(shù)據(jù)。
轉(zhuǎn)換處理-存取器和轉(zhuǎn)換器如上所述,信息模式的另一個重要功能是在任何應(yīng)用程序中輸入和輸出本機的文件格式。在應(yīng)用程序中,包括字符和二進制數(shù)據(jù)的文件和平臺-特定格式被變?yōu)樗龅摹皹?biāo)準(zhǔn)”格式,其中數(shù)據(jù)被表示為Java對象。這個方案設(shè)計的關(guān)鍵目標(biāo)是最佳的可再用性。因此,給定的信息定義可由概念地稱為“器件驅(qū)動器”定制設(shè)置。即,當(dāng)用適當(dāng)驅(qū)動器設(shè)置時,結(jié)構(gòu)上代表相同數(shù)據(jù)格式的兩個本機文件格式產(chǎn)生相同結(jié)構(gòu)標(biāo)準(zhǔn)信息。“器件驅(qū)動器”實際上是一組稱為“存儲器”和“轉(zhuǎn)換器”的Java對象,其在信息定義元數(shù)據(jù)和全球元數(shù)據(jù)中被連接到它們適當(dāng)?shù)墓?jié)點。
然后,已經(jīng)通過Java對象串行化持續(xù)的完全設(shè)置的信息定義變?yōu)閿?shù)據(jù)包,并準(zhǔn)備到本機文件格式分列器和格式器用于給定的本機文件格式,轉(zhuǎn)換處理獲得了最新字符組編碼和由Java研發(fā)工具(IDK)提供的定位工具的全部優(yōu)點。所有本機的字符串被視為字節(jié)陣列,并在內(nèi)部轉(zhuǎn)換為由分列和格式路由所用的統(tǒng)一代碼。
JDK的版本1.16支持近100種不同字符編碼,本發(fā)明的信息模式用相同的邏輯處理所有的字符編碼。信息模式也盡可能的使用項特征的繼承性。因此,假定應(yīng)用細節(jié)數(shù)據(jù)具有缺省字節(jié)順序、編碼和定位。單個的存取器可以覆蓋這些,但在實際中,這不會經(jīng)常發(fā)生。
存取器和轉(zhuǎn)換器是雙向?qū)ο蟆K鼈兛梢园驯緳C數(shù)據(jù)轉(zhuǎn)換成為存儲在信息樹中的Java對象,也可以把Java對象轉(zhuǎn)回它的本機表達。在復(fù)用性的精神中,本發(fā)明的一個對象將使得需要被寫入的轉(zhuǎn)換種類的總數(shù)最小化。因此,在此論述的轉(zhuǎn)換處理可以被視為兩個坐標(biāo)軸的問題,在一個坐標(biāo)軸上是標(biāo)記化/格式化,另一個坐標(biāo)軸是字節(jié)轉(zhuǎn)換。存取器分類的實例是Java對象,其知道如何在本機字段中通過“語法糖”并隔絕實際的字節(jié),以至需要產(chǎn)生特殊的轉(zhuǎn)換器或從Java對象轉(zhuǎn)換。
例如,考慮通過預(yù)定字節(jié)或字符順序,符點數(shù)據(jù)字段被表示在兩側(cè)。這些在系統(tǒng)100中被稱為“標(biāo)識器”。特殊的存取器(在這個例子中是跟蹤標(biāo)識器存取器)知道跳過第一個標(biāo)識器,發(fā)現(xiàn)跟蹤標(biāo)識器的位置,以隔離四個字節(jié),該字節(jié)實際上是符點數(shù)據(jù)的“肉”。事先設(shè)置在信息定義中的浮點字節(jié)轉(zhuǎn)換器從字節(jié)產(chǎn)生了Java浮點對象。在另一個方向,存取器寫出第一標(biāo)識器,告訴轉(zhuǎn)換器寫出本機字節(jié),然后,用跟蹤器終止存取器。這個方案的一個明顯的優(yōu)點是只需要寫入少量的存取器和大約兩打轉(zhuǎn)換器。因為本發(fā)明的存取器和轉(zhuǎn)換器基本上是只讀被設(shè)置的對象,由于對象盡可能的分享,所以信息定義尺寸可以保持相對小。在這個例子中,Java垃圾收集器可以方便地除去擁有對象的問題。
某些存取器和轉(zhuǎn)換器需要在啟動設(shè)置時設(shè)置,而其它的不需要。這些對象被打包成JavaBean,并進行簡單的特性診斷。按照本發(fā)明的優(yōu)選實施例,下面的表格闡明了支持系統(tǒng)100的存取器。當(dāng)需要新類型時,它們可以無隙縫地加到系統(tǒng)100,而不需要寫新轉(zhuǎn)換器。
存取器類型特征固定長度存取器字段總是固定長度。這個固定長度指明整個字段長度或減去任何標(biāo)識器的它的長度。
指明的長度 基本上與固定長度存取器相同,除了在數(shù)據(jù)中的另一個整數(shù)兼容字段包含長度指定器。
這些長度顯示器是我們知道的“鏈接對象”,并可以選項地標(biāo)記為“過渡”對象,下面將詳細描述兩者。
跟蹤標(biāo)識器 字段終止在跟蹤標(biāo)識器隱式長度字段長度隱藏在轉(zhuǎn)換器類型中-多數(shù)用于二進制格式化段分隔符如果包含的段使用分隔器方案,分隔器可以向?qū)ο蟮奈膊堪l(fā)出信號。
基于語法的對象 對象匹配某些規(guī)范表達應(yīng)當(dāng)注意,上述的每一個存取器是項存取器。而較簡單的時候,同樣可以使用段存取器。這樣的段存取器有選項標(biāo)識器,也可以使用分隔器方案。對某些內(nèi)容,包含這種分隔器的方案取決于它的包含單元的成功的分列。分隔器使用前綴、中綴或后綴方案,事實上,是用于壓縮字段的相同標(biāo)識器單元。表格存取器擴展段存取器與顯示紀錄計數(shù)的鏈接項工作。
支持系統(tǒng)100的轉(zhuǎn)換器的開始數(shù)量是相對的小,但根據(jù)商業(yè)文件格式的分析,它是很完整的。本發(fā)明的轉(zhuǎn)換器包括兩種基本類型基于字符的轉(zhuǎn)換器或二進制轉(zhuǎn)換器。所有字符轉(zhuǎn)換器是從提供正確理由的概念(notion of justification)和填充字符的共同基準(zhǔn)類繼承來的。這樣的填充字符可以被指定為絕對字節(jié)字符或統(tǒng)一代碼字符,其被映射到本機編碼。本發(fā)明的字符轉(zhuǎn)換器包括字符轉(zhuǎn)換器類型 描述小數(shù) 按照“格式化掩碼”的格式化和分列,并從指定在java.text.DecimalFormat中獲得。
掩碼的形式是#,##0.0##,并可以指定如導(dǎo)引或跟蹤減去標(biāo)識的特點。當(dāng)需要時,掩碼語法將被擴展到語法不足夠時的前-后處理。
整數(shù) 與小數(shù)轉(zhuǎn)換器相同,但不允許小數(shù)存在。
當(dāng)前狀態(tài) 也由Java支持,小數(shù)轉(zhuǎn)換器的進一步細化。
日期/時間使用java.text.SimpleDateFormate掩碼說明。這個格式化是相當(dāng)廣泛的,并將滿足所有的需要。
普通字符串依靠固定長度、跟蹤標(biāo)識器或段分隔器界定。
二進制轉(zhuǎn)換器繼承了指定字節(jié)順序的缺省信息,但可以通過構(gòu)造符變元單獨地被覆蓋。本發(fā)明的二進制轉(zhuǎn)換器包括二進制轉(zhuǎn)換器類型描述標(biāo)識/未標(biāo)識2’8、16、32、和64位的補充數(shù)。
如果需要,未標(biāo)識類型被提升到下一個大Java積分類型。應(yīng)當(dāng)注意,對未標(biāo)識的長整型,Java在java.math中包括一個任意精度的分組。IEEE754浮點和雙精度數(shù)(1985說明)為此可以使用JNI,以及提供在浮點和雙精度數(shù)分類中的整數(shù)位和長整型位轉(zhuǎn)換器。應(yīng)當(dāng)注意,這只被本機浮點類型的平臺支持。
壓縮十進制轉(zhuǎn)換器可以產(chǎn)生或消耗多于一個Java類型。例如,本機浮點轉(zhuǎn)換器可以合理地映射到浮點、雙精度數(shù)、整數(shù)、長整型或字符串。所有轉(zhuǎn)換器執(zhí)行本機轉(zhuǎn)換器接口,其指定了“對象負載(分類…)”和“空白存儲(對象…)”功能性。然而,所產(chǎn)生的實際子類取決于對象執(zhí)行那一個其它轉(zhuǎn)換器接口。這些基本上是標(biāo)識器接口,其沒有貢獻任何新的方法。例如,雙精度數(shù)轉(zhuǎn)換器、整數(shù)轉(zhuǎn)換器、字符串轉(zhuǎn)換器等可以被用在系統(tǒng)100中,而沒有遠離本發(fā)明的精神和范圍。通過分類自省,如圖形用戶接口的設(shè)置工具可以確定適當(dāng)?shù)霓D(zhuǎn)換器的列表,以呈現(xiàn)在特殊例子中。在負載和存儲方法中,轉(zhuǎn)換器檢查它支持的那一個接口執(zhí)行對應(yīng)的分類,該對象是“實例”或所供應(yīng)的分類。現(xiàn)在,返回的或處理的普通對象實際上是合適的子類型。
標(biāo)識器標(biāo)識器可以被認為是語法糖,作為段分隔器和單獨的項標(biāo)記是很有用的。不論段或項,所有對象可能包括引導(dǎo)標(biāo)識器、跟蹤標(biāo)識器、或兩者。按照本發(fā)明的優(yōu)選實施例,存在三種基本的標(biāo)識器格式。已知的固定模式標(biāo)識器和“strtok”類型的標(biāo)識器的兩種格式指定字節(jié)模式或映射到本機字符編碼的統(tǒng)一代碼字符串。包括一組0或出現(xiàn)更多0的字符被發(fā)現(xiàn),“strtok”類型標(biāo)識器對于顯示空白或二進制填充是很有用的?;陉P(guān)鍵碼的標(biāo)識器的第三種格式有一個模式,在該模式中,被處理對象的關(guān)鍵碼由模式所替換。例如,標(biāo)識器對<X->和</-X->將變成為<客戶>和</客戶>,其對于分列XML類型信息和幫助定位選擇的項是很有用的。
可選變元分列和識別可選變元是困難的處理過程。例如,如果指定的輸入數(shù)據(jù)是五個可選擇的任何長度的字符串,并且三個字符串被成功地讀出,則不可能知道哪個字符串是哪個。未發(fā)現(xiàn)的選擇項將被設(shè)置在信息中的空白處。按照本發(fā)明識別選擇項的一組條件如下。
考慮段使用隔離器的情況,并且發(fā)現(xiàn)了空段的隔離器。例如,如果在中綴方案中輸入是“Able,Charley”,用戶就會知道第二個單元丟失了。在另一個條件中,當(dāng)段使用基于關(guān)鍵碼的標(biāo)識器為其本身識別時,可以識別選擇項。在C++缺省函數(shù)變元的類型中,將會出現(xiàn)另一個條件,如果所有可選變元到達列表的末端,并檢測到段的末端,則分列是成功的。一般說來,只要用戶沒有正確地分列一個段,則該段是可選擇的,用戶跳到下一個段,再一次嘗試,直到到達段的末端。在此,將需要具有跟蹤標(biāo)識器的段。在段的末端,如果非選擇項沒有指定一個值,則分列失敗。如果連續(xù)項的格式是多義的,則不能夠保證正確的結(jié)果。
按照是否是段或項,缺省的工作是不同的。用于項的信息元數(shù)據(jù)保持缺省對象。通過缺省,如果對象支持可復(fù)制的接口,對象從元數(shù)據(jù)被復(fù)制到信息實例。如果它不支持接口,該值被存儲在元數(shù)據(jù)中作為字符串。連同它的分類和Java反射API被用于調(diào)用對象的基于字符串的構(gòu)造器,以供給具有對象的信息。對于段,缺省是到另一個連續(xù)地存儲的信息定義的鏈接。參考信息定義的頂極段將被嫁接到信息元數(shù)據(jù),并產(chǎn)生了組合結(jié)構(gòu)的信息。
鏈接的和過渡項在某些情況中,本機數(shù)據(jù)是自我描述的。例如,行計數(shù)可以放在表格之前。用戶不想在產(chǎn)生的最后規(guī)范信息中包括這個計數(shù),但是,因為它從表示表格的Java陣列的長度中是自明的。在這個例子中,節(jié)點可以選擇性地被標(biāo)識為過渡。它被臨時加到信息上,一旦表格被建好,它將被除去。以這種方式,用戶可以設(shè)置具有兩個不同驅(qū)動器的信息定義,以產(chǎn)生相同的規(guī)范信息。就是說,在一種情況中,如果確定的表格長度沒有計數(shù)指示器,它將不會在節(jié)點中產(chǎn)生整數(shù)段。在這個例子中,表格將是同構(gòu)的,所以變元將是過渡的。
繼續(xù)上面的例子,人們可能注意到,在計數(shù)和表格之間存在固有的連接。結(jié)果,兩者將被標(biāo)識為具有鏈接關(guān)系。兩者將被附加地保持在其它對象的相對的和絕對的路徑名上,并在它們的存取器中加上一個狀態(tài)指示器,可從下面看到。
計數(shù)-提供器計數(shù)-用戶長度-提供器長度-用戶重新定義-提供器重新定義-用戶在重新定義的情況中,提供器提供了字符串或整數(shù)判別式。在遍歷和轉(zhuǎn)換中,提供器項在分列方向必須呈現(xiàn)在它的用戶之前。在格式化方向,首先,占位符被寫入提供器,隨后,填入適當(dāng)?shù)闹怠?yīng)當(dāng)注意,計數(shù)提供器必須使用固定長度工作。
確認子句和關(guān)系信息定義在它的元數(shù)據(jù)項中有占位符,用于確認子句的列表和內(nèi)部信息關(guān)系。按照本發(fā)明的優(yōu)選實施例,只在整個信息已被轉(zhuǎn)換之后,確認子句都運行在轉(zhuǎn)換的信息上。然而,如果需要,對象設(shè)計確實允許每項的確認子句。也存在一個占位符,以指定在一個信息中的表格的欄目和在另一個信息中的表格的欄目之間的關(guān)系。這便利了數(shù)值和連接的映像。
沒有和含有原始數(shù)據(jù)的創(chuàng)建信息的方式顯示在圖13和14中。圖13顯示了一種方法1340,其沒有在應(yīng)用程序541的開始轉(zhuǎn)換原始數(shù)據(jù)。用戶在1320創(chuàng)建一個空信息(如,“DocDef.createNewInstance”),空信息通過信息定義API 1330被填入應(yīng)用的數(shù)據(jù)。因此,創(chuàng)建了信息實例1340。然后,信息實例1340通過另一個應(yīng)用的信息定義API 1350,以便發(fā)送該信息到應(yīng)用程序1360。
當(dāng)需要轉(zhuǎn)換原始數(shù)據(jù)時,使用圖14所示的方法。首先,從應(yīng)用程序1420接收應(yīng)用程序的特殊數(shù)據(jù)1410。在1430創(chuàng)建一個空信息,該空信息不僅填入應(yīng)用程序的特殊數(shù)據(jù)1410,也填入原始轉(zhuǎn)換信息。通過存取器和轉(zhuǎn)換器1440,應(yīng)用程序的特殊數(shù)據(jù)1410被發(fā)送到信息實例1450,其也接收在1430填入的空文檔的信息。例如,可以這樣做
Doc.Def.createDocumentFromFileAPI支持下面的兩種方法創(chuàng)建信息Doc.Def.createDocumentFromFileDoc.Def.createDocumentFromByte然后,通過另一個存取器和轉(zhuǎn)換器1460,該信息可以被轉(zhuǎn)換成為另一個應(yīng)用的應(yīng)用程序特殊數(shù)據(jù)1470,并由應(yīng)用程序1480接收。
現(xiàn)參考圖15(a)到15(d),現(xiàn)將論述根據(jù)本發(fā)明的信息對象的優(yōu)點。按照本發(fā)明,圖15(a)顯示了一種創(chuàng)建信息的一種方法,而沒有轉(zhuǎn)換原始應(yīng)用數(shù)據(jù)。
第一步,由應(yīng)用程序1512創(chuàng)建空信息。這由創(chuàng)建信息定義512完成(例如,“def;∥initialize elsewhere def.createEmptyDocument(docname);”).應(yīng)用程序API 1514被連接到信息定義API 1516,以便通過使用信息定義API 1516填入信息。下一步,可以應(yīng)用信息缺省(例如,“def.a(chǎn)pplyDocumentDefaultValues(docname)”),因此,創(chuàng)建了信息實例1518。相反的方法1520顯示在圖15(b)中,其中,通過信息定義API1524發(fā)送信息實例1522,其被連接到應(yīng)用程序API 1526,并被用于填入段數(shù)值。然后,信息被發(fā)送到應(yīng)用程序1528。
創(chuàng)建具有轉(zhuǎn)換應(yīng)用程序數(shù)據(jù)的信息是比較困難的。如圖15(c)所示,按照本發(fā)明,從應(yīng)用程序1532轉(zhuǎn)換信息到信息實例1538的方法1530通過轉(zhuǎn)換器從應(yīng)用程序1532開始發(fā)送信息。信息定義API 1536創(chuàng)建一個空信息,從應(yīng)用程序1532填入含有數(shù)據(jù)的空信息(即,從文件或從字節(jié)),并從存取器和轉(zhuǎn)換器加入原始轉(zhuǎn)換信息。例如Document Definition def;∥Add Accessors and ConvertersInitialize elsewheredef.createDocumentFromFile(docname,filename)或def.createDocumentFromBytes(docname,byte[])相反的方法顯示在圖15(d)中,其中,信息實例1542通過信息定義API 1544被發(fā)送,以從信息實例1532填入含有數(shù)據(jù)的文件或字節(jié)陣列1546。例如Document Definition def;∥Add Accessors and ConvertersInitialize elsewheredef.storeDocumentToFile(filename)或def.storeDocumentToBytes(byte[])類似于這種處理的分類圖表顯示在圖16和17。
按照本發(fā)明的另一個重要方面,系統(tǒng)100包括分布系統(tǒng)。就是說,用戶可以在一個或多個物理機器(主機)上運行補充了系統(tǒng)100的系統(tǒng)部件,但所有部件工作在一起作為一個應(yīng)用程序。系統(tǒng)100的每一個部件可分布在所有支持平臺上。代理-適配器200靈活地擴展這個能力到參與的應(yīng)用程序。因此,系統(tǒng)100的關(guān)鍵部件(例如,代理-適配器200或集成服務(wù)器26)可以與應(yīng)用程序裝配在一起或遠程訪問,或兩者。眾多的配置設(shè)置是可能的-對于平衡可用性、性能和管理要求的環(huán)境是最佳的。
操作符下面的表格一般地論述了所有當(dāng)前期待的系統(tǒng)操作符,用戶可以使用其為信息定義、轉(zhuǎn)換器定義和篩選定義建立表達。系統(tǒng)100支持這些操作符。
操作符描述&&邏輯“和”‖邏輯“或”! 邏輯“否”= 賦值= 邏輯“等于”!= 邏輯“不等于”+ 一元加號- 一元減號* 乘
/ 除< 小于<=小于或等于> 大于>=大于或等于函數(shù)下一頁的表格一般地論述了所有當(dāng)前期望的系統(tǒng)函數(shù),用戶可以使用其為確認或篩選信息和轉(zhuǎn)換信息數(shù)據(jù)建立表達。每一個描述包括函數(shù)做什么、要求的參數(shù)和返回的數(shù)值。
當(dāng)轉(zhuǎn)換信息數(shù)據(jù)時,用戶基本上使用這些函數(shù)從輸入信息提取信息項數(shù)值并為輸出信息產(chǎn)生信息項。當(dāng)確認或篩選信息時,用戶通常使用這些函數(shù)創(chuàng)建布爾值。這些函數(shù)的參數(shù)值可以是信息項或常數(shù)(字面值)值。
數(shù)據(jù)類型 字面例子整數(shù)1234,0xFF,077,-1234長整型 1234,1234L,-0xFF,077L雙精度數(shù)12.34字符串 “Sagavista”布爾值 真或假增強型小數(shù)(BigDecimal) 12.34a,其中,“a”意思是任意精度日歷日期(2000,2,13)日期-時間(2000,2,13,23,59)日期-格式(“M/d/yyyy”,“ 2/3/2000”)系統(tǒng)100也提供下面論述的函數(shù)。盡管用戶可以為系統(tǒng)100寫用戶自己的函數(shù)。函數(shù) 描述增加日期 向日歷對象數(shù)據(jù)增加一個指定的天數(shù),并返回日歷對象數(shù)據(jù)的結(jié)果增強型小數(shù)到布爾值轉(zhuǎn)換增強型小數(shù)對象到布爾對象增強型小數(shù)到雙精度轉(zhuǎn)換增強型小數(shù)對象到雙精度對象增強型小數(shù)到長整型轉(zhuǎn)換增強型小數(shù)對象到長整型對象增強型小數(shù)到字符串轉(zhuǎn)換增強型小數(shù)對象到字符串對象布爾值到增強型小數(shù)轉(zhuǎn)換布爾對象到增強型小數(shù)對象布爾值到長整型轉(zhuǎn)換布爾對象到長整型對象布爾值到字符串轉(zhuǎn)換布爾對象到字符串對象日歷到字符串 轉(zhuǎn)換日期對象到字符串比較日期 比較兩個日歷對象日期值,并指明第一個日期是否小于、等于或大于第二個日期雙精度值到增強型小數(shù) 轉(zhuǎn)換雙精度值對象到增強型小數(shù)對象雙精度值到長整型 轉(zhuǎn)換雙精度值對象到長整型對象雙精度值到字符串 轉(zhuǎn)換雙精度對象到字符串對象發(fā)現(xiàn)字符串在另一個字符串對象中搜索字符串對象,在其它字符串中返回發(fā)現(xiàn)字符串的第一個字符的位置發(fā)現(xiàn)字在字符串對象中搜索字,并在字符串中返回字的第一個字符的位置找到字符串在另一個字符串對象中搜索字符串對象,并返回到布爾對象找到字在字符串對象中搜索字,并返回到布爾對象得到日期在日歷對象中發(fā)現(xiàn)日期,并返回該月作為整數(shù)對象得到月在日歷對象中發(fā)現(xiàn)月,并返回該月作為整數(shù)對象得到年在日歷對象中發(fā)現(xiàn)年,并返回該年作為整數(shù)對象函數(shù) 描述得到標(biāo)記 把字符串對象分列為標(biāo)記,發(fā)現(xiàn)一個特殊的標(biāo)記,并返回該標(biāo)記作為字符串對象整數(shù)到字符串 轉(zhuǎn)換整數(shù)對象到字符串對象是字母 確定在字符串對象中的所有字符是否是按字母順序排列,返回布爾對象是字母數(shù)字 確定在字符串對象中的所有字符是否是字母數(shù)字,返回布爾對象是數(shù)字 確定在字符串對象中的所有字符是否是數(shù)字,返回布爾對象中間對齊 創(chuàng)建指定長度的字符串對象,并在其中居中另一個字符串對象證明左邊 創(chuàng)建指定長度的字符串對象,并在其中左邊證明另一個字符串對象證明右邊 創(chuàng)建指定長度的字符串對象,并在其中右邊證明另一個字符串對象長整型到增強型小數(shù) 轉(zhuǎn)換長整型對象到增強型小數(shù)對象長整型到布爾值 轉(zhuǎn)換長整型對象到布爾對象長整型到雙精度值 轉(zhuǎn)換長整型對象到雙精度對象長整型到字符串 轉(zhuǎn)換長整型對象到字符串對象查找 在指定另一個字符串對象中的查找表中查找字符串對象,并返回對應(yīng)的值小寫字母 把字符串中的所有字符轉(zhuǎn)換成為小寫字母替換字符串 為一個特殊的字符串對象搜索字符串對象,用替換字符串替換找到的字符串,并把具有替換字符串的字符串對象返回到適當(dāng)?shù)奈恢锰鎿Q字 為一個特殊的字搜索字符串對象,用替換字替換找到的字,并把具有替換字的字符串對象返回到適當(dāng)?shù)奈恢煤瘮?shù)描述尺寸確定字符串對象或字節(jié)陣列對象的尺寸,返回的尺寸作為長整型對象字符串到增強型小數(shù) 轉(zhuǎn)換字符串對象到增強型小數(shù)對象字符串到布爾值 轉(zhuǎn)換字符串對象到布爾對象字符串到日歷轉(zhuǎn)換字符串對象到日歷對象字符串到雙精度值轉(zhuǎn)換字符串對象到雙精度對象字符串到整數(shù)轉(zhuǎn)換字符串對象到整數(shù)對象字符串到長整型 轉(zhuǎn)換字符串對象到長整型對象子陣列 在另一個字節(jié)陣列對象中發(fā)現(xiàn)字節(jié)陣列對象,并返回找到的字節(jié)陣列對象子串在另一個字符串對象中發(fā)現(xiàn)字符串對象,并返回找到的字符串對象剪裁從字符串的前后除去空白大寫字母在字符串對象中轉(zhuǎn)換所有字符為大寫字母增加日期這個函數(shù)增加了長整型對象,其向日歷對象數(shù)據(jù)指定某些天數(shù),并返回日歷對象數(shù)據(jù)的結(jié)果。日歷增加日期(日歷、長整型)參數(shù)類型 數(shù)值(日歷、長整型)日期,數(shù)天增加到日期返回類型 數(shù)值日歷 結(jié)果日期例子
命名購置日期的信息項被定義為日歷對象。對另一個信息,用戶需要在日歷對象中把購置日期的值加五天。用戶將進入下面的函數(shù)增加日期(MsgDef.DatePurchased.5)如果購置日期的數(shù)值相當(dāng)于2000年2月13日,則該函數(shù)將返回日歷對象,該對象的數(shù)值相當(dāng)于2000年2月18日。
增強型小數(shù)到布爾值這個函數(shù)轉(zhuǎn)換增強型小數(shù)對象到布爾對象。
布爾增強型小數(shù)到布爾(增強型小數(shù))參數(shù)類型 數(shù)值(增強型小數(shù)) 要轉(zhuǎn)換的增強型小數(shù)返回類型 數(shù)值何時布爾值真 增強型小數(shù)是不是0的任何數(shù)假 增強型小數(shù)是0增強型小數(shù)到雙精度值這個函數(shù)轉(zhuǎn)換增強型小數(shù)對象到雙精度對象。
雙精度值增強型小數(shù)到雙精度值(增強型小數(shù))參數(shù)類型 數(shù)值(增強型小數(shù)) 要轉(zhuǎn)換的增強型小數(shù)返回類型 數(shù)值雙精度數(shù)值 雙精度值的結(jié)果增強型小數(shù)值到長整型這個函數(shù)轉(zhuǎn)換增強型小數(shù)對象到長整型對象。
長整型增強型小數(shù)到長整型(增強型小數(shù))參數(shù)類型 數(shù)值(增強型小數(shù)) 要轉(zhuǎn)換的增強型小數(shù)返回類型 數(shù)值長整型 長整型的結(jié)果增強型小數(shù)值到字符串這個函數(shù)轉(zhuǎn)換增強型小數(shù)對象到字符串對象。
字符串增強型小數(shù)到字符串(增強型小數(shù))參數(shù)類型數(shù)值(增強型小數(shù))要轉(zhuǎn)換的增強型小數(shù)返回類型數(shù)值字符串 字符串的結(jié)果布爾值到增強型小數(shù)值這個函數(shù)轉(zhuǎn)換布爾對象到增強型小數(shù)對象。
增強型小數(shù)布爾值到增強型小數(shù)(布爾值)參數(shù)類型數(shù)值(布爾值)要轉(zhuǎn)換的布爾值返回類型數(shù)值何時增強型小數(shù) 1 布爾值是真0 布爾值是假布爾值到長整型這個函數(shù)轉(zhuǎn)換布爾對象到長整型對象。
長整型布爾值到長整型(布爾值)參數(shù)類型數(shù)值(布爾值)要轉(zhuǎn)換的布爾值返回類型數(shù)值何時長整型 1L 布爾值是真0L 布爾值是假布爾值到字符串這個函數(shù)轉(zhuǎn)換布爾對象到字符串對象。
字符串布爾值到字符串(布爾值)
參數(shù)類型 數(shù)值(布爾值) 要轉(zhuǎn)換的布爾值返回類型 數(shù)值字符串 字符串的結(jié)果日歷到字符串這個函數(shù)有兩個版本。
下面的函數(shù)轉(zhuǎn)換日歷對象到字符串對象。
字符串日歷到字符串(日歷)參數(shù)類型 數(shù)值(日歷) 要轉(zhuǎn)換的日歷返回類型 數(shù)值字符串 字符串結(jié)果下面的函數(shù)轉(zhuǎn)換日歷對象到字符串對象,使用格式掩碼格式字符串對象。
字符串日歷到字符串(日歷、字符串)參數(shù)類型 數(shù)值(日歷、字符串) 要轉(zhuǎn)換的日歷、格式掩碼返回類型 數(shù)值字符串 在掩碼指定的格式中的字符串結(jié)果例子命名購置日期的信息項被定義為日歷對象。對另一個信息,在格式M/d.yyy中,用戶需要在字符串對象中購置日期的值。用戶將進入下面的函數(shù)日歷到字符串(MsgDef.DatePurchased,“M/d/yyyy”)如果購置日期的數(shù)值相當(dāng)于2000年2月13日,則該函數(shù)將返回字符串對象,該對象的數(shù)值是“2/13/2000”。
比較日期這個函數(shù)比較兩個日歷對象日期值,并指明第一個日期是否小于、等于或大于第二個日期長整型比較日期(日歷、日歷)參數(shù)類型 數(shù)值(日歷、日歷) 第一個日期比較、第二個日期比較返回類型 數(shù)值何時長整型 -1 第一個日期小于第二個日期0 第一個日期等于第二個日期0 第一個日期大于第二個日期雙精度值到增強型小數(shù)這個函數(shù)轉(zhuǎn)換雙精度值對象到增強型小數(shù)對象。
增強型小數(shù)雙精度值到增強型小數(shù)(雙精度值)參數(shù)類型 數(shù)值(雙精度值) 要轉(zhuǎn)換的雙精度值返回類型 數(shù)值增強型小數(shù) 增強型小數(shù)的結(jié)果雙精度值到長整型這個函數(shù)轉(zhuǎn)換雙精度對象到長整型對象。
長整型雙精度值到長整型(雙精度值)參數(shù)類型 數(shù)值(雙精度值) 要轉(zhuǎn)換的雙精度值返回類型 數(shù)值長整型 長整型的結(jié)果雙精度值到字符串這個函數(shù)有兩個版本。
下面的函數(shù)轉(zhuǎn)換雙精度對象到字符串對象。
字符串雙精度到字符串(雙精度值)
參數(shù)類型數(shù)值(雙精度值) 要轉(zhuǎn)換的雙精度值返回類型數(shù)值字符串 字符串結(jié)果下面的函數(shù)轉(zhuǎn)換雙精度對象到字符串對象,使用格式掩碼格式字符串對象。
字符串雙精度值到字符串 (雙精度值、字符串)參數(shù)類型數(shù)值(雙精度值、字符串) 要轉(zhuǎn)換的雙精度值、格式掩碼返回類型數(shù)值字符串 在掩碼指定的格式中的字符串結(jié)果例子命名折扣的信息項被定義為雙精度對象。對另一個信息,在格式#.##中,用戶需要在字符串對象中折扣的值。用戶將進入下面的函數(shù)雙精度值到字符串(MsgDef.Discount,“#.##”)如果折扣的數(shù)值是0.04531,則該函數(shù)將返回字符串對象,該對象的數(shù)值是“0.05”。
發(fā)現(xiàn)字符串這個函數(shù)在另一個字符串對象中搜索字符串對象。如果該函數(shù)發(fā)現(xiàn)了指定的字符串對象,它在其它字符串中返回字符串的第一個字符的位置。
長整型發(fā)現(xiàn)字符串(字符串、字符串)參數(shù)類型數(shù)值(字符串、字符串)要搜索的字符串、要發(fā)現(xiàn)的字符串返回類型數(shù)值 何時長整型 在其它字符串中字符串 字符串被找到的第一個字符的位置。
-1字符串沒有被找到發(fā)現(xiàn)字這個函數(shù)在字符串對象中搜索字。如果該函數(shù)發(fā)現(xiàn)了指定的字,它在字符串中返回字的第一個字符的位置。當(dāng)字在字符串中由空白所限制時,該函數(shù)只能發(fā)現(xiàn)字。
長整型發(fā)現(xiàn)字(字符串、字符串)參數(shù)類型數(shù)值(字符串、字符串)要搜索的字符串、字到發(fā)現(xiàn)返回類型數(shù)值 何時長整型 在字符串中字字被找到的第一個字符的位置。
-1 字沒有被找到找到字符串這個函數(shù)在另一個字符串對象中搜索字符串對象,并返回一個布爾對象。
布爾標(biāo)到找到字符串(字符串、字符串)參數(shù)類型數(shù)值(字符串、字符串)要搜索的字符串、要發(fā)現(xiàn)的字符串返回類型數(shù)值何時布爾值 真 字符串被找到假 字符串沒有被找到找到字這個函數(shù)在字符串對象中搜索字,并返回一個布爾對象。如果字在字符串中由空白所限制時,該函數(shù)只能發(fā)現(xiàn)字。
布爾值找到字(字符串、字符串)參數(shù)類型數(shù)值(字符串、字符串)要搜索的字符串、字到發(fā)現(xiàn)返回類型數(shù)值 何時布爾值 真 字被找到假字沒有被找到得到日這個函數(shù)在日歷對象中發(fā)現(xiàn)日,并返回該日作為整數(shù)對象。
整數(shù)得到日(日歷)參數(shù)類型 數(shù)值(日歷) 要讀取的日歷返回類型 數(shù)值整數(shù) 從1到31的整數(shù)結(jié)果例子命名購置日期的信息項被定義為日歷對象。對另一個信息,在整數(shù)對象中,用戶需要從購置日期的值中獲得日。用戶將進入下面的函數(shù)得到日(MsgDef.DatePurchased)如果購置日期的數(shù)值相當(dāng)于2000年2月13日,則該函數(shù)將返回整數(shù)對象,該對象的數(shù)值是13。
得到月這個函數(shù)在日歷對象中發(fā)現(xiàn)月,并返回該月作為整數(shù)對象。
整數(shù)得到月(日歷)參數(shù)類型 數(shù)值(日歷) 要讀取的日歷返回類型 數(shù)值整數(shù) 從1到12的整數(shù)結(jié)果例子命名購置日期的信息項被定義為日歷對象。對另一個信息,在整數(shù)對象中,用戶需要從購置日期的值中獲得月。用戶將進入下面的函數(shù)得到月(MsgDef.DatePurchased)如果購置日期的數(shù)值相當(dāng)于2000年2月13日,則該函數(shù)將返回整數(shù)對象,該對象的數(shù)值是2。
得到標(biāo)記這個函數(shù)有兩種版本。
下面的函數(shù)把字符串對象分列成為多個標(biāo)記,發(fā)現(xiàn)一個特殊標(biāo)記,并返回該標(biāo)記作為字符串對象。該函數(shù)假定逗號分隔標(biāo)記,并讓用戶指明標(biāo)記返回的位置。
如果要分列的字符串包含一個空值或指定標(biāo)記的位置在范圍之外,則該函數(shù)返回一個空值。
字符串得到標(biāo)記(字符串、整數(shù))參數(shù)類型 數(shù)值(字符串、整數(shù)) 要分列的字符串、發(fā)現(xiàn)標(biāo)記的位置(開始于0)返回類型 數(shù)值字符串指明標(biāo)記或空值下面的函數(shù)把字符串對象分列成為標(biāo)記,發(fā)現(xiàn)一個特殊標(biāo)記,并返回該標(biāo)記作為字符串對象。該函數(shù)讓用戶指定分隔標(biāo)記的字符,并讓用戶指明發(fā)現(xiàn)標(biāo)記的位置。
如果要分列的字符串包含一個空值或指定標(biāo)記的位置在范圍之外,則該函數(shù)返回一個空值。
字符串得到標(biāo)記(字符串、字符串、整數(shù))參數(shù)類型 數(shù)值(字符串、字符串、整數(shù)) 要分列的字符串、分隔器、發(fā)現(xiàn)標(biāo)記的位置(開始于0)返回類型 數(shù)值字符串 指明標(biāo)記或空值例子(1)命名日期的信息項被定義為字符串對象,該對象在格式M/d/yy中包含一個日期。對另一個信息,在字符串對象中,用戶需要從日期的值中獲得月。用戶將進入下面的函數(shù)得到標(biāo)記(MsgDef.Date,“/”,0)如果日期包含“2/13/00”,則該函數(shù)將返回字符串對象,該對象的數(shù)值是2。
(2)命名日期的信息項被定義為字符串對象,該對象在格式MM.dd.yy中包含一個日期。對另一個信息,在字符串對象中,用戶需要從日期的值中獲得日期。用戶將進入下面的函數(shù)得到標(biāo)記(MsgDef.Date,“/”,1)如果日期包含“02.13.00”,則該函數(shù)將返回字符串對象,該對象的數(shù)值是13。
(3)命名日期的信息項被定義為字符串對象,該對象在格式M/d/yyyy中包含一個日期。對另一個信息,在字符串對象中,用戶需要從日期的值中獲得年。用戶將進入下面的函數(shù)得到月的標(biāo)記(MsgDef.Date,“/”,2)如果日期包含“2/13/00”,則該函數(shù)將返回字符串對象,該對象的數(shù)值是2000。
得到年這個函數(shù)在日歷對象中發(fā)現(xiàn)年,并返回該年作為整數(shù)對象。
整數(shù)得到年(日歷)參數(shù)類型 數(shù)值(日歷)要讀取的日歷返回類型 數(shù)值整數(shù) 整數(shù)結(jié)果例子命名購置日期的信息項被定義為日歷對象。對另一個信息,在整數(shù)對象中,用戶需要從購置日期的值中獲得年。用戶將進入下面的函數(shù)得到年(MsgDef.DatePurchased)如果購置日期的數(shù)值相當(dāng)于2000年2月13日,則該函數(shù)將返回整數(shù)對象,該對象的數(shù)值是2000。
整數(shù)到字符串這個函數(shù)有兩種版本。
下面的函數(shù)轉(zhuǎn)換整數(shù)對象到字符串對象。
字符串整數(shù)到字符串(整數(shù))參數(shù)類型 數(shù)值(整數(shù))要轉(zhuǎn)換的整數(shù)返回類型 數(shù)值字符串字符串結(jié)果下面的函數(shù)轉(zhuǎn)換整數(shù)對象到字符串對象,使用格式掩碼格式字符串對象。
字符串整數(shù)到字符串(整數(shù)、字符串)參數(shù)類型 數(shù)值(整數(shù)、字符串)要轉(zhuǎn)換的整數(shù)、格式掩碼返回類型 數(shù)值字符串在指定掩碼的格式中的字符串結(jié)果例子命名數(shù)量的信息項被定義為整數(shù)對象。對另一個信息,在格式#,###中,用戶需要字符串對象中的數(shù)量的值。用戶進入下面函數(shù)整數(shù)到字符串(Msg.Def.Quantity,“#,###”)如果數(shù)量的值是2540,則該函數(shù)返回字符串對象,該對象的值是“2540”。
是字母這個函數(shù)確定在字符串對象中是否所有字符是字母,并返回布爾對象。
布爾值是字母(字符串)參數(shù)類型 數(shù)值(字符串) 字符串到檢查返回類型 數(shù)值 何時布爾值 真 所有字符是按字母順序排列假 不是所有字符是按字母順序排列是字母數(shù)字這個函數(shù)確定在字符串對象中是否所有字符是字母數(shù)字,并返回布爾對象。
布爾值是字母數(shù)字(字符串)參數(shù)類型 數(shù)值(字符串) 字符串到檢查返回類型 數(shù)值 何時布爾值 真 所有字符是字母數(shù)字假 不是所有字符是字母數(shù)字是數(shù)字這個函數(shù)確定在字符串對象中是否所有字符是數(shù)字,并返回布爾對象。
布爾值是數(shù)字(字符串)參數(shù)類型數(shù)值(字符串)字符串到檢查返回類型數(shù)值 何時布爾值 真所有字符是數(shù)字假不是所有字符是數(shù)字中間對齊這個函數(shù)有兩種版本。
下面的函數(shù)創(chuàng)建了由整數(shù)對象指明長度的字符串對象,并在其中居中一個字符串對象。如果居中字符串短于指定的長度,則該函數(shù)在每一邊用相等空間數(shù)填充該字符串。
如果居中字符串長于指定的長度,該函數(shù)返回一個空值。
字符串中間對齊(字符串、整數(shù))參數(shù)類型 數(shù)值(字符串、整數(shù)) 要中間對齊的字符串、返回字符串的長度返回類型 數(shù)值字符串字符串結(jié)果或空值下面的函數(shù)創(chuàng)建了由整數(shù)對象指明長度的字符串對象,并在其中居中一個字符串對象。如果居中字符串短于指定的長度,則該函數(shù)在每一邊用在另一個字符串指定的相等字符數(shù)填充該字符串。
如果居中字符串長于指定的長度,該函數(shù)返回一個空值。
字符串中間對齊(字符串、整數(shù)、字符串)參數(shù)類型 數(shù)值(字符串、整數(shù)、字符串)要中間對齊的字符串、返回字符串的長度、用于填充字符串的字符返回類型 數(shù)值字符串字符串結(jié)果或空值例子命名姓名的信息項被定義為字符串對象。對另一個信息,用戶需要居中在長度20的字符串對象中的姓名的值,如果需用星號(*)則填充。用戶進入下面函數(shù)中間對齊(Msg.Def.Name,20,“*”)如果姓名的值是“Wolfgang A.Mozart”,則該函數(shù)返回字符串對象,該對象的值是“Wolfgang A.Mozart*”。
證明左邊這個函數(shù)有兩種版本。
下面的函數(shù)創(chuàng)建了由整數(shù)對象指明長度的字符串對象,并在其中左邊證明一個字符串對象。如果證明左邊字符串短于指定的長度,則該函數(shù)在右邊用空間填充該字符串。
如果證明左邊的字符串長于指定的長度,該函數(shù)返回一個空值。
字符串證明左邊(字符串、整數(shù))參數(shù)類型數(shù)值(字符串、整數(shù)) 要左對齊的字符串、返回字符串的長度返回類型數(shù)值字符串 字符串結(jié)果或空值下面的函數(shù)創(chuàng)建了由整數(shù)對象指明長度的字符串對象,并在其中左邊證明一個字符串對象。如果證明左邊的字符串短于指定的長度,則該函數(shù)在右邊用在另一個字符串指定的字符填充該字符串。
如果證明左邊的字符串長于指定的長度,該函數(shù)返回一個空值。
字符串證明左邊(字符串、整數(shù)、字符串)參數(shù)類型 數(shù)值(字符串、整數(shù)、字符串)要左對齊的字符串、返回字符串的長度、用于填充字符串的字符返回類型 數(shù)值字符串字符串結(jié)果或空值例子命名姓名的信息項被定義為字符串對象。對另一個信息,用戶需要在長度20的字符串對象中的證明左邊的姓名的值,如果需用空間則填充。用戶進入下面函數(shù)證明左邊(Msg.Def.Name,20,“*”)如果姓名的值是“Franz Shubert”,則該函數(shù)返回字符串對象,該對象的值是“Franz Shubert”。
證明右邊這個函數(shù)有兩種版本。
下面的函數(shù)創(chuàng)建了由整數(shù)對象指明長度的字符串對象,并在其中右邊證明一個字符串對象。如果證明右邊字符串短于指定的長度,則該函數(shù)在左邊用空間填充該字符串。
如果證明右邊的字符串長于指定的長度,該函數(shù)返回一個空值。
字符串證明右邊(字符串、整數(shù))參數(shù)類型 數(shù)值(字符串、整數(shù)) 要右對齊的字符串、返回字符串的長度返回類型 數(shù)值字符串 字符串結(jié)果或空值下面的函數(shù)創(chuàng)建了由整數(shù)對象指明長度的字符串對象,并在其中右邊證明一個字符串對象。如果證明右邊的字符串短于指定的長度,則該函數(shù)在左邊用在另一個字符串指定的字符填充該字符串。
如果證明右邊的字符串長于指定的長度,該函數(shù)返回一個空值。
字符串證明右邊(字符串、整數(shù)、字符串)參數(shù)類型數(shù)值(字符串、整數(shù)、字符串) 要右對齊的字符串、返回字符串的長度、用于填充字符串的字符返回類型數(shù)值字符串 字符串結(jié)果或空值例子命名姓名的信息項被定義為字符串對象。對另一個信息,用戶需要在長度20的字符串對象中的證明右邊的姓名的值,如果需用星號(*)則填充。用戶進入下面函數(shù)證明右邊(Msg.Def.Name,20,“*”)如果姓名的值是“Sergei Rachmaninoff”,則該函數(shù)返回字符串對象,該對象的值是“Sergei Rachmaninoff”。
長整型到增強型小數(shù)這個函數(shù)轉(zhuǎn)換長整型對象到增強型小數(shù)對象。
增強型小數(shù)長整型到增強型小數(shù)(長整型)參數(shù)類型 數(shù)值(長整型) 要轉(zhuǎn)換的長整型返回類型 數(shù)值增強型小數(shù) 增強型小數(shù)結(jié)果長整型到布爾值這個函數(shù)轉(zhuǎn)換長整型對象到布爾對象。
布爾值長整型到布爾值(長整型)參數(shù)類型 數(shù)值(長整型) 要轉(zhuǎn)換的長整型返回類型 數(shù)值 何時布爾值 真長整型是不是0的任何數(shù)假長整型是0長整型到雙精度值這個函數(shù)轉(zhuǎn)換長整型對象到雙精度值對象。
雙精度值長整型到雙精度值(長整型)參數(shù)類型 數(shù)值(長整型) 要轉(zhuǎn)換的長整型返回類型 數(shù)值雙精度值 雙精度值的結(jié)果長整型到字符串這個函數(shù)有兩種版本。
下面的函數(shù)轉(zhuǎn)換長整型對象到字符串對象。
字符串長整型到字符串(長整型)參數(shù)類型 數(shù)值(長整型) 要轉(zhuǎn)換的長整型返回類型 數(shù)值字符串 字符串結(jié)果下面的函數(shù)轉(zhuǎn)換長整型對象到字符串對象,使用格式掩碼格式字符串對象。
字符串長整型到字符串(長整型、字符串)參數(shù)類型 數(shù)值(長整型、字符串) 要轉(zhuǎn)換的長整型、格式掩碼返回類型 數(shù)值字符串 在掩碼指定的格式中的字符串結(jié)果例子命名CustID的信息項被定義為長整型對象。對另一個信息,在格式##,###中,用戶需要字符串對象中的CustID的值。用戶進入下面函數(shù)
長整型到字符串(Msg.Def.CustID,“##,###”)如果CustID的值是10321,則該函數(shù)返回字符串對象,該對象的值是“10321”。
查找這個函數(shù)有兩種版本。
下面的函數(shù)在另一個字符串對象指定的查找表中查找字符串對象,并返回對應(yīng)的值。如果該函數(shù)在查找表中沒有發(fā)現(xiàn)對應(yīng)的值,則返回一個空值。
字符串查找(字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串) 要查找的字符串、查找表返回類型 數(shù)值字符串 在查找表中發(fā)現(xiàn)的值或空值下面的函數(shù)在另一個字符串對象指定的查找表中查找字符串對象,并返回對應(yīng)的值。如果該函數(shù)在查找表中沒有發(fā)現(xiàn)對應(yīng)的值,則返回第三個字符串對象指定的缺省值。
字符串查找(字符串、字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串、字符串) 要查找的字符串、查找表、缺省值返回類型 數(shù)值字符串 在查找表中發(fā)現(xiàn)的值或缺省值例子命名州的信息項被定義為字符串對象。州總是包括另個字母的縮寫,用于美國三個州之一的名稱。對于另一個信息,用戶需要字符串對象中的州的全名。如果沒有全名對應(yīng)縮寫,用戶期望字符串對象包含“N/A”。用戶進入下面函數(shù)查找(Msg.Def.State,“MD=Maryland,PA=Pennsylvania,VA=Virginia”,“N/A”)如果州的值是“VA”,則該函數(shù)返回字符串對象,該對象的值是“Virginia”。
小寫字母這個函數(shù)轉(zhuǎn)換字符串對象中的所有字符為小寫字母。
字符串小寫字母(字符串)參數(shù)類型數(shù)值(字符串)要轉(zhuǎn)換的字符串返回類型數(shù)值字符串 字符串結(jié)果替換字符串這個函數(shù)為一個特殊的字符串對象搜索字符串對象,用替換字符串替換找到的字符串,并把具有替換字符串的字符串對象返回到適當(dāng)?shù)奈恢谩?br>
如果該函數(shù)不能發(fā)現(xiàn)替換的字符串,它返回被它搜索的字符串而沒有改變它。
字符串替換字符串(字符串、字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串、字符串) 要替換的字符串、替換字符串、要搜索的字符串返回類型 數(shù)值字符串 在適當(dāng)位置的具有替換字符串的字符串例子命名地址的信息項被定義為字符串對象。對于Virginia州的地址,在地址中的值有時包括兩個字母的縮寫VA。對于另一個信息,用戶需要字符串對象,其包括地址的值,但州的全名由縮寫字母代替。用戶進入下面函數(shù)替換字符串(“VA”,“Virginia,Msg.Def.Address,)如果地址的值是“Reston,VA 20191”,則該函數(shù)返回字符串對象,該對象的值是“Reston,VA 20191”。
替換字這個函數(shù)為一個特殊的字搜索字符串對象,用另一個字替換找到的字,并把具有替換字的字符串對象返回到適當(dāng)?shù)奈恢谩?br>
該函數(shù)只能在字符串對象中發(fā)現(xiàn)指定的字,如果該字是(1)前后有空白;(2)在字符串內(nèi)的證明左邊后面有空白;(3)在字符串內(nèi)的證明右邊前面有空白。如果該函數(shù)不能發(fā)現(xiàn)該字,它返回被搜索的字符串而沒有改變它。
字符串替換字(字符串、字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串、字符串) 要替換的字、替換字、要搜索的字符串返回類型 數(shù)值字符串在適當(dāng)位置的具有替換字的字符串例子命名地址的信息項被定義為字符串對象。對于Maryland州的地址,在地址中的值有時包括兩個字母的縮寫MD。對于另一個信息,用戶需要字符串對象,其包括地址的值,但州的全名由縮寫字母代替。用戶進入下面函數(shù)替換字(“MD”,“Maryland,Msg.Def.Address,)如果地址的值是“Bethesda,MD 20904”,則該函數(shù)返回字符串對象,該對象的值是“Bethesda,MD 20904”。
尺寸這個函數(shù)有兩種版本。
下面的函數(shù)確定了字符串對象的尺寸,并返回該尺寸作為長整型對象。
長整型尺寸(字符串)參數(shù)類型 數(shù)值(字符串) 要確定的字符串的尺寸返回類型 數(shù)值長整型 字符串的尺寸下面的函數(shù)確定了字節(jié)陣列對象的尺寸,并返回該尺寸作為長整型對象。
長整型尺寸(字節(jié)陣列)參數(shù)類型數(shù)值(字節(jié)陣列) 要確定的字節(jié)陣列的尺寸返回類型數(shù)值長整型 字節(jié)陣列的尺寸字符串到增強型小數(shù)這個函數(shù)轉(zhuǎn)換字符串對象到增強型小數(shù)對象。
增強型小數(shù)字符串到增強型小數(shù)(字符串)參數(shù)類型數(shù)值(字符串)要轉(zhuǎn)換的字符串返回類型數(shù)值增強型小數(shù) 增強型小數(shù)的結(jié)果字符串到布爾值這個函數(shù)轉(zhuǎn)換字符串對象到布爾對象。
布爾值字符串到布爾值(字符串)參數(shù)類型數(shù)值(字符串)要轉(zhuǎn)換的字符串返回類型數(shù)值布爾值 布爾值的結(jié)果字符串到日歷這個函數(shù)有兩種版本。
下面的函數(shù)轉(zhuǎn)換字符串對象到日歷對象。
字符串到日歷(字符串)
參數(shù)類型 數(shù)值(字符串) 要轉(zhuǎn)換的字符串返回類型 數(shù)值日歷 日歷的結(jié)果下面的函數(shù)轉(zhuǎn)換字符串對象到日歷對象,使用格式掩碼解釋字符串對象。
日歷字符串到日歷(字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串)要轉(zhuǎn)換的字符串、格式掩碼返回類型 數(shù)值日歷 日歷的結(jié)果例子命名購置日期的信息項被定義為字符串對象,其在格式M/d/yy中含有日期。對另一個信息,在日歷對象中,用戶需要等于購買日期的值的日歷。用戶將進入下面的函數(shù)字符串到日歷(MsgDef.DatePurchased,“M/d/yy”)如果購置日期的數(shù)值是“2/13/00”,則該函數(shù)將返回日歷對象,該對象的數(shù)值是2000年2月13日。
字符串到雙精度值這個函數(shù)有兩種版本。
下面的函數(shù)轉(zhuǎn)換字符串對象到雙精度對象。
雙精度值字符串到雙精度值(字符串)參數(shù)類型 數(shù)值(字符串) 要轉(zhuǎn)換的字符串返回類型 數(shù)值雙精度值 雙精度值的結(jié)果下面的函數(shù)轉(zhuǎn)換字符串對象到雙精度對象,使用格式掩碼解釋字符串對象。
雙精度值字符串到雙精度值(字符串、字符串)
參數(shù)類型 數(shù)值(字符串、字符串) 要轉(zhuǎn)換的字符串、格式掩碼返回類型 數(shù)值雙精度值 雙精度值的結(jié)果例子命名總成本的信息項被定義為字符串對象,其在格式 ##,###.##.中含有美元金額。對另一個信息,用戶需要在雙精度對象中的總成本值。用戶將進入下面的函數(shù)字符串到雙精度值(MsgDef.TotalCost,“##,###.##”)如果總成本的數(shù)值是“5,137.29”,則該函數(shù)將返回雙精度對象,該對象的數(shù)值是5,137.29。
字符串到整數(shù)這個函數(shù)有兩種版本。
下面的函數(shù)轉(zhuǎn)換字符串對象到整數(shù)對象。
整數(shù)字符串到整數(shù)(字符串)參數(shù)類型 數(shù)值(字符串) 要轉(zhuǎn)換的字符串返回類型 數(shù)值整數(shù) 整數(shù)的結(jié)果下面的函數(shù)轉(zhuǎn)換字符串對象到整數(shù)對象,使用格式掩碼解釋字符串對象。
整數(shù)字符串到整數(shù)(字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串) 要轉(zhuǎn)換的字符串、格式掩碼返回類型 數(shù)值整數(shù) 整數(shù)的結(jié)果例子命名數(shù)量的信息項被定義為字符串對象,其在格式#,###.中含有數(shù)量。對另一個信息,用戶需要在字符串對象中的數(shù)量值。用戶將進入下面的函數(shù)字符串到整數(shù)(MsgDef.Quantity,“#,###”)如果數(shù)量的值是“2,540”,則該函數(shù)將返回整數(shù)對象,該對象的數(shù)值是2,540。
字符串到長整型這個函數(shù)有兩種版本。
下面的函數(shù)轉(zhuǎn)換字符串對象到長整型對象。
長整型字符串到長整型(字符串)參數(shù)類型 數(shù)值(字符串) 要轉(zhuǎn)換的字符串返回類型 數(shù)值長整型長整型的結(jié)果下面的函數(shù)轉(zhuǎn)換字符串對象到長整型對象,使用格式掩碼解釋字符串對象。
長整型字符串到長整型(字符串、字符串)參數(shù)類型 數(shù)值(字符串、字符串) 要轉(zhuǎn)換的字符串、格式掩碼返回類型 數(shù)值長整型長整型的結(jié)果例子命名CustID的信息項被定義為字符串對象,其在格式##,###.中含有數(shù)字。對另一個信息,用戶需要在長整型對象中的CustID值。用戶將進入下面的函數(shù)字符串到長整型(MsgDef.CustID,“##,###”)如果CustID的數(shù)值是“10,321”,則該函數(shù)將返回長整型對象,該對象的數(shù)值是10,321。
子陣列這個函數(shù)在另一個字節(jié)陣列對象中發(fā)現(xiàn)一個字節(jié)陣列對象,并返回找到的字節(jié)陣列對象。
如果該函數(shù)不能夠發(fā)現(xiàn)字節(jié)陣列,它返回一個空值。
字節(jié)陣列子陣列(長整型、長整型、字節(jié)陣列)參數(shù)類型 數(shù)值(長整型、長整型、字節(jié)陣列) 發(fā)現(xiàn)字節(jié)陣列的第一個字節(jié)的位置,發(fā)現(xiàn)字節(jié)陣列的最后一個字節(jié)的位置,發(fā)現(xiàn)包含字節(jié)陣列的字節(jié)陣列;位置從0開始返回類型 數(shù)值字節(jié)陣列 已經(jīng)發(fā)現(xiàn)字節(jié)陣列命名陣列的例子A的信息項被定義為字節(jié)陣列對象。對另個信息,用戶需要字節(jié)陣列對象的陣列的第八個字節(jié)。用戶將進入下面的函數(shù)子陣列(0.,7,MsgDef.Array)子陣列這個函數(shù)在另一個字節(jié)陣列對象中發(fā)現(xiàn)一個字節(jié)陣列對象,并返回找到的字節(jié)陣列對象。
如果該函數(shù)不能夠發(fā)現(xiàn)字節(jié)陣列,它返回一個空值。
字節(jié)陣列子陣列(長整型、長整型、字節(jié)陣列)參數(shù)類型數(shù)值(長整型、長整型、字節(jié)陣列)發(fā)現(xiàn)字節(jié)陣列的第一個字節(jié)的位置,發(fā)現(xiàn)字節(jié)陣列的最后一個字節(jié)的位置,發(fā)現(xiàn)包含字節(jié)陣列的字節(jié)陣列;位置從0開始返回類型數(shù)值字節(jié)陣列已經(jīng)發(fā)現(xiàn)字節(jié)陣列命名陣列的例子A的信息項被定義為字節(jié)陣列對象。對另個信息,用戶需要字節(jié)陣列對象的陣列的第八個字節(jié)。用戶將進入下面的函數(shù)子陣列(0.,7,MsgDef.Array)子串這個函數(shù)在另一個字符串對象中發(fā)現(xiàn)字符串對象,并返回找到的字符串對象。
如果該函數(shù)不能發(fā)現(xiàn)字符串,則返回一個空值。
字符存子串(長整型、長整型、字符串)參數(shù)類型 數(shù)值(長整型、長整型、字符串)發(fā)現(xiàn)字符串的第一個字符的位置,發(fā)現(xiàn)字符串的最后一個字符的位置,發(fā)現(xiàn)包含該字符串的字符串返回類型 數(shù)值字符串已經(jīng)發(fā)現(xiàn)字符串剪裁這個函數(shù)從字符串對象的前后除去空白。
字符串整形(字符串)參數(shù)類型 數(shù)值(字符串) 從字符串對象除去空白返回類型 數(shù)值字符串字符串結(jié)果大寫字母這個函數(shù)在字符串對象中轉(zhuǎn)換所有字符為大寫字母字符串達寫字母(字符串)參數(shù)類型 數(shù)值(字符串) 要轉(zhuǎn)換的字符串返回類型 數(shù)值字符串字符串結(jié)果所示的例子和上面的論述不意味著限制本發(fā)明的范圍。因此,對本發(fā)明的修改和變體對本領(lǐng)域的技術(shù)人員來說是顯而易見的,而沒有遠離權(quán)利要求的精神和范圍。
權(quán)利要求
1.一種集成多個計算機應(yīng)用程序的系統(tǒng),包括企業(yè)信息系統(tǒng),所述企業(yè)信息系統(tǒng)在所述計算機應(yīng)用程序之間傳遞信息;數(shù)據(jù)庫存儲系統(tǒng),其連接到所述企業(yè)信息系統(tǒng),所述數(shù)據(jù)庫存儲系統(tǒng)存儲多個數(shù)據(jù)轉(zhuǎn)換設(shè)置和多個規(guī)則;集成服務(wù),其連接到所述企業(yè)信息系統(tǒng),所數(shù)集成服務(wù)器包括使用存儲在所數(shù)數(shù)據(jù)庫存儲系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換設(shè)置的數(shù)據(jù)轉(zhuǎn)換引擎和使用存儲在數(shù)據(jù)庫存儲系統(tǒng)中的規(guī)則的規(guī)則評價引擎;多個代理-適配器,其連接到所述企業(yè)信息系統(tǒng),每個代理-適配器連接到各自的計算機應(yīng)用程序,每個代理-適配器在所述企業(yè)信息系統(tǒng)和所述各自的計算機應(yīng)用程序之間傳遞信息;以及,連同所述代理-適配器一起操作的信息模式從計算機應(yīng)用程序分列獨立的信息單元。
2.按權(quán)利要求1所述的系統(tǒng),其特征在于所述集成服務(wù)系統(tǒng)拆分和組合從所述企業(yè)信息系統(tǒng)接收的信息,并執(zhí)行基于內(nèi)容的信息到所述計算機應(yīng)用程序的路由。
3.按權(quán)利要求1所述的系統(tǒng),其特征在于每一個所述代理-適配器把從所述企業(yè)信息系統(tǒng)傳遞到所述各自的計算機應(yīng)用程序的信息從系統(tǒng)格式轉(zhuǎn)換成為各自的計算機應(yīng)用程序格式,把從所述各自計算機應(yīng)用程序傳遞到所述企業(yè)信息系統(tǒng)的信息從各自計算機應(yīng)用程序格式轉(zhuǎn)換成為系統(tǒng)格式。
4.按權(quán)利要求1所述的系統(tǒng),其特征在于每一個所述的代理-適配器還在其它的所述代理-適配器和所述各自計算機應(yīng)用程序之間傳遞信息。
5.按權(quán)利要求1所述的系統(tǒng),其特征在于每一個代理-適配器包括一個適配器部分和包容所述適配器部分的代理部分。
6.按權(quán)利要求1所述的系統(tǒng),其特征在于每一個所述代理-適配器包括一個或多個適配器部分和包容所有所述一個或多個適配器部分的代理部分。
7.一種改進的包括代理-適配器的企業(yè)應(yīng)用程序集成系統(tǒng),改進內(nèi)容包括設(shè)置選擇企業(yè)應(yīng)用程序之一的適配器;代理服務(wù)容納所述適配器;對于每一個信息的信息定義,所述適配器將產(chǎn)生接收或應(yīng)答;連接所述適配器到所述選擇的企業(yè)應(yīng)用程序的裝置;以及通過所述連接裝置實施所述適配器的裝置。
8.按權(quán)利要求7所述的改進,其特征在于所述適配器從構(gòu)成源適配器、目標(biāo)適配器、應(yīng)答適配器和請求適配器的組中選擇。
9.一種在第一計算機應(yīng)用程序和第二計算機應(yīng)用程序之間傳遞信息的方法,包括步驟從所述第一計算機應(yīng)用程序提供具有第一數(shù)據(jù)的第一信息;公布所述第一信息以獲得第一個公布的信息;把所述第一個公布的信息的第一個數(shù)據(jù)轉(zhuǎn)換到第二數(shù)據(jù)以獲得第二個信息;公布所述第二個信息以獲得第二個公布的信息;以及把所述第二個公布的信息提供到所述第二個計算機應(yīng)用程序。
10.按權(quán)利要求9所述的方法,其特征在于還包括步驟在公布所述第一個信息之前,把來自第一個計算機應(yīng)用程序格式的所述第一個信息轉(zhuǎn)換到系統(tǒng)格式;以及在把所述第二個公布的信息提供到所述第二個計算機應(yīng)用程序之前,把來自所述系統(tǒng)格式的第二個公布的信息轉(zhuǎn)換到第二個計算機應(yīng)用程序格式。
11.按權(quán)利要求9所述的方法,其特征在于轉(zhuǎn)換所述第一個數(shù)據(jù)的步驟包括從數(shù)據(jù)庫請求所述第二個數(shù)據(jù);以及從所述數(shù)據(jù)庫接收所述第二個數(shù)據(jù)。
12.一種在企業(yè)應(yīng)用程序集成系統(tǒng)中使用的代理-適配器,其集成多個企業(yè)應(yīng)用程序,包括設(shè)置選擇企業(yè)應(yīng)用程序之一的適配器;代理服務(wù)容納所述適配器;所述適配器將產(chǎn)生、接收或應(yīng)答用于每一個信息的信息定義;連接所述適配器到所述選擇的企業(yè)應(yīng)用程序的裝置;以及通過所述連接裝置實施所述適配器的裝置。
13.按權(quán)利要求12所述的代理-適配器,其特征在于所述適配器從構(gòu)成源適配器、目標(biāo)適配器、應(yīng)答適配器和請求適配器的組中選擇。
14.按權(quán)利要求13所述的代理-適配器,其特征在于所述適配器包括源適配器,并還包括用于指定所選擇的多個目標(biāo)之一的裝置,所述源適配器適合于發(fā)送一個或多個信息。
15.按權(quán)利要求13所述的代理-適配器,其特征在于所述適配器包括目標(biāo)適配器,并還包括用于指定所選擇的多個源之一的裝置,從所選擇的源,所述目標(biāo)適配器適合于接收一個或多個信息。
16.按權(quán)利要求13所述的代理-適配器,其特征在于所述適配器包括應(yīng)答適配器,并還包括用于指定所選擇的多個請求器之一的裝置,對該請求器,所述應(yīng)答適配器適合于發(fā)送一個或多個信息。
17.一種在第一計算機應(yīng)用程序和第二計算機應(yīng)用程序之間傳遞信息的方法,包括步驟從所述第一計算機應(yīng)用程序提供具有第一數(shù)據(jù)的第一信息;公布所述第一信息以獲得第一個公布的信息;把所述第一個公布的信息的第一個數(shù)據(jù)轉(zhuǎn)換到第二數(shù)據(jù)以獲得第二個信息;公布所述第二個信息以獲得第二個公布的信息;以及把所述第二個公布的信息提供到所述第二個計算機應(yīng)用程序。
18.按權(quán)利要求17所述的方法,其特征在于還包括步驟在公布所述第一個信息之前,把來自第一計算機應(yīng)用程序格式的所述第一信息轉(zhuǎn)換到系統(tǒng)格式;以及在把所述第二個公布的信息提供到所述第二個計算機應(yīng)用程序之前,把來自所述系統(tǒng)格式的第二個公布的信息轉(zhuǎn)換到第二個計算機應(yīng)用程序格式。
19.按權(quán)利要求18所述的方法,其特征在于轉(zhuǎn)換所述第一個數(shù)據(jù)的步驟包括從數(shù)據(jù)庫請求所述第二個數(shù)據(jù);以及從所述數(shù)據(jù)庫接收所述第二個數(shù)據(jù)。
20.按權(quán)利要求19所述的方法,其特征在于還包括步驟為所選擇的所述計算機應(yīng)用程序之一提供設(shè)置的適配器;提供代理服務(wù)以容納所述適配器;定義所述適配器將產(chǎn)生、接收或應(yīng)答的每一個信息的信息定義;以及連接所述適配器到選擇的計算機應(yīng)用程序。
21.在企業(yè)應(yīng)用集成系統(tǒng)中集成了多個企業(yè)應(yīng)用程序,每一個應(yīng)用程序有各自的本身格式,用于創(chuàng)建、發(fā)送、接收、存儲和處理多個信息,改進包括代理-適配器包括由代理壓縮的多個適配器;其中,每一個由所述代理壓縮的適配器包括裝置,其在由代理包容時執(zhí)行離散函數(shù)。
22.按權(quán)利要求21所述的改進,其特征在于所述代理還包括多個嵌套在此的對象,每一個所述對象適合執(zhí)行離散函數(shù)。
23.按權(quán)利要求22所述的改進,其特征在于嵌套在所述代理中的多個對象的第一個還包括在選擇的一個企業(yè)應(yīng)用程序和系統(tǒng)之間管理代理-適配器連接的裝置。
24.按權(quán)利要求23所述的改進,其特征在于嵌套在所述代理中的多個對象的第二個還包括在選擇的一個企業(yè)應(yīng)用程序和系統(tǒng)之間管理在所述代理-適配器中檢測錯誤的裝置。
25.按權(quán)利要求23所述的改進,其特征在于嵌套在所述代理中的多個對象的第三個還包括管理在所述代理-適配器內(nèi)在選擇的一個企業(yè)應(yīng)用程序和系統(tǒng)之間多個信息的轉(zhuǎn)換的裝置。
26.按權(quán)利要求22所述的改進,其特征在于還包括多個節(jié)點和駐留在所述節(jié)點上的多個系統(tǒng)服務(wù)。
27.按權(quán)利要求26所述的改進,其特征在于所述代理還包括多個嵌套在此的對象,每一個所述對象適合執(zhí)行離散函數(shù)。
28.按權(quán)利要求27所述的改進,其特征在于每一個嵌套在所述代理中的對象適合于在任一個節(jié)點上執(zhí)行它們各自的函數(shù)。
29.按權(quán)利要求27所述的改進,其特征在于每一個嵌套在所述代理中的對象適合于執(zhí)行在系統(tǒng)中嵌套在另一個代理中的各自對象的它們各自的函數(shù)。
30.一種集成多個計算機應(yīng)用程序的系統(tǒng),包括企業(yè)信息系統(tǒng),所述企業(yè)信息系統(tǒng)在所述計算機應(yīng)用程序之間傳遞信息;數(shù)據(jù)庫存儲系統(tǒng)連接到所述企業(yè)信息系統(tǒng),所述數(shù)據(jù)庫存儲系統(tǒng)存儲多個數(shù)據(jù)轉(zhuǎn)換設(shè)置和多個規(guī)則;集成服務(wù)連接到所述企業(yè)信息系統(tǒng),所數(shù)集成服務(wù)器包括使用存儲在所數(shù)數(shù)據(jù)庫存儲系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換設(shè)置的數(shù)據(jù)轉(zhuǎn)換引擎和使用存儲在數(shù)據(jù)庫存儲系統(tǒng)中的規(guī)則的規(guī)則評價引擎;多個代理-適配器連接到所述企業(yè)信息系統(tǒng),每個代理-適配器連接到各自的計算機應(yīng)用程序,每個代理-適配器在所述企業(yè)信息系統(tǒng)和所述各自的計算機應(yīng)用程序之間傳遞信息。
31.按權(quán)利要求30所述的系統(tǒng),其特征在于還包括信息模式,包括多個信息單元;多個存取器,每一個存取器適用于選擇的所述計算機應(yīng)用程序;以及,多個轉(zhuǎn)換器,每一個轉(zhuǎn)換器適用于選擇的所述計算機應(yīng)用程序,并適合于連接到選擇的一個所述的存取器;其中,對應(yīng)所述計算機應(yīng)用程序之一的選擇的一個所述信息單元適合于被存取和被轉(zhuǎn)換,用于與另一個所述計算機應(yīng)用程序通信。
32.按權(quán)利要求31所述的系統(tǒng),其特征在于所述多個存取器和所述多個轉(zhuǎn)換器在系統(tǒng)中分布。
全文摘要
一種代理—適配器結(jié)構(gòu)和在系統(tǒng)中使用信息對象的方法。其集成了配置在聯(lián)網(wǎng)企業(yè)中的應(yīng)用程序。代理壓縮了多個適配器,每一個適配器適合執(zhí)行與各自企業(yè)應(yīng)用程序有關(guān)的離散函數(shù)。這樣的代理是可擴展的,并包括一個或多個嵌套對象。每一個嵌套對象適合于執(zhí)行離散函數(shù),其可能與各自的企業(yè)應(yīng)用程序有關(guān)也可能無關(guān)。信息對象包括信息模式,其適合于使用多個存取器和多個轉(zhuǎn)換器。信息模式是包括多個信息單元的分層數(shù)據(jù)結(jié)構(gòu),每一個信息單元從多個段單元、多個表格單元和多個項單元選擇。項單元包含選擇一個企業(yè)應(yīng)用程序的本基數(shù)據(jù)。
文檔編號G06Q10/00GK1294710SQ99803968
公開日2001年5月9日 申請日期1999年11月18日 優(yōu)先權(quán)日1998年11月18日
發(fā)明者伊憲壽, 約翰·蒂莫西·泰勒, 加里·艾倫·戈登 申請人:Saga軟件有限公司