一种实现和管理状态机信息的装置制造方法
【专利摘要】本发明公开了一种实现和管理状态机信息的装置,包括绘制状态机的过程和修改状态机及管理状态机信息的过程。主要技术方案包括:创建状态机;按照预定规则绘制状态机的各个状态;按照预定规则的布局算法对所绘制的状态机的各个状态进行连线布局;用树结构管理状态机各个状态之间的层次关系;用二维表结构对状态机的触发事件、连线权重等进行补充描述。本发明由于按照特定规则对状态机的基本单元进行分组,将组转化为树状图的节点,并将树状图的结构关系信息保存在树状图关系表中,可以很方便的实现层次状态机,使得状态机和树状图之间的转变简单且易于实现,同时根据对状态进行分层可以快速理解状态机。
【专利说明】一种实现和管理状态机信息的装置
【技术领域】
[0001]本发明涉及计算机数据处理技术,尤其涉及一种实现和管理状态机信息的装置。
【背景技术】
[0002]有限状态机的思想不仅是软件编程领域常用的一种处理方法,同时也在硬件控制电路领域得到广泛的应用。利用有限状态机可以对复杂的控制逻辑进行简化分解,而形成有限个稳定的状态。然后在状态之间进行跳转时进行相应的事件判断,把连续的处理过程变为离散的数字处理过程,从而可以更好的利用和发挥计算机的工作特点。同时,因为有限状态机表示的简单性(由有限个状态),从而可以在实际的工程应用中实现。另一方面,虽然其表示比较简单,却不意味着它只能进行简单的有限次处理,由于有限状态机是闭环的,所以,可以利用有限的状态处理无穷的事务。
[0003]我们通常所说的状态机对于实现简单的逻辑是非常有帮助的,而且实现起来也比较简单,比如可以用if-else if-...-else结构或者switch_case结构就可以简单实现。这种状态机在状态少的时候是没有什么问题的,但是如果跳转的状态很多,则维护状态的跳转的难度就非常的大,这是验证工程师在使用状态机时遇到的一个很大的难点。例如,一个状态机有η个状态,由于状态机允许某个状态直接跳转到它本身,这要在最坏情况时,一个工程师就要维护η*η条跳转链接,这时状态机的跳转会变得异常的繁杂。
[0004]为了解决这一难题,业界引入了一种叫做层次化状态机的技术。简而言之,就是先把状态根据其行为进行分类,把具有同类行为的几个“小状态”归并到一个“大状态”里面。
[0005]综上所述,状态机在现在记录信息过程中发挥越来越重要的作用,而现在对状态机的记录和管理的效率较低,并且维护过程复杂。
【发明内容】
[0006]有鉴于此,本发明实施例提供一种实现和管理状态机信息的装置,采用该技术实现的状态机,提高了对状态机的记录的便利性,同时易于维护。
[0007]本发明要解决的技术问题通过以下技术方案加以解决:
[0008]利用dot语言绘制状态机的各个状态,包括:
[0009]利用dot语言自带的绘制图形功能,针对状态机的特点,开发了三种状态机控件模块,包括:单个状态、顺序型连接状态和选择型连接状态。通过三种控件的组合,实现一个完整的状态机图形的绘制。
[0010]dot命令是一个用来将生成的图形转换成多种输出格式的命令行工具,其输出格式包括PostScript, PDF, SVG, PNG,含注解的文本等等。neato命令用于spring model的生成(在Mac OS版本中称为energy minimized)。twopi命令用于放射状图形的生成。circo命令用于圆形图形的生成。fdp命令另一个用于生成无向图的工具。dotty命令一个用于可视化与修改图形的图形用户界面程序。Iefty命令是一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。DOT语言是一种文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。
[0011]用dot语言绘制状态机的过程和语法包括:
[0012]I)设置点和线的形状和颜色;
[0013]2)设置点和线的位置;
[0014]3)为绘制的状态绘制框(子图)。
[0015]用dot语言提供的布局算法对所绘制的状态机的各个状态进行连线布局,包括:
[0016]本文利用dot语言和java语言编程的接口,利用java语言的Swing库开发出图形用户界面,然后通过画树列表的形式来绘制状态机图形,同时利用dot高效的布局算法来完成状态机图形的连线和布局。
[0017]用树结构管理状态机各个状态之间的层次关系,包括:
[0018]利用树结构便于层次化信息控制的特性,用以控制层次化状态机中状态之间的层次特性。树的每个叶节点和每个状态相对应,而树的非叶节点则用来表示每个状态所属的层次。
[0019]所述树状图关系表还包括用于保存叶节点之间连接或转移关系的叶节点关系表。
[0020]上述处理状态机的方法,所述树状图结构关系表的属性如下:
[0021]
【权利要求】
1.一种实现和管理状态机信息的装置,包括绘制状态机的过程和修改状态机的过程,所述状态机包括一个或多个基本状态单元,其特征在于,所述绘制状态机的过程包括以下步骤: 1)创建状态机; 2)按预定规则对所述状态机的基本状态单元进行分组; 3)将所述状态机依据所述分组转化为树状图,其中所述分组所形成的组对应于所述树状图的节点; 4)创建树状图关系表,在所述树状图关系表中保存所述树状图的结构关系信息。
2.如权利要求1所述的一种实现和管理状态机信息的装置,其特征在于,所述创建状态机的步骤包括: 1)利用预定规则绘制状态机的各个状态; 2)用预定规则提供的布局算法对所绘制的状态机的各个状态进行连线布局; 3)用树结构管理状态机各个状态之间的层次关系; 4)用二维表结构对状态机的触发事件、连线权重等进行补充描述。
3.如权利要求2所述的一种实现和管理状态机信息的装置,利用预定规则绘制状态机的各个状态,其特征在于,包括: 利用dot语言自带的绘制图形功能,针对状态机的特点,开发了三种状态机控件模块,包括:单个状态、顺序型连接状态和选择型连接状态。通过三种控件的组合,实现一个完整的状态机图形的绘制。
4.如权利要求1所述的一种实现和管理状态机信息的装置,按照预定规则提供的布局算法对所绘制的状态机的各个状态进行连线布局,其特征在于,包括: 利用dot语言和java语言编程的接口,利用java语言的Swing库开发出图形用户界面,然后通过画树列表的形式来绘制状态机图形,同时利用dot高效的布局算法来完成状态机图形的连线和布局。
5.如权利要求1所述的一种实现和管理状态机信息的装置,用树结构管理状态机各个状态之间的层次关系,其特征在于,包括: 利用树结构便于层次化信息控制的特性,用以控制层次化状态机中状态之间的层次特性。树的每个叶节点和每个状态相对应,而树的非叶节点则用来表示每个状态所属的层次。
6.如权利要求1所述的一种实现和管理状态机信息的装置,用二维表结构对状态机的触发事件、连线权重等进行补充描述,其特征在于,包括: 每个状态机都对应一个二维的状态机登记表格,记录包括: 1)每个状态表示的信息及注释; 2)每条连线代表的具体的事件描述; 3)每条连线代表的具体的输出函数; 4)每条连线代表的具体的权重及注释;
7.如权利要求1所述的一种实现和管理状态机信息的装置,其特征在于,状态机的具体特征包括: 实现的状态机通过事件来有效的维护与管理状态机的跳转。我们这里提到的状态机是由事件进行驱动的,由于“对象”与“状态”都是广义和抽象的,一个对象有多个状态,当事件来临时,通过事件处理器对事件进行处理,然后触发使得状态之间相互跃迁,同时可以在状态切换时定义附加的操作。本专利要实现的状态机有效的维护与管理这一机制的流程,包括: 1)对状态机进行初始化; 2)获得输入状态机的事件,将当前状态的各个迁移条件与该事件进行匹配; 3)记录匹配成功的迁移条件,然后执行状态迁移和输出函数; 4)判断迁移以后的状态是否为最终态,如果是,则结束状态运行;如果否,则返回步骤2)。
8.如权利要求5所述的用树结构管理状态机各个状态之间的层次关系,其特征在于,所述将状态机依据分组转化为树状图具体步骤包括: 1)创建树状图,所述树状图关系表包括用于保存树结构关系的树结构关系表; 2)分别将组和子组转化为枝节点,所述树状图关系表包括用于保存枝节点信息的枝节点属性表; 3)将基本状态单元转化为叶节点,所述树状图关系表包括用于保存叶节点信息的叶节点属性表; 4)所述树状图关系表还包括用于保存叶节点之间连接或转移关系的叶节点关系表。
【文档编号】G06F9/44GK104077121SQ201310111226
【公开日】2014年10月1日 申请日期:2013年3月29日 优先权日:2013年3月29日
【发明者】罗永贵, 连志斌, 谢峥, 伍国斌, 宋建龙 申请人:北京大学深圳研究生院