一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,包括繪制狀態(tài)機(jī)的過(guò)程和修改狀態(tài)機(jī)及管理狀態(tài)機(jī)信息的過(guò)程。主要技術(shù)方案包括:創(chuàng)建狀態(tài)機(jī);按照預(yù)定規(guī)則繪制狀態(tài)機(jī)的各個(gè)狀態(tài);按照預(yù)定規(guī)則的布局算法對(duì)所繪制的狀態(tài)機(jī)的各個(gè)狀態(tài)進(jìn)行連線布局;用樹(shù)結(jié)構(gòu)管理狀態(tài)機(jī)各個(gè)狀態(tài)之間的層次關(guān)系;用二維表結(jié)構(gòu)對(duì)狀態(tài)機(jī)的觸發(fā)事件、連線權(quán)重等進(jìn)行補(bǔ)充描述。本發(fā)明由于按照特定規(guī)則對(duì)狀態(tài)機(jī)的基本單元進(jìn)行分組,將組轉(zhuǎn)化為樹(shù)狀圖的節(jié)點(diǎn),并將樹(shù)狀圖的結(jié)構(gòu)關(guān)系信息保存在樹(shù)狀圖關(guān)系表中,可以很方便的實(shí)現(xiàn)層次狀態(tài)機(jī),使得狀態(tài)機(jī)和樹(shù)狀圖之間的轉(zhuǎn)變簡(jiǎn)單且易于實(shí)現(xiàn),同時(shí)根據(jù)對(duì)狀態(tài)進(jìn)行分層可以快速理解狀態(tài)機(jī)。
【專利說(shuō)明】一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理技術(shù),尤其涉及一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置。
【背景技術(shù)】
[0002]有限狀態(tài)機(jī)的思想不僅是軟件編程領(lǐng)域常用的一種處理方法,同時(shí)也在硬件控制電路領(lǐng)域得到廣泛的應(yīng)用。利用有限狀態(tài)機(jī)可以對(duì)復(fù)雜的控制邏輯進(jìn)行簡(jiǎn)化分解,而形成有限個(gè)穩(wěn)定的狀態(tài)。然后在狀態(tài)之間進(jìn)行跳轉(zhuǎn)時(shí)進(jìn)行相應(yīng)的事件判斷,把連續(xù)的處理過(guò)程變?yōu)殡x散的數(shù)字處理過(guò)程,從而可以更好的利用和發(fā)揮計(jì)算機(jī)的工作特點(diǎn)。同時(shí),因?yàn)橛邢逘顟B(tài)機(jī)表示的簡(jiǎn)單性(由有限個(gè)狀態(tài)),從而可以在實(shí)際的工程應(yīng)用中實(shí)現(xiàn)。另一方面,雖然其表示比較簡(jiǎn)單,卻不意味著它只能進(jìn)行簡(jiǎn)單的有限次處理,由于有限狀態(tài)機(jī)是閉環(huán)的,所以,可以利用有限的狀態(tài)處理無(wú)窮的事務(wù)。
[0003]我們通常所說(shuō)的狀態(tài)機(jī)對(duì)于實(shí)現(xiàn)簡(jiǎn)單的邏輯是非常有幫助的,而且實(shí)現(xiàn)起來(lái)也比較簡(jiǎn)單,比如可以用if-else if-...-else結(jié)構(gòu)或者switch_case結(jié)構(gòu)就可以簡(jiǎn)單實(shí)現(xiàn)。這種狀態(tài)機(jī)在狀態(tài)少的時(shí)候是沒(méi)有什么問(wèn)題的,但是如果跳轉(zhuǎn)的狀態(tài)很多,則維護(hù)狀態(tài)的跳轉(zhuǎn)的難度就非常的大,這是驗(yàn)證工程師在使用狀態(tài)機(jī)時(shí)遇到的一個(gè)很大的難點(diǎn)。例如,一個(gè)狀態(tài)機(jī)有η個(gè)狀態(tài),由于狀態(tài)機(jī)允許某個(gè)狀態(tài)直接跳轉(zhuǎn)到它本身,這要在最壞情況時(shí),一個(gè)工程師就要維護(hù)η*η條跳轉(zhuǎn)鏈接,這時(shí)狀態(tài)機(jī)的跳轉(zhuǎn)會(huì)變得異常的繁雜。
[0004]為了解決這一難題,業(yè)界引入了一種叫做層次化狀態(tài)機(jī)的技術(shù)。簡(jiǎn)而言之,就是先把狀態(tài)根據(jù)其行為進(jìn)行分類,把具有同類行為的幾個(gè)“小狀態(tài)”歸并到一個(gè)“大狀態(tài)”里面。
[0005]綜上所述,狀態(tài)機(jī)在現(xiàn)在記錄信息過(guò)程中發(fā)揮越來(lái)越重要的作用,而現(xiàn)在對(duì)狀態(tài)機(jī)的記錄和管理的效率較低,并且維護(hù)過(guò)程復(fù)雜。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明實(shí)施例提供一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,采用該技術(shù)實(shí)現(xiàn)的狀態(tài)機(jī),提高了對(duì)狀態(tài)機(jī)的記錄的便利性,同時(shí)易于維護(hù)。
[0007]本發(fā)明要解決的技術(shù)問(wèn)題通過(guò)以下技術(shù)方案加以解決:
[0008]利用dot語(yǔ)言繪制狀態(tài)機(jī)的各個(gè)狀態(tài),包括:
[0009]利用dot語(yǔ)言自帶的繪制圖形功能,針對(duì)狀態(tài)機(jī)的特點(diǎn),開(kāi)發(fā)了三種狀態(tài)機(jī)控件模塊,包括:單個(gè)狀態(tài)、順序型連接狀態(tài)和選擇型連接狀態(tài)。通過(guò)三種控件的組合,實(shí)現(xiàn)一個(gè)完整的狀態(tài)機(jī)圖形的繪制。
[0010]dot命令是一個(gè)用來(lái)將生成的圖形轉(zhuǎn)換成多種輸出格式的命令行工具,其輸出格式包括PostScript, PDF, SVG, PNG,含注解的文本等等。neato命令用于spring model的生成(在Mac OS版本中稱為energy minimized)。twopi命令用于放射狀圖形的生成。circo命令用于圓形圖形的生成。fdp命令另一個(gè)用于生成無(wú)向圖的工具。dotty命令一個(gè)用于可視化與修改圖形的圖形用戶界面程序。Iefty命令是一個(gè)可編程的(使用一種被EZ影響的語(yǔ)言[4])控件,它可以顯示DOT圖形,并允許用戶用鼠標(biāo)在圖上執(zhí)行操作。Lefty可以作為MVC模型的使用圖形的GUI程序中的視圖部分。DOT語(yǔ)言是一種文本圖形描述語(yǔ)言。它提供了一種簡(jiǎn)單的描述圖形的方法,并且可以為人類和計(jì)算機(jī)程序所理解。DOT語(yǔ)言文件通常是具有.gv或是.dot的文件擴(kuò)展名。
[0011]用dot語(yǔ)言繪制狀態(tài)機(jī)的過(guò)程和語(yǔ)法包括:
[0012]I)設(shè)置點(diǎn)和線的形狀和顏色;
[0013]2)設(shè)置點(diǎn)和線的位置;
[0014]3)為繪制的狀態(tài)繪制框(子圖)。
[0015]用dot語(yǔ)言提供的布局算法對(duì)所繪制的狀態(tài)機(jī)的各個(gè)狀態(tài)進(jìn)行連線布局,包括:
[0016]本文利用dot語(yǔ)言和java語(yǔ)言編程的接口,利用java語(yǔ)言的Swing庫(kù)開(kāi)發(fā)出圖形用戶界面,然后通過(guò)畫(huà)樹(shù)列表的形式來(lái)繪制狀態(tài)機(jī)圖形,同時(shí)利用dot高效的布局算法來(lái)完成狀態(tài)機(jī)圖形的連線和布局。
[0017]用樹(shù)結(jié)構(gòu)管理狀態(tài)機(jī)各個(gè)狀態(tài)之間的層次關(guān)系,包括:
[0018]利用樹(shù)結(jié)構(gòu)便于層次化信息控制的特性,用以控制層次化狀態(tài)機(jī)中狀態(tài)之間的層次特性。樹(shù)的每個(gè)葉節(jié)點(diǎn)和每個(gè)狀態(tài)相對(duì)應(yīng),而樹(shù)的非葉節(jié)點(diǎn)則用來(lái)表示每個(gè)狀態(tài)所屬的層次。
[0019]所述樹(shù)狀圖關(guān)系表還包括用于保存葉節(jié)點(diǎn)之間連接或轉(zhuǎn)移關(guān)系的葉節(jié)點(diǎn)關(guān)系表。
[0020]上述處理狀態(tài)機(jī)的方法,所述樹(shù)狀圖結(jié)構(gòu)關(guān)系表的屬性如下:
[0021]
【權(quán)利要求】
1.一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,包括繪制狀態(tài)機(jī)的過(guò)程和修改狀態(tài)機(jī)的過(guò)程,所述狀態(tài)機(jī)包括一個(gè)或多個(gè)基本狀態(tài)單元,其特征在于,所述繪制狀態(tài)機(jī)的過(guò)程包括以下步驟: 1)創(chuàng)建狀態(tài)機(jī); 2)按預(yù)定規(guī)則對(duì)所述狀態(tài)機(jī)的基本狀態(tài)單元進(jìn)行分組; 3)將所述狀態(tài)機(jī)依據(jù)所述分組轉(zhuǎn)化為樹(shù)狀圖,其中所述分組所形成的組對(duì)應(yīng)于所述樹(shù)狀圖的節(jié)點(diǎn); 4)創(chuàng)建樹(shù)狀圖關(guān)系表,在所述樹(shù)狀圖關(guān)系表中保存所述樹(shù)狀圖的結(jié)構(gòu)關(guān)系信息。
2.如權(quán)利要求1所述的一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,其特征在于,所述創(chuàng)建狀態(tài)機(jī)的步驟包括: 1)利用預(yù)定規(guī)則繪制狀態(tài)機(jī)的各個(gè)狀態(tài); 2)用預(yù)定規(guī)則提供的布局算法對(duì)所繪制的狀態(tài)機(jī)的各個(gè)狀態(tài)進(jìn)行連線布局; 3)用樹(shù)結(jié)構(gòu)管理狀態(tài)機(jī)各個(gè)狀態(tài)之間的層次關(guān)系; 4)用二維表結(jié)構(gòu)對(duì)狀態(tài)機(jī)的觸發(fā)事件、連線權(quán)重等進(jìn)行補(bǔ)充描述。
3.如權(quán)利要求2所述的一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,利用預(yù)定規(guī)則繪制狀態(tài)機(jī)的各個(gè)狀態(tài),其特征在于,包括: 利用dot語(yǔ)言自帶的繪制圖形功能,針對(duì)狀態(tài)機(jī)的特點(diǎn),開(kāi)發(fā)了三種狀態(tài)機(jī)控件模塊,包括:單個(gè)狀態(tài)、順序型連接狀態(tài)和選擇型連接狀態(tài)。通過(guò)三種控件的組合,實(shí)現(xiàn)一個(gè)完整的狀態(tài)機(jī)圖形的繪制。
4.如權(quán)利要求1所述的一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,按照預(yù)定規(guī)則提供的布局算法對(duì)所繪制的狀態(tài)機(jī)的各個(gè)狀態(tài)進(jìn)行連線布局,其特征在于,包括: 利用dot語(yǔ)言和java語(yǔ)言編程的接口,利用java語(yǔ)言的Swing庫(kù)開(kāi)發(fā)出圖形用戶界面,然后通過(guò)畫(huà)樹(shù)列表的形式來(lái)繪制狀態(tài)機(jī)圖形,同時(shí)利用dot高效的布局算法來(lái)完成狀態(tài)機(jī)圖形的連線和布局。
5.如權(quán)利要求1所述的一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,用樹(shù)結(jié)構(gòu)管理狀態(tài)機(jī)各個(gè)狀態(tài)之間的層次關(guān)系,其特征在于,包括: 利用樹(shù)結(jié)構(gòu)便于層次化信息控制的特性,用以控制層次化狀態(tài)機(jī)中狀態(tài)之間的層次特性。樹(shù)的每個(gè)葉節(jié)點(diǎn)和每個(gè)狀態(tài)相對(duì)應(yīng),而樹(shù)的非葉節(jié)點(diǎn)則用來(lái)表示每個(gè)狀態(tài)所屬的層次。
6.如權(quán)利要求1所述的一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,用二維表結(jié)構(gòu)對(duì)狀態(tài)機(jī)的觸發(fā)事件、連線權(quán)重等進(jìn)行補(bǔ)充描述,其特征在于,包括: 每個(gè)狀態(tài)機(jī)都對(duì)應(yīng)一個(gè)二維的狀態(tài)機(jī)登記表格,記錄包括: 1)每個(gè)狀態(tài)表示的信息及注釋; 2)每條連線代表的具體的事件描述; 3)每條連線代表的具體的輸出函數(shù); 4)每條連線代表的具體的權(quán)重及注釋;
7.如權(quán)利要求1所述的一種實(shí)現(xiàn)和管理狀態(tài)機(jī)信息的裝置,其特征在于,狀態(tài)機(jī)的具體特征包括: 實(shí)現(xiàn)的狀態(tài)機(jī)通過(guò)事件來(lái)有效的維護(hù)與管理狀態(tài)機(jī)的跳轉(zhuǎn)。我們這里提到的狀態(tài)機(jī)是由事件進(jìn)行驅(qū)動(dòng)的,由于“對(duì)象”與“狀態(tài)”都是廣義和抽象的,一個(gè)對(duì)象有多個(gè)狀態(tài),當(dāng)事件來(lái)臨時(shí),通過(guò)事件處理器對(duì)事件進(jìn)行處理,然后觸發(fā)使得狀態(tài)之間相互躍遷,同時(shí)可以在狀態(tài)切換時(shí)定義附加的操作。本專利要實(shí)現(xiàn)的狀態(tài)機(jī)有效的維護(hù)與管理這一機(jī)制的流程,包括: 1)對(duì)狀態(tài)機(jī)進(jìn)行初始化; 2)獲得輸入狀態(tài)機(jī)的事件,將當(dāng)前狀態(tài)的各個(gè)遷移條件與該事件進(jìn)行匹配; 3)記錄匹配成功的遷移條件,然后執(zhí)行狀態(tài)遷移和輸出函數(shù); 4)判斷遷移以后的狀態(tài)是否為最終態(tài),如果是,則結(jié)束狀態(tài)運(yùn)行;如果否,則返回步驟2)。
8.如權(quán)利要求5所述的用樹(shù)結(jié)構(gòu)管理狀態(tài)機(jī)各個(gè)狀態(tài)之間的層次關(guān)系,其特征在于,所述將狀態(tài)機(jī)依據(jù)分組轉(zhuǎn)化為樹(shù)狀圖具體步驟包括: 1)創(chuàng)建樹(shù)狀圖,所述樹(shù)狀圖關(guān)系表包括用于保存樹(shù)結(jié)構(gòu)關(guān)系的樹(shù)結(jié)構(gòu)關(guān)系表; 2)分別將組和子組轉(zhuǎn)化為枝節(jié)點(diǎn),所述樹(shù)狀圖關(guān)系表包括用于保存枝節(jié)點(diǎn)信息的枝節(jié)點(diǎn)屬性表; 3)將基本狀態(tài)單元轉(zhuǎn)化為葉節(jié)點(diǎn),所述樹(shù)狀圖關(guān)系表包括用于保存葉節(jié)點(diǎn)信息的葉節(jié)點(diǎn)屬性表; 4)所述樹(shù)狀圖關(guān)系表還包括用于保存葉節(jié)點(diǎn)之間連接或轉(zhuǎn)移關(guān)系的葉節(jié)點(diǎn)關(guān)系表。
【文檔編號(hào)】G06F9/44GK104077121SQ201310111226
【公開(kāi)日】2014年10月1日 申請(qǐng)日期:2013年3月29日 優(yōu)先權(quán)日:2013年3月29日
【發(fā)明者】羅永貴, 連志斌, 謝崢, 伍國(guó)斌, 宋建龍 申請(qǐng)人:北京大學(xué)深圳研究生院