《一种实现和管理状态机信息的装置.pdf》由会员分享,可在线阅读,更多相关《一种实现和管理状态机信息的装置.pdf(13页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104077121 A (43)申请公布日 2014.10.01 C N 1 0 4 0 7 7 1 2 1 A (21)申请号 201310111226.4 (22)申请日 2013.03.29 G06F 9/44(2006.01) (71)申请人北京大学深圳研究生院 地址 518055 广东省深圳市南山区西丽深圳 大学城北大校区 (72)发明人罗永贵 连志斌 谢峥 伍国斌 宋建龙 (54) 发明名称 一种实现和管理状态机信息的装置 (57) 摘要 本发明公开了一种实现和管理状态机信息的 装置,包括绘制状态机的过程和修改状态机及管 理状态机信息的过程。主要技术方案包。
2、括:创建 状态机;按照预定规则绘制状态机的各个状态; 按照预定规则的布局算法对所绘制的状态机的各 个状态进行连线布局;用树结构管理状态机各个 状态之间的层次关系;用二维表结构对状态机的 触发事件、连线权重等进行补充描述。本发明由于 按照特定规则对状态机的基本单元进行分组,将 组转化为树状图的节点,并将树状图的结构关系 信息保存在树状图关系表中,可以很方便的实现 层次状态机,使得状态机和树状图之间的转变简 单且易于实现,同时根据对状态进行分层可以快 速理解状态机。 (51)Int.Cl. 权利要求书2页 说明书7页 附图3页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书。
3、2页 说明书7页 附图3页 (10)申请公布号 CN 104077121 A CN 104077121 A 1/2页 2 1.一种实现和管理状态机信息的装置,包括绘制状态机的过程和修改状态机的过程, 所述状态机包括一个或多个基本状态单元,其特征在于,所述绘制状态机的过程包括以下 步骤: 1)创建状态机; 2)按预定规则对所述状态机的基本状态单元进行分组; 3)将所述状态机依据所述分组转化为树状图,其中所述分组所形成的组对应于所述树 状图的节点; 4)创建树状图关系表,在所述树状图关系表中保存所述树状图的结构关系信息。 2.如权利要求1所述的一种实现和管理状态机信息的装置,其特征在于,所述创建状。
4、 态机的步骤包括: 1)利用预定规则绘制状态机的各个状态; 2)用预定规则提供的布局算法对所绘制的状态机的各个状态进行连线布局; 3)用树结构管理状态机各个状态之间的层次关系; 4)用二维表结构对状态机的触发事件、连线权重等进行补充描述。 3.如权利要求2所述的一种实现和管理状态机信息的装置,利用预定规则绘制状态机 的各个状态,其特征在于,包括: 利用dot语言自带的绘制图形功能,针对状态机的特点,开发了三种状态机控件模块, 包括:单个状态、顺序型连接状态和选择型连接状态。通过三种控件的组合,实现一个完整 的状态机图形的绘制。 4.如权利要求1所述的一种实现和管理状态机信息的装置,按照预定规则。
5、提供的布局 算法对所绘制的状态机的各个状态进行连线布局,其特征在于,包括: 利用dot语言和java语言编程的接口,利用java语言的Swing库开发出图形用户界 面,然后通过画树列表的形式来绘制状态机图形,同时利用dot高效的布局算法来完成状 态机图形的连线和布局。 5.如权利要求1所述的一种实现和管理状态机信息的装置,用树结构管理状态机各个 状态之间的层次关系,其特征在于,包括: 利用树结构便于层次化信息控制的特性,用以控制层次化状态机中状态之间的层次特 性。树的每个叶节点和每个状态相对应,而树的非叶节点则用来表示每个状态所属的层次。 6.如权利要求1所述的一种实现和管理状态机信息的装置,。
6、用二维表结构对状态机的 触发事件、连线权重等进行补充描述,其特征在于,包括: 每个状态机都对应一个二维的状态机登记表格,记录包括: 1)每个状态表示的信息及注释; 2)每条连线代表的具体的事件描述; 3)每条连线代表的具体的输出函数; 4)每条连线代表的具体的权重及注释; 7.如权利要求1所述的一种实现和管理状态机信息的装置,其特征在于,状态机的具 体特征包括: 实现的状态机通过事件来有效的维护与管理状态机的跳转。我们这里提到的状态机是 由事件进行驱动的,由于“对象”与“状态”都是广义和抽象的,一个对象有多个状态,当事 权 利 要 求 书CN 104077121 A 2/2页 3 件来临时,通。
7、过事件处理器对事件进行处理,然后触发使得状态之间相互跃迁,同时可以在 状态切换时定义附加的操作。本专利要实现的状态机有效的维护与管理这一机制的流程, 包括: 1)对状态机进行初始化; 2)获得输入状态机的事件,将当前状态的各个迁移条件与该事件进行匹配; 3)记录匹配成功的迁移条件,然后执行状态迁移和输出函数; 4)判断迁移以后的状态是否为最终态,如果是,则结束状态运行;如果否,则返回步骤 2)。 8.如权利要求5所述的用树结构管理状态机各个状态之间的层次关系,其特征在于, 所述将状态机依据分组转化为树状图具体步骤包括: 1)创建树状图,所述树状图关系表包括用于保存树结构关系的树结构关系表; 2。
8、)分别将组和子组转化为枝节点,所述树状图关系表包括用于保存枝节点信息的枝节 点属性表; 3)将基本状态单元转化为叶节点,所述树状图关系表包括用于保存叶节点信息的叶节 点属性表; 4)所述树状图关系表还包括用于保存叶节点之间连接或转移关系的叶节点关系表。 权 利 要 求 书CN 104077121 A 1/7页 4 一种实现和管理状态机信息的装置 技术领域 0001 本发明涉及计算机数据处理技术,尤其涉及一种实现和管理状态机信息的装置。 背景技术 0002 有限状态机的思想不仅是软件编程领域常用的一种处理方法,同时也在硬件控制 电路领域得到广泛的应用。利用有限状态机可以对复杂的控制逻辑进行简化分。
9、解,而形成 有限个稳定的状态。然后在状态之间进行跳转时进行相应的事件判断,把连续的处理过程 变为离散的数字处理过程,从而可以更好的利用和发挥计算机的工作特点。同时,因为有限 状态机表示的简单性(由有限个状态),从而可以在实际的工程应用中实现。另一方面,虽 然其表示比较简单,却不意味着它只能进行简单的有限次处理,由于有限状态机是闭环的, 所以,可以利用有限的状态处理无穷的事务。 0003 我们通常所说的状态机对于实现简单的逻辑是非常有帮助的,而且实现起来也比 较简单,比如可以用if-else if-.-else结构或者switch-case结构就可以简单实现。这 种状态机在状态少的时候是没有什么。
10、问题的,但是如果跳转的状态很多,则维护状态的跳 转的难度就非常的大,这是验证工程师在使用状态机时遇到的一个很大的难点。例如,一个 状态机有n个状态,由于状态机允许某个状态直接跳转到它本身,这要在最坏情况时,一个 工程师就要维护n*n条跳转链接,这时状态机的跳转会变得异常的繁杂。 0004 为了解决这一难题,业界引入了一种叫做层次化状态机的技术。简而言之,就是先 把状态根据其行为进行分类,把具有同类行为的几个“小状态”归并到一个“大状态”里面。 0005 综上所述,状态机在现在记录信息过程中发挥越来越重要的作用,而现在对状态 机的记录和管理的效率较低,并且维护过程复杂。 发明内容 0006 有鉴。
11、于此,本发明实施例提供一种实现和管理状态机信息的装置,采用该技术实 现的状态机,提高了对状态机的记录的便利性,同时易于维护。 0007 本发明要解决的技术问题通过以下技术方案加以解决: 0008 利用dot语言绘制状态机的各个状态,包括: 0009 利用dot语言自带的绘制图形功能,针对状态机的特点,开发了三种状态机控件 模块,包括:单个状态、顺序型连接状态和选择型连接状态。通过三种控件的组合,实现一个 完整的状态机图形的绘制。 0010 dot命令是一个用来将生成的图形转换成多种输出格式的命令行工具,其输出格 式包括PostScript,PDF,SVG,PNG,含注解的文本等等。neato命。
12、令用于spring model的生 成(在Mac OS版本中称为energy minimized)。twopi命令用于放射状图形的生成。circo 命令用于圆形图形的生成。fdp命令另一个用于生成无向图的工具。dotty命令一个用于 可视化与修改图形的图形用户界面程序。lefty命令是一个可编程的(使用一种被EZ影响 的语言4)控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作 说 明 书CN 104077121 A 2/7页 5 为MVC模型的使用图形的GUI程序中的视图部分。DOT语言是一种文本图形描述语言。它 提供了一种简单的描述图形的方法,并且可以为人类和计算。
13、机程序所理解。DOT语言文件通 常是具有.gv或是.dot的文件扩展名。 0011 用dot语言绘制状态机的过程和语法包括: 0012 1)设置点和线的形状和颜色; 0013 2)设置点和线的位置; 0014 3)为绘制的状态绘制框(子图)。 0015 用dot语言提供的布局算法对所绘制的状态机的各个状态进行连线布局,包括: 0016 本文利用dot语言和java语言编程的接口,利用java语言的Swing库开发出图 形用户界面,然后通过画树列表的形式来绘制状态机图形,同时利用dot高效的布局算法 来完成状态机图形的连线和布局。 0017 用树结构管理状态机各个状态之间的层次关系,包括: 00。
14、18 利用树结构便于层次化信息控制的特性,用以控制层次化状态机中状态之间的层 次特性。树的每个叶节点和每个状态相对应,而树的非叶节点则用来表示每个状态所属的 层次。 0019 所述树状图关系表还包括用于保存叶节点之间连接或转移关系的叶节点关系表。 0020 上述处理状态机的方法,所述树状图结构关系表的属性如下: 0021 字段名类型 TreeIndex Int ProjectName VarChar NodeProperty VarChar Node Index Int ParentNode Index Int 0022 其中,TreeIndex表示树的编号; 0023 ProjectName。
15、表示树名; 0024 NodeProperty表示节点的属性; 0025 NodeIndex表示节点的编号; 0026 ParentNodeIndex表示父节点的编号; 0027 所述枝节点属性表的属性如下: 0028 字段名类型 TreeIndex Int NodeIndex Int NodeName VarChar(16) NodeCoIor VarChar(16) NodeBackground VarChar(16) 0029 其中,TreeIndex表示树的编号; 0030 NodeIndex表示枝节点的编号; 0031 NodeName表示枝节点的名字; 0032 NodeColor。
16、表示枝节点的颜色; 0033 NodeBackground表示枝节点的背景是否填充; 说 明 书CN 104077121 A 3/7页 6 0034 所述叶节点属性表的属性如下: 0035 0036 字段名类型 TreeIndex Int NodeIndex Int NodeName VarChar(16) NodeShape VarChar(16) NodeCoIor VarChar(16) 0037 其中,TreeIndex表示树的编号; 0038 NodeIndex表示叶节点的编号; 0039 NodeName表示叶节点的名字; 0040 NodeShape表示叶节点的形状; 0041 。
17、NodeColor表示叶节点的颜色。 0042 所述叶节点连接关系表的属性如下: 0043 字段名类型 TreeIndex Int From Int To Int Label VarChar 0044 其中,TreeIndex表示树的编号; 0045 from表示源节点对应的NodeIndex; 0046 To表示目的节点对应的NodeIndex; 0047 Label表示标签。 0048 上述处理状态机的方法,所述绘制状态机的过程还包括: 0049 根据所述树状图关系表将树状图转化为状态机的步骤。 0050 上述处理状态机的方法,所述根据所述树状图关系表将树状图转化为状态机包 括: 0051。
18、 将枝节点和所述枝节点下的所有叶节点标识为组。 0052 上述处理状态机的方法,所述修改状态机的过程包括增加组的操作过程,所述增 加组的操作过程具体包括: 0053 在所述树状图的对应位置增加一个枝节点,在枝节点属性表中对增加的枝节点的 属性进行定义; 0054 给所述枝节点增加叶节点,在叶节点属性表中对增加的叶节点的属性进行定义; 在所述叶节点连接关系表中填写增加的叶节点的连接或转移关系; 0055 在树结构关系表中填写增加的枝节点和叶节点的信息。 0056 上述处理状态机的方法,所述修改状态机的过程包括删除组的操作过程,所述删 除组的操作过程具体包括: 0057 删除树状图上对应枝节点和该。
19、枝节点下所述的叶节点; 0058 在树结构关系表和枝节点属性表中删除该枝节点的信息; 0059 在叶节点属性表中将被删除的叶节点的记录删除;在所述叶节点连接关系表中将 说 明 书CN 104077121 A 4/7页 7 被删除的叶节点的连接或转移关系删除。 0060 用二维表结构对状态机的触发事件、连线权重等进行补充描述,包括: 0061 每个状态机都对应一个二维的状态机登记表格,记录包括: 0062 1)每个状态表示的信息及注释; 0063 2)每条连线代表的具体的事件描述; 0064 3)每条连线代表的具体的输出函数; 0065 4)每条连线代表的具体的权重及注释; 0066 状态机的具。
20、体特征包括: 0067 实现的状态机通过事件来有效的维护与管理状态机的跳转。我们这里提到的状态 机是由事件进行驱动的,由于“对象”与“状态”都是广义和抽象的,一个对象有多个状态, 当事件来临时,通过事件处理器对事件进行处理,然后触发使得状态之间相互跃迁,同时可 以在状态切换时定义附加的操作。本专利要实现的状态机有效的维护与管理这一机制的流 程,包括: 0068 (1)对状态机进行初始化; 0069 (2)获得输入状态机的事件,将当前状态的各个迁移条件与该事件进行匹配; 0070 (3)记录匹配成功的迁移条件,然后执行状态迁移和输出函数; 0071 (4)判断迁移以后的状态是否为最终态,如果是,。
21、则结束状态运行;如果否,则返 回步骤(2)。 附图说明 0072 图1为本发明采用的状态机绘制界面图; 0073 图2为本发明采用的dot语言绘制的状态机实例; 0074 图3为本发明开发工具绘制的状态机图形实例; 0075 图4为本发明状态节点显示区的dot语言代码; 0076 图5为本发明状态连接部分的dot语言代码; 0077 图6为本发明子图显示区的dot语言代码; 图7为本发明一种实施方式中的关联模块的事件处理器部分的流程图; 具体实施方式 0078 下面通过具体实施方式结合附图对本发明作进一步详细说明。 0079 本发明的一种实现和管理状态机信息的装置,其一种实施方式,包括绘制状态。
22、机 的过程和修改状态机的过程,状态机包括一个或多个基本状态单元,绘制状态机的过程包 括以下步骤: 0080 1)创建状态机; 0081 2)按预定规则对状态机的基本状态单元进行分组; 0082 3)将状态机依据分组转化为树状图,其中分组所形成的组对应于树状图的节点; 0083 4)创建树状图关系表,在树状图关系表中保存树状图的结构关系信息。树状图关 系表包括树结构关系表、枝节点属性表、叶节点属性表和叶节点关系表。 0084 在一种实施方式中,本发明的一种实现和管理状态机信息的装置,按预定规则对 说 明 书CN 104077121 A 5/7页 8 状态机的基本状态单元进行分组具体包括:按实现的。
23、功能将基本状态单元划分为组。 0085 在一种实施方式中,本发明的一种实现和管理状态机信息的装置,按预定规则对 所述状态机的基本状态单元进行分组还包括:按组实现的子功能将组内的基本状态单元分 为子组。 即在分组后,在每个组内还可以按实现的子功能将组再分为子组,子组还可以继 续按实现的功能再对子组进行分组,这样一直持续下去。 0086 本发明的一种实现和管理状态机信息的装置,在其一种实施方式中,将状态机依 据分组转化为树状图具体包括: 0087 创建树状图,保存树结构关系,树状图关系表包括树结构关系表,树结构关系表用 于保存树结构关系。树状图结构关系表为二维表,树状图结构关系表的属性如表一所示:。
24、 0088 字段名类型 TreeIndex Int ProjectName VarChar NodeProperty VarChar NodeIndex Int ParentNodeIndex Int 0089 表一:树状图结构关系表的属性表 0090 其中,TreeIndex表示树的编号; 0091 ProjectName表示树名;在一种实施方式中,树名可以定义为16个字符; 0092 NodeProperty表示节点的属性;节点的属性可以分为叶节点node和枝节点 branch,节点的属性可以定义为16个字符; 0093 NodeIndex表示节点的编号; 0094 ParentNodeI。
25、ndex表示父节点的编号。 0095 分别将组和子组转化为枝节点,保存枝节点信息;树状图关系表包括用于保存枝 节点信息的枝节点属性表;枝节点属性表为二维表,枝节点属性表的属性如表二所示: 0096 字段名类型 TreeIndex Int NodeIndex Int NodeName VarChar(16) NodeColor VarChar(16) NodeBackground VarChar(16) 0097 表二:枝节点属性表的属性表 0098 其中,TreeIndex表示树的编号; 0099 NodeIndex表示枝节点的编号; 0100 NodeName表示枝节点的名字,枝节点的名字可。
26、以定义为16个字符 0101 NodeColor表示枝节点的颜色;可以定义为16个字符 0102 NodeBackground表示枝节点的背景是否填充;可以定义为16个字符 0103 将基本状态单元转化为叶节点,保存叶节点信息,树状图关系表包括叶节点属性 表,叶节点属性表用于保存叶节点信息,基本状态单元包括开始、结束、处理单元和判断单 元。叶节点属性表为二维表,叶节点属性表的属性如表三所示: 0104 说 明 书CN 104077121 A 6/7页 9 字段名类型 TreeIndex Int NodeIndex Int NodeName VarChar(16) NodeShape VarCh。
27、ar(16) NodeColor VarChar(16) 0105 表三:叶节点属性表的属性表 0106 其中,TreeIndex表示树的编号; 0107 NodeIndex表示叶节点的编号; 0108 NodeName表示叶节点的名字,叶节点的名字可以定义为16个字符; 0109 NodeShape表示叶节点的形状,叶节点的形状可以定义为16个字符; 0110 NodeColor表示叶节点的颜色,叶节点的颜色可以定义为16个字符; 0111 保存叶节点之间连接或转移关系;树状图关系表还包括叶节点关系表,叶节点关 系表用于保存叶节点之间连接或转移关系。叶节点关系表为二维表,叶节点关系表的属性 。
28、如表四所示: 0112 字段名类型 TreeIndex Int From Int To Int Label VarChar 0113 表四:叶节点关系表的属性表 0114 其中,TreeIndex表示树的编号; 0115 from表示源节点对应的NodeIndex; 0116 To表示目的节点对应的NodeIndex; 0117 Label表示标签,标签可以定义为64个字符。 0118 如图1所示为本发明采用的dot语言绘制的状态机实例。该图展示了dot语言实 现状态机的整体语言架构还有子图的实现过程。 0119 如图2所示为本发明开发工具绘制的状态机图形实例。这个状态机的功能是为时 钟设定年。
29、月日,其中一共有5个状态:开始态,时间显示状态,日期设置态,月份设置态,年 设置态。 0120 其中f0-n用于标记状态跳转的条件。0表示状态位于最外层,而不属于任何子图。 为了提高抽象层次,这里并不会具体到输入函数和输出函数等状态机的组成要素,f0-n只 是作为一个标记使用,标记状态跳转的路径。 0121 如图3所示为本发明状态节点显示区的dot语言代码。下面举例具体说明: 0122 nodefontnameSimSun,stylefilled; 0123 上述代码定义了一个状态节点,并且设定其字体显示为宋体,显示时该状态填充 颜色。 0124 如图4所示为本发明状态连接部分的dot语言代码。
30、。下面举例具体说明: 0125 node8-node10fontnameSimSun,labelevent0(); 0126 上述代码定义了一个状态node8连接到另一个状态node10,同时规定了连线的字 体为宋体,触发事件函数为event0()。 说 明 书CN 104077121 A 7/7页 10 0127 如图5所示为本发明子图显示区的dot语言代码。下面对图中表示的示例进行详 细说明: 0128 代码中定义了一个子图frame2,同时规定其字体为宋体,同时框图背景色为靛蓝 色。该框图中包含了一个直接子节点node9和另一个子图frame1,即frame1嵌套在frame2 里面。同。
31、时规定了frame1的字体显示为宋体,其填充背景色为黄色。在子图frame1中包 含节点node6,node7和node8。 0129 图6为本发明一种实施方式中的关联模块的事件处理器部分的流程图; 0130 实现的状态机通过事件来有效的维护与管理状态机的跳转。我们这里提到的状态 机是由事件进行驱动的,由于“对象”与“状态”都是广义和抽象的,一个对象有多个状态, 当事件来临时,通过事件处理器对事件进行处理,然后触发使得状态之间相互跃迁,同时可 以在状态切换时定义附加的操作。本专利要实现的状态机有效的维护与管理这一机制的流 程,包括: 0131 (1)对状态机进行初始化; 0132 (2)获得输。
32、入状态机的事件,将当前状态的各个迁移条件与该事件进行匹配; 0133 (3)记录匹配成功的迁移条件,然后执行状态迁移和输出函数; 0134 (4)判断迁移以后的状态是否为最终态,如果是,则结束状态运行;如果否,则返 回步骤(2)。 0135 以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发 明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱 离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护 范围。 说 明 书CN 104077121 A 10 1/3页 11 图1 图2 说 明 书 附 图CN 104077121 A 11 2/3页 12 图3 图4 图5 图6 说 明 书 附 图CN 104077121 A 12 3/3页 13 图7 说 明 书 附 图CN 104077121 A 13 。