亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種狀態(tài)機的實現(xiàn)方法及裝置的制作方法

文檔序號:6603675閱讀:271來源:國知局
專利名稱:一種狀態(tài)機的實現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及狀態(tài)機技術(shù)領(lǐng)域,尤其涉及一種狀態(tài)機的實現(xiàn)方法及裝置。
背景技術(shù)
有限狀態(tài)機(Finite State Machine,FSM)又稱為有限狀態(tài)自動機或簡稱狀態(tài)機, 表示有限個狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學模型。一般情況下,有限狀 態(tài)機通過狀態(tài)、事件、轉(zhuǎn)換和動作之間的關(guān)系來控制狀態(tài)的轉(zhuǎn)換,其中狀態(tài)(State)指對象在其生命周期中的一種狀況,處于某個特定狀態(tài)中的對象必 然會滿足某些條件、執(zhí)行某些動作或者等待某些事件;事件(Event)指在時間和空間上占有一定位置,并且對狀態(tài)機來講是有意義的那 些事情,即事件通常會引起狀態(tài)的變遷,促使狀態(tài)機從一種狀態(tài)切換到另一種狀態(tài);轉(zhuǎn)換(Transition)指兩個狀態(tài)之間的一種關(guān)系,表明對象將在第一個狀態(tài)中執(zhí) 行一定的動作,并將在某個事件發(fā)生(即某個特定條件滿足)時進入第二個狀態(tài);動作(Action)指狀態(tài)機中可以執(zhí)行的原子操作,所謂原子操作指它們在運行的 過程中不能被其他消息所中斷,必須一直執(zhí)行下去。狀態(tài)機作為一種概念性機器,它能采取某種動作來響應一個外部事件。具體采取 的動作不僅能取決于接收到的事件,還能取決于各個事件的相對發(fā)生順序。之所以能做到 這一點,是因為狀態(tài)機能夠跟蹤一個內(nèi)部狀態(tài),它會在收到事件后進行更新。另外,采取的 行動還會決定并更新機器的狀態(tài)。這樣一來,任何邏輯都可建模成一系列事件/狀態(tài)組合。 在軟件領(lǐng)域,狀態(tài)機被普遍用于搜索引擎的分詞、編譯器實現(xiàn)、游戲開發(fā)和工作流引擎實現(xiàn) 等,例如,在游戲開發(fā)中,通常用FSM實現(xiàn)游戲中人物的控制和任務(wù)的觸發(fā)等,在工作流引 擎實現(xiàn)中,通常用FSM來實現(xiàn)對于流程實例、活動實例、轉(zhuǎn)移實例、工作項實例的狀態(tài)遷移。與其他常用的設(shè)計模式有所不同,程序員想要在軟件系統(tǒng)中加入狀態(tài)機時,必須 額外編寫一部分用于邏輯控制的代碼,對于狀態(tài)機的實現(xiàn),目前常用的方法有以下兩種一種方法是使用switch語句實現(xiàn)狀態(tài)機,其基本思路是為狀態(tài)機中的每一種狀 態(tài)設(shè)置一個case分支,用于對該狀態(tài)進行處理。每個case分支都對相應狀態(tài)下的狀態(tài)轉(zhuǎn) 換條件(即觸發(fā)狀態(tài)轉(zhuǎn)換的事件)以及動作進行了描述,能夠控制狀態(tài)機較好地工作,但該 switch語句實現(xiàn)狀態(tài)機的方法中,代碼的可讀性并不理想,主要原因是實現(xiàn)狀態(tài)機轉(zhuǎn)換時, 檢查狀態(tài)轉(zhuǎn)換條件和進行狀態(tài)轉(zhuǎn)換都混雜在一個case分支中,即混雜在當前狀態(tài)中完成。 顯然,如果在每種狀態(tài)下都需要分別檢查多個不同的轉(zhuǎn)換條件,并且需要根據(jù)檢查結(jié)果控 制狀態(tài)機切換到不同的狀態(tài),對狀態(tài)機各狀態(tài)的控制效率很低,并且,由于如果狀態(tài)機的狀 態(tài)很多,或者狀態(tài)之間的轉(zhuǎn)換關(guān)系復雜,則代碼就會顯得復雜混亂,這樣,如果需要對狀態(tài) 機進行維護,則存在很大困難,甚至不可維護。另一種方法是使用函數(shù)指針數(shù)組實現(xiàn)狀態(tài)機,狀態(tài)機實質(zhì)上就是維護一個“狀 態(tài)-事件”的二維矩陣關(guān)系,因此可以采用二維函數(shù)指針數(shù)組的方法,形如(*pr0cess)() process_function [state] [event],即通過設(shè)定的“狀態(tài)-事件”的二維矩陣關(guān)系,控制狀態(tài)機的跳轉(zhuǎn)以及相應動作的實現(xiàn)。該方法能夠更加直觀地實現(xiàn)狀態(tài)機,但使用該方法實現(xiàn) 狀態(tài)機時,由于動作是為特定的狀態(tài)和事件設(shè)計的,那么一個動作可能混雜不同的邏輯處 理,因此狀態(tài)機轉(zhuǎn)換的效率很低,并且,event (事件)的編號必須從0開始連續(xù)編號,因此, 如果在某個狀態(tài)下增加一個事件,其它狀態(tài)即使不需要考慮這個事件,也需要增加相應的 處理以保證矩陣的完整性,因此,對狀態(tài)機的維護過程很復雜,尤其在系統(tǒng)非常復雜時,狀 態(tài)機甚至不可維護。綜上所述,采用現(xiàn)有技術(shù)實現(xiàn)的狀態(tài)機,對狀態(tài)機各狀態(tài)的控制效率低,并且維護 過程復雜。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例提供一種狀態(tài)機的實現(xiàn)方法及裝置,采用該技術(shù)方案實 現(xiàn)狀態(tài)機,提高了對狀態(tài)機各狀態(tài)的控制效率,并且易于維護。本發(fā)明實施例通過如下技術(shù)方案實現(xiàn)根據(jù)本發(fā)明實施例的一個方面,提供了 一種狀態(tài)機的實現(xiàn)方法。根據(jù)本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)方法,包括確定當前生成的事件以及狀態(tài)機當前的狀態(tài);查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應關(guān)系,判斷所述當前生成的事 件以及所述狀態(tài)機當前的狀態(tài)是否存在響應關(guān)系;若存在響應關(guān)系,則根據(jù)預先確定的存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù) 標識和轉(zhuǎn)換的下一狀態(tài),確定出所述狀態(tài)機當前的狀態(tài)和所述當前生成的事件對應的處理 函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài),并在執(zhí)行確定的所述處理函數(shù)標識對應的處理函數(shù)成功后,控制所述狀態(tài)機跳轉(zhuǎn)至 確定出的下一狀態(tài);若不存在響應關(guān)系,則控制所述狀態(tài)機保持當前狀態(tài)。 根據(jù)本發(fā)明實施例的另一個方面,還提供了 一種狀態(tài)機的實現(xiàn)裝置。根據(jù)本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)裝置,包括狀態(tài)以及事件確定單元,用于確定當前生成的事件以及狀態(tài)機當前的狀態(tài);響應關(guān)系確定單元,用于查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應關(guān) 系,判斷所述狀態(tài)以及事件確定單元確定的所述事件以及所述狀態(tài)是否存在響應關(guān)系;狀態(tài)控制單元,用于在所述響應關(guān)系確定單元確定不存在響應關(guān)系時,控制所述 狀態(tài)機保持當前狀態(tài);在所述響應關(guān)系確定單元確定存在響應關(guān)系時,根據(jù)預先確定的存 在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài),確定出所述狀態(tài)以及事 件確定單元確定的所述狀態(tài)和事件對應的處理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài),并在執(zhí)行確 定的所述處理函數(shù)標識對應的處理函數(shù)成功后,控制所述狀態(tài)機跳轉(zhuǎn)至確定出的下一狀 態(tài)。通過本發(fā)明實施例提供的上述至少一個技術(shù)方案實現(xiàn)狀態(tài)機時,首先確定當前生 成的事件以及狀態(tài)機當前的狀態(tài),通過查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應 關(guān)系,判斷當前生成的事件以及狀態(tài)機當前的狀態(tài)是否存在響應關(guān)系,若存在響應關(guān)系,則 根據(jù)預先確定的存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài),確定出狀態(tài)機當前的狀態(tài)和當前生成的事件對應的處理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài),并在執(zhí) 行確定的處理函數(shù)標識對應的處理函數(shù)成功后,控制狀態(tài)機跳轉(zhuǎn)至確定出的下一狀態(tài);若 不存在響應關(guān)系,則控制該狀態(tài)機保持當前狀態(tài)。根據(jù)該技術(shù)方案,預先確定存在響應關(guān)系 的狀態(tài)與事件的對應關(guān)系及其存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的 下一狀態(tài),從而在實現(xiàn)狀態(tài)機時,能夠通過查找該預先確定的對應關(guān)系確定當前狀態(tài)和事 件對應的動作(即處理函數(shù)標識)以及轉(zhuǎn)換的下一狀態(tài),代碼清晰,能夠快速、準確地實現(xiàn) 對狀態(tài)機狀態(tài)的控制,提高了狀態(tài)機的控制效率;并且,根據(jù)本發(fā)明實施例,狀態(tài)機的動作 (即處理函數(shù))不依賴于狀態(tài)和事件,代碼簡單,易于維護。本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明 書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。


附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明實施 例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中圖1為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)方法流程圖一;圖2為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)方法流程圖二 ;圖3為本發(fā)明實施例提供的狀態(tài)圖示例;圖4為本發(fā)明實施例提供的生成二維數(shù)組的流程圖;圖5為本發(fā)明實施例提供的通過狀態(tài)機事件處理函數(shù)執(zhí)行狀態(tài)處理的流程圖;圖6為本發(fā)明實施例提供的不確定有限狀態(tài)機轉(zhuǎn)換為確定有限狀態(tài)機的流程圖;圖7為本發(fā)明實施例提供的不確定有限狀態(tài)機對應的狀態(tài)圖示例;圖8為本發(fā)明實施例提供的圖6對應的確定有限狀態(tài)機對應的狀態(tài)圖示例;圖9為本發(fā)明實施例提供的執(zhí)行確定的處理函數(shù)失敗時的流程圖;圖10為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)裝置示意圖一;圖11為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)裝置示意圖二 ;圖12為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)裝置示意圖三;圖13為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)裝置示意圖四;圖14為本發(fā)明實施例提供的圖13中的關(guān)系轉(zhuǎn)換單元結(jié)構(gòu)示意圖;圖15為本發(fā)明實施例提供的狀態(tài)機的實現(xiàn)裝置示意圖五。
具體實施例方式為了給出提高狀態(tài)機各狀態(tài)的控制效率以及易于維護的實現(xiàn)方案,本發(fā)明實施例 提供了一種狀態(tài)機的實現(xiàn)方法及裝置,以下結(jié)合說明書附圖對本發(fā)明的優(yōu)選實施例進行說 明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。 并且在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。根據(jù)本發(fā)明實施例,首先提供了一種狀態(tài)機的實現(xiàn)方法,該方法基于預先確定的 控制信息實現(xiàn),其中,該預先確定的控制信息包括存在響應關(guān)系的狀態(tài)與事件的對應關(guān) 系,及其存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài)。
具體地,確定上述控制信息的過程,包括根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成狀態(tài)表,其中若狀態(tài)所在行與事件所在列的交叉單元格中存儲有信息,則表示該狀態(tài)與事件存 在響應關(guān)系,該單元格中存儲的信息為存在響應關(guān)系的該狀態(tài)和事件對應的處理函數(shù)標識 以及轉(zhuǎn)換的下一狀態(tài);若狀態(tài)所在行與事件所在列的交叉單元格為空,則表示該狀態(tài)與事件不存在響應關(guān)系。如圖1所示,基于上述預先確定的控制信息,在監(jiān)控到狀態(tài)機中有事件生成時,控 制狀態(tài)機的過程主要包括如下步驟步驟101、確定當前生成的事件以及狀態(tài)機當前的狀態(tài)。步驟102、查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應關(guān)系;步驟103、判斷當前生成的事件以及狀態(tài)機當前的狀態(tài)是否存在響應關(guān)系,若否, 執(zhí)行步驟104,否則執(zhí)行步驟105 ;步驟104、控制該狀態(tài)機保持當前狀態(tài),至此結(jié)束流程。步驟105、根據(jù)預先確定的存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn) 換的下一狀態(tài),確定出狀態(tài)機當前的狀態(tài)和當前生成的事件對應的處理函數(shù)標識以及轉(zhuǎn)換 的下一狀態(tài);步驟106、執(zhí)行確定的處理函數(shù)標識對應的處理函數(shù),并在執(zhí)行成功后,控制狀態(tài) 機跳轉(zhuǎn)至確定出的下一狀態(tài),至此結(jié)束流程。圖1所示流程為在狀態(tài)機中有事件生成時,根據(jù)預先確定的信息控制狀態(tài)機的過 程,實際應用中,需要對狀態(tài)機中事件進行監(jiān)控,在每次有新的事件生成時,通過上述步驟 控制狀態(tài)機的狀態(tài)。根據(jù)本發(fā)明優(yōu)選實施例,將生成的狀態(tài)表通過二維數(shù)組結(jié)構(gòu)進行保存,將處理函 數(shù)標識與處理函數(shù)的對應關(guān)系通過一維數(shù)組結(jié)構(gòu)保存。如圖2所示,基于該二維數(shù)組結(jié)構(gòu) 保存的控制信息以及一維數(shù)組結(jié)構(gòu)保存的處理函數(shù)信息,實現(xiàn)狀態(tài)機控制的過程,包括如 下步驟步驟201、為狀態(tài)機定義狀態(tài)、事件以及處理函數(shù)的關(guān)系;步驟202、根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成一個二維數(shù)組 以及一個一維數(shù)組;上述步驟201以及步驟202獨立地構(gòu)成了對狀態(tài)機的狀態(tài)、事件以及處理函數(shù)的 關(guān)系的預處理過程,根據(jù)該預處理得到的二維數(shù)組以及一維數(shù)組用于控制后續(xù)狀態(tài)機的實 現(xiàn)。步驟203、監(jiān)控狀態(tài)機中的事件,在有新的事件生成時,確定當前生成的事件以及 狀態(tài)機當前的狀態(tài);步驟204、通過查找生成的二維數(shù)組確定該事件以及狀態(tài)是否存在響應關(guān)系,若 否,執(zhí)行步驟205,若是,執(zhí)行步驟206 ;步驟205、控制該狀態(tài)機保持當前狀態(tài);步驟206、通過查找生成的二維數(shù)組確定存在響應關(guān)系的該狀態(tài)和事件對應的處 理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài);
步驟207、通過查找生成的一維數(shù)組確定與該處理函數(shù)標識對應的處理函數(shù),并在 執(zhí)行確定的處理函數(shù)成功后,控制該狀態(tài)機跳轉(zhuǎn)至確定出的下一狀態(tài)。上述步驟203以及步驟207獨立地構(gòu)成了實現(xiàn)狀態(tài)機的過程,即根據(jù)預先生成的 一維數(shù)組以及二維數(shù)組控制狀態(tài)機的狀態(tài)。圖2所示流程的步驟201中,為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系包 括狀態(tài)機包括的狀態(tài)以及響應各狀態(tài)的事件;存在響應關(guān)系的狀態(tài)和事件對應的處理函數(shù)以及轉(zhuǎn)換的下一狀態(tài)。上述關(guān)系通常通過圖3所示的狀態(tài)圖表示,從圖3表示的關(guān)系可以直觀地確定各 狀態(tài)以及對應的響應狀態(tài),其中,狀態(tài)機對應的各狀態(tài)分別通過STATEO、STATEU STATE2、 STATE3、STATE4表示(圖3中示出了 5種狀態(tài),實際應用中,可能包括更多的狀態(tài));事件通 過 EVENTO、EVENT 1、EVENT2、EVENT3、EVENT4、EVENT5、EVENT6(圖 3 中示出了 6 種事件,實際 應用中,可能包括更多的事件);狀態(tài)之間的關(guān)系通過箭頭表示,例如,從狀態(tài)STATEO出來 的箭頭EVENTO指向下一狀態(tài)STATEl,即在STATEO狀態(tài)下收到EVENTO事件,則觸發(fā)相應的 處理函數(shù),并在執(zhí)行處理函數(shù)成功后,狀態(tài)機從狀態(tài)STATEO轉(zhuǎn)換為STATEl。其中,為了簡化 狀態(tài)圖,圖3所示的狀態(tài)圖僅表示了狀態(tài)以及事件之間的關(guān)系,對于存在響應關(guān)系的狀態(tài) 和事件對應的處理函數(shù),通過其它方式表示,例如,通過單獨的狀態(tài)圖表示,或通過列表方 式表示,當然也可以在該圖3所示的狀態(tài)圖中標出相應的處理函數(shù)標識,具體可以有多種 表示方式,此處不再一一列舉。圖2所示流程的步驟202中,生成的二維數(shù)組用于表示狀態(tài)與事件的關(guān)系以及存 在響應關(guān)系的狀態(tài)和事件對應的處理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài)。如圖4所示,本發(fā)明 實施例中,根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成該二維數(shù)組的過程,具 體包括如下步驟步驟401、根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系,生成狀態(tài)表;步驟402、根據(jù)定義的二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),將生成的狀態(tài)表轉(zhuǎn)換為二維數(shù)組。圖4所示流程的步驟401中,狀態(tài)表的列可以表示狀態(tài)機對應的狀態(tài),狀態(tài)表的行 可以表示事件。假設(shè)狀態(tài)機有M個狀態(tài)和N個事件,那么除去首行和首列外,狀態(tài)表就有M 列N行。當然,也可以通過狀態(tài)表的行表示狀態(tài)機對應的狀態(tài),通過狀態(tài)表的列表示事件。 圖3所示狀態(tài)圖對應的狀態(tài)表格式具體可以如下表
權(quán)利要求
一種狀態(tài)機的實現(xiàn)方法,其特征在于,包括確定當前生成的事件以及狀態(tài)機當前的狀態(tài);查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應關(guān)系,判斷所述當前生成的事件以及所述狀態(tài)機當前的狀態(tài)是否存在響應關(guān)系;若存在響應關(guān)系,則根據(jù)預先確定的存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài),確定出所述狀態(tài)機當前的狀態(tài)和所述當前生成的事件對應的處理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài),并在執(zhí)行確定的所述處理函數(shù)標識對應的處理函數(shù)成功后,控制所述狀態(tài)機跳轉(zhuǎn)至確定出的下一狀態(tài);若不存在響應關(guān)系,則控制所述狀態(tài)機保持當前狀態(tài)。
2.如權(quán)利要求1所述的方法,其特征在于,確定存在響應關(guān)系的狀態(tài)與事件的對應關(guān) 系及其存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài),包括根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成狀態(tài)表,其中若狀態(tài)所在行 與事件所在列的交叉單元格或狀態(tài)所在列與事件所在行的交叉單元格中存儲有信息,則表 示該狀態(tài)與該事件存在響應關(guān)系,所述信息為存在響應關(guān)系的該狀態(tài)和該事件對應的處理 函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài);若所述交叉單元格為空,則表示該狀態(tài)與該事件不存在響 應關(guān)系。
3.如權(quán)利要求2所述的方法,其特征在于,將生成的所述狀態(tài)表通過二維數(shù)組結(jié)構(gòu)進 行保存。
4.如權(quán)利要求2所述的方法,其特征在于,根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函 數(shù)的關(guān)系生成狀態(tài)表之前,還包括根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系,確定所述狀態(tài)機為確定有限狀 態(tài)機。
5.如權(quán)利要求2所述的方法,其特征在于,根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函 數(shù)的關(guān)系生成狀態(tài)表之前,還包括根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系,確定所述狀態(tài)機為不確定有限 狀態(tài)機;以及將所述為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系轉(zhuǎn)換為確定有限狀態(tài)機對應的 狀態(tài)、事件以及處理函數(shù)的關(guān)系。
6.如權(quán)利要求5所述的方法,其特征在于,將所述為狀態(tài)機定義的狀態(tài)、事件以及處理 函數(shù)的關(guān)系轉(zhuǎn)換為確定有限狀態(tài)機對應的狀態(tài)、事件以及處理函數(shù)的關(guān)系,包括根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系,確定對應多個轉(zhuǎn)換的下一狀態(tài) 的當前狀態(tài);針對確定出的對應多個轉(zhuǎn)換的下一狀態(tài)的當前狀態(tài),分別執(zhí)行構(gòu)造與所述多個轉(zhuǎn)換的下一狀態(tài)分別對應的響應事件;建立各響應事件與所述當前狀態(tài)之間的響應關(guān)系;以及根據(jù)各響應關(guān)系中響應事件對應的轉(zhuǎn)換的下一狀態(tài),建立各響應關(guān)系中所述當前狀態(tài) 對應的下一狀態(tài)。
7.如權(quán)利要求1所述的方法,其特征在于,若執(zhí)行確定的處理函數(shù)標識對應的處理函數(shù)失敗,則所述方法還包括確定所述處理函數(shù)執(zhí)行失敗的原因;根據(jù)設(shè)定的原因與返回值的對應關(guān)系,確定與所述原因?qū)姆祷刂?;根?jù)確定的所述返回值,確定對執(zhí)行失敗的所述處理函數(shù)的處理方式。
8.一種狀態(tài)機的實現(xiàn)裝置,其特征在于,包括狀態(tài)以及事件確定單元,用于確定當前生成的事件以及狀態(tài)機當前的狀態(tài);響應關(guān)系確定單元,用于查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應關(guān)系,判 斷所述狀態(tài)以及事件確定單元確定的所述事件以及所述狀態(tài)是否存在響應關(guān)系;狀態(tài)控制單元,用于在所述響應關(guān)系確定單元確定不存在響應關(guān)系時,控制所述狀態(tài) 機保持當前狀態(tài);在所述響應關(guān)系確定單元確定存在響應關(guān)系時,根據(jù)預先確定的存在響 應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài),確定出所述狀態(tài)以及事件確 定單元確定的所述狀態(tài)和事件對應的處理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài),并在執(zhí)行確定的 所述處理函數(shù)標識對應的處理函數(shù)成功后,控制所述狀態(tài)機跳轉(zhuǎn)至確定出的下一狀態(tài)。
9.如權(quán)利要求8所述的裝置,其特征在于,還包括對應關(guān)系預處理單元,用于確定存在響應關(guān)系的狀態(tài)與事件的對應關(guān)系及其存在響應 關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述對應關(guān)系預處理單元,具體用于根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成狀態(tài)表,其中若狀態(tài)所在行與事件所在列的交叉單元格或狀態(tài)所在列與事件所在行的交叉單元格中存儲有信息,則表 示該狀態(tài)與該事件存在響應關(guān)系,所述信息為存在響應關(guān)系的該狀態(tài)和該事件對應的處理 函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài);若所述交叉單元格為空,則表示該狀態(tài)與該事件不存在響 應關(guān)系。
11.如權(quán)利要求10所述的裝置,其特征在于,還包括狀態(tài)機類型確定單元,用于根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系,確定 所述狀態(tài)機的類型;所述對應關(guān)系預處理單元,具體用于在所述狀態(tài)機類型確定單元確定所述狀態(tài)機為確 定有限狀態(tài)機時,根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成狀態(tài)表。
12.如權(quán)利要求11所述的裝置,其特征在于,還包括關(guān)系轉(zhuǎn)換單元,用于在所述狀態(tài)機類型確定單元確定所述狀態(tài)機為不確定有限狀態(tài)機 時,在所述對應關(guān)系預處理單元根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系生成 狀態(tài)表之前,將為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系轉(zhuǎn)換為確定有限狀態(tài)機對 應的狀態(tài)、事件以及處理函數(shù)的關(guān)系。
13.如權(quán)利要求12所述的裝置,其特征在于,所述關(guān)系轉(zhuǎn)換單元,具體包括當前狀態(tài)確定模塊,用于根據(jù)為狀態(tài)機定義的狀態(tài)、事件以及處理函數(shù)的關(guān)系,確定對 應多個轉(zhuǎn)換的下一狀態(tài)的當前狀態(tài);關(guān)系建立模塊,用于針對所述當前狀態(tài)確定模塊確定出的當前狀態(tài),分別執(zhí)行構(gòu)造與 所述多個轉(zhuǎn)換的下一狀態(tài)分別對應的響應事件,建立各響應事件與所述當前狀態(tài)之間的響 應關(guān)系,并根據(jù)各響應關(guān)系中響應事件對應的轉(zhuǎn)換的下一狀態(tài),建立各響應關(guān)系中所述當 前狀態(tài)對應的下一狀態(tài)。
14.如權(quán)利要求8所述的裝置,其特征在于,還包括處理函數(shù)執(zhí)行單元,用于在執(zhí)行確定的所述處理函數(shù)失敗時,確定所述處理函數(shù)執(zhí)行 失敗的原因,根據(jù)設(shè)定的原因與返回值的對應關(guān)系,確定與所述原因?qū)姆祷刂?,并根?jù) 確定的所述返回值,確定對執(zhí)行失敗的所述處理函數(shù)的處理方式。
全文摘要
本發(fā)明公開了一種狀態(tài)機的實現(xiàn)方法及裝置,主要技術(shù)方案包括確定當前生成的事件以及狀態(tài)機當前的狀態(tài);查找預先確定的存在響應關(guān)系的狀態(tài)與事件的對應關(guān)系,判斷當前生成的事件以及狀態(tài)機當前的狀態(tài)是否存在響應關(guān)系;若存在響應關(guān)系,則根據(jù)預先確定的存在響應關(guān)系的狀態(tài)與事件對應的處理函數(shù)標識和轉(zhuǎn)換的下一狀態(tài),確定出狀態(tài)機當前的狀態(tài)和當前生成的事件對應的處理函數(shù)標識以及轉(zhuǎn)換的下一狀態(tài),并在執(zhí)行確定的處理函數(shù)標識對應的處理函數(shù)成功后,控制所述狀態(tài)機跳轉(zhuǎn)至確定出的下一狀態(tài);若不存在響應關(guān)系,則控制所述狀態(tài)機保持當前狀態(tài)。采用該技術(shù)方案實現(xiàn)狀態(tài)機,提高了狀態(tài)轉(zhuǎn)換的效率,并且易于維護。
文檔編號G06F9/44GK101957751SQ201010193439
公開日2011年1月26日 申請日期2010年6月4日 優(yōu)先權(quán)日2010年6月4日
發(fā)明者熊俊 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1