CN113849158A - 基于json的接口工厂系统、其产生接口的方法及介质 - Google Patents
基于json的接口工厂系统、其产生接口的方法及介质 Download PDFInfo
- Publication number
- CN113849158A CN113849158A CN202111107765.1A CN202111107765A CN113849158A CN 113849158 A CN113849158 A CN 113849158A CN 202111107765 A CN202111107765 A CN 202111107765A CN 113849158 A CN113849158 A CN 113849158A
- Authority
- CN
- China
- Prior art keywords
- interface
- data
- application
- module
- request
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种基于JSON的接口工厂系统,包括:权限模块用于管理用户角色和用户权限;应用模块用于管理系统内所有的应用方、应用方创建的应用,以及管理每个应用下的分类及分类下所有的接口;审核模块用于审核接口内容得到审核结果;API模块用于通过接口名或接口标识获取JSON数据,根据JSON数据的返回值定义接口;接口管理模块用于将审核通过的接口数据更新到接口生效中当前数据,并将数据存储到数据库,审核未通过的接口数据,则拒绝此次无效编辑。系统实现产生自定义接口,减少开发人员的工作量,提高开发人员的工作效率,运营产品等人员都可以快速修改内容,直接修改接口或数据就能快速生效,大大提高产品开发运营的效率。
Description
技术领域
本发明涉及计算机软件技术领域,具体涉及一种基于JSON的接口工厂系统、其产生接口的方法、终端及介质。
背景技术
市面上大部分开发项目都需要前端和后端研发,前端开发页面需要大量的动态数据接口以及配置数据接口,后端会定义大量的接口,必然会投入前后端研发。对于一些活动页面和一些频繁改动的页面,灵活的改动及时生效就会出现前后端同时改动并且上线,对于活动要求时间很紧张的情况,一般传统的开发模式无法满足需求,如果要满足配置就要开发对应的配置系统,不同系统和项目都需要开发一套对应配置系统,人力成本高。
发明内容
针对现有技术中的缺陷,本发明实施例提供一种基于JSON的接口工厂系统、产生接口的方法、终端及介质,能减少研发人力成本,提高产品开发运营效率。
第一方面,本发明实施例提供的一种基于JSON的接口工厂系统,包括:权限模块、应用模块、审核模块、API模块和接口管理模块,
所述权限模块用于管理用户角色和用户权限;
所述应用模块用于管理系统内所有的应用方、应用方创建的应用,以及管理每个应用下的分类及分类下所有的接口;
所述审核模块用于审核接口内容得到审核结果,审核结果包括审核通过和未通过;
所述API模块用于通过接口名或接口标识获取JSON数据,根据JSON数据的返回值定义接口;
所述接口管理模块用于将审核通过的接口数据更新到接口生效中当前数据,并将数据存储到数据库,审核未通过的接口数据,则拒绝此次无效编辑。
可选地,应用模块还包括应用添加单元,所述应用添加单元用于增加应用,在应用下创建不同的分类。
可选地,应用模块还包括分类编辑单元,所述分类编辑单元用于添加接口和编辑接口数据。
可选地,系统还包括数据迁移模块,所述数据迁移模块用于对接口数据进行迁移和备份。
第二方面,本发明实施例提供的一种基于JSON的接口系统产生接口的方法,适用于上述实施例描述的系统,方法包括:
接收并获取用户终端发送的权限申请请求;
对用户终端的权限进行授权;
获取用户终端发送的创建应用、分类和接口请求;
根据创建应用、分类和接口请求创建应用、分类和接口,并对应用下的分类和分类下的接口进行管理;
接收审核接口内容的请求;
将审核接口内容的请求发送给有权限审核的用户终端,接收用户终端发送审核结果;
若审核结果为通过,将更新接口生效中当前数据,并更新缓存当前生效中的数据,并记录相关日志信息,在接口调用时返回JSON数据;
若审核结果为未通过,则拒绝当前无效编辑。
可选地,根据创建应用分类和接口请求创建应用、分类和接口,并对应用下的分类和分类下的接口进行管理具体包括:
根据创建应用请求创建应用,并通过应用管理模块展示创建的应用列表;
根据创建分类请求创建分类,将分类设置在应用的下级;
根据创建接口请求创建接口,将接口设置在分类的下级,管理接口包括编辑接口定义和编辑接口数据。
可选地,方法还包括:接收数据迁移请求,根据所述数据迁移请求对接口数据进行迁移和备份。
第三方面,本发明实施例提供的一种智能终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述实施例描述的方法。
第四方面,本发明实施例提供的一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述实施例描述的方法。
本发明的有益效果:
本发明提供了一种基于JSON的接口工厂系统、产生接口的方法、终端及介质,实现产生自定义接口,减少开发人员的工作量,提高开发人员的工作效率,运营、产品等人员都可以快速在不同页面以及功能模块进行快速修改内容,不需要像传统定义接口还需要上线代码才能生效,直接修改接口或数据就能快速生效,大大提高产品开发运营的效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1示出了本发明第一实施例所提供的一种基于JSON的接口工厂系统的结构框图;
图2示出了本发明第三实施例所提供的一种智能终端的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
如图1所示,示出了本发明第一实施例所提供的一种基于JSON的接口工厂系统的结构框图,该系统包括:包括:权限模块、应用模块、审核模块、API模块和接口管理模块,所述权限模块用于管理用户角色和用户权限;所述应用模块用于管理系统内所有的应用方、应用方创建的应用,以及管理每个应用下的分类及分类下所有的接口;所述审核模块用于审核接口内容得到审核结果,审核结果包括审核通过和未通过;所述API模块用于通过接口名或接口标识获取JSON数据,根据JSON数据的返回值定义接口;所述接口管理模块用于将审核通过的接口数据更新到接口生效中当前数据,并将数据存储到数据库,审核未通过的接口数据,则拒绝此次无效编辑。
在本实施例中,接口工厂系统的含义是产生接口的系统。该系统采用EasyHttpJson系统,用户通过权限管理模块进行申请相应的权限,授权得到相应的权限可以进行对应的操作,比如,得到应用管理员权限,后续操作就有管理员权限对系统进行操作。该系统采用JSON数据结构方式定义接口,JSON数据结构不区分语言,大多数开发者都通用,便于接口开发和通用型,返回结果也是JSON数据结构,便于传输和不区分语言。系统可以方便的让定义好的Json结构友好的展示给运营或者产品人员,呈现一颗结构化树形骨架点,点击骨架点进行每个骨架的数据配置。
得到授权的应用管理员进入系统,通过应用模块检索到对应的应用,可以看到应用列表,在应用列表下选择其中一个应用,就可以在该应用下创建不同的分类。点击分类进入分类页面,可以进行添加接口和查看分类下所有的接口,并可以对接口进行定义和编辑接口数据。选择添加接口后进入到新增接口主页,可以对新增接口英文名、中文别名、接口数据进行编辑,同时添加接口返回数据结构,返回数据结构支持文本、数字、日期、对象、数组、图片、视频;同时返回数据结构定义了编辑数据者理解的文案,方便编辑数据者编辑数据。接口字段类型丰富,可以适应不同的用户需求。将应用和分类进行分组,方便进行业务方和场景的管理,便于进行权限的分配,便于整体分组接口处理。
编辑数据者进入系统,通过应用到分类定位到接口,编辑接口数据,进入编辑页面,展开数据结构列表可以展示整个数据结构定义字段,点击每个字段右侧可以填写对应的数据,系统将通过接口管理模块进行存储到数据库,更新临时保存字段。
编辑数据者提交数据审核,审核者通过审核模块进行对比两次数据编辑的差异,分辨数据是否正确得到审核结果,审核结果为通过或未通过,数据审核通过后,接口管理模块将通过的接口数据更新到接口生效中当前数据,同时更新缓存当前生效中数据,将数据存储到数据库,调用日志管理模块进行相关日志的记录。审核未通过的接口数据,则拒绝此次无效编辑。系统通过设置审核模块,可以对比当前待审核内容和生效中的内容的差异,直观展示差异项。系统还包括数据迁移模块,数据迁移模块用于对接口数据进行迁移和备份。
接口调用者可以通过独立的域名,该域名映射到API模块,进行接口调用,接口返回JSON字符串,相关业务可以进行业务处理。当业务数据调整,进入系统进行编辑数据,审核完成,刷新缓存即可业务数据更新,无需上线。
本发明实施例提供的一种基于JSON的接口工厂系统,实现产生自定义接口,开发人员可快速开发页面以及APP原始功能,原有开发一个页面的某一块功能,需要4个小时,现在只需要一个小时,并且只需使用一个人,减少开发人员的工作量,提高开发人员的工作效率。运营人员、产品人员等可以快速在不同页面以及功能模块进行快速修改内容,不需要像传统定义接口还需要上线代码才能生效,直接修改接口或数据就能快速生效,大大提高产品开发运营的效率。
在上述的第一实施例中,提供了一种基于JSON的接口工厂系统,与之相对应的,本申请还提供一种基于JSON的接口工厂系统产生接口的方法。由于方法实施例基本相似于装置实施例,所以描述得比较简单,相关之处参见装置实施例的部分说明即可。下述描述的方法实施例仅仅是示意性的。
本发明第二实施例提供的一种基于JSON的接口工厂系统产生接口的方法,该方法适用于上述第一实施例描述的系统,该方法包括以下步骤:
接收并获取用户终端发送的权限申请请求;
对用户终端的权限进行授权;
获取用户终端发送的创建应用、分类和接口请求;
根据创建应用、分类和接口请求创建应用、分类和接口,并对应用下的分类和分类下的接口进行管理;
接收审核接口内容的请求;
将审核接口内容的请求发送给有权限审核的用户终端,接收用户终端发送审核结果;
若审核结果为通过,将更新接口生效中当前数据,并更新缓存当前生效中的数据,并记录相关日志信息,在接口调用时返回JSON数据;
若审核结果为未通过,则拒绝当前无效编辑。
具体地,根据创建应用分类和接口请求创建应用、分类和接口,并对应用下的分类和分类下的接口进行管理具体包括:
根据创建应用请求创建应用,并通过应用管理模块展示创建的应用列表;
根据创建分类请求创建分类,将分类设置在应用的下级;
根据创建接口请求创建接口,将接口设置在分类的下级,管理接口包括编辑接口定义和编辑接口数据。
方法还包括:接收数据迁移请求,根据所述数据迁移请求对接口数据进行迁移和备份。
以上,为本发明第二实施例提供的一种基于JSON的接口工厂系统产生接口的方法的实施例说明。
本发明提供的一种基于JSON的接口工厂系统产生接口的方法与上述一种基于JSON的接口工厂系统出于相同的发明构思,具有相同的有益效果,此处不再赘述。
如图2所示,示出了本发明第三实施例提供的一种智能终端结构框图,该终端包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述实施例描述的方法。
应当理解,在本发明实施例中,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备可以包括显示器(LCD等)、扬声器等。
该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,本发明实施例中所描述的处理器、输入设备、输出设备可执行本发明实施例提供的方法实施例所描述的实现方式,也可执行本发明实施例所描述的系统实施例的实现方式,在此不再赘述。
在本发明还提供一种计算机可读存储介质的实施例,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述实施例描述的方法。
所述计算机可读存储介质可以是前述实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (9)
1.一种基于JSON的接口工厂系统,其特征在于,包括:权限模块、应用模块、审核模块、API模块和接口管理模块,
所述权限模块用于管理用户角色和用户权限;
所述应用模块用于管理系统内所有的应用方、应用方创建的应用,以及管理每个应用下的分类及分类下所有的接口;
所述审核模块用于审核接口内容得到审核结果,审核结果包括审核通过和未通过;
所述API模块用于通过接口名或接口标识获取JSON数据,根据JSON数据的返回值定义接口;
所述接口管理模块用于将审核通过的接口数据更新到接口生效中当前数据,并将数据存储到数据库,审核未通过的接口数据,则拒绝此次无效编辑。
2.如权利要求1所述的系统,其特征在于,所述应用模块还包括应用添加单元,所述应用添加单元用于增加应用,在应用下创建不同的分类。
3.如权利要求2所述的系统,其特征在于,所述应用模块还包括分类编辑单元,所述分类编辑单元用于添加接口和编辑接口数据。
4.如权利要求3所述的系统,其特征在于,所述系统还包括数据迁移模块,所述数据迁移模块用于对接口数据进行迁移和备份。
5.一种基于JSON的接口工厂系统产生接口的方法,其特征在于,适用于权利要求1所述的系统,所述方法包括:
接收并获取用户终端发送的权限申请请求;
对用户终端的权限进行授权;
获取用户终端发送的创建应用、分类和接口请求;
根据创建应用、分类和接口请求创建应用、分类和接口,并对应用下的分类和分类下的接口进行管理;
接收审核接口内容的请求;
将审核接口内容的请求发送给有权限审核的用户终端,接收用户终端发送审核结果;
若审核结果为通过,将审核通过的接口数据更新到接口生效中当前数据,并将数据存储到数据库中,记录相关日志信息,在接口调用时返回JSON数据;
若审核结果为未通过,则拒绝当前无效编辑。
6.如权利要求5所述的方法,其特征在于,所述根据创建应用分类和接口请求创建应用、分类和接口,并对应用下的分类和分类下的接口进行管理具体包括:
根据创建应用请求创建应用,并通过应用管理模块展示创建的应用列表;
根据创建分类请求创建分类,将分类设置在应用的下级;
根据创建接口请求创建接口,将接口设置在分类的下级,管理接口包括编辑接口定义和编辑接口数据。
7.如权利要求6所述的方法,其特征在于,还包括:接收数据迁移请求,根据所述数据迁移请求对接口数据进行迁移和备份。
8.一种智能终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,其特征在于,所述处理器被配置用于调用所述程序指令,执行如权利要求5-7任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求5-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111107765.1A CN113849158A (zh) | 2021-09-22 | 2021-09-22 | 基于json的接口工厂系统、其产生接口的方法及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111107765.1A CN113849158A (zh) | 2021-09-22 | 2021-09-22 | 基于json的接口工厂系统、其产生接口的方法及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849158A true CN113849158A (zh) | 2021-12-28 |
Family
ID=78974861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111107765.1A Pending CN113849158A (zh) | 2021-09-22 | 2021-09-22 | 基于json的接口工厂系统、其产生接口的方法及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849158A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666387A (zh) * | 2022-03-25 | 2022-06-24 | 广州方硅信息技术有限公司 | 接口管理系统、方法、存储介质及计算机设备 |
-
2021
- 2021-09-22 CN CN202111107765.1A patent/CN113849158A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666387A (zh) * | 2022-03-25 | 2022-06-24 | 广州方硅信息技术有限公司 | 接口管理系统、方法、存储介质及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027833B (zh) | 用于创建结构化数据语言查询的方法 | |
US11086894B1 (en) | Dynamically updated data sheets using row links | |
US9886369B2 (en) | Dynamic data fabrication for database applications | |
CN112434015B (zh) | 数据存储的方法、装置、电子设备及介质 | |
CN107301179A (zh) | 数据库读写分离的方法和装置 | |
US20220123935A1 (en) | Masking sensitive information in a document | |
CN107679937B (zh) | 定制服务功能的方法、系统、存储介质及设备 | |
CN115357590A (zh) | 针对数据变更的记录方法、装置、电子设备及存储介质 | |
CN111142863A (zh) | 一种页面生成的方法及装置 | |
CN113849158A (zh) | 基于json的接口工厂系统、其产生接口的方法及介质 | |
CN111241107A (zh) | 一种业务处理方法、装置、介质和电子设备 | |
WO2020232900A1 (zh) | 系统测试方法及装置、计算机设备、存储介质 | |
CN111159277A (zh) | 一种智能数据分析方法及系统 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN113918149A (zh) | 接口开发方法、装置、计算机设备和存储介质 | |
US11106564B2 (en) | Deframeworking for static program analysis | |
CN116823464B (zh) | 数据资产管理平台、电子设备及计算机可读存储介质 | |
US7664776B1 (en) | Methods and apparatus for dynamic form definition | |
CN111666201A (zh) | 回归测试方法、装置、介质及电子设备 | |
CN111367898B (zh) | 数据处理方法、装置、系统、电子设备及存储介质 | |
CN114238724A (zh) | 一种数据可视化的方法及装置 | |
CN114385722A (zh) | 接口属性的一致性校验方法、装置、电子设备和存储介质 | |
US11481513B2 (en) | Decentralized storage of personal data | |
US11704094B2 (en) | Data integrity analysis tool | |
CN111338941B (zh) | 信息处理方法和装置、电子设备和存储介质 |
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 |