專利名稱:業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)中的事件記錄的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及業(yè)務(wù)數(shù)據(jù)庫系統(tǒng),尤其涉及一種能用來完成各種事件記錄的方法。智能網(wǎng)的這些業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)構(gòu)成一種更好的應(yīng)用環(huán)境。
電信業(yè)的快速發(fā)展使得運(yùn)營者可向用戶提供大量的各種業(yè)務(wù)。提供高級業(yè)務(wù)的網(wǎng)絡(luò)體系結(jié)構(gòu)稱為智能網(wǎng)。智能網(wǎng)的通用縮寫是IN。
智能網(wǎng)的功能結(jié)構(gòu)如
圖1中所示,圖中,橢圓形代表該網(wǎng)絡(luò)的功能實(shí)體。下面將簡要描述這一結(jié)構(gòu),因?yàn)楹竺鎸⒁獏⒄赵撝悄芫W(wǎng)環(huán)境來描述本發(fā)明。
終端使用者(用戶)接入該網(wǎng)絡(luò)由CCAF(呼叫控制代理功能)來控制。對現(xiàn)有數(shù)字交換機(jī)添加功能之后,可實(shí)現(xiàn)接入IN業(yè)務(wù)。這采用基本呼叫狀態(tài)模型BCSM來完成,BCSM描述了用來對兩個用戶間的呼叫進(jìn)行處理的現(xiàn)有功能。BCSM是建立和保持用戶間的連接路由所需要的呼叫控制功能CCF的一個高層狀態(tài)自動機(jī)描述。利用業(yè)務(wù)交換功能SSF(參見圖1中的實(shí)體CCF和SSF的部分重疊)將功能加入這一狀態(tài)模型,從而可以確定何時必須調(diào)用智能網(wǎng)的業(yè)務(wù)(IN業(yè)務(wù))。調(diào)用了IN業(yè)務(wù)后,含有智能網(wǎng)的業(yè)務(wù)邏輯的業(yè)務(wù)控制功能SCF控制與業(yè)務(wù)有關(guān)的(呼叫嘗試)處理。業(yè)務(wù)交換功能SSF于是將呼叫控制功能CCF連接到業(yè)務(wù)控制功能SCF,并使得業(yè)務(wù)控制功能SCF可控制呼叫控制功能CCF。例如,SCF可請求SSF/CCF執(zhí)行特定呼叫或連接功能,如計(jì)費(fèi)或路由選擇操作。SCF還可向業(yè)務(wù)數(shù)據(jù)功能SDF發(fā)送請求,SDF控制對智能網(wǎng)的與業(yè)務(wù)有關(guān)的數(shù)據(jù)和網(wǎng)絡(luò)數(shù)據(jù)的訪問。SCF于是例如可請求SDF檢索特定的與業(yè)務(wù)有關(guān)的數(shù)據(jù)或更新這一數(shù)據(jù)。
特殊資源功能SRF還對上述功能進(jìn)行補(bǔ)充,SRF提供一些實(shí)現(xiàn)智能網(wǎng)提供的某些業(yè)務(wù)所需要的特殊功能。這些業(yè)務(wù)的例子有協(xié)議轉(zhuǎn)換、語音識別和話音郵件。SCF例如可請求SSF/CCF功能首先建立終端用戶和SRF之間的連接,然后它可請求SRF向終端用戶發(fā)出話音消息。
智能網(wǎng)的其他功能實(shí)體是一些與控制有關(guān)的各種功能,如SCEF(業(yè)務(wù)生成環(huán)境功能)、SMF(業(yè)務(wù)管理功能)和SMAF(業(yè)務(wù)管理接入功能)。其中,SMF包括業(yè)務(wù)控制,SMAF提供與SMF的連接,而SCEF使得可定義、開發(fā)、測試和經(jīng)SMF饋送IN業(yè)務(wù)到SCF。由于這些功能只與網(wǎng)絡(luò)運(yùn)營者的操作有關(guān),因而未在圖1中示出。
圖1中所示的與IN業(yè)務(wù)有關(guān)的這些功能實(shí)體的作用簡述如下。CCAF接收主叫方發(fā)出的業(yè)務(wù)請求。該業(yè)務(wù)請求通常包括起動接收機(jī)和/或主叫方所撥出的一串?dāng)?shù)字。CCAF再向CCF/SSF發(fā)送該業(yè)務(wù)請求以進(jìn)行處理。呼叫控制功能CCF沒有業(yè)務(wù)數(shù)據(jù)但它已被編程可以識別業(yè)務(wù)請求的要求。CCF將呼叫建立過程中斷片刻并將該呼叫的狀態(tài)通知給業(yè)務(wù)交換功能SSF。SSF的任務(wù)是,利用預(yù)定條件解釋該業(yè)務(wù)請求,并由此判斷該請求是否是一個與IN業(yè)務(wù)有關(guān)的業(yè)務(wù)請求。如果是,則SSF形成一個標(biāo)準(zhǔn)的IN業(yè)務(wù)請求并將該請求連同有關(guān)業(yè)務(wù)請求的狀態(tài)的信息一同發(fā)送到SCF。SCF接收該請求并將其解碼。然后,它與SSF/CCF、SRF和SDF相配合,將所需業(yè)務(wù)提供給該終端用戶。
智能網(wǎng)的物理級結(jié)構(gòu)描述了上述功能實(shí)體如何配置于該網(wǎng)絡(luò)的物理實(shí)體中。智能網(wǎng)的物理結(jié)構(gòu)如圖2所示,圖中,矩形或圓形代表物理實(shí)體,橢圓形代表功能實(shí)體。信令連接用虛線和實(shí)際傳遞表示,該實(shí)際傳遞比如是連線表示的語音??蛇x功能實(shí)體用虛線標(biāo)出。圖中所示的信令網(wǎng)是一個根據(jù)SS7(七號信令系統(tǒng)是一個眾所周知的“CCITT(現(xiàn)稱為ITU-T)籃皮書《Specifications of Signalling System No.7》,墨爾本,1988”中所述的信令系統(tǒng))的網(wǎng)絡(luò)。
可包括例如電話、計(jì)算機(jī)或傳真機(jī)的用戶設(shè)備SE,可以直接連接到業(yè)務(wù)交換點(diǎn)SSP也可以連接到網(wǎng)絡(luò)接入點(diǎn)NAP。
業(yè)務(wù)交換點(diǎn)SSP向用戶提供網(wǎng)絡(luò)接入,并控制所有必要的選擇功能。SSP還可檢測任何IN業(yè)務(wù)請求。就其功能而言,SSP包括呼叫控制和業(yè)務(wù)選擇功能。
網(wǎng)絡(luò)接入點(diǎn)NAP是一個包括呼叫控制功能CCF的普通電話交換機(jī),如DX 220交換機(jī),它能區(qū)分需要IN業(yè)務(wù)的呼叫和普通的呼叫,并將需要IN業(yè)務(wù)的呼叫接到適當(dāng)?shù)腟SP。
業(yè)務(wù)控制點(diǎn)SCP包含用來產(chǎn)生IN業(yè)務(wù)的業(yè)務(wù)程序。
業(yè)務(wù)數(shù)據(jù)點(diǎn)SDP是一個包含用戶和網(wǎng)絡(luò)數(shù)據(jù)的數(shù)據(jù)庫,該數(shù)據(jù)庫可被SCP的業(yè)務(wù)程序用以產(chǎn)生定制業(yè)務(wù)。SCP可直接或通過信令網(wǎng)使用SDP業(yè)務(wù)。
智能外設(shè)IP提供特殊業(yè)務(wù),如語音通知和話音及多選擇識別。
業(yè)務(wù)交換和控制點(diǎn)SSCP包括位于同一節(jié)點(diǎn)上的SCP和SSP(換言之,如果圖中所示的SSP節(jié)點(diǎn)既包括一個SCF實(shí)體又包括一個SSF實(shí)體,則該節(jié)點(diǎn)是一個SSCP)。
業(yè)務(wù)管理點(diǎn)SMP的任務(wù)包括數(shù)據(jù)庫(SDP)的管理、網(wǎng)絡(luò)的監(jiān)控和測試以及收集網(wǎng)絡(luò)數(shù)據(jù)。它可與所有其他物理實(shí)體連接。
業(yè)務(wù)生成環(huán)境點(diǎn)SCEP用來定義、開發(fā)和測試IN業(yè)務(wù),和將業(yè)務(wù)輸入SMP。
業(yè)務(wù)輔助控制點(diǎn)AD功能上與業(yè)務(wù)控制點(diǎn)SCP等同,但AD用快速數(shù)據(jù)連接(例如,用ISDN 30B+D連接)直接連接到SSP,而不通過公共信道信令網(wǎng)SS7。
業(yè)務(wù)節(jié)點(diǎn)SN可控制IN業(yè)務(wù)并完成用戶的數(shù)據(jù)傳遞。它直接與一個或多個SSP通信。
業(yè)務(wù)管理接入點(diǎn)SMAP是一個向特定用戶提供與SMP連接的物理實(shí)體。
以上是智能網(wǎng)的簡要描述,它將作為根據(jù)本發(fā)明的方法的描述的背景。感興趣的讀者例如可在ITU-T規(guī)范Q.121X中或在Bellcore的AIN規(guī)范中得到更詳細(xì)的lN描述。
如上所述,SSF在呼叫建立的特定階段向SCF發(fā)送標(biāo)準(zhǔn)的IN業(yè)務(wù)請求。由于業(yè)務(wù)控制點(diǎn)SCP(或業(yè)務(wù)輔助控制點(diǎn)AD)一般是為多個交換機(jī)服務(wù)的網(wǎng)絡(luò)的一個集中式節(jié)點(diǎn),因此在這種集中式業(yè)務(wù)點(diǎn)的數(shù)據(jù)庫中連續(xù)進(jìn)行各種負(fù)載測量也是重要的。例如,為了這些測量,該SCP(或AD)可分為一些如圖3所示的功能部分。最底層用所謂的平臺層31構(gòu)成,該平臺層包括硬件和基本操作系統(tǒng)(如Unix)。平臺層的上面是專用應(yīng)用層32,該專用應(yīng)用層可分為以下三個部分業(yè)務(wù)數(shù)據(jù)庫(SDB)32a,業(yè)務(wù)邏輯程序塊(SLP)32b,和測量程序塊(MP)32c。業(yè)務(wù)邏輯程序是一些可被到達(dá)該節(jié)點(diǎn)的業(yè)務(wù)請求所觸發(fā)的并可提供實(shí)際IN業(yè)務(wù)的程序。這些程序于是完成基于逐個呼叫的處理任務(wù)。另一方面,測量程序塊是執(zhí)行與SCP負(fù)載有關(guān)的處理的實(shí)體。因此,該測量程序塊雖然不完成基于逐個呼叫的處理任務(wù),但它卻例如通過記錄間隔或在某些情況如過載情況下,完成它的操作。
業(yè)務(wù)數(shù)據(jù)庫通常包括數(shù)據(jù)表(DT),表中,每個用戶都有自己的一行Ri(i=1,2,…n)。用戶標(biāo)識符OI作為關(guān)鍵詞包含在每一行的起始處。對本發(fā)明而言,與上述測量有關(guān)的數(shù)據(jù)表是必不可少的。一個這樣的測量表對應(yīng)于叫作(測量)模塊的一組測量對象。若干測量模塊的測量表可置于同一數(shù)據(jù)表,或者每個測量模塊的測量表可形成一個單獨(dú)的數(shù)據(jù)表。因此,一個測量表是指這樣一個與特定模塊相關(guān)的數(shù)據(jù)集合,該數(shù)據(jù)集合可以是系統(tǒng)中數(shù)據(jù)表的一部分,或是整個數(shù)據(jù)表。測量模塊也可以稱作測量組。
本系統(tǒng)中,每個用戶都有專用的一組計(jì)數(shù)器,這些計(jì)數(shù)器其值隨著與該用戶有關(guān)的各種事件的增加而遞增;例如,呼叫計(jì)數(shù)器的值隨每一呼叫而遞增。這些計(jì)數(shù)器的值通過記錄間隔來收集。
圖3仍用智能網(wǎng)的業(yè)務(wù)控制點(diǎn)SCP作為例子,示出了本方法的應(yīng)用環(huán)境。一般來說,可以認(rèn)為本方法能適用于任何業(yè)務(wù)數(shù)據(jù)庫系統(tǒng),該業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)隨機(jī)接收業(yè)務(wù)請求,由系統(tǒng)作出應(yīng)答。下面對這種系統(tǒng)作總體層次上的描述,而不局限于智能網(wǎng)的SCP節(jié)點(diǎn)的描述。
為了呼入的業(yè)務(wù)請求可被應(yīng)答,接到數(shù)據(jù)庫的處理器必須進(jìn)行與特定業(yè)務(wù)相關(guān)的處理。與這些業(yè)務(wù)請求有關(guān)的(測量)對象用數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)表中的各個行來表示,這些行由該處理器來管理。系統(tǒng)在特定長度的記錄間隔期間記錄這些請求和特定事件的數(shù)量。
這些對象可分類成一些對象類別,使得一個類別中的所有對象具有同一類型(如用戶),如果從正被記錄的這些事件角度檢查到這種情況的話。同一類型的對象可組成一個測量組,并可在每個對象類別中定義一個以上的測量組。在每個測量組中,各對象有一些用來記錄這些事件的相應(yīng)的計(jì)數(shù)器。計(jì)數(shù)器值可以隨對象的不同而變化,但每個對象對特定事件的解釋是相同的;例如,某些事件對各用戶而言(即對各對象而言)可能表示一個號碼翻譯請求。
與測量有關(guān)的功能包括以下一些與業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)所處的環(huán)境無關(guān)的記錄功能。
當(dāng)接收到各個請求時,生成一個業(yè)務(wù)邏輯過程的專用實(shí)例,從數(shù)據(jù)表中檢索所需對象的數(shù)據(jù)行,并執(zhí)行所請求業(yè)務(wù)邏輯處理。在一個測量組中,每一單獨(dú)的數(shù)據(jù)行都有一個相應(yīng)的計(jì)數(shù)器組,用來記錄各事件的出現(xiàn)。在業(yè)務(wù)邏輯處理期間,根據(jù)被記錄的所需事件的出現(xiàn),增加計(jì)數(shù)器值。
再者,對于多個不同的測量組,最好用同一處理器來管理業(yè)務(wù)處理、與記錄事件(增加計(jì)數(shù)器值)有關(guān)的功能和計(jì)數(shù)器值的記錄。計(jì)數(shù)器值的記錄是指這樣的操作,在該操作中,以固定間隔檢索計(jì)數(shù)器值,使得這些計(jì)數(shù)器值可被寫入到存儲器(記錄文件)或被發(fā)送到一個用于處理的外部系統(tǒng)。實(shí)際上,使用一個處理器可能是唯一的選擇。其原因是,這些業(yè)務(wù)請求往往有嚴(yán)格的響應(yīng)時間要求,這樣,該數(shù)據(jù)庫必須在RAM存儲器中(而不是在磁盤上)實(shí)現(xiàn)。甚至在所有商用計(jì)算機(jī)系統(tǒng)中,都不可能具有一個以上的處理器對單個RAM存儲器進(jìn)行存取。若干處理器共亨RAM存儲器實(shí)現(xiàn)起來也是困難的,因?yàn)楸仨毐苊庵丿B存儲操作。
在常規(guī)的業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)中,在改變與所述測量組有關(guān)的記錄間隔的長度期間,系統(tǒng)必須把測量組去激活,并且隨后系統(tǒng)還必須把該測量組再激活。這樣,在測量數(shù)據(jù)中會有中斷。
本發(fā)明的目的是為了消除上述缺陷,并提供一種系統(tǒng),在該系統(tǒng)中,可在任何時候改變記錄間隔的長度,而不會中斷測量。
利用根據(jù)本發(fā)明的一種方法可達(dá)到這一目的,這種方法在獨(dú)立權(quán)利要求中闡述。
本發(fā)明的思想是通過在系統(tǒng)中保存有關(guān)與下一預(yù)期的記錄間隔的變化時刻相應(yīng)的時間值的信息,并在每一時刻通過將當(dāng)前時鐘時間值與預(yù)期變化時刻的值進(jìn)行比較,來監(jiān)測記錄間隔的變化。在每一時刻,記錄間隔的長度連續(xù)地被監(jiān)測,并在檢測到記錄間隔的長度的變化時,更新預(yù)期變化時刻的值,相應(yīng)地,也更新當(dāng)前記錄間隔的長度。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,在測量組激活情況下,更新被延時到測量組激活期間賦予預(yù)期變化時刻的初始值已經(jīng)過去的時刻。這種方法具有這樣的優(yōu)點(diǎn)可用一種與記錄間隔的長度及其變化無關(guān)的方法,來使預(yù)期的間隔的變化時刻的第一時間值例如盡快出現(xiàn)(例如在第一整分鐘時刻)。
根據(jù)本發(fā)明的另一個優(yōu)選實(shí)施方式,每個對象都配以成對計(jì)數(shù)器組,它們被交替使用,一方面增加計(jì)數(shù)器值,而另一方面記錄計(jì)數(shù)器值。這樣,用一種盡可能簡單的方法可使記錄間隔的變化時刻與計(jì)數(shù)器組的變化時刻相同,并且不必分別確定這兩者,而可以根據(jù)計(jì)數(shù)器組的變化時刻自動確定記錄間隔的變化時刻。
根據(jù)本發(fā)明的又一個優(yōu)選實(shí)施方式,在每一記錄間隔期間以很短的間隔重復(fù)地啟動記錄和置零過程,從而,該過程在每一啟動期間檢測預(yù)期的記錄間隔的變化時刻是否已經(jīng)到達(dá)以及是否必須向前推進(jìn)該預(yù)期變化時刻。
下面,參照根據(jù)附圖中圖4至8的例子來詳述本發(fā)明及其優(yōu)選實(shí)施方式,在附圖中圖1示出了智能網(wǎng)的功能結(jié)構(gòu),圖2示出了智能網(wǎng)的物理結(jié)構(gòu),圖3說明了事件記錄必不可少的SCP節(jié)點(diǎn)的各部分,圖4說明了根據(jù)本發(fā)明的業(yè)務(wù)數(shù)據(jù)庫系統(tǒng),圖5a示出了說明圖4的系統(tǒng)中所采用的基本循環(huán)規(guī)則的時間軸,圖5b示出了說明圖4的系統(tǒng)中所采用的一般性循環(huán)規(guī)則的時間軸,圖6是說明系統(tǒng)從空閑狀態(tài)轉(zhuǎn)變到正常工作狀態(tài)的流程圖,和圖7a至7d構(gòu)成了描述記錄和置零過程的進(jìn)程的流程圖。
圖8示出了用戶所執(zhí)行的記錄間隔的長度的改變。
圖4說明了根據(jù)本發(fā)明的數(shù)據(jù)庫系統(tǒng)DBS,該系統(tǒng)可以處于例如智能網(wǎng)的SCP節(jié)點(diǎn)中。該數(shù)據(jù)庫包括至少一個基本數(shù)據(jù)表BT和至少一個包含很多連續(xù)的行的測量表MT。本圖示出了一個基本表和三個測量表。
基本表中的一行對應(yīng)于一個單獨(dú)的測量對象(例如,一個用戶)。對象標(biāo)識符OI位于行的起始處。一個基本表中的這些對象屬于同一測量對象類別;換言之,一個基本表中的這些對象是同一類型的。該基本表中的一個對象可包括在幾個不同的測量表MT中,例如,同一用戶可包括在一個記錄間隔例如為5分鐘的呼叫計(jì)數(shù)測量中,和包括在一個記錄間隔例如為24小時的呼叫計(jì)數(shù)測量中。另外,基本表中的每一行都包括這樣一些參數(shù),這些參數(shù)表示所討論的對象作為一個激活對象包括在哪些測量組中。以后,這些參數(shù)的標(biāo)識符用ObjActj(j=1…測量組的個數(shù))表示。這些參數(shù)值可由用戶設(shè)定。
單個測量表由標(biāo)題行HR和連續(xù)的行Ri(i=1…n)構(gòu)成。測量表的單一一行Ri包括與具體對象相關(guān)的參數(shù)和專用的一組與具體測量組相關(guān)的計(jì)數(shù)器。每個測量表都構(gòu)成一個如前面所述的特定測量組。因此,每個測量表都包括一些為其進(jìn)行同樣測量的對象。例如,圖中的一個測量表可能包括一些正為其進(jìn)行呼叫計(jì)數(shù)記錄的用戶,第二個表可能包括一些正為其進(jìn)行事件計(jì)數(shù)器記錄的用戶,而第三個表可能包括一些正為其進(jìn)行呼叫長度記錄的用戶。正如前面所述,即使一個類型的測量(例如,呼叫計(jì)數(shù)記錄)也可以有幾個不同的測量表。
整個測量組的公共參數(shù)位于測量表的標(biāo)題行HR中。這些參數(shù)將在后面進(jìn)行描述。
業(yè)務(wù)邏輯程序?qū)嵗齋LPi要讀出基本表BT中的行,所以基本表的行也包括用于產(chǎn)生該業(yè)務(wù)的參數(shù)。不過,由于它們不屬于本發(fā)明的范圍,因此這里不對它們作詳細(xì)描述。
SSP所發(fā)送的業(yè)務(wù)請求SR含有用戶(對象)標(biāo)識符。當(dāng)SCP接收到這種業(yè)務(wù)請求時,便生成一個業(yè)務(wù)邏輯程序的業(yè)務(wù)邏輯程序?qū)嵗齋LPi,然后這一實(shí)例開始為這一業(yè)務(wù)請求服務(wù)。這可用一種已知的方法來實(shí)現(xiàn),使得,包括在本系統(tǒng)中的業(yè)務(wù)邏輯執(zhí)行塊SLE通過拷貝存儲在塊SLPT中的業(yè)務(wù)邏輯程序模板,生成一個業(yè)務(wù)邏輯實(shí)例SLPi。這一拷貝(即SLPi)被應(yīng)用于所接收的業(yè)務(wù)請求。業(yè)務(wù)邏輯執(zhí)行塊SLE從存儲呼入業(yè)務(wù)請求的緩沖器BF中檢索業(yè)務(wù)請求。
SLPi讀出業(yè)務(wù)請求中的用戶標(biāo)識符,然后,從基本表中讀出與該標(biāo)識符對應(yīng)的行。從該行中,SLPi找出參數(shù)ObjActj(j=1,2…)的值。如果該對象是激活的,則SLPi根據(jù)包括所討論對象的測量表的標(biāo)題行辨別該測量組是否也是激活的。這用包括在該測量表的標(biāo)題行中的參數(shù)來指示,這一參數(shù)以后將用名稱ActNew表示。如果該對象和測量組均是激活的,則SLPi增加位于測量表的所討論對象的行中的一個或多個計(jì)數(shù)器的值。正如圖4所示,用戶通過管理系統(tǒng)(SMP)給出參數(shù)ObjActj和ActNew的值。由于參數(shù)ObjActj以后將被認(rèn)為是一個與特定測量組相關(guān)的參數(shù),因此指示測量組的下標(biāo)j將被省略。
位于測量表的行中的計(jì)數(shù)器最好是成對的,使得,在該行中形成用標(biāo)記CG1和CG2表示的兩個計(jì)數(shù)器組。這些組包括相同的計(jì)數(shù)器(在一個組中的一個或多個計(jì)數(shù)器),這意味著,一個組中的每個計(jì)數(shù)器,在其他組中都有一個相應(yīng)的計(jì)數(shù)器。這些計(jì)數(shù)器依次被增值,使得,時間軸被分為連續(xù)的記錄間隔TP,其中每隔一個用標(biāo)記F表示,而中間的一個用標(biāo)記T表示,如圖5a所示。在記錄間隔F期間,例如計(jì)數(shù)器組CG1中的計(jì)數(shù)器被增值,而在記錄間隔T期間,計(jì)數(shù)器組CG2中的計(jì)數(shù)器被增值,(反之亦然)。依次在每一時刻的間隔由保存在測量表的標(biāo)題行中的奇偶性參數(shù)來確定。當(dāng)SLPi讀出測量表中的標(biāo)題行時,它也讀出奇偶性參數(shù)的值,并因此識別出它必須增加位于測量表的行中的哪個計(jì)數(shù)器的值。奇偶性參數(shù)是一個可以具有值T(真)或F(假)的布爾變量,這就是為何圖中每隔一個時間間隔用標(biāo)記T表示,而中間的時間間隔用標(biāo)記F表示的原因。
上述循環(huán)規(guī)則對應(yīng)于計(jì)數(shù)器成對的情況。不過,這種循環(huán)規(guī)則也可應(yīng)用到每個計(jì)數(shù)器有兩個以上拷貝的情況。這種一般性規(guī)則如圖5b所示,其中每個計(jì)數(shù)器有N個拷貝,這樣,與測量對象對應(yīng)的測量表的行包括與特定測量組相關(guān)的N組計(jì)數(shù)器(其中,每個組包括一個或多個計(jì)數(shù)器)。當(dāng)有兩個以上的拷貝計(jì)數(shù)器時,時間軸也可分為連續(xù)的記錄間隔(TP),使得,在每個記錄間隔中,只有某個計(jì)數(shù)器組的值被增加,并且將需要增值的計(jì)數(shù)器組從一個記錄間隔切換到另一個記錄間隔。由于有N個計(jì)數(shù)器組,因此,每N個記錄間隔有一個選定的計(jì)數(shù)器組被增值。單個計(jì)數(shù)器組中的計(jì)數(shù)器值的記錄和置零在這樣一些記錄間隔期間被執(zhí)行,這些記錄間隔介于所討論的計(jì)數(shù)器組中的計(jì)數(shù)器被增值的記錄間隔之間。記錄和置零被分配于所討論的記錄間隔中的這種方法也可以變化。某個計(jì)數(shù)器組的記錄和置零例如往往可以在一個記錄間隔期間進(jìn)行。如果記錄和置零不能完成,則可在另一個記錄間隔中繼續(xù)進(jìn)行,前提是與該特定記錄間隔對應(yīng)的計(jì)數(shù)器組的記錄和置零已經(jīng)完成。這樣,能夠有效地利用可用時間,但運(yùn)行邏輯變得更復(fù)雜了。
不過,由于計(jì)數(shù)器的成對是優(yōu)選實(shí)施方式,因此,以下將以它作為例子。
業(yè)務(wù)邏輯程序?qū)嵗齋LPi獨(dú)立地執(zhí)行一些事件計(jì)數(shù)器的增值,這意味著,即使它檢測到所討論的測量組和測量對象是激活的,它也盲目地增加這些計(jì)數(shù)器值。另一方面,測量程序塊執(zhí)行這些行中的計(jì)數(shù)器的記錄和置零。測量程序塊可以包括用于對每個測量組中的計(jì)數(shù)器進(jìn)行記錄和置零的子塊CRj。另外,該測量程序塊(或子塊CRj)在每個記錄間隔TP的起點(diǎn)處,通過轉(zhuǎn)換奇偶性值來控制計(jì)數(shù)器的變化時刻。在SLPi增加計(jì)數(shù)器組CG1中的計(jì)數(shù)器值的記錄間隔中,測量程序塊對計(jì)數(shù)器組CG2中的計(jì)數(shù)器進(jìn)行處理,而在SLPi增加計(jì)數(shù)器組CG2中的計(jì)數(shù)器值的記錄間隔中,測量程序塊對計(jì)數(shù)器組CG1中的計(jì)數(shù)器進(jìn)行處理。因此,計(jì)數(shù)器增值(或者說,記錄事件)用與計(jì)數(shù)器記錄和置零過程分開的一個過程來進(jìn)行,所述分開的過程只需利用奇偶性參數(shù)的值而無需知道有關(guān)計(jì)數(shù)器記錄過程進(jìn)行階段的其他事情。以后,這些其值正被增加的計(jì)數(shù)器被稱為激活計(jì)數(shù)器,而那些其值正被記錄和置零的計(jì)數(shù)器被稱為惰態(tài)計(jì)數(shù)器。在某一記錄間隔期間被增加的計(jì)數(shù)器值于是在緊隨所討論記錄間隔的記錄間隔期間被處理。另一方面,在該隨后的記錄間隔期間,上一記錄間隔期間被處理的計(jì)數(shù)器組被增值。
該系統(tǒng)的另一個必不可少的部件是喚醒定時器TM,該定時器用于使處理器PR以短間隔WP(圖5a)啟動測量程序塊(對計(jì)數(shù)器進(jìn)行記錄和置零)。喚醒間隔的長度可以是例如10秒,這意味著該喚醒間隔相對于記錄間隔TP而言是非常短的。該一個或多個喚醒定時器可能是與特定組相關(guān)的或幾個測量組公用的。
利用一個用戶指定的參數(shù),可逐個測量組地確定最大對象數(shù),測量程序塊可在一個執(zhí)行期間(即在一個喚醒期間)來處理這些對象的計(jì)數(shù)器。以后,這一參數(shù)將被稱為Batch。如果在記錄間隔期間(或者說,在檢測到記錄間隔的新的變化時刻之前)有足夠的時間對所有對象的惰態(tài)計(jì)數(shù)器組進(jìn)行處理,則為該測量組設(shè)置一個標(biāo)志,作為在所討論的記錄間隔期間不再需要對測量對象進(jìn)行處理的一個標(biāo)記。即便利用喚醒定時器仍會以短間隔喚醒計(jì)數(shù)器的記錄和置零過程,在所討論的間隔期間也不再對測量對象進(jìn)行處理。
正如前面所述,最好使同一處理器既執(zhí)行測量程序又執(zhí)行業(yè)務(wù)邏輯程序SLPi。圖4中,這一公共處理器用標(biāo)記PR表示。測量程序的執(zhí)行總是在該間隔WP已過去時由定時器TM來啟動。
具有其數(shù)據(jù)表的數(shù)據(jù)庫以及測量程序和業(yè)務(wù)邏輯程序可以都置于同一RAM存儲器中,而該系統(tǒng)還可以使具有其數(shù)據(jù)表的數(shù)據(jù)庫置于磁盤上。這樣,系統(tǒng)包括了兩個處理器,使得,其中一個處理器執(zhí)行業(yè)務(wù)邏輯程序,而另一個處理器處理保存在磁盤上的計(jì)數(shù)器值。總之,某些存儲區(qū)MA1…MA3與配置了測量程序塊、業(yè)務(wù)邏輯程序塊和具有其數(shù)據(jù)表的數(shù)據(jù)庫的處理器相關(guān)聯(lián)。業(yè)務(wù)執(zhí)行塊的存儲區(qū)用標(biāo)記MA4表示,而業(yè)務(wù)邏輯模板存儲區(qū)用標(biāo)記MA5表示。然而,正如以上所述,對于響應(yīng)時間而言,最好是使用RAM存儲器和一個處理器。
如果在所分配的記錄間隔TP中沒有足夠的時間對所有對象(用戶)的惰態(tài)計(jì)數(shù)器組進(jìn)行處理,例如由于處理器過載,則還剩下一些對象未被處理。原則上,未完成的任務(wù)不能堆積。不過,記錄和置零過程利用與特定行相關(guān)的時間標(biāo)記來標(biāo)記所處理過的那些行。(如果有未被處理的行,則不可能被寫入記錄文件并且計(jì)數(shù)器不被置零。)業(yè)務(wù)邏輯程序?qū)嵗つ康卦黾影ㄎ刺幚淼男猩系挠?jì)數(shù)器在內(nèi)的所有計(jì)數(shù)器的值。然而,這些行以后不能被處理,因?yàn)樗鼈兊闹挡辉賮碜蚤L度為記錄間隔的一個間隔,例如5分鐘的間隔。當(dāng)測量程序開始處理這些行時,分別檢查計(jì)數(shù)器值是否能寫入記錄文件。因此,雖然這些計(jì)數(shù)器值盲目地被增加,但在隨后的處理間隔期間,檢查其值是否有效,可否寫入記錄文件。
利用快速重復(fù)的喚醒,可以處理不同測量組的變化的記錄間隔。因此,對于不同測量組所具有的不同長度的每個記錄間隔,系統(tǒng)不包含各自的計(jì)數(shù)器(定時器),但系統(tǒng)卻有唯一一個以短間隔例如每10秒鐘喚醒測量程序的計(jì)數(shù)器。在每一喚醒期間,測量程序檢查它是否必須開始對與具體對象相關(guān)的計(jì)數(shù)器進(jìn)行處理(記錄和置零)。于是,例如在處理器過載的情況下,可以確信,在過載減輕的某點(diǎn)處,該定時器將計(jì)滿而該定時器所觸發(fā)的記錄和置零過程知道在每一情況下它必須做什么。因此,利用一種比使用一些單獨(dú)的定時器更容易的方法,來解決處理器滯后問題。如果使用單獨(dú)的定時器,由于定時器總是被置為同一間隔值,因此,由超負(fù)荷的處理器負(fù)載所造成的滯后會引起一些問題。這樣的話,則應(yīng)當(dāng)用某種方法來處理該時間和觸發(fā)時刻之間的同步。
下面是根據(jù)本發(fā)明的一種系統(tǒng)中必不可少的參數(shù)的描述。下列參數(shù)是測量對象組的公共參數(shù),這些參數(shù)包括在每個測量表MT的標(biāo)題行中
參數(shù)類型為整數(shù)變量I、布爾變量B和實(shí)時標(biāo)記D(日、時、分、秒)。記錄間隔的長度以分鐘數(shù)給出。
用戶可以定義測量組激活參數(shù)ActNew、記錄間隔長度IntervNew和某段時間所處理的最多行數(shù)Batch的值。表中所列的其他參數(shù)是系統(tǒng)內(nèi)部參數(shù),它們不能被用戶定義。指示最新記錄間隔的變化時刻(LatInterTime)、第二最新記錄間隔的變化時刻(SecondInterTime)、再以前的記錄間隔的變化時刻(ThirdInterTime)和下一記錄間隔的變化時刻(FollInterTime)的時間標(biāo)記最好是分鐘指示值,使得它們?yōu)檎麛?shù)變量類型,因?yàn)橄到y(tǒng)中所用的時間是離散的。
最新奇偶性的變化時刻(LatParityTime)和此前的奇偶性的變化時刻(PreParityTime)也必須被保留,因?yàn)樗鼈兺ǔ2皇蔷_地與所確定的記錄間隔的變化時刻一樣。其原因是,如果測量程序例如每10秒啟動,則奇偶性的變化時刻一般比所確定的記錄間隔的變化時刻遲幾秒鐘。因此,需要這些參數(shù),以便可以確定由其得到計(jì)數(shù)器值的準(zhǔn)確的間隔的長度。參數(shù)LatFinished指示在當(dāng)前記錄間隔期間一個測量表中的所有行的處理是否已完成(計(jì)數(shù)器值是否已被記錄和置零)。
測量表中的單一一行至少包括下列與特定測量對象相關(guān)的參數(shù)
與特定行相關(guān)的時間標(biāo)記(LatMade和PreMade)是分鐘指示值,類似于指示記錄間隔的變化時刻的參數(shù)。以后,這些與特定行相關(guān)的時間標(biāo)記用標(biāo)記P(PreMade)和標(biāo)記L(LatMade)來表示。
圖4示出了位于測量組的對象行和標(biāo)題行中的這些參數(shù)。
圖6示出了系統(tǒng)從空閑狀態(tài)600轉(zhuǎn)換到正常工作狀態(tài)即所謂熱啟動狀態(tài)700的流程圖。當(dāng)系統(tǒng)接收到所謂冷啟動信號時(階段601),與特定模塊相關(guān)的標(biāo)志(參數(shù)Alive)被置為零,以指示所討論的激活是一個冷啟動(階段602)。接著,在階段603使喚醒定時器(TM,如圖4)在短喚醒間隔(WP,如圖5a)后計(jì)滿,然后系統(tǒng)轉(zhuǎn)變到所謂熱啟動狀態(tài)700。
圖7a至7d示出了測量程序塊所執(zhí)行的記錄和置零過程的進(jìn)程的流程圖。當(dāng)該過程處于熱啟動狀態(tài)并且定時器TM計(jì)滿(階段701)時,計(jì)數(shù)器的記錄和置零過程開始。在最終階段,使定時器又在預(yù)定時間WP后計(jì)滿(階段745,如圖7d)。當(dāng)定時器又計(jì)滿時,便又執(zhí)行一遍記錄過程,然后象前面階段中那樣,使定時器又計(jì)滿。正如以上所述,計(jì)滿之間的間隔可以是例如10秒鐘。實(shí)際上,測量表的一行的一個執(zhí)行過程所用的時間可能是約50μs,因此,如果在10個不同的模塊中在某段時間有例如100行要處理時,則一個執(zhí)行所用的時間約50ms。
當(dāng)定時器已計(jì)滿時,系統(tǒng)進(jìn)到階段702,在此,從模塊的標(biāo)題行中檢索當(dāng)前時間的值和模塊(或者說,測量組)參數(shù)。該當(dāng)前時間的值等同于定時器計(jì)滿的時刻,并且這一值在由計(jì)滿(喚醒)引起的一個執(zhí)行所占用的整個時間段內(nèi)保持相同。這一時間值用來確定當(dāng)前分鐘指示值(例如,以某年的起始點(diǎn)來計(jì))。正如前面所述,本系統(tǒng)中所用的時間是離散的。優(yōu)選離散間隔是一分鐘,同時,這是最短的可能的記錄間隔。
該程序從測量表的標(biāo)題行中檢索用戶可指定的參數(shù)ActNew、IntervNew和Batch的值。接著,程序在階段703a中檢測所討論的激活是否是冷啟動信號后記錄過程的第一次激活。這通過檢測與上述模塊相關(guān)的標(biāo)志的值是否為零來實(shí)現(xiàn)。如果為零,則程序在階段703b中檢測與用戶指定的模塊相關(guān)的激活參數(shù)ActNew的值是否大于零(或者說,模塊是否已被激活)。如果大于零,則將上述參數(shù)的值置為ActNew=1,它表示該用戶所完成的最新的模塊激活,而冷啟動標(biāo)志被關(guān)掉,或者說,將參數(shù)Alive的值置為1(階段704)。據(jù)此,只有通過冷啟動并當(dāng)模塊激活時,才進(jìn)到階段704。在任何其他情況下,程序從階段703a或703b進(jìn)到階段705,在此,程序檢測所討論的模塊是否連續(xù)為惰態(tài)(測量是否還未被激活)。這通過檢測使用中的激活參數(shù)Act是否小于或等于零以及用戶指定的激活參數(shù)ActNew是否也小于或等于零(或者說,是不是模塊激活參數(shù)的原值為零而新值也為零)來實(shí)現(xiàn)。如果是(或者說,模塊連續(xù)為惰態(tài)),則程序直接進(jìn)到階段745,在此,使喚醒定時器TM又計(jì)滿。
如果不是這樣,則程序進(jìn)到階段706,在此,檢測在計(jì)數(shù)器記錄和置零過程的最新喚醒后(測量已被終止)模塊是否已切換到惰態(tài)。這通過檢測使用中的激活參數(shù)Act是否大于零以及用戶指定的激活參數(shù)ActNew是否小于或等于零來實(shí)現(xiàn)。如果是,則將使用中的激活參數(shù)置為零。這在階段708中被實(shí)現(xiàn),但是只有在該時刻適合計(jì)數(shù)器值的記錄和置零過程進(jìn)行所討論的變化時,程序才能進(jìn)到這一階段。該時刻的合適與否在階段707中被檢測,在此,程序檢測所有的行是否已被處理完或者記錄間隔的下一變化時刻是否已過去。這通過檢測參數(shù)LatFinished的值是否為1或者激活時所確定的參數(shù)CurrentMinute的值是否大于或等于指示下一個預(yù)期的間隔的變化時刻的參數(shù)FollInterTime的值來實(shí)現(xiàn)。
當(dāng)在階段708中通過將使用中的激活參數(shù)置為零而終止測量模塊時,程序直接到終點(diǎn),在此,使定時器又計(jì)滿。
如果變化時刻還不合適或模塊尚未被終止(或者說,如果模塊是激活的),則程序在階段709中檢測在前一執(zhí)行后模塊是否被切換到激活狀態(tài),或者說,在前一執(zhí)行后模塊是否被起動。這通過檢測用戶指定的激活參數(shù)ActNew的值是否小于100(用戶的激活對應(yīng)于值1,表示模塊正被激活)來實(shí)現(xiàn)。如果是,即,如果在前一喚醒后模塊已被起動,則程序進(jìn)到初始化階段710。在任何其他情況下,程序進(jìn)到階段711,在此,檢測記錄間隔的長度是否已改變。
在上述的階段704中,用戶指定的激活參數(shù)ActNew的值因此被人為地置為1,使得,在所有必要的情況下,程序可從階段709進(jìn)到初始化階段710。這種情況可以是例如在備份式計(jì)算機(jī)系統(tǒng)中出現(xiàn)的切換。當(dāng)后備方啟動(冷啟動)時,這可以確保,即使在切換出現(xiàn)時與用戶指定的模塊相關(guān)的激活參數(shù)具有一個指示激活狀態(tài)的值(本例中,值為1或101),記錄過程也將進(jìn)到初始化階段710。因此該切換不需要任何附加操作,而即使在測量組已激活的情況下系統(tǒng)也按照用戶剛激活了測量組的情況運(yùn)行。
在初始化階段710中,使用中的激活參數(shù)Act被賦予用戶指定的參數(shù)ActNew的值,指示使用中的記錄間隔的長度的參數(shù)Interv被賦予用戶定義的參數(shù)IntervNew的值,而用戶指定的激活參數(shù)的值增加了100,使得,此后在階段709中可以檢測到模塊此刻尚未被激活。另外,將時間標(biāo)記LatInterTime、SecondInterTime、ThirdInterTime和FollInterTime置為上舍入到下一整分鐘的當(dāng)前時間(CurrentMinute)的值。
與特定模塊相關(guān)的參數(shù)于是必須初始化到一個遲于激活時間的時間。這種恰當(dāng)?shù)某跏蓟绕浯_保了所有與原行相關(guān)的時間標(biāo)記早于或等于間隔的變化時刻,這樣,判斷程序是否寫記錄文件的不等式(以后描述)也就是真或假,而與例如與具體對象相關(guān)的測量被起動的時間無關(guān)。
在初始化階段,將奇偶性變量Parity的值置為零,而將參數(shù)LatFinished的值置為1,使得,在模塊起動后的第一不足分鐘期間,不對測量表的行進(jìn)行處理。另外,系統(tǒng)保存關(guān)于兩個最新的奇偶性的變化時刻的信息。在初始化階段,將這些參數(shù)(LatParityTime和PreParityTime)置為一個指示當(dāng)前確切時間的時間標(biāo)記(日、時、分、秒)。
在階段711中,如上所述,程序檢測記錄間隔的長度是否已改變。這通過檢測新值(IntervNew)是否等于原值(Interv)來實(shí)現(xiàn)。如果是(或者說,沒有改變),則程序直接進(jìn)到階段716,在此檢測預(yù)期的記錄間隔的變化時刻是否已經(jīng)到來或已過去。
如果用戶已經(jīng)改變了記錄間隔的值,則在階段713中將該值更新為新的記錄間隔的值,并在階段715中計(jì)算下一記錄間隔的變化時刻。不過,這些操作只有在當(dāng)前時刻合適時才被執(zhí)行。該時刻的合適與否在階段712中通過執(zhí)行與階段707中相同的檢測來檢測。于是,只有當(dāng)在當(dāng)前記錄間隔期間有足夠的時間來處理所有的行,或者當(dāng)下一記錄間隔的變化時刻(它根據(jù)記錄間隔的原長度來計(jì)算,或在模塊激活情況下在階段710中被初始化到下一整分鐘)已經(jīng)到來或已過去,才執(zhí)行這些操作(階段713中的更新)。如果這兩個條件有一個被滿足,則在階段713中將記錄間隔的長度更新為其新值。在下一記錄間隔的變化時刻的更新(階段715)可被執(zhí)行之前,有一個附加條件必須被滿足并在階段714中被檢測。在這一階段中,程序檢測自模塊激活以后第一整分鐘的變化是否已過去。這通過檢測FollInterTime的值是否等于參數(shù)LatInterTime的值(這些值直到第一整分鐘后第一喚醒出現(xiàn)時才相等;當(dāng)?shù)谝徽昼娨堰^去后,參數(shù)FollInterTime立刻被更新,如后面所述)來實(shí)現(xiàn)。如果這些值不相等,則該第一分鐘已過去而程序可執(zhí)行下一變化時刻的更新。因此,模塊的激活時刻后的第一間隔的變化時刻(FollInterTime)總是被置為第一整分鐘,只有在此以后,才被置為例如數(shù)小時,如果新的記錄間隔的長度為一小時的話。因此,這一第一間隔的變化時刻(第一整分鐘)是指示間隔的變化時刻的時間標(biāo)記在階段710中所初始化的時刻。所期望的是,程序在模塊激活后的第一不足分鐘期間并不對行進(jìn)行處理。為此,在階段710中將參數(shù)LatFinished的值置為1。這是因?yàn)椋c特定行相關(guān)的處理標(biāo)記無論如何都將被置為下一分鐘,這樣,在第一不足分鐘期間所做的任何行的處理不被利用(因?yàn)樵谶@種情況下,與特定行相關(guān)的標(biāo)記沒有指示它是原標(biāo)記還是新標(biāo)記,或者說,它出現(xiàn)在激活前的時間還是在激活后的時間)。因此,僅在第一整分鐘后才進(jìn)行模塊激活后的行處理(記錄和置零計(jì)數(shù)器值)。
為下一間隔的變化時刻計(jì)算一個新的估算(階段715),使得,首先將當(dāng)前分鐘(CurrentMinute)的值除以記錄間隔的長度并保存余數(shù)。通過將當(dāng)前分鐘減去所得到的余數(shù)來得到這一新的估算,并將記錄間隔的長度與該差值相加(即,F(xiàn)ollInterTime:=CurrentMinute-mod(CurrentMinute/Interv)+Interv)。于是,根據(jù)該當(dāng)前時間和記錄間隔的長度來確定下一變化時刻。因此,該計(jì)算不用考慮參數(shù)LatInterTime的值,因?yàn)椋缭谶^載情況下,處理器可能已滯后,這樣,相應(yīng)的滯后會出現(xiàn)在下一變化時刻的值中。
然后,程序在階段716中檢測下一記錄間隔的變化時刻是否已經(jīng)到來。這通過檢測參數(shù)CurrentMinute的值(或者說,忽略秒數(shù)時從時鐘時間得到的分鐘數(shù))是否大于或等于參數(shù)FollInterTime的值來實(shí)現(xiàn)。如果不是,則程序直接進(jìn)到階段720。在任何其他情況下,程序轉(zhuǎn)向階段718,在此,向前推進(jìn)與間隔的變化時刻有關(guān)的時間標(biāo)記。這樣,指示最新的記錄間隔的變化時刻的參數(shù)LatInterTime被賦予值CurrentMinute-mod(CurrentMinute/Interv),指示此前的記錄間隔的變化時刻的參數(shù)SecondInterTime被賦予參數(shù)LatInterTime的原值,而指示第三最新的記錄間隔的變化時刻的參數(shù)ThirdInterTime被賦予參數(shù)SecondInterTime的原值。此時,程序于是不象參數(shù)LatInterTime的值那樣給出參數(shù)FollInterTime的值(即,已經(jīng)過去的變化時刻的值),而是根據(jù)當(dāng)前分鐘的值以上述方法來計(jì)算參數(shù)LatInterTime的值,使得,任何可能的處理器滯后都不會影響該參數(shù)的值。參數(shù)LatInterTime的值于是更新為等于下舍入到一個整分鐘的當(dāng)前時間減去上述余數(shù)的值,該余數(shù)用以補(bǔ)償任何滯后,其值一般為零。
然而,如果階段716中所檢測到的間隔的變化時刻是模塊激活后的第一整分鐘,那么時間標(biāo)記不向前推進(jìn)。這一事實(shí)可在階段717中通過利用與階段714中類似的檢測(即,如果此時參數(shù)Foll-InterTime的值不等于參數(shù)LatInterTime的值,則模塊激活后的第一整分鐘已經(jīng)過去)來檢測。在階段718中時間標(biāo)記推進(jìn)后,程序在階段719中為下一間隔的變化時刻計(jì)算一個新的值(或者說,F(xiàn)ollIn-terTime=CurrentMinute-mod(CurrentMinute/Interv)+Interv)。這也可以這樣來執(zhí)行,即在階段717中檢測間隔的變化時刻究竟是不是模塊激活后的第一整分鐘。在階段719中,程序還變換奇偶性值,并向前推進(jìn)最新和第二最新的奇偶性的變化時刻,使得,將參數(shù)LatParityTime置為當(dāng)前實(shí)際時間標(biāo)記的值,和將參數(shù)PreParity-Time置為參數(shù)LatParityTime的原值。另外,由于正進(jìn)行該行的處理,因此,此時將參數(shù)LatFinished置為零,使得,系統(tǒng)知道該行的處理還未結(jié)束。還應(yīng)注意,即便該行的處理未完成而程序檢測到間隔的變化時刻已經(jīng)過去,參數(shù)LatFinished仍被重置為零。
然后,程序在階段720(程序可能已直接從階段716到達(dá)該階段)中檢測該行的處理過程是否已結(jié)束,或者說,所有的行是否已經(jīng)被處理完(參數(shù)LatFinished的值是否為1)。如果是,則程序直接進(jìn)到階段745,在此將定時器復(fù)位。如果該行的處理未結(jié)束或如果還未開始(即,參數(shù)LatFinished的值為零),則程序進(jìn)到階段721,在此將該行的計(jì)數(shù)器初始化。接著,程序在模塊的測量表中讀下一行。如果順利讀出了新的行,則程序進(jìn)到階段725。在任何其他情況下,程序?qū)⑺行袠?biāo)記為已讀(將參數(shù)LatFinished置為值1,階段724),并且程序直接進(jìn)到階段745,在此使定時器又計(jì)滿。
在階段725中,程序從行中檢索對象的參數(shù),如用戶標(biāo)識符(OI)、與具體對象相關(guān)的激活參數(shù)(ObjAct)、最新行的處理的時間標(biāo)記(LatMade)和第二最新的行的處理的時間標(biāo)記(PreMade)。然后,將該行的計(jì)數(shù)器的值加1(階段726)。當(dāng)計(jì)數(shù)器值被增加后,程序進(jìn)到階段727,在此,檢測所討論的對象是否連續(xù)處于惰態(tài)。這通過檢測與具體對象相關(guān)的激活參數(shù)ObjAct的值是否為100(它被選定為檢測中所要用的值)來實(shí)現(xiàn)。如果是,則程序經(jīng)階段744進(jìn)到階段722,以便讀下一行(它是根據(jù)該行的計(jì)數(shù)器的值到達(dá)的),或者進(jìn)到階段745以設(shè)置定時器。在任何其他情況下,程序在階段728中檢測該對象在最新喚醒后是否可能被切換到惰態(tài)。這通過檢測與具體對象相關(guān)的激活參數(shù)ObjAct是否小于或等于零來實(shí)現(xiàn)。如果是,則與具體對象相關(guān)的激活參數(shù)的值被置為100,從現(xiàn)在開始它將表示該對象連續(xù)為情態(tài)。這在階段729中實(shí)現(xiàn),程序由此直接進(jìn)到階段741。如果在階段728所進(jìn)行的檢測結(jié)果為否(或者說,對象是激活的),則程序進(jìn)到階段730,在此,檢測該對象在最新執(zhí)行后是否被切換到激活狀態(tài),或者說,與該對象有關(guān)的測量是否正好已被啟動。這通過檢測與具體對象相關(guān)的激活參數(shù)ObjAct的值是否小于100而大于零(或者說,該值是否為1)來實(shí)現(xiàn)。如果是,即如果該對象正好已被激活,則程序進(jìn)到對象初始化階段732,在此,程序?qū)⑽挥谠撔兄械臅r間標(biāo)記LatMade和PreMade初始化為緊隨當(dāng)前分鐘的下一分鐘,并將該對象的激活參數(shù)置為該參數(shù)的上一個值(1)加100(ObjAct:=ObjAct+100)。然后,程序直接進(jìn)到階段741,在此檢查奇偶性值,隨后將一個或另一個計(jì)數(shù)器組置零(階段742或階段743)。將被復(fù)位的計(jì)數(shù)器組取決于奇偶性值。程序從這些階段進(jìn)到階段744,在此檢測該行的計(jì)數(shù)器是否已達(dá)到用戶指定的某段時間所處理的行數(shù)(Batch)。如果已達(dá)到,則程序進(jìn)到階段745,在此使定時器又計(jì)滿,而如果未達(dá)到,則程序返回到階段722,以便讀下一行。
如果程序在階段730中檢測到所討論的事件不是對象從惰態(tài)轉(zhuǎn)換到激活狀態(tài)的事件,則程序進(jìn)到階段734,在此檢測上述關(guān)于時間標(biāo)記P的不等式[ThirdInterTime]<P≤[SecondInterTime]是否成立(其中,中括號代表時間標(biāo)記的值)。如果成立,則程序直接跳到階段736,在此檢查奇偶性值,隨后根據(jù)奇偶性值,轉(zhuǎn)向讀出第一或第二計(jì)數(shù)器組的值(階段737或階段738)。然后,程序在階段739中寫記錄文件。如果與時間標(biāo)記P相關(guān)的不等式不成立,則程序在階段735中檢測與時間標(biāo)記L(LatMade)相關(guān)的不等式[ThirdInterTime]<L≤[SecondInterTime]是否成立,如果成立,則程序進(jìn)到階段736,以檢查奇偶性變量的值,程序由此按上述方式繼續(xù)進(jìn)行,直至寫記錄文件。除了將位于行中的模塊和對象標(biāo)識符以及與具體對象相關(guān)的計(jì)數(shù)器值寫入記錄文件之外,程序還將上述參數(shù)的值寫入記錄文件。
寫完以后,或如果與時間標(biāo)記L相關(guān)的不等式不成立而離開階段735后,程序進(jìn)到階段740,在此更新位于行中的這些時間標(biāo)記(標(biāo)記P和L)。標(biāo)記P被賦予標(biāo)記L的原值,而標(biāo)記L被賦予等于上舍入的當(dāng)前分鐘的值。時間標(biāo)記更新后,程序進(jìn)到階段741,以檢查奇偶性,過程由此按上述方式繼續(xù)進(jìn)行。因此,當(dāng)行已被處理完后,與特定行相關(guān)的時間標(biāo)記被更新。
因此,利用圖5a(或5b)所示的循環(huán)規(guī)則,以短間隔完成了上述計(jì)數(shù)器值的記錄和置零過程,其中,(奇偶性)參數(shù)的值在每一間隔中確定計(jì)數(shù)器組,該計(jì)數(shù)器組的值在每一行記錄的。
另外,應(yīng)當(dāng)注意,上述記錄和置零過程是處理一個測量表的描述。為了補(bǔ)充以上描述,可以認(rèn)為,當(dāng)記錄和置零過程檢測到模塊剛被激活時(階段709),時間標(biāo)記LatInterTime、Second-InterTime和ThirdInterTime被初始化(階段710)到最近的下一整分鐘,或者說,初始化到與時間標(biāo)記FollInterTime相同的時刻。在第一整分鐘后的喚醒期間,程序檢測到間隔的變化時刻FollInterTime已經(jīng)過去(階段716),但不必更新間隔的變化時刻LatInterTime、SecondInterTime和ThirdInterTime,因?yàn)樗鼈円呀?jīng)被初始化。換言之,程序直接從階段717進(jìn)到階段719,以更新下一預(yù)期的間隔的變化時刻FollInterTime。記錄和置零過程需要變化時刻LatInterTime、SecondInterTime和ThirdInterTime的上述初始化值,使得,這些時間標(biāo)記沒有一個會比其間程序檢測到模塊已被激活的喚醒的時間早。這使得例如僅在幾秒鐘后,就可啟動模塊的去激活和其再激活。
圖8示出了一個時間軸,用來說明根據(jù)圖7a至7d的記錄和置零過程中的記錄間隔的變化。假定,所用記錄間隔的長度為5分鐘,而用戶在箭頭S所指的時刻給出一個10分鐘的新的記錄間隔的長度。再假定,在所討論的時刻,系統(tǒng)工作在分鐘讀數(shù)244801和244802之間,而預(yù)期的記錄間隔的變化時刻位于分鐘讀數(shù)244805。在該改變后的下一啟動時刻(用箭頭B指示),記錄和置零過程得知記錄間隔的長度已改變(階段711)。如果這些行已被處理完而模塊激活后的下一整分鐘已經(jīng)過去,則過程在階段715中計(jì)算新的預(yù)期的間隔的變化時刻FollInterTime:=CurrentMinute-mod(CurrentMinute/Interv)+Interv,結(jié)果為FollInterTime=244801-mod(244801/10)+10=244801-1+10=244810。因此,下一記錄間隔的變化時刻直接移至分鐘讀數(shù)244810。如果過程在階段712中檢測到行的處理未完成,則預(yù)期變化時刻的確定被延期到所有行已被處理完的啟動期間(在所討論時間間隔內(nèi))進(jìn)行。這樣,相應(yīng)地,用所討論時刻的分鐘讀數(shù)來確定該時刻。如果在間隔244800…244805期間行的處理不能完成,則當(dāng)記錄和置零過程在分鐘讀數(shù)244805后第一次啟動時,該過程檢測到記錄間隔的變化時刻已經(jīng)過去(階段712),據(jù)此,過程利用當(dāng)前分鐘讀數(shù)來計(jì)算預(yù)期變化時刻(階段715)。
如果當(dāng)前情況為模塊激活,則過程以這樣的方式進(jìn)行操作在激活后的第一次啟動的時候,在階段710中將參數(shù)FollInterTime以及參數(shù)LatInterTime、SecondInterTime和ThirdInterTime置為值244802(即上舍入的當(dāng)前分鐘讀數(shù))。另外,在階段710中還引入新的記錄間隔長度(Interv:=IntervNew)。此后,由于在階段711中,過程檢測到上述等式(Interv:=IntervNew),因此過程從階段711直接進(jìn)至階段716,然后從階段716進(jìn)一步進(jìn)至階段720。在該啟動后所出現(xiàn)的記錄和置零過程的這種喚醒期間,當(dāng)模塊激活已被檢測到而在階段710中將間隔的變化時刻初始化到第一整分鐘之前,雖然引入新的記錄間隔長度,但預(yù)期的間隔的變化時刻直到激活后的整分鐘已經(jīng)過去時才被更新。在階段711中,可以只在檢測激活之后所出現(xiàn)的啟動期間,才檢測所改變的間隔長度,據(jù)此,該改變也可以在階段713中被引入(因?yàn)榇藭r參數(shù)LatFinished的值為1)。假定,被檢查的啟動出現(xiàn)在第一整分鐘之前。此后,過程通過階段714直接進(jìn)至階段716(因?yàn)樵陔A段714中,過程檢測到FoilInterTime=LatInterTime)。過程由此直接進(jìn)至階段720。當(dāng)記錄和置零過程在分鐘讀數(shù)244802后第一次被啟動時(箭頭C),該過程在階段716中檢測到當(dāng)前分鐘讀數(shù)等于預(yù)期的間隔的變化時刻(CurrentMinute=FollInterTime),據(jù)此,過程在階段719中,利用在第一整分鐘到達(dá)之前按上述方法所檢測到的新的間隔長度,來更新預(yù)期的間隔的變化時刻。因此,預(yù)期的間隔的變化時刻直到測量組激活后的第一整分鐘已過去時才被更新。如果在第一整分鐘后的第一次啟動的啟動期間,碰巧檢測到記錄間隔的長度的變化(階段711),則在階段713中更新使用中的間隔長度,另外,在階段715中更新預(yù)期的間隔的變化時刻,結(jié)果,操作過程從階段715直接進(jìn)到階段720(在階段716未檢測到間隔的變化時刻)。
正如上述例子所表明,用戶可以在任何時刻改變記錄間隔的長度,從而不必去激活和再激活測量組。
盡管參照根據(jù)附圖的例子對本發(fā)明進(jìn)行了以上描述,顯然,本發(fā)明并不局限于本例子,而可以在以上和附屬權(quán)利要求書中所述的本發(fā)明的思想的范圍內(nèi)變化。例如,完全不必采用拷貝的計(jì)數(shù)器和采用上述循環(huán)規(guī)則,而每一行可以只含每一類型的一個計(jì)數(shù)器。
權(quán)利要求
1.一種業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)中的用于完成事件記錄的方法,該數(shù)據(jù)庫包括一些含有連續(xù)行(Ri)的測量表(MT),據(jù)此,單一一行包括有關(guān)單個測量對象的數(shù)據(jù),并且一個測量表中的測量對象屬于同一類型,使得,它們可構(gòu)成一個測量組,這種方法包括以下步驟-接收業(yè)務(wù)請求(SR)進(jìn)入到該系統(tǒng),在其處理期間,必須對每一測量對象的事件發(fā)生數(shù)進(jìn)行計(jì)數(shù),-作為該業(yè)務(wù)請求的響應(yīng),激活業(yè)務(wù)的提供,-在由某一預(yù)定的記錄間隔所確定的一段時間內(nèi),對于業(yè)務(wù)請求處理期間的每一不同事件,通過增加與特定測量對象相關(guān)的計(jì)數(shù)器的值來完成事件記錄,所述間隔可由用戶指定,和-通過存儲每一記錄間隔后的與特定測量對象相關(guān)的計(jì)數(shù)器值,來完成計(jì)數(shù)器值的記錄,其特征在于,該方法還包括以下步驟-保存一個與下一預(yù)期的記錄間隔的變化時刻相應(yīng)的時間值,并將當(dāng)前時鐘時間值與預(yù)期變化時刻的值進(jìn)行比較,以檢測記錄間隔的變化時刻,和-作為記錄間隔的長度的變化的響應(yīng),根據(jù)新的變化時刻的時間值,更新預(yù)期變化時刻的時間值和當(dāng)前記錄間隔的長度。
2.如權(quán)利要求1所述的方法,其特征在于,如遇測量組激活,則更新被延時到測量組激活期間賦予預(yù)期變化時刻的初始值已經(jīng)過去的時刻。
3.如權(quán)利要求1所述的方法,其特征在于,在每個記錄間隔期間,一次一個測量對象地執(zhí)行計(jì)數(shù)器值的記錄和置零,并利用計(jì)數(shù)器值的記錄和置零的處理過程,來執(zhí)行所述更新和比較。
4.如權(quán)利要求1所述的方法,其特征在于,與測量對象對應(yīng)的測量表的行中的各測量計(jì)數(shù)器被成對地保存,這樣,第一計(jì)數(shù)器屬于第一計(jì)數(shù)器組(CG1),而第二計(jì)數(shù)器屬于第二計(jì)數(shù)器組(CG2),并且時域被分為連續(xù)的記錄間隔(TP),因此,在每隔一個的記錄間隔期間,第一計(jì)數(shù)器組中的計(jì)數(shù)器值被增加而第二計(jì)數(shù)器組中的計(jì)數(shù)器值被記錄和置零,又在每隔一個的記錄間隔期間,第二計(jì)數(shù)器組中的計(jì)數(shù)器被增值而第一計(jì)數(shù)器組中的計(jì)數(shù)器值被記錄和置零。
5.如權(quán)利要求4所述的方法,其特征在于,在記錄間隔期間,以短間隔重復(fù)啟動所述過程,從而在每一啟動期間執(zhí)行所述比較。
6.如權(quán)利要求5所述的方法,其特征在于,當(dāng)計(jì)數(shù)器值的記錄和置零的處理過程檢測到預(yù)期的記錄間隔的變化時刻已經(jīng)到達(dá)時,還更新下一預(yù)期變化時刻的值。
7.如權(quán)利要求6所述的方法,其特征在于,利用當(dāng)前時鐘時間和記錄間隔的長度,確定預(yù)期的記錄間隔的變化時刻。
8.如權(quán)利要求6所述的方法,其特征在于,在系統(tǒng)中保存一個與特定測量組相關(guān)的標(biāo)志,該標(biāo)志指示在當(dāng)前記錄間隔期間測量表的所有對象何時已被處理完,據(jù)此,只有當(dāng)所述標(biāo)志指示所有對象已被處理完時,才引入新的記錄間隔長度。
9.如權(quán)利要求2所述的方法,其特征在于,當(dāng)檢測到去激活的測量組已被激活時,與下一整分鐘相應(yīng)的時間值被定義為預(yù)期的記錄間隔的變化時刻的初始值。
全文摘要
本發(fā)明涉及業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)中一種處理事件記錄的方法。該數(shù)據(jù)庫包括一些含有連續(xù)行(Ri)的測量表(MT)。為了在任何時候能改變記錄間隔的長度而不會中斷測量,系統(tǒng)(a)保存一個與下一預(yù)期的記錄間隔的變化時刻相應(yīng)的時間值,并將當(dāng)前時鐘時間值與預(yù)期變化時刻的值進(jìn)行比較,以檢測記錄間隔的變化時刻,和(b)作為記錄間隔的長度的變化的響應(yīng),根據(jù)新的變化時刻的時間值,更新預(yù)期變化時刻的時間值和當(dāng)前記錄間隔的長度。
文檔編號H04Q3/545GK1231743SQ97198249
公開日1999年10月13日 申請日期1997年8月29日 優(yōu)先權(quán)日1996年8月29日
發(fā)明者皮卡·萊迪寧 申請人:諾基亞電信公司