CN115529302B - 一种应用程序网络通信数据交互流程的建模与仿真方法 - Google Patents
一种应用程序网络通信数据交互流程的建模与仿真方法 Download PDFInfo
- Publication number
- CN115529302B CN115529302B CN202211165306.3A CN202211165306A CN115529302B CN 115529302 B CN115529302 B CN 115529302B CN 202211165306 A CN202211165306 A CN 202211165306A CN 115529302 B CN115529302 B CN 115529302B
- Authority
- CN
- China
- Prior art keywords
- data
- controller
- list
- state
- data set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种应用程序网络通信数据交互流程的建模与仿真方法,包括:构建应用程序网络通信数据交互流程模型,模型包括控制器、列表;控制器根据传输层字节流或列表发起调用行为,执行数据集状态匹配流程并触发软件业务规格仿真,实现网络应用程序的软件业务规格以及相关的网络通信数据交互流程的仿真测试。本发明将现有技术中软件业务规格与应用程序之间的强耦合关系解耦,降低集成仿真环境复杂度,缩短开发调试周期。
Description
技术领域
本发明属于网络通信领域,特别是涉及一种应用程序网络通信数据交互流程的建模与仿真方法。
背景技术
在计算机网络互联框架中,应用程序位于应用层,通过socket套接字来控制传输层实现通信数据的接收和发送。socket是传输层和应用层之间的抽象数据结构,该结构在网络通信中的作用是封装网络数据传输的内核态函数,并提供面向应用程序的用户态通信方法。socket套接字提供的用户态通信方法包括Socket、Listen、Bind、Connect、Accept、Write、Read、Close。应用程序通过socket套接字建立和关闭网络连接的流程如图1所示,网络连接由客户端应用程序发起,服务端应用程序建立,可分为建立连接、数据交互和关闭连接3个部分。
在数据交互部分,应用程序执行Read函数时,传输层字节流转换为应用层数据包;应用程序执行Write函数时,应用层数据包转换为传输层字节流。传输层字节流和应用层数据包之间的转换依据是固定的通信协议,通信协议由正文中的标记字段确定唯一性,其他字段为内容字段,2种字段的读取写入方式没有差异。通信协议的格式如表1所示。
表1
应用程序执行Read函数时,从字节流中取出一段字节,长度为协议序号1规定的字节长度,再按照协议序号1规定的数据类型,将该段字节解析为应用层数据,解析完成后应用程序继续按照下一个序号取出字节,直至通信协议最后一个序号处理完毕,再将所有应用层数据整合为数据包。Read函数执行完毕后,应用程序根据软件业务规格的要求,能够将应用层数据包进一步处理并生成新数据,再将新数据通过Write函数写入传输层。软件业务规格以代码的形式固定编写在应用程序内部。
应用程序执行Write函数时,在应用层获取一个数据,类型与协议序号1规定的数据类型一致,再按照协议序号1规定的字节长度,将该数据写入字节流,写入完成后应用程序继续从应用层获取数据并按照下一个序号写入,直至通信协议最后一个序号处理完毕。Write函数执行完毕后,应用程序根据软件业务规格的要求,能够将已处理完成的应用层数据包按照一定的时间间隔,再次通过Write函数写入传输层。软件业务规格以代码的形式固定编写在应用程序内部。
采用现有技术编写的应用程序之间能够通过socket套接字建立网络连接,构成大型网络系统。在大型网络系统中,单个系统功能由多个互联的应用程序以协作方式实现。由于软件业务规格以代码的形式固定编写在多个应用程序中,是强耦合关系,为完整验证新开发系统功能在生产环境中的有效性,必须采用集成仿真方法,将应用程序以及其他相关的应用程序全部部署到测试环境的多台计算机内,再根据软件业务规格开展有效性验证。
集成仿真方法的主要缺点是环境复杂,搭建和维护的难度大。此外,应用程序在开发环境中完成编译后,由于开发环境和测试环境分离,导致开发过程中发现问题后调试周期长,也不利于软件产品服务的快速迭代要求。
发明内容
为解决上述问题,本发明提供一种应用程序网络通信数据交互流程的建模与仿真方法,将现有技术中软件业务规格与应用程序之间的强耦合关系解耦,起到降低集成仿真环境复杂度,缩短开发调试周期的有益效果。
为实现上述目的,本发明提供了如下方案:一种应用程序网络通信数据交互流程的建模与仿真方法,包括:
构建应用程序网络通信数据交互流程模型,所述模型包括控制器、列表;
所述控制器根据传输层字节流或列表发起调用行为,执行数据集状态匹配流程并触发软件业务规格仿真,实现网络应用程序的软件业务规格以及相关的网络通信数据交互流程的仿真测试。
优选地,所述控制器包括读取控制器、状态控制器、发送控制器;
其中,所述读取控制器用于管理传输层字节流转换得到的应用层数据;
所述状态控制器用于管理待发送的应用层数据;
所述发送控制器用于管理由应用层数据包转换得到的传输层字节流。
优选地,所述列表包括数据接收列表、数据集规则列表、数据集状态列表、数据模板列表、延时参数列表、数据发送列表;
所述列表存储在数据库中,所述数据库位于应用程序外部,应用程序通过SQL语句增加、删除、修改和查询列表内容。
优选地,所述控制器根据传输层字节流或列表发起调用行为,其中所述控制器发起的调用行为包括,
S1、读取控制器通过Read函数读取字节流,将字节流转换为应用层数据;
S2、读取控制器将转换后的应用层数据存入数据接收列表;
S3、状态控制器查询数据接收列表中未执行状态匹配的数据;
S4、状态控制器更新数据接收列表的状态匹配标记;
S5、状态控制器查询数据集规则列表中的所有数据集信息;
S6、状态控制器将数据集状态记录存入数据集状态列表;
S7、状态控制器查询数据集状态列表中当前数据集的所有规则类型为条件型的数据集状态记录;
S8、状态控制器清空数据集状态列表中的所有条目;
S9、状态控制器按照数据集编号查询数据模板列表;
S10、状态控制器按照数据集编号和数据包编号,查询延时参数列表;
S11、状态控制器将待发送的应用层数据存储到数据发送列表;
S12、状态控制器查询数据发送列表中未执行状态匹配的数据;
S13、状态控制器更新数据发送列表的状态匹配标记;
S14、发送控制器查询数据发送列表中的待发送数据;
S15、发送控制器更新数据发送列表的发送标记;
S16、发送控制器通过Write函数将应用层数据转换为字节流,写入传输层。
优选地,所述控制器根据传输层字节流或列表发起调用行为,执行数据集状态匹配流程并触发软件业务规格仿真的过程包括,
应用程序启动后,
读取控制器检查传输层是否存在待处理的字节流;如果传输层存在待处理的字节流,读取控制器执行读取处理流程;所述读取处理流程结束后,读取控制器继续检查传输层是否存在待处理的字节流,直到应用程序退出;
状态控制器执行数据集规则加载流程;数据集加载完成后,状态控制器根据所述数据集规则加载流程,执行数据集状态匹配流程和待发送数据生成流程,然后继续执行数据集规则加载流程,直到应用程序退出;
发送控制器检查数据发送列表中是否存在待发送的应用层数据包;如果数据发送列表中存在待发送的应用层数据包,发送控制器执行发送处理流程;所述发送处理流程结束后,发送控制器继续检查数据发送列表中是否存在待发送的应用层数据包,直到应用程序退出。
优选地,所述读取控制器执行读取处理流程的过程包括,
读取控制器发起调用行为S1,转换并记录每个应用层数据的内容以及转换过程中使用的协议序号;传输层字节流读取完毕后,读取控制器将应用层数据整合为新数据包并为所述新数据包分配唯一标识;数据包整合完毕后,读取控制器发起调用行为S2,将所有应用层数据进行存储。
优选地,状态控制器执行数据集规则加载流程的过程包括,
所述状态控制器发起调用行为S5获取有效数据集,遍历每个数据集,如果数据集的数据源和辅助数据源不全设置为无数据源,则数据集有效,反之无效;如果数据集的数据源为数据接收列表,状态控制器发起调用行为S3获取数据接收列表中所有未执行状态匹配的数据;如果数据集的数据源为数据发送列表,状态控制器发起调用行为S12获取数据发送列表中所有未执行状态匹配的数据;数据获取完成后,状态控制器发起调用行为S8清空数据集状态列表;如果数据集的数据源为无数据源,状态控制器不从数据接收列表和数据发送列表中获取数据,直接发起调用行为S8清空数据集状态列表;
所述状态控制器从当前数据集中取出一个数据集规则,检查数据集规则的匹配方式是否为内部匹配;如果匹配方式为内部匹配,状态控制器根据协议标记和协议编号获取应用层数据,加载内容为状态控制器当前正在遍历的应用层数据;如果匹配方式为外部匹配,状态控制器不获取应用层数据,加载内容为空;如果数据集存在数据源,状态控制器发起调用行为S6,将加载内容以及当前数据集规则的数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容加载到数据集状态列表,直至当前数据集中最后一个数据集规则处理完毕;如果数据集无数据源,状态控制器将当前数据集规则的数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容加载到数据集状态列表,直至当前数据集中最后一个数据集规则处理完毕;
状态控制器执行数据集的内部匹配以及外部匹配流程中,如果数据集状态匹配流程通过,状态控制器执行待发送数据生成流程;如果数据集状态匹配流程不通过,状态控制器继续执行数据集规则加载流程。
优选地,状态控制器待发送数据生成流程的过程包括,
所述状态控制器发起调用行为S9,获取当前数据集在数据模板列表中存储的所有应用层数据包模板;
状态控制器遍历每个数据包模板,读取数据包模板中的每条应用层数据模板,然后加载待发送的应用层数据;
状态控制器发起调用行为S11,将待发送应用层数据存储到数据发送列表。
优选地,所述发送控制器执行发送处理流程的过程包括,
发送控制器发起调用行为S14,获取数据发送列表中待发送的应用层数据包,如果当前时间小于数据包的完成时间,发送控制器不处理当前的应用层数据包;如果当前时间大于或等于数据包的完成时间,发送控制器发起调用行为S16,按照协议标记和协议序号,将应用层数据包内的应用层数据逐个转换为传输层字节流;
应用层数据包内的数据全部完成转换后,发送控制器发起调用行为S15,将应用层数据包在数据发送列表中存储的发送标记更新为已发送。
优选地,网络应用程序的软件业务规格以及相关的网络通信数据交互流程的仿真测试过程包括,第一应用场景的仿真流程、第二应用场景的仿真流程、第三应用场景的仿真流程;
其中,所述第一应用场景的仿真流程为监视终端、服务器和应用程序在网络中按照一定周期发送TCP连接状态;
所述第二应用场景的仿真流程为应用程序向监视终端发送通知信息,监视终端收到后向应用程序返回自动回执,监视终端操作者查看通知后,再返回人工回执;
所述第三应用场景的仿真流程应用程序向服务器发送请求授权,服务器判断数据来源合理,发送请求回执成功的数据包;应用程序再次发出正式请求,服务器收到后再返回数据回执。
本发明公开了以下技术效果:
本发明提供的一种应用程序网络通信数据交互流程的建模与仿真方法,能够针对大规模网络应用程序的软件业务规格以及相关的网络通信数据交互流程进行仿真,通过模型内的状态控制器执行数据集状态匹配流程并触发完整的软件业务规格仿真,能够替代复杂环境网络通信数据交互流程,起到降低集成仿真环境复杂度以及缩短开发调试周期的有益技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的socket套接字网络连接流程图;
图2为本发明实施例的应用程序网络通信数据交互流程模型的结构图;
图3为本发明实施例的数据集规则加载流程图;
图4为本发明实施例的数据集状态内部匹配流程图;
图5为本发明实施例的数据集状态外部匹配流程图;
图6为本发明实施例的待发送数据生成流程图;
图7为本发明实施例的应用程序软件测试规格的集成仿真环境示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,本发明提供了一种应用程序网络通信数据交互流程的建模与仿真方法,包括:
构建应用程序网络通信数据交互流程模型,所述模型包括控制器、列表;
所述控制器根据传输层字节流或列表发起调用行为,执行数据集状态匹配流程并触发软件业务规格仿真,实现网络应用程序的软件业务规格以及相关的网络通信数据交互流程的仿真测试。
进一步地优化方案,构建应用程序网络通信数据交互流程模型的过程包括,
应用程序网络通信数据交互流程模型的结构如图2所示,模型由3个控制器、6个列表构成。控制器能够针对传输层字节流或列表发起16类调用行为,用于仿真应用程序的软件业务规格以及相关的网络通信数据交互流程。调用行为通过SQL语句操作数据库实现。
模型中的3个控制器分别为读取控制器、状态控制器和发送控制器。控制器发起的调用行为陈述如下:
S1、读取控制器通过Read函数读取字节流,将字节流转换为应用层数据;(1)
S2、读取控制器将转换后的应用层数据存入数据接收列表;(2)
S3、状态控制器查询数据接收列表中未执行状态匹配的数据;(3)
S4、状态控制器更新数据接收列表的状态匹配标记;(4)
S5、状态控制器查询数据集规则列表中的所有数据集信息;(5)
S6、状态控制器将数据集状态记录存入数据集状态列表;(6)
S7、状态控制器查询数据集状态列表中当前数据集的所有规则类型为条件型的数据集状态记录;(7)
S8、状态控制器清空数据集状态列表中的所有条目;(8)
S9、状态控制器按照数据集编号查询数据模板列表;(9)
S10、状态控制器按照数据集编号和数据包编号,查询延时参数列表;(10)
S11、状态控制器将待发送的应用层数据存储到数据发送列表;(11)
S12、状态控制器查询数据发送列表中未执行状态匹配的数据;(12)
S13、状态控制器更新数据发送列表的状态匹配标记;(13)
S14、发送控制器查询数据发送列表中的待发送数据;(14)
S15、发送控制器更新数据发送列表的发送标记;(15)
S16、发送控制器通过Write函数将应用层数据转换为字节流,写入传输层。
(16)
模型中的6个列表存储在数据库中,分别为数据接收列表、数据集规则列表、数据集状态列表、数据模板列表、延时参数列表和数据发送列表,数据库位于应用程序外部,应用程序通过SQL语句增加、删除、修改和查询列表内容。各列表的结构定义如表2-表7所示。
表2
序号 | 列名 | 数据类型 | 是否主键 |
1 | 应用层数据包编号 | 整数型 | 是 |
2 | 应用层数据编号 | 整数型 | 是 |
3 | 协议标记 | 文字型 | 否 |
4 | 协议序号 | 整数型 | 否 |
5 | 加载内容 | 文字型 | 否 |
6 | 完成时间 | 时间型 | 否 |
7 | 状态匹配标记 | 整数型 | 否 |
表2中,应用层数据包编号是接收数据包在表中的唯一标识,应用层数据编号按照传应用层数据转换的先后顺序从1开始由小到大编号,协议标记、协议序号用于记录转换过程中使用的协议标记字段和协议序号,加载内容用于存储传输层字节流的转换结果,完成时间是读取控制器完成数据包整合的时间,状态匹配标记用于存储状态控制器对本条记录的处理状态,分为未执行状态匹配和已执行状态匹配2种状态,分别由数字0、1标记。
表3
表3定义的数据集包含状态控制器执行匹配检查所需的全部数据。数据集编号是数据集在列表中的唯一标识。数据集规则编号用于标记和区分数据集中的不同规则。数据源分为无数据源、数据接收列表和数据发送列表3种,分别由数字0、1、2标记。辅助数据源分为无辅助数据源、数据接收列表和数据发送列表3种,分别由数字0、1、2标记。辅助判断方式分为常规判空、常规判有、已发送判空和已发送判有4种,分别由数字0、1、2、3标记。同一个数据集内所有数据集规则的数据源、辅助数据源和辅助判断方式取值一致。
数据集规则的匹配方式由数字标记,分为内部匹配数据和外部匹配数据2种,分别由数字0、1标记。数据集规则的条件匹配编号用于指定同一数据集不同规则的加载内容来执行匹配检查。数据集规则的规则类型由数字标记,分为数据型和条件型2种,分别由数字0、1标记。在加载数据集状态列表和匹配检查时,协议标记和协议序号分别用于获取应用层数据和执行辅助判断操作。预设内容是匹配检查的判定依据。
表4
序号 | 列名 | 数据类型 | 是否主键 |
1 | 数据集编号 | 整数型 | 是 |
2 | 数据集规则编号 | 整数型 | 是 |
3 | 数据源 | 整数型 | 否 |
4 | 辅助数据源 | 整数型 | 否 |
5 | 辅助判断方式 | 整数型 | 否 |
6 | 匹配方式 | 整数型 | 否 |
7 | 条件匹配编号 | 整数型 | 否 |
8 | 规则类型 | 整数型 | 否 |
9 | 预设内容 | 文字型 | 否 |
表4用于存储状态控制器获取的应用层数据和相关规则属性。应用层数据存储在加载内容列中。数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容取自表3,用于存储获取数据时状态控制器使用的规则属性。
表5用于存储数据集匹配通过后能够发送的所有应用层数据模板信息,可包含多个数据包模板。数据集编号与表3、表4的定义一致。
数据包编号用于标记应用层数据模板信息所属的数据包模板。数据编号是应用层数据模板信息在数据包模板中的排列次序。协议标记、协议序号是应用层数据模板信息的协议属性,在应用层数据转换为传输层字节流时使用。预设内容用于存储应用层数据模板信息。写入方法由数字标记,分为默认方法、写入字长计数和写入当前时间3种,分别由数字0、1、2标记。字长计数是应用层数据包模板最终写入传输层时占用的字节数。加载编号对应表4中的数据集规则编号,默认为0,不为0时状态控制器将表4中对应编号的加载内容取出,写入预设内容中。
表5
序号 | 列名 | 数据类型 | 是否主键 |
1 | 数据集编号 | 整数型 | 是 |
2 | 数据包编号 | 整数型 | 是 |
3 | 数据编号 | 整数型 | 是 |
4 | 协议标记 | 文字型 | 否 |
5 | 协议序号 | 整数型 | 否 |
6 | 预设内容 | 文字型 | 否 |
7 | 写入方法 | 整数型 | 否 |
8 | 加载编号 | 整数型 | 否 |
表6
序号 | 列名 | 数据类型 | 是否主键 |
1 | 数据集编号 | 整数型 | 是 |
2 | 数据包编号 | 整数型 | 是 |
3 | 时间延迟 | 整数型 | 否 |
4 | 方差 | 整数型 | 否 |
表6用于存储表5中每个数据包发送的时间延迟信息。数据集编号和数据包编号用于唯一确定表5中的数据包。时间延迟是数据包发送时间相对当前时间的偏差值,服从正态分布,方差是正态分布的方差参数,如果方差为0则时间延迟为常数值,不服从正态分布。
表7中,应用层数据包编号是发送数据包在表中的唯一标识,应用层数据编号、协议标记、协议序号与表5的定义一致。加载内容用于存储状态控制器的处理结果,完成时间由状态控制器根据表6中的对应项设置,状态匹配标记用于存储状态控制器对本条记录的处理状态,分为未执行状态匹配和已执行状态匹配2种状态,分别由数字0、1标记。发送标记用于存储发送控制器对本条记录的处理状态,分为待发送和已发送2种状态,分别由数字0、1标记。
表7
进一步地优化方案,仿真流程具体包括:
模型通过控制器实现应用程序网络通信数据交互流程的仿真功能。应用程序将每个控制器创建为单条线程,读取控制器、状态控制器和发送控制器发起的调用行为互不干涉。
(ⅰ)读取控制器
读取控制器的作用是管理传输层字节流转换得到的应用层数据。应用程序启动后,读取控制器检查传输层是否存在待处理的字节流。如果传输层存在待处理的字节流,读取控制器将执行下述处理流程。处理流程结束后,读取控制器继续检查传输层是否存在待处理的字节流,直到应用程序退出。
①读取控制器发起行为(1),转换并记录每个应用层数据的内容以及转换过程中使用的协议序号。传输层字节流读取完毕后,读取控制器将应用层数据整合为数据包并为新数据包分配唯一标识。数据包内所有数据按照转换的先后顺序从1开始由小到大编号,记录通信协议的标记字段为文字型数据,数据包整合的完成时间为时间型数据。
②数据包整合完毕后,读取控制器发起行为(2),将所有应用层数据存入表2,其中状态匹配标记存储为未执行状态匹配。
(ⅱ)状态控制器
状态控制器的作用是管理待发送的应用层数据。应用程序启动后,状态控制器执行如图3所示的数据集规则加载流程。数据集加载完成后,状态控制器根据图3所示的流程,执行数据集状态匹配流程和待发送数据生成流程,然后继续执行数据集规则加载流程,直到应用程序退出。
状态控制器的数据集规则加载流程具体陈述如下。
①状态控制器发起行为(5),从表3中获取全部的有效数据集,然后遍历每个数据集。如果数据集的数据源和辅助数据源不全设置为无数据源,则数据集有效,反之无效。如果数据集的数据源为数据接收列表,状态控制器发起行为(3)获取数据接收列表中所有未执行状态匹配的数据。如果数据集的数据源为数据发送列表,状态控制器发起行为(12)获取数据发送列表中所有未执行状态匹配的数据。数据获取完成后,状态控制器发起行为(8)清空数据集状态列表。如果数据集的数据源为无数据源,状态控制器不从数据接收列表和数据发送列表中获取数据,直接发起行为(8)清空数据集状态列表。
②状态控制器从当前数据集中取出一个数据集规则,检查数据集规则的匹配方式是否为内部匹配。如果匹配方式为内部匹配,状态控制器就根据协议标记和协议编号获取应用层数据,加载内容为状态控制器当前正在遍历的应用层数据。如果匹配方式为外部匹配,状态控制器就不获取应用层数据,加载内容为空。如果数据集存在数据源,状态控制器发起行为(6),将加载内容以及当前数据集规则的数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容加载到数据集状态列表,直至当前数据集中最后一个数据集规则处理完毕。如果数据集无数据源,状态控制器将当前数据集规则的数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容加载到数据集状态列表,直至当前数据集中最后一个数据集规则处理完毕。
③状态控制器执行数据集的内部匹配以及外部匹配流程。如果数据集状态匹配流程通过,状态控制器执行待发送数据生成流程。如果数据集状态匹配流程不通过,状态控制器继续执行数据集规则加载流程。
状态控制器的数据集状态内部匹配流程和外部匹配流程如图4、图5所示,数据集状态内部匹配流程具体陈述如下:
①如果数据源设置为无数据源,状态控制器将内部匹配流程标记为通过并退出。如果数据源为数据接收列表或数据发送列表,状态控制器就发起行为(7),获取当前数据集的所有规则类型为条件型的数据集状态记录,然后遍历检查每个匹配方式为内部匹配的记录。
②如果数据集规则编号与条件匹配编号一致,状态控制器就比较数据集状态记录的加载内容与预设内容是否一致。如果数据集规则编号与条件匹配编号不一致,状态控制器就比较数据集状态记录的加载内容与条件匹配编号指定记录的加载内容是否一致。比较结果一致,状态控制器就判定数据集状态记录有效,否则无效。
③如果数据集状态记录中存在一条无效记录,状态控制器就判断匹配流程不通过。检查所有记录后,如果数据集状态记录全部有效,状态控制器就判断匹配流程通过,发起行为(4)、行为(13)更新表2、表7中的状态匹配标记为已执行状态匹配。
数据集状态外部匹配流程具体陈述如下:
①如果辅助数据源设置为无数据源,状态控制器外部匹配流程标记为通过并退出。如果辅助数据源为数据接收列表或数据发送列表,状态控制器就发起行为(7),获取当前数据集的所有规则类型为条件型的数据集状态记录,然后遍历检查每个匹配方式为外部匹配的记录。
②如果数据集规则编号与条件匹配编号一致,状态控制器就记录数据集状态记录的预设内容。如果数据集规则编号与条件匹配编号不一致,状态控制器就记录条件匹配编号指定记录的加载内容。
③状态控制器遍历所有匹配方式为外部匹配的记录后,根据辅助判定方式的不同,执行辅助判定操作。常规判有方式以协议标记、协议编号和所有记录为条件,在辅助数据源执行数据库查询操作。操作结果只存在一条记录就判定有效,其他情况无效。已发送判有方式以协议标记、协议编号和所有记录为条件,在辅助数据源执行数据库查询操作。操作结果只存在一条标记为已发送的记录就判定有效,其他情况无效。
常规判空方式以协议标记、协议编号和所有记录为条件,在辅助数据源执行数据库查询操作。操作结果为空就判定有效,其他情况无效。已发送判空方式以协议标记、协议编号和所有记录为条件,在辅助数据源执行数据库查询操作。操作结果为空,或全部记录的发送标记都为已发送,就判定有效,其他情况无效。匹配流程通过后,状态控制器发起行为(4)、行为(13)更新表2、表7中的状态匹配标记为已执行状态匹配。
状态控制器的待发送数据生成流程如图6所示,具体陈述如下:
①状态控制器发起行为(9),获取当前数据集在数据模板列表中存储的所有应用层数据包模板。
②状态控制器遍历每个数据包模板,读取数据包模板中的每条应用层数据模板,然后加载待发送的应用层数据,具体方法如表8所示。延时参数列表中的配置项由状态控制器发起行为(10)获取,完成时间后延描述服从正态分布且大于0。
③状态控制器发起行为(11),将待发送应用层数据存储到数据发送列表。
表8
(ⅲ)发送控制器
发送控制器的作用是管理由应用层数据包转换得到的传输层字节流。应用程序启动后,发送控制器检查数据发送列表中是否存在待发送的应用层数据包。如果数据发送列表中存在待发送的应用层数据包,发送控制器将执行下述处理流程。
处理流程结束后,发送控制器继续检查数据发送列表中是否存在待发送的应用层数据包,直到应用程序退出。
①发送控制器发起行为(14),获取数据发送列表中待发送的应用层数据包,如果当前时间小于数据包的完成时间,发送控制器就不处理当前的应用层数据包。如果当前时间大于或等于数据包的完成时间,发送控制器就发起行为(16),按照协议标记和协议序号,将应用层数据包内的应用层数据逐个转换为传输层字节流。
②应用层数据包内的数据全部完成转换后,发送控制器发起行为(15),将应用层数据包在数据发送列表中存储的发送标记更新为已发送。
进一步地优化方案,应用程序软件测试规格的集成仿真环境如图7所示,具体的软件业务规格以及相关的网络通信数据交互流程如表9所示。
表9
/>
通过应用程序网络通信数据交互流程建模,图7虚线左侧部分能够被简化为单个仿真通信节点。仿真通信节点能够替代网络中其他节点与应用程序之间的通信数据交互流程,应用程序只需要与仿真通信节点连接,就能够验证全部的软件业务规格,从而起到降低集成仿真环境复杂度以及缩短开发调试周期的技术效果。本发明的具体技术效果分为3个不同的应用场景展示,如表10所示。
表10
应用场景模拟的软件业务规格相关的数据包类型包括TCP连接状态、通知信息、通知回执、请求数据、请求回执和数据回执6种数据包,6种数据包的通信协议格式如表12-表17所示,数据包协议标记分别为0x10、0x01、0x02、0x20、0x21、0x22。自动回执和人工回执由表14中的回执类型字段定义,0为自动,1为人工。请求授权和正式请求由表15中的请求类型字段定义,0为请求授权,1为正式请求。表16中的回执结果1为成功,0为失败。通信协议中的来源编码和目的编码数据值对应表11所示的socket套接字参数组定义,参数组是socket套接字Read、Write函数使用的参数定义集合,在读取控制器和发送控制器发起行为(1)、(16)时使用。
表11
表12
表13
表14
表15
表16
表17
进一步地优化方案,应用场景1的仿真流程包括:
状态控制器在数据集规则加载流程中读取数据集1、2、3,3个数据集用于生成TCP连接状态数据包,如表18所示,数据包来源为监视终端1、监视终端2和服务器,目的为应用程序。
表18
每个数据集加载为数据集状态存储到表19后,状态控制器通过外部匹配流程检查数据发送列表中是否存在未发送的相同来源编码、相同目的编码的TCP连接状态数据包。如果存在,状态控制器就判断外部匹配流程不通过。
表19
如果数据发送列表中不存在未发送的相同来源编码、相同目的编码的TCP连接状态数据包,状态控制器就判断外部匹配流程通过,执行待发送数据生成流程。状态控制器获取每个数据集的数据模板如表20所示。获取数据模板后,状态控制器按照数据集状态的预设内容加载待发送的应用层数据。待发送数据的完成时间根据表21中的设置,相对当前时间后延1秒,由于TCP连接状态数据包定时发送,方差设置为0。
表20
表21
待发送的应用层数据包由发送控制器获取。发送控制器在当前时间大于或等于数据包的完成时间时,将表22、表23、表24中应用层数据逐个转换为传输层字节流,发送到应用程序,完成应用场景1的仿真流程。
表22
表23
表24
进一步地优化方案,应用场景2的仿真流程包括:
状态控制器在数据集规则加载流程中读取数据集4,数据集4如表25所示,用于匹配来自应用程序的通知信息。在应用场景2中,读取控制器从传输层读取字节流并转换为通知信息包,然后将应用层数据整合为表26所示的数据格式并存储到数据接收列表。
表25
表26
状态控制器取出应用层数据后,以数据接收列表为数据源,加载数据集状态记录如表27。状态控制器通过内部匹配流程检查所有规则类型为条件型的记录。在表27中,条件匹配编号等于数据集规则编号,预设内容等于加载内容,状态控制器由此判断内部匹配流程通过,执行待发送数据生成流程。
表27
状态控制器获取的数据模板如表28所示。获取数据模板后,状态控制器按照数据集状态的预设内容加载待发送的应用层数据。对于表26中加载编号非0的记录,状态控制器读取表27中相同数据集规则编号项的加载内容,填入待发送的应用层数据。
表28
/>
待发送数据的完成时间根据表29设置。第1包数据为自动回执,相对当前时间没有时延,方差设置为0。第2包数据为人工回执,用于模拟人工操作的反应快慢,设置为延迟3秒发送,延迟时间大于0秒并服从方差为1的正态分布。
表29
待发送的应用层数据包由发送控制器获取。发送控制器在当前时间大于或等于数据包的完成时间时,将表30、表31中应用层数据逐个转换为传输层字节流,发送到应用程序,完成应用场景2的仿真流程。
表30
表31
进一步地优化方案,应用场景3的仿真流程包括:
状态控制器在数据集规则加载流程中读取数据集5、数据集6,2个数据集的规则列表记录如表32所示,用于匹配来自应用程序的请求数据。应用场景3分为请求回执阶段和数据回执阶段2个部分,分别由数据集5和数据集6处理。
在请求回执阶段,读取控制器从传输层读取字节流,将应用层数据整合为表33所示的数据格式并存储到数据接收列表。
表32
表33
状态控制器取出应用层数据后,以数据接收列表为数据源,加载数据集5的状态记录如表34。状态控制器通过内部匹配流程检查所有规则类型为条件型的记录。在表34中,条件匹配编号等于数据集规则编号,预设内容等于加载内容,状态控制器由此判断内部匹配流程通过,执行待发送数据生成流程。
表34
状态控制器获取的数据模板如表35所示。获取数据模板后,状态控制器按照数据集状态的预设内容加载待发送的应用层数据。对于表35中加载编号非0的记录,状态控制器读取表34中相同数据集规则编号项的加载内容,填入待发送的应用层数据。
表35
待发送数据的完成时间根据表36设置。为模拟服务器验证授权的内部流程延时,数据包设置为延迟1秒发送,延迟时间大于0秒并服从方差为1的正态分布。
表36
待发送的应用层数据包由发送控制器获取。发送控制器在当前时间大于或等于数据包的完成时间时,将表37中应用层数据逐个转换为传输层字节流,发送到应用程序,完成应用场景3请求回执阶段的仿真流程。
表37
在数据回执阶段,读取控制器从传输层读取字节流,将应用层数据整合为表38所示的数据格式并存储到数据接收列表。
表38
表39
状态控制器取出应用层数据后,以数据接收列表为数据源,加载数据集6的状态记录,然后以数据发送列表为辅助数据源,加载内容后执行常规判有方式的辅助判定操作,结果如表39所示。状态控制器通过内部匹配流程检查所有规则类型为条件型的记录。在表39中,数据集状态记录第6项的条件匹配编号不等于数据集规则编号,取规则编号2的加载内容,其他状态记录的条件匹配编号等于数据集规则编号,预设内容等于加载内容,状态控制器由此判断内部匹配流程和外部匹配流程通过,执行待发送数据生成流程。
表40
状态控制器获取的数据模板如表40所示。获取数据模板后,状态控制器按照数据集状态的预设内容加载待发送的应用层数据。对于表40中加载编号非0的记录,状态控制器读取表39中相同数据集规则编号项的加载内容,填入待发送的应用层数据。
表41
待发送数据的完成时间根据表41设置。为模拟服务器处理回执信息的延时,数据包设置为延迟1秒发送,延迟时间大于0秒并服从方差为1的正态分布。
表42
待发送的应用层数据包由发送控制器获取。发送控制器在当前时间大于或等于数据包的完成时间时,将表42中应用层数据逐个转换为传输层字节流,发送到应用程序,完成应用场景3数据回执阶段的仿真流程。
以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (8)
1.一种应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,包括:
构建应用程序网络通信数据交互流程模型,所述模型包括控制器、列表;
所述控制器根据传输层字节流或列表发起调用行为,执行数据集状态匹配流程并触发软件业务规格仿真,实现网络应用程序的软件业务规格以及相关的网络通信数据交互流程的仿真测试;
所述控制器包括读取控制器、状态控制器、发送控制器;
其中,所述读取控制器用于管理传输层字节流转换得到的应用层数据;
所述状态控制器用于管理待发送的应用层数据;
所述发送控制器用于管理由应用层数据包转换得到的传输层字节流;
所述列表包括数据接收列表、数据集规则列表、数据集状态列表、数据模板列表、延时参数列表、数据发送列表;
所述列表存储在数据库中,所述数据库位于应用程序外部,应用程序通过SQL语句增加、删除、修改和查询列表内容。
2.根据权利要求1所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,所述控制器根据传输层字节流或列表发起调用行为,其中所述控制器发起的调用行为包括,
S1、读取控制器通过Read函数读取字节流,将字节流转换为应用层数据;
S2、读取控制器将转换后的应用层数据存入数据接收列表;
S3、状态控制器查询数据接收列表中未执行状态匹配的数据;
S4、状态控制器更新数据接收列表的状态匹配标记;
S5、状态控制器查询数据集规则列表中的所有数据集信息;
S6、状态控制器将数据集状态记录存入数据集状态列表;
S7、状态控制器查询数据集状态列表中当前数据集的所有规则类型为条件型的数据集状态记录;
S8、状态控制器清空数据集状态列表中的所有条目;
S9、状态控制器按照数据集编号查询数据模板列表;
S10、状态控制器按照数据集编号和数据包编号,查询延时参数列表;
S11、状态控制器将待发送的应用层数据存储到数据发送列表;
S12、状态控制器查询数据发送列表中未执行状态匹配的数据;
S13、状态控制器更新数据发送列表的状态匹配标记;
S14、发送控制器查询数据发送列表中的待发送数据;
S15、发送控制器更新数据发送列表的发送标记;
S16、发送控制器通过Write函数将应用层数据转换为字节流,写入传输层。
3.根据权利要求1所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,所述控制器根据传输层字节流或列表发起调用行为,执行数据集状态匹配流程并触发软件业务规格仿真的过程包括,
应用程序启动后,
读取控制器检查传输层是否存在待处理的字节流;如果传输层存在待处理的字节流,读取控制器执行读取处理流程;所述读取处理流程结束后,读取控制器继续检查传输层是否存在待处理的字节流,直到应用程序退出;
状态控制器执行数据集规则加载流程;数据集加载完成后,状态控制器根据所述数据集规则加载流程,执行数据集状态匹配流程和待发送数据生成流程,然后继续执行数据集规则加载流程,直到应用程序退出;
发送控制器检查数据发送列表中是否存在待发送的应用层数据包;如果数据发送列表中存在待发送的应用层数据包,发送控制器执行发送处理流程;所述发送处理流程结束后,发送控制器继续检查数据发送列表中是否存在待发送的应用层数据包,直到应用程序退出。
4.根据权利要求3所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,所述读取控制器执行读取处理流程的过程包括,
读取控制器发起调用行为S1,转换并记录每个应用层数据的内容以及转换过程中使用的协议序号;传输层字节流读取完毕后,读取控制器将应用层数据整合为新数据包并为所述新数据包分配唯一标识;数据包整合完毕后,读取控制器发起调用行为S2,将所有应用层数据进行存储。
5.根据权利要求3所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,状态控制器执行数据集规则加载流程的过程包括,
所述状态控制器发起调用行为S5获取有效数据集,遍历每个数据集,如果数据集的数据源和辅助数据源不全设置为无数据源,则数据集有效,反之无效;如果数据集的数据源为数据接收列表,状态控制器发起调用行为S3获取数据接收列表中所有未执行状态匹配的数据;如果数据集的数据源为数据发送列表,状态控制器发起调用行为S12获取数据发送列表中所有未执行状态匹配的数据;数据获取完成后,状态控制器发起调用行为S8清空数据集状态列表;如果数据集的数据源为无数据源,状态控制器不从数据接收列表和数据发送列表中获取数据,直接发起调用行为S8清空数据集状态列表;
所述状态控制器从当前数据集中取出一个数据集规则,检查数据集规则的匹配方式是否为内部匹配;如果匹配方式为内部匹配,状态控制器根据协议标记和协议编号获取应用层数据,加载内容为状态控制器当前正在遍历的应用层数据;如果匹配方式为外部匹配,状态控制器不获取应用层数据,加载内容为空;如果数据集存在数据源,状态控制器发起调用行为S6,将加载内容以及当前数据集规则的数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容加载到数据集状态列表,直至当前数据集中最后一个数据集规则处理完毕;如果数据集无数据源,状态控制器将当前数据集规则的数据集编号、数据集规则编号、数据源、辅助数据源、辅助判断方式、匹配方式、条件匹配编号、规则类型、预设内容加载到数据集状态列表,直至当前数据集中最后一个数据集规则处理完毕;
状态控制器执行数据集的内部匹配以及外部匹配流程中,如果数据集状态匹配流程通过,状态控制器执行待发送数据生成流程;如果数据集状态匹配流程不通过,状态控制器继续执行数据集规则加载流程。
6.根据权利要求3所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,状态控制器待发送数据生成流程的过程包括,
所述状态控制器发起调用行为S9,获取当前数据集在数据模板列表中存储的所有应用层数据包模板;
状态控制器遍历每个数据包模板,读取数据包模板中的每条应用层数据模板,然后加载待发送的应用层数据;
状态控制器发起调用行为S11,将待发送应用层数据存储到数据发送列表。
7.根据权利要求3所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,所述发送控制器执行发送处理流程的过程包括,
发送控制器发起调用行为S14,获取数据发送列表中待发送的应用层数据包,如果当前时间小于数据包的完成时间,发送控制器不处理当前的应用层数据包;如果当前时间大于或等于数据包的完成时间,发送控制器发起调用行为S16,按照协议标记和协议序号,将应用层数据包内的应用层数据逐个转换为传输层字节流;
应用层数据包内的数据全部完成转换后,发送控制器发起调用行为S15,将应用层数据包在数据发送列表中存储的发送标记更新为已发送。
8.根据权利要求1所述的应用程序网络通信数据交互流程的建模与仿真方法,其特征在于,
所述网络应用程序的软件业务规格以及相关的网络通信数据交互流程的仿真测试过程包括,第一应用场景的仿真流程、第二应用场景的仿真流程、第三应用场景的仿真流程;
其中,所述第一应用场景的仿真流程为监视终端、服务器和应用程序在网络中按照一定周期发送TCP连接状态;
所述第二应用场景的仿真流程为应用程序向监视终端发送通知信息,监视终端收到后向应用程序返回自动回执,监视终端操作者查看通知后,再返回人工回执;
所述第三应用场景的仿真流程应用程序向服务器发送请求授权,服务器判断数据来源合理,发送请求回执成功的数据包;应用程序再次发出正式请求,服务器收到后再返回数据回执。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211165306.3A CN115529302B (zh) | 2022-09-23 | 2022-09-23 | 一种应用程序网络通信数据交互流程的建模与仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211165306.3A CN115529302B (zh) | 2022-09-23 | 2022-09-23 | 一种应用程序网络通信数据交互流程的建模与仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115529302A CN115529302A (zh) | 2022-12-27 |
CN115529302B true CN115529302B (zh) | 2023-10-03 |
Family
ID=84699443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211165306.3A Active CN115529302B (zh) | 2022-09-23 | 2022-09-23 | 一种应用程序网络通信数据交互流程的建模与仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115529302B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187787A (en) * | 1989-07-27 | 1993-02-16 | Teknekron Software Systems, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
WO2009024036A1 (fr) * | 2007-08-17 | 2009-02-26 | Huawei Technologies Co., Ltd. | Procédé, équipement et système pour un traitement de message dans un réseau de prochaine génération |
CN107483273A (zh) * | 2017-09-22 | 2017-12-15 | 东南大学 | 考虑实时控制的电力信息物理系统仿真平台协调控制方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030088710A1 (en) * | 2001-07-05 | 2003-05-08 | Sukhwinder Sandhu | Simulation environment software |
CN102404414B (zh) * | 2010-09-17 | 2016-05-18 | 中国银联股份有限公司 | 基于mmc/sd接口的以太网通信系统及方法 |
US9747079B2 (en) * | 2014-12-15 | 2017-08-29 | General Electric Company | Method and system of software specification modeling |
-
2022
- 2022-09-23 CN CN202211165306.3A patent/CN115529302B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187787A (en) * | 1989-07-27 | 1993-02-16 | Teknekron Software Systems, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US5187787B1 (en) * | 1989-07-27 | 1996-05-07 | Teknekron Software Systems Inc | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
WO2009024036A1 (fr) * | 2007-08-17 | 2009-02-26 | Huawei Technologies Co., Ltd. | Procédé, équipement et système pour un traitement de message dans un réseau de prochaine génération |
CN107483273A (zh) * | 2017-09-22 | 2017-12-15 | 东南大学 | 考虑实时控制的电力信息物理系统仿真平台协调控制方法 |
Non-Patent Citations (1)
Title |
---|
基于Linux的网络通信模型的设计与实现;王鸽;刘钊远;;保密科学技术(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115529302A (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572122B (zh) | 一种软件应用数据的生成装置及方法 | |
US10970343B2 (en) | Adapting database queries for data virtualization over combined database stores | |
US7020659B2 (en) | System and method for managing bi-directional relationships between objects | |
Ellis et al. | Computer science and office information systems | |
CN112416369B (zh) | 一种面向异构混合环境的智能化部署方法 | |
CN107193917A (zh) | 基于iid的全站系统配置文件无损数据更新方法 | |
CN107025279B (zh) | 基于数据库接口层操作流的scd文件在线并行配置系统和方法 | |
CN112612535A (zh) | 基于xml和json的卫星接收系统网络通信编解码引擎方法 | |
CN110362315A (zh) | 基于dag的软件系统调度方法及装置 | |
CN114900570A (zh) | 一种标准化数据采集传输方法及系统 | |
CN111078951A (zh) | 一种电力图模数据管理系统及方法 | |
CN112650526B (zh) | 版本一致性的检测方法、装置、电子设备和介质 | |
CN108173948B (zh) | 一种分布式试验数据实时交换方法 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN115529302B (zh) | 一种应用程序网络通信数据交互流程的建模与仿真方法 | |
CN115168474B (zh) | 一种基于大数据模型的物联中台系统搭建方法 | |
CN107817970B (zh) | 一种构件系统建模及其动态演化一致性验证方法 | |
WO2023151239A1 (zh) | 一种创建微服务的方法及相关设备 | |
US20040098294A1 (en) | Adaptable resource model | |
US20090157739A1 (en) | Methods and systems for object interpretation within a shared object space | |
CN109144489B (zh) | 基于Yang语言模型的状态数据处理方法 | |
US20230418994A1 (en) | Method and system for modularized modeling of equipment entities in simulation field based on meta-model | |
US20090285224A1 (en) | Service adaptation machine | |
CN118132430A (zh) | 一种面向接口测试的嵌入式软件命令帧自动应答方法 | |
Moyne | System design for automation in semiconductor manufacturing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |