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