国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      網(wǎng)絡(luò)資源管理方法

      文檔序號(hào):7594500閱讀:183來(lái)源:國(guó)知局
      專利名稱:網(wǎng)絡(luò)資源管理方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及網(wǎng)絡(luò)資源管理方法,具體涉及一種使用狀態(tài)機(jī)進(jìn)行網(wǎng)絡(luò)資源管理的方法。
      背景技術(shù)
      在網(wǎng)絡(luò)資源管理領(lǐng)域中,需要解決實(shí)體對(duì)象的狀態(tài)遷移以及該狀態(tài)遷移導(dǎo)致的相關(guān)聯(lián)的對(duì)象的狀態(tài)遷移。
      一個(gè)資源在其生命周期過(guò)程中,會(huì)經(jīng)過(guò)多個(gè)狀態(tài),激活這些狀態(tài)遷移的行為也是不一樣的。各個(gè)資源類型的狀態(tài)類型都是不一樣的,即使是不同的資源類型有著相同的狀態(tài)名稱,該狀態(tài)的遷移行為也不是一樣的。為了便于理解,首先介紹本發(fā)明用到的一些概念1)狀態(tài)(State)狀態(tài)表示一個(gè)具體的資源實(shí)例在某段時(shí)間范圍內(nèi)所具有的一個(gè)相對(duì)穩(wěn)定的態(tài)勢(shì),除非針對(duì)該資源的一個(gè)變更事件(如刪除、關(guān)聯(lián)等操作)發(fā)生或者相關(guān)聯(lián)的其他資源的狀態(tài)變更需要該資源的狀態(tài)發(fā)生相應(yīng)變化,該資源將維持在這個(gè)狀態(tài)。在一個(gè)狀態(tài),資源將接收特定的一個(gè)或多個(gè)事件。
      2)事件(Action)事件是指發(fā)生在資源對(duì)象上的外部操作或者內(nèi)部狀態(tài)遷移傳播,這些事件可能導(dǎo)致在某個(gè)狀態(tài)下的資源實(shí)例發(fā)生狀態(tài)遷移。
      3)狀態(tài)遷移(State Transition)指對(duì)處于某個(gè)狀態(tài)的資源施加一個(gè)事件后,資源的狀態(tài)發(fā)生變化的過(guò)程。只有該狀態(tài)接收此事件,且滿足一些特定的校驗(yàn)條件,遷移才會(huì)發(fā)生。所以也稱為有條件狀態(tài)遷移。
      4)狀態(tài)遷移傳播(State Transition Propagation)
      指一個(gè)資源的狀態(tài)遷移誘發(fā)其他類型的資源的狀態(tài)遷移,被誘發(fā)的資源與源資源有著直接或者間接的關(guān)聯(lián)關(guān)系。一個(gè)狀態(tài)遷移傳播觸發(fā)的狀態(tài)遷移可能誘發(fā)另外一個(gè)狀態(tài)遷移,這些遷移間存在一個(gè)順序關(guān)系,并要求在一個(gè)事務(wù)內(nèi)完成。在誘發(fā)過(guò)程中,原來(lái)的事件已經(jīng)被轉(zhuǎn)化,不再是初始的事件,而是一個(gè)傳播事件。實(shí)際上,被傳播后的資源的狀態(tài)可以從其他資源的狀態(tài)通過(guò)類似的計(jì)算而來(lái),但是這種計(jì)算將會(huì)極其復(fù)雜和耗時(shí),在初始事件發(fā)生時(shí)完成狀態(tài)遷移傳播會(huì)更加有效率。
      5)狀態(tài)機(jī)(State Machine)就是針對(duì)一個(gè)資源類型的所有的狀態(tài)以及狀態(tài)遷移(包括狀態(tài)遷移傳播)的集合,是針對(duì)一個(gè)資源對(duì)外部的事件的總體行為的描述。
      圖1是一個(gè)狀態(tài)遷移和狀態(tài)遷移傳播的示意圖,顯示了狀態(tài)機(jī)機(jī)制的具體示例。其中,端口和單板是不同的資源類型,Connected,In-Use,Installed是不同的狀態(tài),Assign是一個(gè)事件。當(dāng)“端口”對(duì)象在Connected狀態(tài)時(shí),接收了Assign操作(和Cable關(guān)聯(lián)),狀態(tài)變換為In-Use;同時(shí)通過(guò)狀態(tài)遷移傳播Propagationl,觸發(fā)了該“端口”所在的“單板”對(duì)象從Installed狀態(tài)變換成In-Use狀態(tài)。
      對(duì)于狀態(tài)機(jī)機(jī)制的實(shí)現(xiàn),比較經(jīng)典的做法是采用有限狀態(tài)機(jī)(FSM)技術(shù),該技術(shù)通過(guò)一個(gè)代碼生成器,生成C語(yǔ)言的狀態(tài)機(jī)處理代碼,但是在Java語(yǔ)言以及面向?qū)ο缶幊痰沫h(huán)境下,該方法并不適用。
      如圖2所示,與本發(fā)明相關(guān)的一種現(xiàn)有技術(shù)采用如下方案1)對(duì)于每個(gè)資源類型的每個(gè)狀態(tài),定義一個(gè)狀態(tài)處理類,實(shí)現(xiàn)狀態(tài)處理接口StateHandler,并對(duì)類名給予一定規(guī)則。
      2)通過(guò)一個(gè)StateHandlerFactory類來(lái)通過(guò)這個(gè)命名規(guī)則尋找StateHandler。
      3)在資源類對(duì)象的事件處理中,調(diào)用StateHandler來(lái)處理狀態(tài)遷移。示例代碼如下void XXXAction(){String currentState=thisResource.getStatus();StateHandler stateHandler=null;
      stateHandler=StateHandlerFactory.FindStateHandler(resourceType,currentState);stateHandler.Validate();//這里是本身針對(duì)該事件的業(yè)務(wù)處理邏輯……stateHandler.PerformStateTransition();stateHandler.PerformPropagation();}從上述方案描述可以看出,我們要為每個(gè)資源的每個(gè)狀態(tài)寫一個(gè)實(shí)現(xiàn)類,每個(gè)類的各個(gè)方法的實(shí)現(xiàn)基本都不會(huì)相同,由此帶來(lái)一系列的問(wèn)題1)大量的代碼耗費(fèi)在條件校驗(yàn)和狀態(tài)遷移傳播上,條件和狀態(tài)遷移傳播越多,代碼量越大,事實(shí)上他們的編碼模式是相似的。這樣會(huì)導(dǎo)致開發(fā)效率低,Bug數(shù)量多,維護(hù)量也相應(yīng)增加。
      2)任何對(duì)狀態(tài)或者狀態(tài)遷移的變更,將導(dǎo)致這些代碼被重新修改,由此引入新的Bug。
      3)校驗(yàn)規(guī)則沒(méi)有歸納,現(xiàn)有的規(guī)則不易被重用,也不容易引入新的校驗(yàn)規(guī)則。

      發(fā)明內(nèi)容
      鑒于上述現(xiàn)有技術(shù)方案的缺陷,本發(fā)明所要解決的技術(shù)問(wèn)題是使?fàn)顟B(tài)機(jī)可靈活配置,從而通過(guò)使用狀態(tài)機(jī)容易地管理網(wǎng)絡(luò)資源。
      根據(jù)本發(fā)明,提供一種使用狀態(tài)機(jī)進(jìn)行網(wǎng)絡(luò)資源管理的方法,其中使用標(biāo)記語(yǔ)言在一配置文件中定義各網(wǎng)絡(luò)資源的狀態(tài)機(jī),所述狀態(tài)機(jī)包括相應(yīng)網(wǎng)絡(luò)資源的多個(gè)狀態(tài)、與每個(gè)狀態(tài)相關(guān)聯(lián)的至少一個(gè)狀態(tài)遷移、與每個(gè)狀態(tài)遷移相關(guān)聯(lián)的事件、以及與每個(gè)狀態(tài)遷移相關(guān)聯(lián)的至少一個(gè)遷移條件,所述方法包括以下步驟獲取一個(gè)發(fā)生的事件的參數(shù);從配置文件獲得與所述事件相關(guān)聯(lián)的遷移條件,以校驗(yàn)與所述事件相關(guān)聯(lián)的狀態(tài)遷移是否能夠被執(zhí)行;如果通過(guò)校驗(yàn),則執(zhí)行所述狀態(tài)遷移。
      根據(jù)本發(fā)明的技術(shù)方案,主要實(shí)現(xiàn)以下技術(shù)效果1)資源的狀態(tài)機(jī)是可靈活配置定義的,可以在不修改代碼的情況下,通過(guò)修改配置文件來(lái)修改資源的行為。針對(duì)一個(gè)狀態(tài),只有已經(jīng)有相應(yīng)的狀態(tài)遷移定義的事件才是被允許的。
      2)狀態(tài)校驗(yàn)器可擴(kuò)展,可配置,可重用。這些校驗(yàn)器將執(zhí)行條件檢查。
      3)狀態(tài)遷移傳播也是可配置的,并根據(jù)配置文件自動(dòng)觸發(fā)。


      圖1是一個(gè)狀態(tài)遷移和狀態(tài)遷移傳播的示意圖;圖2是現(xiàn)有技術(shù)的狀態(tài)處理接口的示意圖;圖3是顯示用于實(shí)施本發(fā)明的軟件結(jié)構(gòu)的總體示意框圖;圖4是用于解釋根據(jù)本發(fā)明的狀態(tài)機(jī)定義的示意圖;圖5顯示根據(jù)本發(fā)明的狀態(tài)機(jī)實(shí)體對(duì)象;圖6是顯示根據(jù)本發(fā)明進(jìn)行狀態(tài)機(jī)服務(wù)的具體示例的圖。
      具體實(shí)施例方式
      圖3顯示了用于實(shí)施本發(fā)明的軟件結(jié)構(gòu)的總體示意框圖。
      在本發(fā)明中,狀態(tài)機(jī)以狀態(tài)機(jī)定義文件的方式定義,在系統(tǒng)初始化時(shí)被載入內(nèi)存,形成多組狀態(tài)機(jī)實(shí)體對(duì)象;狀態(tài)機(jī)管理器則利用這些實(shí)體對(duì)象以及相互關(guān)系,對(duì)應(yīng)用模塊提供狀態(tài)機(jī)處理服務(wù);應(yīng)用模塊則使用狀態(tài)機(jī)服務(wù)來(lái)確定該操作(事件)是否能夠執(zhí)行,執(zhí)行完成后遷移到什么狀態(tài)。下面自下而上逐一介紹各個(gè)部分的詳細(xì)方案。
      狀態(tài)機(jī)的定義每一個(gè)網(wǎng)絡(luò)資源都對(duì)應(yīng)于一個(gè)狀態(tài)機(jī),每個(gè)狀態(tài)機(jī)的定義中首先要包含該資源的多個(gè)狀態(tài)定義,每個(gè)狀態(tài)下有多個(gè)狀態(tài)遷移定義,每個(gè)狀態(tài)遷移由一個(gè)相關(guān)聯(lián)的事件誘發(fā),并且每個(gè)狀態(tài)遷移有相關(guān)聯(lián)的一個(gè)或多個(gè)遷移條件。根據(jù)需要,狀態(tài)機(jī)中還定義了與狀態(tài)遷移相關(guān)聯(lián)的狀態(tài)遷移傳播。
      另外,每個(gè)狀態(tài)遷移具有至少一個(gè)目標(biāo)狀態(tài),在具有一個(gè)以上的目標(biāo)狀態(tài)的情況下,每個(gè)目標(biāo)狀態(tài)具有相關(guān)聯(lián)的至少一個(gè)條件,用于確定遷移到哪個(gè)目標(biāo)狀態(tài)。
      在本發(fā)明中,狀態(tài)機(jī)可以用任何類型的標(biāo)記語(yǔ)言來(lái)定義,但是優(yōu)選使用XML語(yǔ)言。XML就是“可擴(kuò)展的標(biāo)記語(yǔ)言”(eXtendable MarkupLanguage),是目前最通用的一種標(biāo)記語(yǔ)言,運(yùn)用它可以擴(kuò)展到多種應(yīng)用,而且圍繞它的開放的解析工具、編輯工具都很豐富。為便于具體說(shuō)明,在以下的示例中采用XML語(yǔ)言進(jìn)行說(shuō)明。以下是XML語(yǔ)言形式的DTD(document type definition,文件所用到的類型的定義)&lt;!--一個(gè)狀態(tài)機(jī)StateMachine定義包含多個(gè)狀態(tài)State定義--&gt;
      &lt;!ELEMENT StateMachine(State+)&gt;
      &lt;!ATTLIST StateMachine name CDATA #REQUIRED&gt;
      &lt;!--每個(gè)狀態(tài)下有多個(gè)狀態(tài)遷移Transition定義,有且只有這些遷移可以發(fā)生在這個(gè)狀態(tài)下,狀態(tài)包含一個(gè)內(nèi)部引用名稱和外部顯示名稱--&gt;
      &lt;!ELEMENT State(Transition*)&gt;
      &lt;!ATTLIST State name CDATA #REQUIRED display_name CDATA #REQUIRED&gt;
      &lt;!--狀態(tài)遷移是由一個(gè)事件(ActionMethod)來(lái)誘發(fā)的,可能遷移到多個(gè)狀態(tài)(根據(jù)附加條件來(lái)決定),遷移到哪個(gè)具體的狀態(tài)也是根據(jù)條件來(lái)確定的,由ToState的Condition元素配置;在遷移發(fā)生后,可以通過(guò)PropagationTrigger觸發(fā)多個(gè)狀態(tài)遷移傳播。--&gt;
      &lt;!ELEMENT Transition(ToState+,Condition*,PropagationTrigger*)&gt;
      &lt;!ATTLIST Transition actionMethod CDATA #REQUIRED&gt;
      &lt;!ELEMENT ToState(Condition*)&gt;
      &lt;!ATTLIST ToState name CDATA #REQUIRED&gt;
      &lt;!—PropagationTrigger在觸發(fā)狀態(tài)遷移傳播時(shí),要指定傳播的路徑associationPath,(通過(guò)這個(gè)路徑可以找到目的資源類型)以及目的地的狀態(tài)遷移的名字(由propagation定義)--&gt;
      &lt;!ELEMENT PropagationTrigger EMPTY&gt;
      &lt;!ATTLIST PropagationTrigger associationPath CDATA #REQUIREDpropagation CDATA #REQUIRED&gt;
      &lt;!—條件對(duì)應(yīng)一個(gè)校驗(yàn)器,name定義了校驗(yàn)器的類名,由于不同校驗(yàn)器的參數(shù)各個(gè)不同,所以參數(shù)(Param)以名值對(duì)的形式傳入--&gt;
      &lt;!ELEMENT Condition(Param*)&gt;
      &lt;!ATTLIST Condition name CDATA #REQUIRED&gt;
      &lt;!ELEMENT Param EMPTY&gt;
      &lt;!ATTLIST Param name CDATA #REQUIREDvalue CDATA #REQUIRED&gt;
      由以上內(nèi)容可以看出,在本發(fā)明中采用了條件性狀態(tài)遷移。條件性狀態(tài)遷移實(shí)際上包含兩個(gè)模式,一種是在判定遷移是否有效前,運(yùn)用條件檢查;另外一種是遷移已經(jīng)有效,但是根據(jù)其他條件來(lái)判定應(yīng)該到哪個(gè)狀態(tài)。把這兩種分開可以簡(jiǎn)化校驗(yàn)的處理流程,因?yàn)榉珠_后,只要任何一個(gè)條件檢查不通過(guò),就認(rèn)為檢驗(yàn)失敗;而不用等所有的檢驗(yàn)都完成后,計(jì)算最符合的分支。
      下面結(jié)合實(shí)際網(wǎng)絡(luò)資源列舉一個(gè)例子,來(lái)說(shuō)明如何定義狀態(tài)機(jī)。
      如圖4所示,假設(shè)當(dāng)端口(Port)連接到電纜時(shí),其狀態(tài)從Installed到Connected狀態(tài),同時(shí)誘發(fā)單板(Board)從Installed狀態(tài)轉(zhuǎn)變成In-Use狀態(tài)。而當(dāng)端口(Port)和電纜斷連時(shí),其狀態(tài)從Connected到Installed狀態(tài),同時(shí)如果單板的所有端口都處于Installed狀態(tài)時(shí),誘發(fā)單板(Board)從In-Use狀態(tài)轉(zhuǎn)變成Installed狀態(tài)。
      那么Port的狀態(tài)機(jī)定義為&lt;StateMachine name=″Port-StateMachine″&gt;
      &lt;State name=″INSTALLED″displayName=″Installed″&gt;
      &lt;Transition actionMethod=″assignResource″&gt;
      &lt;ToState name=″CONNECTED″/&gt;//ToState在這里已經(jīng)結(jié)束了,下列的Condition是Transition的。
      &lt;Condition name=″AssociationNameValidator″&gt;
      &lt;Param name=″AssociationName″value=″CABLE_PORT″/&gt;
      &lt;/Condition&gt;
      &lt;PropagationTrigger associationName=″BOARD_PORT″propagation=″PortInstalled_Connected″/&gt;
      &lt;/Transition&gt;
      &lt;/State&gt;
      &lt;State name=″CONNECTED″displayName=″Connected″&gt;
      &lt;Transition actionMethod=″unassignResource″&gt;
      &lt;ToState name=″INSTALLED″/&gt;
      &lt;Condition name=″AssociationNameValidator″&gt;
      &lt;Param name=″AssociationName″value=″CABLE_PORT″/&gt;
      &lt;/Condition&gt;
      &lt;PropagationTrigger associationName=″BOARD_PORT″propagation=″PortConnected_Installed″/&gt;
      &lt;/Transition&gt;
      &lt;/State&gt;
      &lt;/StateMachine&gt;
      Board的狀態(tài)機(jī)定義如下&lt;StateMachine name=″Board-StateMachine″&gt;
      &lt;State name=″INSTALLED″displayName=″Installed″&gt;
      &lt;!—這個(gè)就是一個(gè)被傳播的狀態(tài)遷移--&gt;
      &lt;Transition actionMethod=″PortInstalled_Connected″&gt;
      &lt;ToState name=″INUSE″/&gt;
      &lt;/Transition&gt;
      &lt;/State&gt;
      &lt;State name=″INUSE″displayName=″In Use″&gt;
      &lt;Transition actionMethod=″PortConnected_Installed″&gt;
      &lt;ToState name=″INSTALLED″&gt;//該條件是ToState的&lt;Condition name=″ChildStateCountValidator″&gt;
      &lt;Param name=″AssociationName″value=″BOARD_PORT″/&gt;
      &lt;Param name=″ResourceType″value=″PORT″/&gt;
      &lt;Param name=″ResourceCount″value=″0″/&gt;
      &lt;Param name=″ResourceState″value=″CONNECTED″/&gt;
      &lt;/Condition&gt;
      &lt;ToState name=″INUSE″&gt;//該條件是ToState的&lt;Condition name=″ChildStateCountValidator″&gt;
      &lt;Param name=″AssociationName″value=″BOARD_PORT″/&gt;
      &lt;Param name=″ResourceType″value=″PORT″/&gt;
      &lt;Param name=″ResourceCount″value=″&gt;0″/&gt;
      &lt;Param name=″ResourceState″value=″CONNECTED″/&gt;
      &lt;/Condition&gt;
      &lt;/Transition&gt;
      &lt;/State&gt;
      &lt;/StateMachine&gt;
      被緩存的狀態(tài)機(jī)定義實(shí)體上述定義的狀態(tài)機(jī),將被轉(zhuǎn)換成系統(tǒng)的狀態(tài)機(jī)實(shí)體對(duì)象,我們稱之為“State Machine Specification”,其中包含如圖5所示的實(shí)體對(duì)象(Resource除外)。
      圖5中所示對(duì)象基本上和DTD中描述的對(duì)象是一致的,具體含義和關(guān)系已經(jīng)在DTD的解釋信息中描述,這里就不再贅述。我們可以通過(guò)XML定義來(lái)建立資源類型(Resource)和StateMachine對(duì)象間的關(guān)聯(lián),使一個(gè)資源對(duì)應(yīng)一個(gè)狀態(tài)機(jī)。
      狀態(tài)機(jī)服務(wù)狀態(tài)機(jī)服務(wù)的過(guò)程首先要獲取發(fā)生的事件的相關(guān)參數(shù),進(jìn)而根據(jù)狀態(tài)機(jī)中定義的與事件相關(guān)聯(lián)的遷移條件校驗(yàn)該事件是否能夠被執(zhí)行。如果通過(guò)校驗(yàn),則執(zhí)行與所述事件相關(guān)聯(lián)的狀態(tài)遷移,并進(jìn)而執(zhí)行與所述狀態(tài)遷移相關(guān)聯(lián)的狀態(tài)遷移傳播。
      可以看到,Transition元素有ToState和Condition兩個(gè)子元素,并且可包含一個(gè)或者多個(gè)ToState;同時(shí)有多個(gè)ToState時(shí),每個(gè)ToState也有一個(gè)或者多個(gè)Condition。在處理該語(yǔ)意時(shí),先看該Transition下的Conditoin是否都得到了滿足,如果是,再根據(jù)ToState下的Condition來(lái)決定是否有合適的狀態(tài)定義。只有Transition下的條件和ToState下的條件都得到匹配,才會(huì)執(zhí)行該操作,并發(fā)生狀態(tài)遷移。
      下面結(jié)合圖6說(shuō)明根據(jù)本發(fā)明進(jìn)行狀態(tài)機(jī)服務(wù)的具體示例。狀態(tài)機(jī)服務(wù)由圖6所示的ResourceStateManager接口提供,在使用它的服務(wù)前,要傳遞一個(gè)StateMachineSession對(duì)象,該對(duì)象存儲(chǔ)必要的與具體事件相關(guān)的參數(shù),供ResourceStateManager和StateTransistionCondtionValidator在執(zhí)行校驗(yàn)時(shí)使用。StateTransitionConditionValidator則主要被ResourceStateManager用來(lái)執(zhí)行條件校驗(yàn),ResourceStateManager根據(jù)前述XML的定義,確定對(duì)某個(gè)狀態(tài)轉(zhuǎn)移使用某些個(gè)條件校驗(yàn)器,并逐個(gè)執(zhí)行校驗(yàn)器的validate()方法,如果任何一個(gè)返回異常,就認(rèn)為該事件不能被執(zhí)行。
      ResourceStateManager的幾個(gè)主要方法的用途和實(shí)現(xiàn)邏輯1)validateAction(),該方法用于校驗(yàn)事件是否能夠被執(zhí)行,如果能執(zhí)行,返回true;否則返回false。在處理過(guò)程上,其首先從StateMachine Specification獲得在該狀態(tài)下事件名稱相同的Transition對(duì)象,然后逐個(gè)檢查Transition所屬的Condition是否被滿足(調(diào)用不同的StateTransitionConditionValidator的實(shí)現(xiàn)類),如果有滿足,則存儲(chǔ)滿足條件的Transition并返回true。
      2)performStateTransition(),該方法執(zhí)行狀態(tài)遷移,并執(zhí)行狀態(tài)遷移傳播。該方法首先從前面validateAction函數(shù)中計(jì)算出的Transition對(duì)象中獲得一個(gè)確定的ToState對(duì)象(也需要逐個(gè)檢查ToState對(duì)象的Condition對(duì)象是否被滿足,只有滿足Condition對(duì)象設(shè)定的條件的ToState才是有效的),然后物理化存儲(chǔ)新的狀態(tài),最后逐個(gè)執(zhí)行該Transition對(duì)象下的所有PropagationTrigger對(duì)象,PropagationTrigger激活的也是一個(gè)Transition對(duì)象,所以針對(duì)每個(gè)PropagationTrigger的處理也是一樣的。
      3)setStateSessionData(),把該事件相關(guān)的參數(shù)傳遞到Session中來(lái),以Map的形式存儲(chǔ)。
      下面通過(guò)一段代碼作為例子來(lái)說(shuō)明ResourceStateManager的用法。
      在一個(gè)資源類型中,每一個(gè)不同事件有一個(gè)處理函數(shù),該方法的實(shí)現(xiàn)示例如下,XXXActionMethod(){ResourceStateManager lStateMgr=null;try{//從工廠獲得一個(gè)ResourceStateManager的實(shí)現(xiàn)實(shí)例lStateMgr=StateMachineFactory.getStateMgmt();}catch(StateMgmtException ex){//異常處理并返回……}//相關(guān)的SessionData被傳遞進(jìn)來(lái)lStateMgr.setStateSessionData(new StateMachineSession(opertationType,lResValue));try{//校驗(yàn)該事件是否有效的事件if(false==
      lStateMgr.validateAction(lResValue.getTypeName(),lResValue.getState(),toState){//如果不是則返回異?!瓆}catch(StateMgmtException ex2){//exception handling here}}//這里放置具體的業(yè)務(wù)邏輯,不再需要處理狀態(tài)相關(guān)的工作.
      ……try{//最后執(zhí)行狀態(tài)遷移的后續(xù)狀態(tài)更改和狀態(tài)遷移傳播lStateMgr.performStateTransition(aResKey);}catch(StateMgmtException exl){}}}所有的其他事件處理將使用同樣的編程模式來(lái)處理狀態(tài)遷移,不需要考慮過(guò)多的狀態(tài)機(jī)遷移以及狀態(tài)遷移傳播的具體細(xì)節(jié)。
      從上述方案可以看到,通過(guò)這樣一套機(jī)制,我們可以獲得如下好處1)采用XML這種簡(jiǎn)單易懂的方式來(lái)定義狀態(tài)機(jī),并表示了條件性狀態(tài)遷移和狀態(tài)遷移傳播這兩個(gè)新的特性。
      2)狀態(tài)的條件校驗(yàn)器是與狀態(tài)機(jī)處理松偶合的,并容易擴(kuò)展。
      3)狀態(tài)遷移和狀態(tài)遷移傳播作為狀態(tài)機(jī)服務(wù)的內(nèi)在特性,對(duì)業(yè)務(wù)邏輯是透明的,簡(jiǎn)化了編碼。
      4)狀態(tài)遷移的處理和業(yè)務(wù)邏輯的處理是分離的,這樣使?fàn)顟B(tài)遷移的定義更加容易變化而不用修改源代碼。在資源管理應(yīng)用中,不同的運(yùn)營(yíng)商(或是同一運(yùn)營(yíng)商的不同分支公司)對(duì)業(yè)務(wù)的要求是不一樣的,特別是狀態(tài)定義上,變化更多,而該機(jī)制很好地適應(yīng)了這種情況。
      權(quán)利要求
      1.一種使用狀態(tài)機(jī)進(jìn)行網(wǎng)絡(luò)資源管理的方法,其中使用標(biāo)記語(yǔ)言在一配置文件中定義各網(wǎng)絡(luò)資源的狀態(tài)機(jī),所述狀態(tài)機(jī)包括相應(yīng)網(wǎng)絡(luò)資源的多個(gè)狀態(tài)、與每個(gè)狀態(tài)相關(guān)聯(lián)的至少一個(gè)狀態(tài)遷移、與每個(gè)狀態(tài)遷移相關(guān)聯(lián)的事件、以及與每個(gè)狀態(tài)遷移相關(guān)聯(lián)的至少一個(gè)遷移條件,所述方法包括以下步驟獲取一個(gè)發(fā)生的事件的參數(shù);從配置文件獲得與所述事件相關(guān)聯(lián)的遷移條件,以校驗(yàn)與所述事件相關(guān)聯(lián)的狀態(tài)遷移是否能夠被執(zhí)行;如果通過(guò)校驗(yàn),則執(zhí)行所述狀態(tài)遷移。
      2.根據(jù)權(quán)利要求1所述的方法,其中每個(gè)狀態(tài)遷移具有一個(gè)以上目標(biāo)狀態(tài),每個(gè)目標(biāo)狀態(tài)具有相關(guān)聯(lián)的至少一個(gè)條件,所述方法在根據(jù)遷移條件判斷所述事件能夠被執(zhí)行后,進(jìn)一步根據(jù)與每個(gè)目標(biāo)狀態(tài)相關(guān)聯(lián)的至少一個(gè)條件來(lái)執(zhí)行狀態(tài)遷移。
      3.根據(jù)權(quán)利要求1所述的方法,其中所述配置文件由XML語(yǔ)言編寫。
      4.根據(jù)權(quán)利要求1所述的方法,其中所述狀態(tài)機(jī)還包括與狀態(tài)遷移相關(guān)聯(lián)的狀態(tài)遷移傳播,并且所述方法還包括在執(zhí)行狀態(tài)遷移后進(jìn)而執(zhí)行所述相關(guān)聯(lián)的狀態(tài)遷移傳播。
      5.根據(jù)權(quán)利要求1所述的方法,其中可以通過(guò)修改配置文件來(lái)修改網(wǎng)絡(luò)資源的狀態(tài)機(jī)。
      6.根據(jù)權(quán)利要求4所述的方法,其中所述狀態(tài)機(jī)還包括狀態(tài)遷移傳播的傳播路徑,并且所述執(zhí)行狀態(tài)遷移傳播的步驟根據(jù)所述傳播路徑來(lái)進(jìn)行。
      7.根據(jù)權(quán)利要求4所述的方法,其中在配置文件中將某些網(wǎng)絡(luò)資源的狀態(tài)遷移定義為相關(guān)聯(lián)的網(wǎng)絡(luò)資源的事件。
      全文摘要
      一種使用狀態(tài)機(jī)進(jìn)行網(wǎng)絡(luò)資源管理的方法,其中使用標(biāo)記語(yǔ)言在一配置文件中定義各網(wǎng)絡(luò)資源的狀態(tài)機(jī),所述狀態(tài)機(jī)包括相應(yīng)網(wǎng)絡(luò)資源的多個(gè)狀態(tài)、與每個(gè)狀態(tài)相關(guān)聯(lián)的至少一個(gè)狀態(tài)遷移、與每個(gè)狀態(tài)遷移相關(guān)聯(lián)的事件、以及與每個(gè)狀態(tài)遷移相關(guān)聯(lián)的至少一個(gè)遷移條件,所述方法包括以下步驟獲取一個(gè)發(fā)生的事件的參數(shù);從配置文件獲得與所述事件相關(guān)聯(lián)的遷移條件,以校驗(yàn)與所述事件相關(guān)聯(lián)的狀態(tài)遷移是否能夠被執(zhí)行;如果通過(guò)校驗(yàn),則執(zhí)行所述狀態(tài)遷移。
      文檔編號(hào)H04L12/24GK1744512SQ20041005708
      公開日2006年3月8日 申請(qǐng)日期2004年8月30日 優(yōu)先權(quán)日2004年8月30日
      發(fā)明者尼姆尤, 張治華 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1