專利名稱:一種呈現(xiàn)服務(wù)器及其訂閱狀態(tài)機(jī)狀態(tài)遷移的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于呈現(xiàn)信息領(lǐng)域,特別涉及一種呈現(xiàn)服務(wù)器及其訂閱狀態(tài)機(jī)狀態(tài) 遷移的方法。
背景技術(shù):
呈現(xiàn)業(yè)務(wù)是一種搜集和發(fā)布Presence(呈現(xiàn))信息的通信業(yè)務(wù),這在規(guī)范 RFC3265、 RFC3856、 RFC3857中有明確的描述。當(dāng)PS(呈現(xiàn)服務(wù)器,Presence Server)收到Watcher (觀察體)的Presence信息訂閱請(qǐng)求后,將建立一個(gè)訂閱 狀態(tài)機(jī),用于表示整個(gè)訂閱過(guò)程的各種狀態(tài)。PS將根據(jù)Presentity (呈現(xiàn)體) 的授權(quán)規(guī)則做出是否接受訂閱的判斷。如果Presentity在授權(quán)規(guī)則中明確指出 接受此Watcher的訂閱,那么Watcher的Presence信息訂閱將^皮4妄受,訂閱狀 態(tài)機(jī)狀態(tài)遷移到訂閱被接受狀態(tài);如果Presentity在授權(quán)規(guī)則中明確指出拒絕此 Watcher的訂閱,那么此訂閱將被拒絕,訂閱狀態(tài)機(jī)狀態(tài)遷移到訂閱結(jié)束狀態(tài); 如果Presentity沒(méi)有在授權(quán)規(guī)則中明確指出拒絕還是接受此Watcher的訂閱,那 么訂閱狀態(tài)機(jī)狀態(tài)將遷移到未決狀態(tài)。如果訂閱狀態(tài)機(jī)狀態(tài)處于未決狀態(tài),而 Presentity之后修改了授權(quán)規(guī)則,使得針對(duì)此Watcher的訂閱有了明確的拒絕還 是接受的說(shuō)明,那么此時(shí)這個(gè)訂閱將被接受或者拒絕。
狀態(tài)機(jī)通過(guò)響應(yīng)一系列事件(目前的事件來(lái)源有3種1、 Watcher訂閱請(qǐng) 求2、 Presentity對(duì)規(guī)則的修改3、 PS定時(shí)器到期)而運(yùn)行,即實(shí)現(xiàn)狀態(tài)遷移。 如Watcher發(fā)起取消訂閱請(qǐng)求,PS收到Watcher發(fā)送的取消訂閱請(qǐng)求,PS的 訂閱狀態(tài)機(jī)對(duì)應(yīng)收到timeout (超時(shí))事件,并將狀態(tài)遷移到訂閱結(jié)束狀態(tài)。
現(xiàn)有技術(shù)中訂閱狀態(tài)機(jī)的狀態(tài)通過(guò)狀態(tài)圖表示,如圖1所示,重要的狀態(tài)
說(shuō)明如下(更詳細(xì)的說(shuō)明請(qǐng)參考RFC文檔原文) init:訂閱起始狀態(tài)
pending:訂閱4受權(quán)未決狀態(tài)。當(dāng)presentity沒(méi)有在自己的授:一又失見(jiàn)則中明確 描述對(duì)此Watcher是允許訂閱還是拒絕訂閱時(shí),PS將Watcher的訂閱置為此狀 態(tài)。
active:訂閱被j妄受狀態(tài)。 terminated:訂閱結(jié)束狀態(tài)。
可以看到,狀態(tài)機(jī)通過(guò)響應(yīng)一系列的事件,如noresource (沒(méi)有資源)、 rejected (才巨纟色)、deactivated (去;敫活)、probation (延》爰)、giveup (》文棄)等 事件而運(yùn)行,實(shí)現(xiàn)狀態(tài)遷移,Presence信息訂閱的狀態(tài)遷移路線可以是
1 ) init->terminated
2 ) init->active->terminated
3 ) init->pending->terminated
4 ) init->pending->active->terminated
5 ) init->pending->waiting->terminated
PS收到Watcher的初始訂閱請(qǐng)求后,創(chuàng)建一個(gè)狀態(tài)為init狀態(tài)的訂閱狀態(tài) 機(jī),根據(jù)Presentity的授權(quán)規(guī)則和訂閱有效期,訂閱狀態(tài)機(jī)的狀態(tài)從ink狀態(tài) 經(jīng)過(guò)一次或多次狀態(tài)轉(zhuǎn)換最終遷移到terminated狀態(tài)。如果Presentity在授權(quán)規(guī) 則中明確指出拒絕此Watcher的訂閱,則訂閱狀態(tài)才幾的狀態(tài)遷移到terminal狀 態(tài)。如果Presentity沒(méi)有在授權(quán)規(guī)則中明確指出接收還是拒絕此Watcher的訂閱, 則訂閱狀態(tài)機(jī)的狀態(tài)遷移到pending狀態(tài),并向Watcher發(fā)送不包含Presentity 的真實(shí)Presence信息的通知消息。如果Presentity在授權(quán)規(guī)則中明確指出接受 此Watcher的訂閱,則訂閱狀態(tài)機(jī)的狀態(tài)遷移到active狀態(tài),并向Watcher發(fā) 送包含Presentity的Presence信息的通知消息,Watcher收到該通知消息后對(duì)該 通知消息進(jìn)行響應(yīng)。但是,在實(shí)現(xiàn)本發(fā)明的過(guò)程中,本發(fā)明人發(fā)現(xiàn)若Watcher 與PS的網(wǎng)絡(luò)發(fā)生故障或Watcher故障等原西,Watcher將收不到這個(gè)通知消息, PS也不會(huì)收到Watcher對(duì)該通知消息的響應(yīng),對(duì)這種異常情況PS狀態(tài)機(jī)不會(huì) 進(jìn)行相應(yīng)的處理,也不會(huì)實(shí)現(xiàn)訂閱狀態(tài)機(jī)的狀態(tài)遷移。
可見(jiàn)現(xiàn)有技術(shù)中,因?yàn)閃atcher與PS的網(wǎng)絡(luò)發(fā)生故障等原因,導(dǎo)致Watcher 對(duì)PS的通知消息的響應(yīng)異常時(shí),PS狀態(tài)機(jī)處理能力差。
發(fā)明內(nèi)容
為了解決因?yàn)閃atcher與PS的網(wǎng)絡(luò)發(fā)生故障等原因,導(dǎo)致Watcher對(duì)PS 的通知消息的響應(yīng)異常時(shí),PS狀態(tài)機(jī)處理能力差的問(wèn)題,本發(fā)明實(shí)施例提供 了呈現(xiàn)服務(wù)器訂閱狀態(tài)機(jī)狀態(tài)遷移的方法,包括
呈現(xiàn)服務(wù)器接收觀察體對(duì)呈現(xiàn)體的呈現(xiàn)信息的訂閱請(qǐng)求;
建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī);
向所述觀察體發(fā)送通知消息;
當(dāng)所 述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),訂閱狀態(tài)機(jī)進(jìn)行狀態(tài)遷移。 同時(shí)本發(fā)明實(shí)施例還提供一種呈現(xiàn)服務(wù)器,包括 接收模塊用于呈現(xiàn)服務(wù)器接收觀察體對(duì)呈現(xiàn)體的呈現(xiàn)信息的訂閱請(qǐng)求; 狀態(tài)機(jī)建立模塊用于建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī); 發(fā)送4莫塊用于向所述觀察體發(fā)送通知消息;
遷移模塊用于當(dāng)所述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),訂閱狀態(tài)機(jī) 進(jìn)行狀態(tài)遷移。
由上述本發(fā)明提供的具體實(shí)施方案可以看出,因?yàn)橛^察體對(duì)通知消息的響 應(yīng)異常時(shí),訂閱狀態(tài)機(jī)能夠進(jìn)行狀態(tài)遷移的原因,獲得了訂閱狀態(tài)機(jī)處理能力 提升的技術(shù)效果。
圖1為現(xiàn)有技術(shù)狀態(tài)機(jī)的狀態(tài)圖2為本發(fā)明實(shí)施例提供的狀態(tài)機(jī)擴(kuò)展后的狀態(tài)圖3為本發(fā)明第一實(shí)施例^是供的方法流程圖4為本發(fā)明第二實(shí)施例提供的呈現(xiàn)服務(wù)器結(jié)構(gòu)圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例對(duì)狀態(tài)機(jī)做了擴(kuò)展。擴(kuò)展后的狀態(tài)圖如圖2所示,當(dāng)訂閱處 于active狀態(tài)或者pending狀態(tài)時(shí),如果PS發(fā)送給相應(yīng)Watcher通知消息后, 當(dāng)Watcher對(duì)該通知消息響應(yīng)異常時(shí),訂閱狀態(tài)機(jī)進(jìn)行狀態(tài)遷移。具體的,當(dāng) Watcher對(duì)該通知消息響應(yīng)異常時(shí),PS產(chǎn)生 error (異常4昔"i吳)事 <牛,i丁閱^犬態(tài) 機(jī)根據(jù)error事件進(jìn)行狀態(tài)遷移,優(yōu)選的,訂閱狀態(tài)機(jī)遷移為terminated狀態(tài), 并給Presentity發(fā)送表示W(wǎng)atcher的訂閱已經(jīng)結(jié)束的通知消息。
本發(fā)明提供的第一實(shí)施例是一種呈現(xiàn)服務(wù)器訂閱狀態(tài)機(jī)狀態(tài)遷移的方法, 假設(shè)Presentity在授權(quán)規(guī)則中指出接受Watcher的訂閱,如圖3所示,方法流 程包括
步驟101: Watcher向PS訂閱Presentity的Presence信息,呈現(xiàn)服務(wù)器接收 Watcher對(duì)Presentity的Presence信息的訂閱請(qǐng)求。
步驟102:建立Watcher對(duì)Presentity的訂閱狀態(tài)機(jī),訂閱狀態(tài)才幾的狀態(tài)遷移 到active狀態(tài)。
步驟103:在active狀態(tài)下,PS向Watcher發(fā)送Presentity的Presence信息的通
知消息。
步驟104: Watcher對(duì)該通知消息進(jìn)行響應(yīng)。 步驟105: PS向Presentity發(fā)送Watcher訂閱成功的通知。 步驟106:當(dāng)Presentity的Presence信息發(fā)生改變時(shí),Presentity向PS發(fā)送新 的Presence信息。
步驟107: PS向Watcher發(fā)送Presentity新的Presence信息的通知消息, Watcher對(duì)該通知消息進(jìn)行響應(yīng)。
步驟108:若Watcher與PS的網(wǎng)絡(luò)發(fā)生故障或Watcher故障,PS沒(méi)有收
到Watcher對(duì)該通知消息的響應(yīng)、或者收到錯(cuò)誤響應(yīng),PS產(chǎn)生error事件。 步驟109: PS的訂閱狀態(tài)機(jī)才艮據(jù)error事件,訂閱狀態(tài)機(jī)狀態(tài)進(jìn)行遷移,
作為優(yōu)選的方案,訂閱狀態(tài)才兒狀態(tài)由active遷移到terminate狀態(tài)。
通過(guò)上述步驟,當(dāng)Watcher與PS的網(wǎng)絡(luò)發(fā)生故障時(shí),訂閱狀態(tài)機(jī)的狀態(tài)
遷移到terminate狀態(tài),PS訂閱狀態(tài)機(jī)處理能力得到了提升。
為了進(jìn)一步解決,當(dāng)Watcher與PS之間的網(wǎng)絡(luò)出現(xiàn)故障、或者超時(shí)的情
況時(shí),Presentity不能夠及時(shí)得知這一情況的問(wèn)題,進(jìn)一步優(yōu)化上述技術(shù)方案,
增加步驟110。
步驟110: PS向Presentity發(fā)送通知消息,告知Watcher的狀態(tài)因?yàn)榘l(fā)送 錯(cuò)誤而遷移到terminated狀態(tài)。
通過(guò)PS向Presentity發(fā)送通知,當(dāng)Watcher與PS之間的網(wǎng)絡(luò)出現(xiàn)故障、 或者超時(shí)的情況時(shí),使得Presentity能夠及時(shí)得知這一情況。
為了進(jìn)一步解決,當(dāng)Watcher與PS之間的網(wǎng)絡(luò)出現(xiàn)故障、或者超時(shí)的情 況時(shí),PS不能夠及時(shí)的結(jié)束此Watcher的訂閱相關(guān)的訂閱狀態(tài)機(jī),系統(tǒng)的資源 被占用的問(wèn)題。進(jìn)一步優(yōu)化上述技術(shù)方案,增加步驟lll。
步驟111: Presentity對(duì)PS發(fā)送通知作出響應(yīng),當(dāng)收到Presentity發(fā)送的響 應(yīng)后,PS銷毀狀態(tài)^i。
通過(guò)PS銷毀狀態(tài)機(jī),降低了系統(tǒng)資源占用。
以上僅是本實(shí)施例的一個(gè)優(yōu)選方案,在步驟106中,Presentity的Presence 信息發(fā)生改變,只是導(dǎo)致步驟107 PS向Watcher發(fā)送通知消息的一個(gè)原因。 Presentity的訂閱規(guī)則發(fā)生改變等其它原因,也會(huì)導(dǎo)致PS向Watcher發(fā)送通知 消息。
在步驟104中,若Watcher與PS的網(wǎng)絡(luò)發(fā)生故障或Watcher故障,PS沒(méi) 有收到Watcher對(duì)該通知消息的響應(yīng)、或者收到錯(cuò)誤響應(yīng),同樣PS產(chǎn)生error 事件,訂閱狀態(tài)機(jī)根據(jù)所述error事件進(jìn)行狀態(tài)遷移。
在訂閱狀態(tài)機(jī)狀態(tài)由active遷移到terminate狀態(tài)后,為了節(jié)省系統(tǒng)資源也
可以先銷毀狀態(tài)機(jī),之后PS再向Presentity發(fā)送通知,告知Watcher的狀態(tài)因
為發(fā)送錯(cuò)誤而遷移到terminated狀態(tài)。
狀態(tài)機(jī)擴(kuò)展后,當(dāng)PS沒(méi)有在授權(quán)規(guī)則中明確指出拒絕還是才妻受此Watcher
的訂閱,訂閱處于pending狀態(tài)時(shí),也采用與上述步驟相似的處理步驟,訂閱
狀態(tài)才幾可由pending狀態(tài)遷移到waiting狀態(tài)、active 4犬態(tài)或terminated狀態(tài),
這里就不再贅述了。
本發(fā)明提供的第二實(shí)施例是一種呈現(xiàn)服務(wù)器,其結(jié)構(gòu)如圖4所示,包括 接收模塊201:用于呈現(xiàn)服務(wù)器接收觀察體對(duì)呈現(xiàn)體的呈現(xiàn)信息的訂閱請(qǐng)
求;
狀態(tài)機(jī)建立模塊202:用于建立觀察體對(duì)呈現(xiàn)體的訂閱狀態(tài)才幾; 發(fā)送模塊203:用于向觀察體發(fā)送通知消息;
遷移模塊204:用于當(dāng)觀察體對(duì)通知消息的響應(yīng)異常時(shí),訂閱狀態(tài)機(jī)進(jìn)行 狀態(tài)遷移。
進(jìn)一步遷移模塊204還包括
遷移子模塊205:用于當(dāng)所述觀察體對(duì)所述通知消息響應(yīng)異常時(shí),所述呈 現(xiàn)服務(wù)器產(chǎn)生異常錯(cuò)誤事件,所述訂閱狀態(tài)機(jī)根據(jù)所述異常錯(cuò)誤事件進(jìn)行狀態(tài) 遷移。
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種呈現(xiàn)服務(wù)器訂閱狀態(tài)機(jī)狀態(tài)遷移的方法,其特征在于,包括呈現(xiàn)服務(wù)器接收觀察體對(duì)呈現(xiàn)體的呈現(xiàn)信息的訂閱請(qǐng)求;建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī);向所述觀察體發(fā)送通知消息;當(dāng)所述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),所述訂閱狀態(tài)機(jī)進(jìn)行狀態(tài)遷移。
2、 如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述觀察體對(duì)所述通知消 息響應(yīng)異常時(shí),所述呈現(xiàn)服務(wù)器產(chǎn)生異常錯(cuò)誤事件,所述訂閱狀態(tài)機(jī)根據(jù)所述 異常錯(cuò)誤事件進(jìn)行狀態(tài)遷移。
3、 如權(quán)利要求2所述的方法,其特征在于,所述訂閱狀態(tài)機(jī)根據(jù)所述異 常錯(cuò)誤事件,將狀態(tài)遷移到訂閱結(jié)束狀態(tài)。
4、 如權(quán)利要求3所述的方法,其特征在于,建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī)后,訂閱狀態(tài)機(jī)遷移到訂閱被 接受狀態(tài);在訂閱被接受狀態(tài)下,向觀察體發(fā)送通知消息;當(dāng)所述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),訂閱狀態(tài)機(jī)由訂閱被接受狀 態(tài)遷移到訂閱結(jié)束狀態(tài)。
5、 如權(quán)利要求3所述的方法,其特征在于,建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī)后,訂閱狀態(tài)機(jī)遷移到授權(quán)未 決狀態(tài);在授權(quán)未決狀態(tài)下,向觀察體發(fā)送通知消息;當(dāng)所述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),訂閱狀態(tài)機(jī)由授權(quán)未決狀態(tài) 遷移到訂閱結(jié)束狀態(tài)。
6、 如權(quán)利要求3至5任意一項(xiàng)權(quán)利要求所述的方法,其特征在于,所述訂閱狀態(tài)機(jī)根據(jù)所述異常錯(cuò)誤事件,將狀態(tài)遷移到訂閱結(jié)束狀態(tài)的步驟后還包括向所述呈現(xiàn)體發(fā)送觀察體的訂閱已經(jīng)結(jié)束的通知消息。
7、 如權(quán)利要求6所述的方法,其特征在于,所述訂閱狀態(tài)機(jī)根據(jù)所述異 常錯(cuò)誤事件,將狀態(tài)遷移到訂閱結(jié)束狀態(tài)的步驟后還包括銷毀所述訂閱狀態(tài)機(jī)。
8、 如權(quán)利要求1至5任意一項(xiàng)權(quán)利要求所述的方法,其特征在于,所述 觀察體對(duì)所述通知消息的響應(yīng)異常包括所述呈現(xiàn)服務(wù)器收到所述觀察體對(duì)所 述通知消息的錯(cuò)誤響應(yīng)或沒(méi)有收到所述觀察體對(duì)所述通知消息的響應(yīng)。
9、 一種呈現(xiàn)服務(wù)器,其特征在于,包括接收模塊用于呈現(xiàn)服務(wù)器接收觀察體對(duì)呈現(xiàn)體的呈現(xiàn)信息的訂閱請(qǐng)求; 狀態(tài)機(jī)建立模塊用于建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī); 發(fā)送模塊用于向所述觀察體發(fā)送通知消息;遷移模塊用于當(dāng)所述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),所述訂閱狀 態(tài)機(jī)進(jìn)行狀態(tài)遷移。
10、 如權(quán)利要求9所述呈現(xiàn)服務(wù)器,其特征在于,遷移模塊還包括遷移子模塊用于當(dāng)所述觀察體對(duì)所述通知消息響應(yīng)異常時(shí),所述呈現(xiàn)服 務(wù)器產(chǎn)生異常錯(cuò)誤事件,所述訂閱狀態(tài)機(jī)根據(jù)所述異常錯(cuò)誤事件進(jìn)行狀態(tài)遷
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種呈現(xiàn)服務(wù)器訂閱狀態(tài)機(jī)狀態(tài)遷移的方法,為了解決現(xiàn)有技術(shù)呈現(xiàn)服務(wù)器狀態(tài)機(jī)處理能力差的問(wèn)題,本發(fā)明實(shí)施例公開(kāi)的方法包括呈現(xiàn)服務(wù)器接收觀察體對(duì)呈現(xiàn)體的呈現(xiàn)信息的訂閱請(qǐng)求;建立所述觀察體對(duì)所述呈現(xiàn)體的訂閱狀態(tài)機(jī);向所述觀察體發(fā)送通知消息;當(dāng)所述觀察體對(duì)所述通知消息的響應(yīng)異常時(shí),呈現(xiàn)服務(wù)器產(chǎn)生異常錯(cuò)誤事件,呈現(xiàn)服務(wù)器的訂閱狀態(tài)機(jī)根據(jù)所述異常錯(cuò)誤事件進(jìn)行狀態(tài)遷移。由于響應(yīng)異常時(shí),訂閱狀態(tài)機(jī)根據(jù)所述異常錯(cuò)誤事件進(jìn)行狀態(tài)遷移,訂閱狀態(tài)機(jī)處理能力得到提升。
文檔編號(hào)H04L12/26GK101355442SQ20071012972
公開(kāi)日2009年1月28日 申請(qǐng)日期2007年7月24日 優(yōu)先權(quán)日2007年7月24日
發(fā)明者周掿華, 徐文平, 謝冬模 申請(qǐng)人:華為技術(shù)有限公司