CN111726373A - 通信链路构建方法、装置和设备 - Google Patents
通信链路构建方法、装置和设备 Download PDFInfo
- Publication number
- CN111726373A CN111726373A CN201910203884.3A CN201910203884A CN111726373A CN 111726373 A CN111726373 A CN 111726373A CN 201910203884 A CN201910203884 A CN 201910203884A CN 111726373 A CN111726373 A CN 111726373A
- Authority
- CN
- China
- Prior art keywords
- communication
- loaded
- trigger operation
- component
- communication link
- 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.)
- Granted
Links
Images
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/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明实施例提供一种通信链路构建方法、装置和设备,该方法包括:应用程序响应于用户的第一触发操作,确定对应于此第一触发操作的多个待加载业务组件。由于每个待加载业务组件可以支持多种不同的通信行为,并且一个待加载业务组件支持的一种通信行为与另一待加载业务组件支持的另一种通信行为之间可以具有预设的匹配关系,因此,应用程序可以利用此匹配关系将对应于第一触发操作的多个待加载业务组件组合成通信片段。最终,应用程序会根据通信片段确定出对应于第一触发操作的第一通信链路。可见,相比于现有技术中以组件为单位构建通信链路的方式,本方案提供了一种全新的、以通信片段为单位构建通信链路的方式,从而丰富了通信链路构建的方式。
Description
技术领域
本发明涉及数据传输技术领域,尤其涉及一种通信链路构建方法、装置和设备。
背景技术
为了满足用户的日常需求,用户一般会在诸如智能手机等终端设备中安装多种应用程序(App),比如购物类或娱乐类的App等等。用户可以对App界面中的组件产生触发操作,此触发操作对应的触发指令则会依次经过对应于此触发操作的通信链路中的各个业务组件。最终,通信链路中的最末一级业务组件会将对应于触发指令的响应结果按照通信链路进行逆向传输,以实现对App对用户的触发操作产生响应。
可见,App中对用户触发操作的响应是依赖于此触发操作对应的通信链路的建立。因此,如何建立起App中各业务组件之间的通信链路就成为一个亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种通信链路构建方法、装置和设备,用以建立不同组件之间的通信链路。
第一方面,本发明实施例提供一种通信链路构建方法,包括:
响应于用户的第一触发操作,确定对应于所述第一触发操作的多个待加载业务组件;
根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成通信片段;
根据所述通信片段确定对应于所述第一触发操作的第一通信链路。
第二方面,本发明实施例提供一种通信链路构建装置,包括:
组件确定模块,用于响应于用户的第一触发操作,确定对应于所述第一触发操作的多个待加载业务组件;
组合模块,用于根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成通信片段;
链路确定模块,用于根据所述通信片段确定对应于所述第一触发操作的第一通信链路。
第三方面,本发明实施例提供一种电子设备,包括处理器和存储器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第一方面中的通信链路建立方法。该电子设备还可以包括通信接口,用于与其他设备或通信网络通信。
本发明实施例提供了一种计算机存储介质,用于储存存储计算机程序,所述计算机程序使计算机执行时实现上述第一方面中的通信链路构建方法。
本发明实施例提供的通信链路构建方法,应用程序响应于用户的第一触发操作,确定对应于此第一触发操作的多个待加载业务组件。由于每个待加载业务组件可以支持多种不同的通信行为,并且一个待加载业务组件支持的一种通信行为与另一待加载业务组件支持的另一种通信行为之间可以具有预设的匹配关系,因此,应用程序可以利用此匹配关系将对应于第一触发操作的多个待加载业务组件组合成通信片段。最终,应用程序会根据通信片段确定出对应于第一触发操作的第一通信链路。可见,相比于现有技术中以组件为单位构建通信链路的方式,本方案提供了一种全新的、以通信片段为单位构建通信链路的方式,从而丰富了通信链路构建的方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种通信链路构建方法的流程图;
图2为聊天应用程序响应于第一触发操作后的响应结果示意图;
图3为图1中步骤102的一种可选地实现方式的流程图;
图4为本发明实施例提供的另一种通信链路构建方法的流程图;
图5为聊天应用程序响应于第二触发操作后的响应结果示意图;
图6为本发明实施例提供的通信链路构建装置的结构示意图;
图7为与图6所示实施例提供的通信链路构建装置对应的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于识别”。类似地,取决于语境,短语“如果确定”或“如果识别(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当识别(陈述的条件或事件)时”或“响应于识别(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图1为本发明实施例提供的一种通信链路构建方法的流程图。承接背景技术中的应用程序场景,用户在应用程序提供的界面中触发任一触发操作后,应用程序都会构建起对应于此触发操作的通信链路,基于此通信链路,应用程序可以将触发操作对应的响应结果展示给用户。因此,本发明实施例提供的该通信链路构建方法可以在应用程序响应触发操作后,由应用程序执行。如图1所示,该方法包括如下步骤:
S101,响应于用户的第一触发操作,确定对应于第一触发操作的多个待加载业务组件。
应用程序中的多种功能通常是借助于多种业务组件完成的,应用程序提供的操作界面上的任一可操作元素都可以认为是一个业务组件。因此,用户可以对其中任一业务组件产生一个第一触发操作,其中,此第一触发操作可以理解为业务组件加载操作,也即是在产生第一触发操作后,需要进一步进行业务组件加载,只有加载后才能将对应于第一触发操作的响应结果展示给用户。可选地,第一触发操作通常可以是点击、滑动操作等等。
在响应此第一触发操作后,可选地,应用程序可以根据自身配置的路由模块确定对应于此第一触发操作的待加载业务组件。其中,路由模块中可以维护有一个列表,此列表中记录有在业务组件A上产生触发操作B后,需要加载哪些业务组件。其中,业务组件A可以是应用程序中用户可以触发操作的任一业务组件,触发操作B可以是此业务组件A支持的任一种触发操作。通过查询上述列表,应用程序则可以直接得到对应于第一触发操作的多个待加载业务组件。并且这多个待加载业务组件中是可以包括作用有第一触发操作的业务组件的。
S102、根据多个待加载业务组件各自支持的通信行为之间的匹配关系,将多个待加载业务组件组合成通信片段。
在得到第一触发操作对应的待加载业务组件后,可选地,应用程序可以去匹配关系表中进行查询。其中,此匹配关系表中可以记录有业务组件A支持的触发操作a与业务组件B支持的触发操作b之间的匹配关系,其中,业务组件A是应用程序中支持用户直接触发操作的任一业务组件,并且上述匹配关系可以是在应用程序开发阶段根据业务需求预先设置好的。经过查询后,应用程序则可以将多个待加载业务组件中相匹配的待加载业务组件组合成通信片段。
并且上述的匹配关系表中还记录有业务组件在组成通信片段时,各业务组件在通信片段中的通信位置关系,比如支持触发操作a的业务组件A与支持触发操作b的业务组件B之间具有匹配关系,并且用户的第一触发操作是直接作用于业务组件A上的,则这两个业务组件可以组合成一个通信片段,即【业务组件A—业务组件B】,而不能组合成【业务组件B—业务组件A】。此通信片段【业务组件A—业务组件B】表示第一触发操作对应的操作指令是由业务组件A传输至业务组件B的。
需要说明的是,上述举例中通信片段是由两个业务组件组成的,而在实际应用中通信片段还可以由多于两个的业务组件组成。
另外,可选地,在得到通信片段后,应用程序还可以将每个通信片段包括的业务组件以及业务组件在通信片段中的通信关系记录到一个全局通信片段查询表中。
S103,根据通信片段确定对应于第一触发操作的第一通信链路。
确定出的多个待加载业务组件组合成的通信片段的数量可以是一个也可以是多个。当通信片段为一个时,此通信片段即为对应于第一触发操作的第一通信链路。
当通信片段的数量为多个时,则需要进一步对这多个通信片段进行排序,再按照排列顺序将多个通信片段组合成对应于第一触发操作的第一通信链路。
此时,一种可选地方式,应用程序先确定包含目标待加载业务组件的目标通信片段,并确定此目标通信片段位于第一通信链路的头部。其中,目标待加载业务组件即为作用有第一触发操作的待加载业务组件。然后,应用程序可以再根据预设规则确定除了目标通信片段之外的剩余通信片段的排列顺序。最终,以目标通信片段为第一通信链路的头部,剩余通信片段按照确定出的排列顺序将多个通信片段组合成对应于第一触发操作的第一通信链路。可选地,上述的预设规则可以是:对于相邻的两个通信片段,前一个通信片段中的尾部业务组件与后一个通信片段中的头部业务组件相同。实际应用中,通信片段中的头部组件通常被称为source组件,尾部组件通常被称为target组件。
基于上述描述,举例说明如何将多个通信片段组合成第一通信链路:应用程序确定出第一触发操作作用于业务组件A上,并且也确定出通信片段1【业务组件A—业务组件B】、通信片段2【业务组件B—业务组件C】以及通信片段3【业务组件C—业务组件D】,其中,这三个通信片段的头部组件分别为业务组件A、业务组件B以及业务组件C,尾部组件分别为业务组件B、业务组件C以及业务组件D。则按照上述方式可以确定通信片段1位于第一通信链路的顶部。同时,因为通信片段2中的尾部业务组件与通信片段3中的头部组件相同,所以,通信片段2和通信片段3之间的排列顺序依旧是通信片段2—通信片段3。最终,第一通信链路为:【业务组件A—业务组件B】—【业务组件B—业务组件C】—【业务组件C—业务组件D】。
下面以一聊天应用程序为例,具体说明第一通信链路建立的过程。聊天应用程序可以安装于用户使用的终端设备内。当用户点击了此聊天应用程序在图标也即是触发了聊天应用程序的启动操作时,此启动操作则可以认为是用户产生的第一触发操作,应用程序可以根据自身的路由模块确定出对应于此启动操作的待加载业务组件。图2为此聊天应用程序的主界面,如图2所示,这些待加载业务组件可以包括聊天应用程序在终端设备界面上的图标即图标组件1(图2未示出),主界面中的聊天条目2、消息列表3、容器组件4以及消息数目显示组件5。并且主界面中显示的所有内容都可以认为是构建起第一通信链路后,第一通信链路的尾部业务组件返回的响应结果。其中,主界面左下方的消息数目显示组件5可以显示有全部未读消息的总数目,主界面中每一个聊天条目的左方的方框中可以显示有此聊天条目对应的未读消息数目。
在确定出对应于启动操作的待加载业务组件后,应用程序则可以去匹配关系表中查询哪几个待加载业务组件可以组合成一个通信组件。经过查询后可以得到如下多个通信片段,即通信片段1【图标组件1—聊天条目2】、通信片段2【聊天条目2—消息列表3】、通信片段3【容器组件4—消息数目显示组件5】以及通信片段4【消息列表3—容器组件4】。根据步骤103中涉及的预设规则,最终可以得到对应于第一触发操作的第一通信链路为:【图标组件1—聊天条目2】—【聊天条目2—消息列表3】—【消息列表3—容器组件4】—【容器组件4—消息数目显示组件5】。
本发明实施例中,应用程序响应于用户的第一触发操作,确定对应于此第一触发操作的多个待加载业务组件。由于每个待加载业务组件可以支持多种不同的通信行为,并且一个待加载业务组件支持的一种通信行为与另一待加载业务组件支持的另一种通信行为之间可以具有预设的匹配关系,因此,应用程序可以利用此匹配关系将对应于第一触发操作的多个待加载业务组件组合成通信片段。最终,应用程序会根据通信片段确定出对应于第一触发操作的第一通信链路。可见,相比于现有技术中以组件为单位构建通信链路的方式,本方案提供了一种全新的、以通信片段为单位构建通信链路的方式,从而丰富了通信链路构建的方式。
为了使应用程序可以及时对第一触发操作产生响应,可选地,在生成第一通信链路的基础上,应用程序还可以在位于第一通信链路尾部的待加载业务组件上注册监听事件,承接上述举例,也即是在业务组件D上注册监听事件。在位于尾部的待加载业务组件监听到第一触发操作时,可以及时返回对应于第一触发操作的响应结果,使应用程序为用户显示此响应结果。
关于响应结果的返回,一种可选地方式,第一触发操作对应的操作指令会依次通过第一通信链路中的各个业务组件。每当操作指令经过一个业务组件时,此业务组件的组件标识就会与此操作指令相关联,当操作指令到达第一通信链路的尾部业务组件时,此操作指令也即是关联了第一通信链路中所有业务组件的组件标识。然后,应用程序会控制操作指令将自身关联的业务组件的组件标识进一步关联到尾部业务组件产生的响应结果上。最后,响应结果则可以根据自身关联的组件标识,将响应结果按照第一通信链路原路返回。上述过程实际上就是对第一触发操作进行回溯处理,以保证响应结果不会发送至错误的业务组件上。此部分将组件标识关联到操作指令以及响应结果的处理,在实际应用中,可以理解为对数据的埋点处理。
另外,可选地,在确定出第一通信链路后,应用程序还可以进一步生成对应于此第一通信链路的第一树状图,并将此树状图写入到通信链路树查询表中。在后续应用程序升级、更新等场景下,技术人员通过查询此通信链路树就可以直观、快速的了解到应用程序未升级前各组件之间的通信关系,从而可以在此基础上调整业务组件之间的通信关系。
对于上述实施例中的步骤102,如图3所示,一种可选地实现方式可以为:
S201,分别解析多个待加载业务组件各自支持的通信行为,以得到对应于每个待加载业务组件支持的通信行为的解析结果。
在执行步骤101后,应用程序可以确定出对应于第一触发操作的多个待加载业务组件,并且还可以获取用于描述每个待加载业务组件支持的通信行为的描述信息。但此时获取到的描述信息并不是应用程序可以直接读取的形式,因此,还需要对此描述信息进行进一步解析,以得到解析结果。应用程序可以直接读取解析结果从而知晓每个待加载业务组件支持的通信行为。在得到解析结果后,应用程序还可以将解析结果写入全局执行单元查询表中,以便应用程序在后续生成通信片段过程中进行查询。上述的解析过程实际上类似于对描述信息进行编译,并且此编译过程在实际应用中具体可以表现为词法分析处理。
根据上述描述可知,每个待加载业务组件都有用于描述自身支持的通信行为的描述信息,并且对每个待加载业务组件对应的描述信息的解析方式也都是相同的,因此,以多个待加载业务组件中的任一业务组件也即是待加载业务组件I为例来说明解析的过程:
在实际应用中,待加载业务组件I对应的描述信息可以有多条,并且每一条描述信息用于表明此待加载业务组件I支持的一种通信行为。可选地,一条描述信息具体可以表现为一个字符串,此字符串中可以包含分隔符。基于此,可选地,应用程序可以以描述信息即字符串中包含的分隔符为依据,将描述信息划分为多个信息片段,然后,可以直接将划分出的多个信息片段确定为对应于此待加载业务组件I支持的通信行为的解析结果。
举例来说,在实际应用中,每一条描述信息都具有预设的信息格式。可选地,一种信息格式可以为:chema:pipe.domain/action?method#element!paramter。则以分隔符为分界线,上述描述信息则会被分隔符间隔为多个字段,也即是两个相邻分隔符之间的字符为一个字段,一个字段即为一个信息片段。并且每个字段代表着通信行为的一个通信行为属性。其中,chema表示协议名称。pipe、domain、action以及method分别表示通信行为的通信方向、作用域、行为类型以及实现方式,上述这几部分是描述信息中的必要部分。而element和paramter则分别表示通信行为的行为结果和通信行为的额外说明信息,上述这两部分则是描述信息中的非必要部分。
举例来说,前述的待加载业务组件I对应的一条描述信息具体可以表示为:rx:output.default/ajax?get#names,根据上述预设的信息格式可知,此条描述信息表明此业务组件I支持外发发送一个ajax请求,请求类型为get,并获得names元素的通信行为。应用程序根据分隔符对描述信息进行划分后,则可以得到多个信息片段,即“output”、“default”、“ajax”、“get”以及“names”。上述多个信息片段各自对应的通信行为属性为通信方向、作用域、行为类型、通信请求实现方式以及通信行为的额外说明信息。
在实际应用中,由于应用程序的设计方式不同,有可能导致上述划分出的多个信息片段仍然不满足应用程序直接读取要求,因此,还要进一步对多个信息片段进行进一步解析,此解析过程具体可以表现为语法分析。语法分析的过程中通常包括词语校验以及语法规则的检验两部分。而在本发明中,由于描述信息中的内容通常较为简单,因此,语法分析主要体现于对多个信息片段的校验,校验后的结果也可以理解为解析结果,并且此解析结果通常是满足应用程序直接读取要求的。
对于多个信息片段的校验,一种可选地方式:根据分隔符识别每个信息片段对应的通信行为属性。若存在两个信息片段具有相同的通信行为属性,则说明描述信息中存在信息片段冗余,同时确定冗余信息片段在描述信息中的位置。若多个信息片段各自对应的通信行为属性中缺少上述提及的描述信息中必要部分,则表明描述信息中存在信息片段缺失,并且输出信息片段缺失提示。此提示通常不会显示在应用程序的操作界面上,而是会以指令的形式出现在应用程序的后台。应用程序在获取到此描述信息错误提示后,会进一步相关逻辑,比如重新获取业务组件的描述信息,并再一次进行解析处理等。若描述信息中不存在信息片段缺失和/或信息片段冗余,则可以直接将这多个信息片段确定为待加载业务组件I支持的通信行为的解析结果。
当然,在应用程序的运行过程中,难免会出现运行错误,运行错误可以为获取到错误的描述信息,而此错误的描述信息又是无法被应用程序解析的。因此,可选地,为了提高解析效率,在将获取到的描述信息划分为多个信息片段之前,应用程序会先对描述信息的有效性进行判定。若描述信息为有效信息,才会进一步将此有效的描述信息划分为多个信息片段。具体来说,在获取到一待加载业务组件对应的描述信息后,会确定此描述信息中是否存在预设非法分隔符。若描述信息中不存在预设非法分隔符,则表明此描述信息是有效的,应用程序可以进一步将此有效的描述信息划分为多个信息片段。
若存在预设非法分隔符,则表明此描述信息是无效的,此时,应用程序则不会进一步再执行将描述信息划分为多个信息片段的步骤,同时会输出描述信息错误提示。与上述信息片段缺失提示相似的,此提示通常也不会显示在应用程序的操作界面上,而是会以指令的形式在应用程序的后台出现。应用程序在获取到此描述信息错误提示后,会进一步相关逻辑,比如重新获取并解析业务组件的描述信息等等。
S202,根据解析结果,在多个待加载业务组件各自支持的通信行为之间的匹配关系中查询,以确定多个待加载业务组件中满足组合要求的待加载业务组件,由满足组合要求的待加载业务组件组成一个通信片段。在得到解析结果并将此解析结果写入到全局执行单元查询表中后,应用程序可以根据触发操作之间的预设对应关系,先确定出与此第一触发操作对应的一个触发操作,再从全局执行单元查询表查询到分别支持这两个触发操作的业务组件,由查询到的这两个业务组件组合成一个通信片段。上述过程实际上是根据触发操作之间的对应关系从全局执行单元查询表中确定出哪些待加载业务组件满足组合要求,并将满足组合要求的待加载业务组件组合为一个通信片段。
本发明实施例中,在应用程序获取到对应于第一触发操作的多个待加载业务组件后,对用于描述每个待加载业务组件的描述信息进行解析,以得到解析结果。此解析结果是满足应用程序直接读取需求的,应用程序读取后便能够获知每个待加载业务组件支持的通信行为。然后,应用程序再可以根据此解析结果确定待加载业务组件中哪些是满足组合要求的待加载业务组件,并将此满足组合要求的待加载业务组件确定为通信片段。同时,为了提高解析效率,在对描述信息进行解析之前,还会对其的有效性进行检验。并且应用程序还会对解析结果进行进一步校验,以使应用程序可以根据正确的解析结果确定通信片段。
另外,上述对描述信息的解析实际上是在用户使用应用程序时进行的。但由于业务组件对应的描述信息通常是开发人员人为写入的,难免出现错误,因此在应用程序开发阶段,为了检验开发人员写入的描述信息是否有误,也是需要执行上述解析过程的。以根据解析结果判定是否存在冗余描述信息即存在相同的描述信息。若存在,则表明开发人员在写入描述信息时存在写入重复。一种可选地判定规则是:两个描述信息对应的解析结果中,每个描述信息划分出的多个信息片段对应的通信行为属性全部相同。另一种可选地判定规则是:每个描述信息划分出的多个信息片段中均包含对应于预设通信行为属性的信息片段。
另外,如图3所示的实施例中提到了一个触发操作之间存在预设对应关系,而每个触发操作又对应于一条描述信息,因此,触发操作之间的对应关系也即是描述信息之间的对应关系。一种可选地方式,若两个描述信息各自对应的多个信息片段中,预设通信行为属性具有预设匹配关系,而具有的其余通信行为属性均相同,则表明这两个描述信息是匹配的。
举例来说,描述信息M划分出的多个信息片段分别对应于通信属性中的协议名称、通信方向、作用域、行为类型以及实现方式,信息描述N划分出的多个信息片段与也分别对应于上述通信行为属性,并且通信行为属性中的通信方向一个是output,一个是input,而这两个通信方向又是具有预设匹配关系的,则描述信息M和描述信息N也是匹配的。
如图1所示的实施例中提及的第一触发操作,实际上可以理解为业务组件加载操作,在实际应用中,很容易想到的,还会存在业务组件卸载操作本实施例中可以将业务组件卸载操作称为第二触发操作,并且第二触发操作往往都是在第一触发操作后产生的。基于此,在步骤103之后,图4为本发明实施例提供的另一种通信链路构建方法的流程图,如图4所示,该方法包括如下步骤:
S301,响应于用户的第二触发操作,确定对应于触发操作的待卸载业务组件。
S302,删除第一通信链路中包括待卸载业务组件的通信片段,以得到对应于第二触发操作的第二通信链路。
与第一触发操作类似的,用户同样可以在应用程序中产生第二触发操作,其中,此第二触发操作可以理解为业务组件卸载操作,也即是在产生第二触发操作后,需要进一步进行业务组件卸载,卸载后才能将对应于第一触发操作的响应结果展示给用户。可选地,第二触发操作也可以是点击、滑动操作等等。与步骤101相似的,应用程序同样可以根据自身配置的路由模块确定与此第二触发操作对应的待卸载业务组件。应用程序响应于第二触发操作,从已经建立的第一通信链路中将包括待卸载组件的通信片段从第一通信链路中删除,从而得到对应于第二触发操作的第二通信链路。
承接图1中聊天应用程序的举例,第一通信链路为:【图标组件1—聊天条目2】—【聊天条目2—消息列表3】—【消息列表3—容器组件4】—【容器组件4—消息数目显示组件5】。用户产生的第二触发操作可以是用户点击了任一个聊天条目,此时,响应于第二触发操作,应用程序确定出待卸载组件为消息列表3以及容器组件4,并且此时,聊天应用会从主界面跳转到此聊天条目的聊天界面,如图5所示,则第二通信链路即为【图标组件1—聊天条目2】。
当用户又产生了点击图5中返回按钮的触发操作后,应用程序会由聊天界面重新返回至主界面,此时,应用程序又会重新构建起上述的第一通信链路。并且主界面中左下角未读消息的数目也会相应改变,同时作用有第二触发操作的聊天条目上也不再会显示有未读消息。
本发明实施例中,在构建起第一通信链路后,用户还可以进一步产生第二触发操作。应用程序相应此第二触发操作,确定待卸载业务组件,并将包含此待卸载业务组件的通信片段从第一通信链路中删除,以得到第二通信链路。
另外,在得到第二通信链路之后,应用程序还会重新对第二通信链路上的业务组件重新注册监听事件。为了简化描述,以树状图为载体,说明重新注册监听事件的过程:
应用程序在得到第一通信链路和第二通信链路后,都会相应的生成各自对应的第一树状图和第二树状图。第二树状图与第一树状图相比,若第二树状图中出现了新的叶子节点,则在此新出现的叶子节点上注册监听事件。若在第二树状图中出现了新的父节点,并且这个新的父节点在第一树状图中是一个叶子节点,则在此新出现的父节点上注销已经存在的监听事件。
以下将详细描述本发明的一个或多个实施例的通信链路构建装置。本领域技术人员可以理解,这些通信链路构建装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图6为本发明实施例提供的通信链路构建装置的结构示意图,如图6所示,该装置包括:组件确定模块11、组合模块12以及链路确定模块13。
所述组件确定模块11,用于响应于用户的第一触发操作,确定对应于所述第一触发操作的多个待加载业务组件。
所述组合模块12,用于根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成通信片段。
所述链路确定模块13,用于根据所述通信片段确定对应于所述第一触发操作的第一通信链路。
可选地,所述组合模块12具体包括:
解析单元121,用于分别解析所述多个待加载业务组件各自支持的通信行为,以得到对应于每个待加载业务组件支持的通信行为的解析结果。
查询单元122,用于根据所述解析结果,在所述多个待加载业务组件各自支持的通信行为之间的匹配关系中查询,以确定所述多个待加载业务组件中满足组合要求的待加载业务组件,由所述满足组合要求的待加载业务组件组成一个通信片段。
可选地,所述解析单元121具体用于:对于待加载业务组件,根据描述通信行为的描述信息中包含的分隔符将所述描述信息划分为多个信息片段,其中,描述信息描述的通信行为为所述待加载业务组件支持的通信行为;以及对所述多个信息片段进行校验,以得到对应于所述待加载业务组件支持的通信行为的解析结果。
可选地,所述装置还包括:判定模块21,用于确定所述描述信息包含的字符串中是否存在预设非法分隔符。
所述解析单元121具体用于:若所述描述信息包含的字符串中不存在预设非法分隔符,则执行所述根据描述通信行为的描述信息中包含的分隔符将所述描述信息划分为多个信息片段的步骤。
可选地,所述装置还包括:提示模块22,用于若所述描述信息包含的字符串中存在预设非法分隔符,则输出描述信息错误提示。
可选地,所述解析单元121具体还用于:根据所述分隔符识别所述多个信息片段各自对应的通信行为属性;根据每个信息片段对应的通信行为属性,确定所述描述信息中是否存在信息片段缺失和/或信息片段冗余;以及若所述描述信息中不存在信息片段缺失和/或信息片段冗余,则将所述多个信息片段确定为对应于所述待加载业务组件支持的通信行为的解析结果。
可选地,所述装置还包括:位置确定模块23,用于若所述描述信息中存在信息片段冗余,则确定冗余信息片段在所述描述信息中的位置。
所述提示模块22还用于,若所述描述信息中存在信息片段缺失,则输出信息片段缺失提示。
可选地,所述通信片段的数量为多个,所述链路确定模块13具体包括:
第一确定单元131,用于确定包含所述目标待加载业务组件的目标通信片段位于所述第一通信链路的头部,所述第一触发操作作用于所述目标待加载业务组件上。
第二确定单元132,用于根据预设规则确定所述多个通信片段中的剩余通信片段之间的排列顺序,所述预设规则为相邻的前一通信片段中的尾部业务组件与后一通信片段中的头部业务组件相同。
第三确定单元133,用于按照所述排列顺序将所述剩余通信片段依次与所述目标通信片段连接,以生成对应于所述第一触发操作的第一通信链路。
可选地,所述装置还包括:注册模块24,用于在位于所述第一通信链路尾部的待加载业务组件上注册监听事件,以便位于尾部的待加载业务组件监听到所述第一触发操作时,返回对应于所述第一触发操作的响应结果。
可选地,所述装置还包括:关联模块25和传输模块26。
所述关联模块25,用于在所述第一触发操作对应的操作指令经过所述第一通信链路中的任一待加载业务组件时,将所述任一待加载业务组件的组件标识与所述操作指令关联;以及将与所述操作指令关联的组件标识关联至所述响应结果。
所述传输模块26,用于根据与所述响应结果关联的组件标识将所述响应结果返回至所述目标待加载业务组件。
可选地,所述组件确定模块11,用于响应于所述用户的第二触发操作,确定对应于所述触发操作的待卸载业务组件。
所述链路确定模块13,用于删除所述第一通信链路中包括所述待卸载业务组件的通信片段,以得到对应于所述第二触发操作的第二通信链路。
可选地,所述装置还包括:生成模块27和注销模块28。
所述生成模块,用于生成所述第一通信链路对应的第一树状图以及生成对应于所述第二通信链路的第二树状图。
所述注册模块24,用于若所述第二树状图与所述第一树状图相比,存在新增的叶子节点,则在所述新增的叶子节点对应的待卸载业务组件上注册监听事件。
所述注销模块28,用于若所述第二树状图与所述第一树状图相比,存在新增的父节点并且所述新增的父节点为所述第一树状图中的任一叶子节点,则在所述新增的父节点上注销监听事件。
图6所示装置可以执行图1至图5所示实施例的方法,本实施例未详细描述的部分,可参考对图1至图5所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1至图5所示实施例中的描述,在此不再赘述。
以上描述了通信链路构建装置的内部功能和结构,在一个可能的设计中,通信链路构建装置的结构可实现为一电子设备,该电子设备可以是安装有应用程序的终端设备,如图7所示,该电子设备可以包括:处理器31和存储器32。其中,所述存储器32用于存储支持该电子设备执行上述图1至图5所示实施例中提供的通信链路构建方法的程序,所述处理器31被配置为用于执行所述存储器32中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器31执行时能够实现如下步骤:
响应于用户的第一触发操作,确定对应于所述第一触发操作的多个待加载业务组件;
根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成通信片段;
根据所述通信片段确定对应于所述第一触发操作的第一通信链路。
可选地,所述处理器31还用于执行前述图1至图5所示实施例中的全部或部分步骤。
其中,所述电子设备的结构中还可以包括通信接口33,用于该电子设备与其他设备或通信网络通信。
另外,本发明实施例提供了一种计算机存储介质,用于储存上述电子设备所用的计算机软件指令,其包含用于执行上述图1至图5所示方法实施例中通信链路构建方法所涉及的程序。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (13)
1.一种通信链路构建方法,其特征在于,包括:
响应于用户的第一触发操作,确定对应于所述第一触发操作的多个待加载业务组件;
根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成通信片段;
根据所述通信片段确定对应于所述第一触发操作的第一通信链路。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成多个通信片段,包括:
分别解析所述多个待加载业务组件各自支持的通信行为,以得到对应于每个待加载业务组件支持的通信行为的解析结果;
根据所述解析结果,在所述多个待加载业务组件各自支持的通信行为之间的匹配关系中查询,以确定所述多个待加载业务组件中满足组合要求的待加载业务组件,由所述满足组合要求的待加载业务组件组成一个通信片段。
3.根据权利要求2所述的方法,其特征在于,所述分别解析所述多个待加载业务组件各自支持的通信行为,以得到对应于每个待加载业务组件支持的通信行为的解析结果,包括:
对于待加载业务组件,根据描述通信行为的描述信息中包含的分隔符将所述描述信息划分为多个信息片段,其中,描述信息描述的通信行为为所述待加载业务组件支持的通信行为;
对所述多个信息片段进行校验,以得到对应于所述待加载业务组件支持的通信行为的解析结果。
4.根据权利要求3所述的方法,其特征在于,所述根据描述通信行为的描述信息中包含的分隔符将所述描述信息划分为多个信息片段之前,还包括:
确定所述描述信息包含的字符串中是否存在预设非法分隔符;
若所述描述信息包含的字符串中不存在预设非法分隔符,则执行所述根据描述通信行为的描述信息中包含的分隔符将所述描述信息划分为多个信息片段的步骤。
5.根据权利要求3所述的方法,其特征在于,所述对所述多个信息片段进行校验,以得到对应于所述待加载业务组件支持的通信行为的解析结果,包括:
根据所述分隔符识别所述多个信息片段各自对应的通信行为属性;
根据每个信息片段对应的通信行为属性,确定所述描述信息中是否存在信息片段缺失和/或信息片段冗余;
若所述描述信息中不存在信息片段缺失和/或信息片段冗余,则将所述多个信息片段确定为对应于所述待加载业务组件支持的通信行为的解析结果。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述描述信息中存在信息片段冗余,则确定冗余信息片段在所述描述信息中的位置;
若所述描述信息中存在信息片段缺失,则输出信息片段缺失提示。
7.根据权利要求1所述的方法,其特征在于,所述通信片段的数量为多个,所述根据所述通信片段确定对应于所述第一触发操作的第一通信链路,包括:
确定包含所述目标待加载业务组件的目标通信片段位于所述第一通信链路的头部,所述第一触发操作作用于所述目标待加载业务组件上;
根据预设规则确定所述多个通信片段中的剩余通信片段之间的排列顺序,所述预设规则为相邻的前一通信片段中的尾部业务组件与后一通信片段中的头部业务组件相同;
按照所述排列顺序将所述剩余通信片段依次与所述目标通信片段连接,以生成对应于所述第一触发操作的第一通信链路。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在位于所述第一通信链路尾部的待加载业务组件上注册监听事件,以便位于尾部的待加载业务组件监听到所述第一触发操作时,返回对应于所述第一触发操作的响应结果。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在所述第一触发操作对应的操作指令经过所述第一通信链路中的任一待加载业务组件时,将所述任一待加载业务组件的组件标识与所述操作指令关联;
将与所述操作指令关联的组件标识关联至所述响应结果;
根据与所述响应结果关联的组件标识将所述响应结果返回至所述目标待加载业务组件。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述用户的第二触发操作,确定对应于所述触发操作的待卸载业务组件;
删除所述第一通信链路中包括所述待卸载业务组件的通信片段,以得到对应于所述第二触发操作的第二通信链路。
11.根据权利要求10所述的方法,其特征在于,所述按照所述排列顺序将所述剩余通信片段依次与所述目标通信片段连接,以生成对应于所述触发操作的第一通信链路之后,还包括:
生成所述第一通信链路对应的第一树状图;
所述删除所述第一通信链路中包括所述待卸载业务组件的通信片段,以得到对应于所述第二触发操作的第二通信链路之后,还包括:
生成对应于所述第二通信链路的第二树状图;
所述方法还包括:
若所述第二树状图与所述第一树状图相比,存在新增的叶子节点,则在所述新增的叶子节点对应的待卸载业务组件上注册监听事件;
若所述第二树状图与所述第一树状图相比,存在新增的父节点并且所述新增的父节点为所述第一树状图中的任一叶子节点,则在所述新增的父节点上注销监听事件。
12.一种通信链路构建装置,其特征在于,包括:
组件确定模块,用于响应于用户的第一触发操作,确定对应于所述第一触发操作的多个待加载业务组件;
组合模块,用于根据所述多个待加载业务组件各自支持的通信行为之间的匹配关系,将所述多个待加载业务组件组合成通信片段;
链路确定模块,用于根据所述通信片段确定对应于所述第一触发操作的第一通信链路。
13.一种电子设备,其特征在于,包括:存储器、处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如权利要求1至11中任一项所述的通信链路构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910203884.3A CN111726373B (zh) | 2019-03-18 | 2019-03-18 | 通信链路构建方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910203884.3A CN111726373B (zh) | 2019-03-18 | 2019-03-18 | 通信链路构建方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111726373A true CN111726373A (zh) | 2020-09-29 |
CN111726373B CN111726373B (zh) | 2022-06-03 |
Family
ID=72562266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910203884.3A Active CN111726373B (zh) | 2019-03-18 | 2019-03-18 | 通信链路构建方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111726373B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030032417A1 (en) * | 2001-08-13 | 2003-02-13 | Brian Minear | System and method for temporary application component deletion and reload on a wireless device |
CN101861566A (zh) * | 2007-10-01 | 2010-10-13 | 奥多比公司 | 用于生成应用片段的***和方法 |
US20150212920A1 (en) * | 2013-03-15 | 2015-07-30 | Ca, Inc. | Software system validity testing |
US20150220423A1 (en) * | 2013-03-15 | 2015-08-06 | Ca, Inc. | Transactional boundaries for virtual model generation |
US20170075798A1 (en) * | 2015-09-13 | 2017-03-16 | Ca, Inc. | Automated system documentation generation |
CN106899447A (zh) * | 2016-06-28 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种链路确定的方法及装置 |
US20170200098A1 (en) * | 2016-01-08 | 2017-07-13 | Ca, Inc. | Transaction flow visualization |
US20170286277A1 (en) * | 2016-03-31 | 2017-10-05 | Ca, Inc. | Automated model generation for a software system |
US20180217924A1 (en) * | 2016-03-30 | 2018-08-02 | Ca, Inc. | Transactional boundaries for virtualization within a software system |
-
2019
- 2019-03-18 CN CN201910203884.3A patent/CN111726373B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030032417A1 (en) * | 2001-08-13 | 2003-02-13 | Brian Minear | System and method for temporary application component deletion and reload on a wireless device |
CN101861566A (zh) * | 2007-10-01 | 2010-10-13 | 奥多比公司 | 用于生成应用片段的***和方法 |
US20150212920A1 (en) * | 2013-03-15 | 2015-07-30 | Ca, Inc. | Software system validity testing |
US20150220423A1 (en) * | 2013-03-15 | 2015-08-06 | Ca, Inc. | Transactional boundaries for virtual model generation |
US20170075798A1 (en) * | 2015-09-13 | 2017-03-16 | Ca, Inc. | Automated system documentation generation |
US20170200098A1 (en) * | 2016-01-08 | 2017-07-13 | Ca, Inc. | Transaction flow visualization |
US20180217924A1 (en) * | 2016-03-30 | 2018-08-02 | Ca, Inc. | Transactional boundaries for virtualization within a software system |
US20170286277A1 (en) * | 2016-03-31 | 2017-10-05 | Ca, Inc. | Automated model generation for a software system |
CN106899447A (zh) * | 2016-06-28 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种链路确定的方法及装置 |
Non-Patent Citations (3)
Title |
---|
CHAO-JUNG HSU 等: "An Adaptive Reliability Analysis Using Path Testing for Complex Component-Based Software Systems", 《IEEE》 * |
R. CHINNAIYAN 等: "Reliability assessment of component based software by using basis path testing", 《IEEE》 * |
薛慧军: "基于MVC框架的快速可重构内容管理***的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111726373B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897691B (zh) | 基于接口模拟服务的数据处理方法、装置、服务器和介质 | |
US10169034B2 (en) | Verification of backward compatibility of software components | |
US11231916B2 (en) | Method and apparatus for data compilation using intermediate class files, electronic device and non-transitory computer readable storage medium | |
CN107092491B (zh) | 一种配置加载方法和*** | |
JP2006031109A (ja) | 管理システム及び管理方法 | |
CN112181804A (zh) | 一种参数校验方法、设备以及存储介质 | |
CN113495797A (zh) | 一种消息队列及消费者动态创建方法及*** | |
CN112905441A (zh) | 测试用例生成方法、测试方法、装置及设备 | |
CN112380145A (zh) | Sdk生成方法、装置、设备及可读存储介质 | |
CN113760308A (zh) | Dsp***的构建方法、装置、电子设备及存储介质 | |
CN106502707B (zh) | 代码生成方法及装置 | |
CN112258295A (zh) | 记录处理方法、装置及设备 | |
CN111726373B (zh) | 通信链路构建方法、装置和设备 | |
CN116127154A (zh) | 知识标签推荐方法、装置、电子设备及存储介质 | |
CN112181407B (zh) | 业务实现处理方法及装置、***、电子设备和存储介质 | |
CN114338846B (zh) | 一种报文测试的方法及装置 | |
CN114527993A (zh) | 应用程序部署方法、装置、设备及介质 | |
CN110515905B (zh) | 一种路由的配置的方法、装置以及服务器 | |
CN111736848A (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
CN111158873A (zh) | ***状态机实现方法、装置、存储介质及处理器 | |
CN115437903A (zh) | 接口测试方法、装置、设备、存储介质及程序 | |
CN112230938A (zh) | 工业互联网的租赁产品的配置方法和装置 | |
US10509659B1 (en) | Input processing logic to produce outputs for downstream systems using configurations | |
CN111124712A (zh) | 一种事件通知方法、装置、服务器及存储介质 | |
US11561979B2 (en) | Dynamically detecting and correcting errors in queries |
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 |