本發(fā)明涉及計(jì)算機(jī)技術(shù),具體涉及應(yīng)用程序異常監(jiān)控和恢復(fù)方法及設(shè)備。
背景技術(shù):
應(yīng)用程序運(yùn)行部署到生產(chǎn)環(huán)境中,為提高程序可靠性,確保程序出現(xiàn)異常時(shí)能及時(shí)恢復(fù),一般都會(huì)設(shè)置看門(mén)狗程序。傳統(tǒng)的看門(mén)狗程序,其核心思路都是通過(guò)周期對(duì)所監(jiān)控程序進(jìn)程運(yùn)行狀態(tài)進(jìn)行監(jiān)控,確保監(jiān)控進(jìn)程運(yùn)行狀態(tài)正常,一旦出現(xiàn)異常,則對(duì)所監(jiān)控程序進(jìn)行重啟。其監(jiān)控方式主要有以下幾種:
(1)基于消息交互的方式,實(shí)現(xiàn)監(jiān)控進(jìn)程和被監(jiān)控進(jìn)程間的通信,被監(jiān)控進(jìn)程周期向監(jiān)控進(jìn)程發(fā)送消息;
(2)進(jìn)程報(bào)活指令方式,被監(jiān)控進(jìn)程和監(jiān)控進(jìn)程約定雙方通信報(bào)活指令,通過(guò)周期報(bào)活指令交互;
(3)對(duì)被監(jiān)控程序進(jìn)程pid進(jìn)行監(jiān)控方式。通過(guò)對(duì)操作系統(tǒng)中被監(jiān)控程序進(jìn)程pid進(jìn)行監(jiān)控,pid存在則程序正常。
傳統(tǒng)的看門(mén)狗程序存在以下不足:
(1)一方面,無(wú)論是基于消息交互方式還是進(jìn)程報(bào)活方式,為實(shí)現(xiàn)監(jiān)控功能,都需要在監(jiān)控程序中植入與業(yè)務(wù)無(wú)關(guān)的監(jiān)控類(lèi)程序代碼,增加代碼的耦合性和不穩(wěn)定性;同時(shí),若要對(duì)多個(gè)應(yīng)用程序?qū)崿F(xiàn)監(jiān)控,需要在每個(gè)程序中增加監(jiān)控類(lèi)代碼,可擴(kuò)展性較差;
(2)另一方面,應(yīng)用程序出錯(cuò)的類(lèi)型復(fù)雜,有些出錯(cuò)類(lèi)型是在程序設(shè)計(jì)之初為預(yù)料到的,而這些未預(yù)料到的異常,現(xiàn)有的看門(mén)狗程序難以監(jiān)控。例如對(duì)于某些應(yīng)用類(lèi)程序,由于應(yīng)用程序接口方數(shù)據(jù)報(bào)文錯(cuò)誤、指令錯(cuò)誤等超出雙方程序設(shè)計(jì)之外的錯(cuò)誤一旦發(fā)生,其應(yīng)用程序進(jìn)程顯示狀態(tài)正常,但其已不能正常處理后續(xù)其他報(bào)文數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,本發(fā)明提出了克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的應(yīng)用程序異常監(jiān)控和恢復(fù)方法及設(shè)備。
為此目的,第一方面,本發(fā)明提出應(yīng)用程序異常監(jiān)控和恢復(fù)方法,包括:
根據(jù)預(yù)設(shè)的抽取規(guī)則,抽取出應(yīng)用程序日志文件中的信息,將信息記錄到數(shù)據(jù)表中;
對(duì)數(shù)據(jù)表中信息進(jìn)行分析,分析日志數(shù)據(jù)是否與預(yù)設(shè)異常規(guī)則匹配;
若日志數(shù)據(jù)與預(yù)設(shè)的異常規(guī)則匹配,則根據(jù)分析結(jié)果和預(yù)設(shè)的恢復(fù)策略,生成故障恢復(fù)指令。
可選地,根據(jù)分析結(jié)果對(duì)所監(jiān)控的應(yīng)用程序產(chǎn)生的故障信息進(jìn)行記錄,并通過(guò)網(wǎng)頁(yè)彈窗、短信或郵件中的一種或多種方式向用戶(hù)進(jìn)行故障提醒。
可選地,所述預(yù)設(shè)異常規(guī)則包括有非法關(guān)鍵字規(guī)則、合法關(guān)鍵字規(guī)則。單個(gè)通信非法關(guān)鍵字和/或多個(gè)通信非法關(guān)鍵字構(gòu)成的用于識(shí)別異常狀態(tài)的第一異常規(guī)則;
預(yù)設(shè)異常規(guī)則包含至少一個(gè)第一異常規(guī)則;
所述預(yù)設(shè)異常規(guī)則還包括由單個(gè)通信合法關(guān)鍵字和/或任意多個(gè)通信合法關(guān)鍵字構(gòu)成的用于識(shí)別正常狀態(tài)的第二異常規(guī)則。預(yù)設(shè)異常規(guī)則包含至少一個(gè)第二異常規(guī)則??蛇x地,所述生成故障恢復(fù)指令包括:
生成線(xiàn)程級(jí)的恢復(fù)指令,用于對(duì)出現(xiàn)異常的線(xiàn)程進(jìn)行恢復(fù);
生成程序級(jí)恢復(fù),對(duì)必須進(jìn)行程序重啟才能恢復(fù)的異常,生成程序重啟指令。
第二方面,本發(fā)明提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上任一所述方法的步驟。
第三方面,本發(fā)明提供一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上執(zhí)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如上任一所述方法的步驟。
由上述技術(shù)方案可知,本發(fā)明的方法不需要在應(yīng)用程序中嵌入代碼,而實(shí)現(xiàn)通過(guò)識(shí)別應(yīng)用程序輸出的日志中的關(guān)鍵字對(duì)應(yīng)用程序的監(jiān)控,相對(duì)于基于消息交互方式、進(jìn)程報(bào)活等方式,監(jiān)控程序自身無(wú)需植入與業(yè)務(wù)無(wú)關(guān)的監(jiān)控類(lèi)代碼,降低程序的耦合性和不穩(wěn)定性。另外,本發(fā)明的方法可同時(shí)實(shí)現(xiàn)多個(gè)程序的監(jiān)控,應(yīng)用程序監(jiān)控業(yè)務(wù)應(yīng)用簡(jiǎn)單、擴(kuò)展性強(qiáng)。本發(fā)明相對(duì)于進(jìn)程pid監(jiān)控方式的看門(mén)狗系統(tǒng),可實(shí)現(xiàn)對(duì)應(yīng)用程序進(jìn)程顯示狀態(tài)正常,但其業(yè)務(wù)處理已不正常的程序類(lèi)進(jìn)行監(jiān)控。
前面是提供對(duì)本發(fā)明一些方面的理解的簡(jiǎn)要發(fā)明內(nèi)容。這個(gè)部分既不是本發(fā)明及其各種實(shí)施例的詳盡表述也不是窮舉的表述。它既不用于識(shí)別本發(fā)明的重要或關(guān)鍵特征也不限定本發(fā)明的范圍,而是以一種簡(jiǎn)化形式給出本發(fā)明的所選原理,作為對(duì)下面給出的更具體的描述的簡(jiǎn)介。應(yīng)當(dāng)理解,單獨(dú)地或者組合地利用上面闡述或下面具體描述的一個(gè)或多個(gè)特征,本發(fā)明的其它實(shí)施例也是可能的。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的一個(gè)實(shí)施例中執(zhí)行的流程示意圖。
具體實(shí)施方式
下面將結(jié)合示例性的系統(tǒng)描述本發(fā)明。
如圖1所示,本發(fā)明提出應(yīng)用程序異常監(jiān)控和恢復(fù)方法,包括:
s101、根據(jù)預(yù)設(shè)的抽取規(guī)則,抽取出應(yīng)用程序日志文件中的信息,將信息記錄到數(shù)據(jù)表中;
s102、對(duì)數(shù)據(jù)表中信息進(jìn)行分析,分析日志數(shù)據(jù)是否與預(yù)設(shè)異常規(guī)則匹配;
s103、若日志數(shù)據(jù)與預(yù)設(shè)的異常規(guī)則匹配,則根據(jù)分析結(jié)果和預(yù)設(shè)的恢復(fù)策略,生成故障恢復(fù)指令。
例如對(duì)于java的應(yīng)用應(yīng)用程序,其在運(yùn)行時(shí),有些異常是能通過(guò)try{}/catch()方式進(jìn)行捕獲并進(jìn)行處理,有些異常通過(guò)try{}/catch()方式能捕獲但不能處理,但try{}/catch()方式捕獲這些異常之后會(huì)輸出日志。本文正是根據(jù)這些應(yīng)用程序的計(jì)算邏輯和其輸出的日志設(shè)計(jì)了本發(fā)明的方法。這些異常最終將導(dǎo)致程序工作不正常,最終使程序偏離設(shè)計(jì)者所期待的方式運(yùn)行,因此,通過(guò)對(duì)該類(lèi)異常進(jìn)行監(jiān)控,并及時(shí)對(duì)程序進(jìn)行重啟操作,可及時(shí)恢復(fù)程序正常工作。
在本發(fā)明的一些實(shí)施例中,抽取日志中的關(guān)鍵字可以通過(guò):用log4j之類(lèi)工具記錄運(yùn)行日志,通過(guò)采集模塊(采集模塊根據(jù)抽取規(guī)則采集關(guān)鍵字,抽取規(guī)則是根據(jù)應(yīng)用程序的功能、運(yùn)算邏輯和日志的特點(diǎn)設(shè)計(jì)的)對(duì)通信關(guān)鍵字、通信非法關(guān)鍵字以及日志時(shí)間戳數(shù)據(jù)進(jìn)行采集,并記錄到數(shù)據(jù)表中。
可以理解的是在執(zhí)行本申請(qǐng)的方法之前,需要預(yù)設(shè)抽取規(guī)則、異常規(guī)則和恢復(fù)策略,這些可以是在配置參數(shù)是進(jìn)行配置。
若日志數(shù)據(jù)與預(yù)設(shè)的異常規(guī)則匹配,則可以分析得出出錯(cuò)的應(yīng)用程序,故障恢復(fù)指令是用于恢復(fù)出錯(cuò)的應(yīng)用程序,該恢復(fù)可以是重啟、也可以是收集出錯(cuò)數(shù)據(jù)之后,根據(jù)出錯(cuò)數(shù)據(jù)執(zhí)行的恢復(fù)步驟。
恢復(fù)指令是預(yù)設(shè)的,根據(jù)分析結(jié)果選擇調(diào)用對(duì)應(yīng)的恢復(fù)指令。例如用本發(fā)明的方法對(duì)對(duì)無(wú)線(xiàn)網(wǎng)絡(luò)模塊進(jìn)行監(jiān)測(cè),則在根據(jù)預(yù)設(shè)規(guī)則抽取無(wú)線(xiàn)網(wǎng)絡(luò)模塊輸出的日志中的信息,將信息記錄到數(shù)據(jù)表中;抽取的信息可以是關(guān)鍵字和時(shí)間戳的組合形成的記錄;對(duì)數(shù)據(jù)表中信息進(jìn)行分析,分析日志數(shù)據(jù)是否與預(yù)設(shè)異常規(guī)則匹配。
例如,在本發(fā)明的一實(shí)施例中,預(yù)設(shè)的異常規(guī)則若一句日志中包含connected,則該句日志中應(yīng)該還包括已連接的無(wú)線(xiàn)網(wǎng)絡(luò)名稱(chēng)(即ssid名稱(chēng)),即若在日志中發(fā)現(xiàn)connected關(guān)鍵詞,則將該條日志的內(nèi)容和時(shí)間戳存入數(shù)據(jù)表中,并分析是否包含無(wú)線(xiàn)網(wǎng)絡(luò)名稱(chēng),若該日志的內(nèi)容如下:parcelableextra==========[type:wifi[],state:connected/connected,reason:(unspecified),extra:<unknownssid>,roaming:false,failover:false,isavailable:true,isconnectedtoprovisioningnetwork:false],由于其中未記載已連接的無(wú)線(xiàn)網(wǎng)絡(luò)名稱(chēng),而只顯示extra:<unknownssid>,因此與預(yù)設(shè)異常規(guī)則匹配,識(shí)別出異常。此時(shí),若預(yù)設(shè)的恢復(fù)策略是根據(jù)重啟無(wú)線(xiàn)網(wǎng)絡(luò),則生成重新啟動(dòng)無(wú)線(xiàn)網(wǎng)絡(luò)的指令。
可以理解的是上述實(shí)施例中僅舉例根據(jù)一條日志識(shí)別出異常的情況。在實(shí)際的監(jiān)控過(guò)程中,可能根據(jù)多條日志識(shí)別出一個(gè)異常,例如通過(guò)重復(fù)出現(xiàn)3次關(guān)鍵詞x,1分鐘后日志程序中出現(xiàn)關(guān)鍵詞y,則識(shí)別此時(shí)出現(xiàn)異常z。例如應(yīng)用程序正常工作時(shí),通常都需要定期進(jìn)行指令訪問(wèn),并獲得響應(yīng)數(shù)據(jù),這些請(qǐng)求/響應(yīng)關(guān)鍵字都記錄在日志文件中;結(jié)合應(yīng)用程序的業(yè)務(wù)需求,部分請(qǐng)求/響應(yīng)對(duì)數(shù)據(jù)是周期規(guī)律出現(xiàn),部分請(qǐng)求/響應(yīng)對(duì)數(shù)據(jù)僅在請(qǐng)求發(fā)出后出現(xiàn),可以抽象出請(qǐng)求/響應(yīng)關(guān)鍵字在日志中出現(xiàn)的規(guī)則表達(dá)式,這些關(guān)鍵字、關(guān)鍵字規(guī)則表達(dá)式由配置參數(shù)加載模塊進(jìn)行啟動(dòng)加載。日志分析模塊將采集的日志數(shù)據(jù)與關(guān)鍵字規(guī)則表達(dá)式進(jìn)行匹配,通過(guò)諸如正則表達(dá)式分析算法進(jìn)行字符串分析,可準(zhǔn)確監(jiān)控程序數(shù)據(jù)通信狀態(tài)是否正常。
本發(fā)明的方法不需要在應(yīng)用程序中嵌入代碼,而實(shí)現(xiàn)通過(guò)識(shí)別應(yīng)用程序輸出的日志中的關(guān)鍵字對(duì)應(yīng)用程序的監(jiān)控,相對(duì)于基于消息交互方式、進(jìn)程報(bào)活等方式,監(jiān)控程序自身無(wú)需植入與業(yè)務(wù)無(wú)關(guān)的監(jiān)控類(lèi)代碼,降低程序的耦合性和不穩(wěn)定性。
另外,本發(fā)明的方法可同時(shí)實(shí)現(xiàn)多個(gè)程序的監(jiān)控,應(yīng)用程序監(jiān)控業(yè)務(wù)應(yīng)用簡(jiǎn)單、擴(kuò)展性強(qiáng)。本發(fā)明相對(duì)于進(jìn)程pid監(jiān)控方式的看門(mén)狗系統(tǒng),可實(shí)現(xiàn)對(duì)應(yīng)用程序進(jìn)程顯示狀態(tài)正常,但其業(yè)務(wù)處理已不正常的程序類(lèi)進(jìn)行監(jiān)控。
本發(fā)明的一些實(shí)施例中,在根據(jù)分析結(jié)果對(duì)所監(jiān)控的應(yīng)用程序產(chǎn)生的故障信息進(jìn)行記錄,并通過(guò)網(wǎng)頁(yè)彈窗、短信或郵件中的一種或多種方式向用戶(hù)進(jìn)行故障提醒。以便于用戶(hù)及時(shí)進(jìn)行日志查看、分析。
可選地,所述預(yù)設(shè)異常規(guī)則包括有非法關(guān)鍵字規(guī)則、合法關(guān)鍵字規(guī)則。單個(gè)通信非法關(guān)鍵字和/或多個(gè)通信非法關(guān)鍵字構(gòu)成的用于識(shí)別異常狀態(tài)的第一異常規(guī)則;第一異常規(guī)則也稱(chēng)為非法狀態(tài)規(guī)則。即若符合第一異常規(guī)則,則認(rèn)為監(jiān)控的應(yīng)用程序時(shí)處于異常狀態(tài)。
所述預(yù)設(shè)異常規(guī)則還包括由單個(gè)通信合法關(guān)鍵字和/或多個(gè)通信合法關(guān)鍵字構(gòu)成的用于識(shí)別正常狀態(tài)的第二異常規(guī)則。第二異常規(guī)則也稱(chēng)為合法狀態(tài)規(guī)則,即若符合第二異常規(guī)則,則認(rèn)為監(jiān)控的應(yīng)用程序時(shí)處于正常狀態(tài)。
在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。
單關(guān)鍵字是連續(xù)的字符串,單表示量詞。單關(guān)鍵詞也可以稱(chēng)為關(guān)鍵詞。關(guān)鍵詞可以是日志中程序運(yùn)行輸出的信息中的關(guān)鍵字,例如該關(guān)鍵字可能是目錄名稱(chēng)、腳本名稱(chēng)、程序代碼的類(lèi)名稱(chēng)等。由關(guān)鍵字和關(guān)鍵字之間的關(guān)系組成異常規(guī)則,可以理解的是異常規(guī)則中還包括容錯(cuò)規(guī)則。即在一些實(shí)施例中,可以用一個(gè)狀態(tài)機(jī)表示異常規(guī)則,根據(jù)預(yù)設(shè)的抽取規(guī)則抽取日志中的關(guān)鍵詞,根據(jù)抽取到的關(guān)鍵詞,決定狀態(tài)機(jī)的狀態(tài)。
本文中單關(guān)鍵字的組合包括多個(gè)關(guān)鍵詞按順序形成的組合,即若日志中按順序的出現(xiàn)這些關(guān)鍵字,則認(rèn)為符合異常規(guī)則。根據(jù)單關(guān)鍵字的組合是屬于第一異常規(guī)則還是第二異常規(guī)則,來(lái)識(shí)別監(jiān)控的應(yīng)用程序時(shí)處于異常狀態(tài)還是處于正常狀態(tài)??梢岳斫獾氖嵌鄠€(gè)關(guān)鍵詞的組合還包括由多個(gè)關(guān)鍵詞構(gòu)成具有時(shí)序特征的組合。例如在本發(fā)明的一個(gè)是實(shí)施例中,包括一個(gè)由多關(guān)鍵詞的組合形成的異常規(guī)則,即規(guī)則:重復(fù)出現(xiàn)3次關(guān)鍵詞x,1分鐘后日志程序中出現(xiàn)關(guān)鍵詞y。
在本發(fā)明的另一些實(shí)施例中,從日志中抽取關(guān)鍵字,根據(jù)預(yù)設(shè)的單一關(guān)鍵字或關(guān)鍵字組合形成的規(guī)則,還可以識(shí)別出所監(jiān)控的應(yīng)用程序是否處于正常狀態(tài)。所述單一關(guān)鍵字或關(guān)鍵字組合形成的規(guī)則也稱(chēng)為容錯(cuò)規(guī)則。
可選地,所述生成故障恢復(fù)指令包括:
生成線(xiàn)程級(jí)的恢復(fù)指令,用于對(duì)出現(xiàn)異常的線(xiàn)程進(jìn)行恢復(fù);
生成程序級(jí)恢復(fù),對(duì)必須進(jìn)行程序重啟才能恢復(fù)的異常,生成程序重啟指令。
本發(fā)明提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上任一所述方法的步驟。
本發(fā)明提供一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上執(zhí)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如上任一所述方法的步驟。
本文中使用的“監(jiān)視”包括與用儀器來(lái)觀察、記錄或檢測(cè)有關(guān)的任何類(lèi)型的功能,這些儀器對(duì)被監(jiān)視的元件或元件組的操作或狀態(tài)沒(méi)有任何影響。
本文中使用的“至少一個(gè)”、“一個(gè)或多個(gè)”以及“和/或”是開(kāi)放式的表述,在使用時(shí)可以是聯(lián)合的和分離的。例如,“a、b和c中的至少一個(gè)”,“a、b或c中的至少一個(gè)”,“a、b和c中的一個(gè)或多個(gè)”以及“a、b或c中的一個(gè)或多個(gè)”指僅有a、僅有b、僅有c、a和b一起、a和c一起、b和c一起或a、b和c一起。
術(shù)語(yǔ)“一個(gè)”實(shí)體是指一個(gè)或多個(gè)所述實(shí)體。由此術(shù)語(yǔ)“一個(gè)”、“一個(gè)或多個(gè)”和“至少一個(gè)”在本文中是可以互換使用的。還應(yīng)注意到術(shù)語(yǔ)“包括”、“包含”和“具有”也是可以互換使用的。
本文中使用的術(shù)語(yǔ)“自動(dòng)的”及其變型是指在執(zhí)行處理或操作時(shí)沒(méi)有實(shí)質(zhì)的人為輸入的情況下完成的任何處理或操作。然而,即使在執(zhí)行處理或操作時(shí)使用了執(zhí)行所述處理或操作前接收到的實(shí)質(zhì)的或非實(shí)質(zhì)的人為輸入,所述處理或操作也可以是自動(dòng)的。如果輸入影響所述處理或操作將怎樣進(jìn)行,則視該人為輸入是實(shí)質(zhì)的。不影響所述處理或操作進(jìn)行的人為輸入不視為是實(shí)質(zhì)的。
本文中使用的術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”是指參與將指令提供給處理器執(zhí)行的任何有形存儲(chǔ)設(shè)備和/或傳輸介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是在ip網(wǎng)絡(luò)上的網(wǎng)絡(luò)傳輸(如soap)中編碼的串行指令集。這樣的介質(zhì)可以采取很多形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)包括例如nvram或者磁或光盤(pán)。易失性介質(zhì)包括諸如主存儲(chǔ)器的動(dòng)態(tài)存儲(chǔ)器(如ram)。計(jì)算機(jī)可讀介質(zhì)的常見(jiàn)形式包括例如軟盤(pán)、柔性盤(pán)、硬盤(pán)、磁帶或任何其它磁介質(zhì)、磁光介質(zhì)、cd-rom、任何其它光介質(zhì)、穿孔卡、紙帶、任何其它具有孔形圖案的物理介質(zhì)、ram、prom、eprom、flash-eprom、諸如存儲(chǔ)卡的固態(tài)介質(zhì)、任何其它存儲(chǔ)芯片或磁帶盒、后面描述的載波、或計(jì)算機(jī)可以讀取的任何其它介質(zhì)。電子郵件的數(shù)字文件附件或其它自含信息檔案或檔案集被認(rèn)為是相當(dāng)于有形存儲(chǔ)介質(zhì)的分發(fā)介質(zhì)。當(dāng)計(jì)算機(jī)可讀介質(zhì)被配置為數(shù)據(jù)庫(kù)時(shí),應(yīng)該理解該數(shù)據(jù)庫(kù)可以是任何類(lèi)型的數(shù)據(jù)庫(kù),例如關(guān)系數(shù)據(jù)庫(kù)、層級(jí)數(shù)據(jù)庫(kù)、面向?qū)ο蟮臄?shù)據(jù)庫(kù)等等。相應(yīng)地,認(rèn)為本發(fā)明包括有形存儲(chǔ)介質(zhì)或分發(fā)介質(zhì)和現(xiàn)有技術(shù)公知的等同物以及未來(lái)開(kāi)發(fā)的介質(zhì),在這些介質(zhì)中存儲(chǔ)本發(fā)明的軟件實(shí)施。
本文中使用的術(shù)語(yǔ)“確定”、“運(yùn)算”和“計(jì)算”及其變型可以互換使用,并且包括任何類(lèi)型的方法、處理、數(shù)學(xué)運(yùn)算或技術(shù)。更具體地,這樣的術(shù)語(yǔ)可以包括諸如bpel的解釋規(guī)則或規(guī)則語(yǔ)言,其中邏輯不是硬編碼的而是在可以被讀、解釋、編譯和執(zhí)行的規(guī)則文件中表示。
本文中使用的術(shù)語(yǔ)“模塊”或“工具”是指任何已知的或以后發(fā)展的硬件、軟件、固件、人工智能、模糊邏輯或能夠執(zhí)行與該元件相關(guān)的功能的硬件和軟件的組合。另外,雖然用示例性實(shí)施方式來(lái)描述本發(fā)明,但應(yīng)當(dāng)理解本發(fā)明的各方面可以單獨(dú)要求保護(hù)。
需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者終端設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者終端設(shè)備中還存在另外的要素。此外,在本文中,“大于”、“小于”、“超過(guò)”等理解為不包括本數(shù);“以上”、“以下”、“以?xún)?nèi)”等理解為包括本數(shù)。
盡管已經(jīng)對(duì)上述各實(shí)施例進(jìn)行了描述,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改,所以以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利保護(hù)范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍之內(nèi)。