数据拦截方法和装置制造方法及图纸

技术编号:8800952 阅读:231 留言:0更新日期:2013-06-13 05:39
一种数据拦截方法,包括以下步骤:获取业务请求;根据预设的业务请求与目标对象的映射关系,获取与所述业务请求对应的目标对象,并获取所述目标对象在运行时的实际类型;根据预设的声明类型为动态类型的拦截器与目标对象的映射关系,以及目标对象在运行时的实际类型,得到实际类型与目标对象的实际类型相同的拦截器;根据所述实际类型与目标对象的实际类型相同的拦截器,调用预设的动态链接库中对应的库函数。本发明专利技术还提供了一种对应的数据拦截装置。上述数据拦截方法和装置采用了声明类型为动态类型的拦截器,从而提高了数据管理系统的扩展性。

【技术实现步骤摘要】
数据拦截方法和装置
本专利技术涉及计算机应用领域,特别涉及一种数据拦截方法和装置。
技术介绍
传统技术中,为了降低数据管理系统(如ERP系统)中业务模块之间的耦合度,通常采用数据拦截方法使用拦截器将业务模块分离。拦截器为包含了预设的拦截逻辑的对象。传统技术中,往往设置多个静态类型的拦截器与希望被拦截的目标对象产生映射,拦截器的类型与目标对象的类型对应。目标对象则与具体的业务请求对应。目标对象的类型也是静态的。当业务请求调用应用系统中的某个目标对象时,可以拦截业务请求,然后在调用该目标对象的某个方法之前或之后执行预设在拦截器中的业务逻辑。在使用了拦截器之后,应用系统中的功能模块得到了一定程度的解耦,从而降低了功能模块的耦合度。但是传统的数据拦截方法中的拦截器的声明类型为静态类型,只能拦截声明类型为静态类型的目标对象。从而使得静态类型的目标对象和拦截器只能对应一类业务请求,使得目标对象和拦截器与业务请求必须具有较强的关联,从而导致数据管理系统的扩展性较低。
技术实现思路
基于此,有必要提供一种提高数据管理系统扩展性的数据拦截方法。一种数据拦截方法,包括以下步骤:获取业务请求;根据预设的业务请求与目标对象的映射关系,获取与所述业务请求对应的目标对象,并获取所述目标对象在运行时的实际类型;根据预设的声明类型为动态类型的拦截器与目标对象的映射关系,以及目标对象在运行时的实际类型,得到实际类型与目标对象的实际类型相同的拦截器;根据所述实际类型与目标对象的实际类型相同的拦截器,调用预设的动态链接库中对应的库函数。优选的,所述预设的拦截器与目标对象的映射关系是通过将预设的拦截器和目标对象封装成动态类型的代理对象,然后通过所述代理对象实现映射关系。优选的,所述预设的拦截器与目标对象的映射关系是通过采用元数据标注将预设的拦截器和目标对象封装成动态类型`的代理对象,然后通过所述代理对象实现映射关系。优选的,所述实际类型与目标对象的实际类型相同的拦截器为多个;所述得到实际类型与目标对象的实际类型相同的拦截器之后还包括:将所述多个实际类型与目标对象的实际类型相同的拦截器按预设的顺序排列成拦截器链;所述调用预设的动态链接库中对应的库函数的步骤具体为:依次从所述拦截器链中提取所述拦截器,根据所述实际类型与目标对象的实际类型相同的拦截器调用预设的动态链接库中对应的库函数。优选的,所述得到实际类型与目标对象的实际类型相同的拦截器的步骤具体为:获取所述缓存中的拦截器链,根据预设的拦截器与目标对象的映射关系在所述拦截器链中弹栈提取所述实际类型与目标对象的实际类型相同的拦截器;所述将所述多个实际类型与目标对象的实际类型相同的拦截器按预设的顺序排列成拦截器链之后还包括: 将所述拦截器链以栈的形式缓存。此外,还有必要提供一种提高数据管理系统扩展性的数据拦截装置。一种数据拦截装置,包括以下模块:请求获取模块,用于获取业务请求;目标对象获取模块,用于根据预设的业务请求与目标对象的映射关系,获取与所述业务请求对应的目标对象,并获取所述目标对象在运行时的实际类型;拦截器获取模块,用于根据预设的声明类型为动态类型的拦截器与目标对象的映射关系,以及目标对象在运行时的实际类型,得到实际类型与目标对象的实际类型相同的拦截器;调用模块,用于根据所述实际类型与目标对象的实际类型相同的拦截器,调用预设的动态链接库中对应的库函数。优选的,还包括拦截器预定义模块,用于将预设的拦截器和目标对象封装成动态类型的代理对象,通过代理对象建立目标对象与预设的拦截器的映射关系。优选的,所述拦截器预定义模块还用于通过元数据标注将预设的拦截器和目标对象封装成动态类型的代理对象。优选的,所述实际类型与目标对象的实际类型相同的拦截器为多个;还包括拦截器链组装模块,用于将所述多个实际类型与目标对象的实际类型相同的拦截器按预设的顺序排列成拦截器链;所述调用模块还用于依次从所述拦截器链中提取所述拦截器,根据所述实际类型与目标对象的实际类型相同的拦截器调用预设的动态链接库中对应的库函数。优选的,所述拦截器链组装模块还用于将所述拦截器链以栈的形式缓存;所述拦截器获取模块还用于获取所述缓存中的拦截器链,根据预设的拦截器与目标对象的映射关系在所述拦截器链中弹栈提取所述实际类型与目标对象的实际类型相同的拦截器。上述数据拦截方法和装置,由于预设的拦截器的声明类型为动态类型,因此可以在编译期将其与声明类型同样为动态类型的目标对象进行映射(声明类型为静态类型的目标对象也可以映射)。运行时,先根据业务请求得到目标对象及其实际类型,然后再根据编译期的映射得到实际类型与目标对象的实际类型相同的拦截器,然后调用与拦截器及其实际类型对应的预设的动态链接库中的多个库函数,从而对声明类型为动态类型的目标对象实现了拦截功能。从而削弱了目标对象和拦截器与业务请求的关联程度,从而提高了扩展性。附图说明图1为一实施例中数据拦截方法的步骤流程图2为一实施例中数据拦截装置的功能模块图3为另一实施例中数据拦截装置的功能模块图。具体实施方式如图1所示,其为本专利技术一实施例的数据拦截方法流程图,包括以下步骤:步骤S101,获取业务请求。业务请求可以为包含有请求路径和参数的数据请求,也可以是业务模块之间用于传递信息的消息。业务请求可以由用户的输入发起,也可以由业务模块根据业务逻辑发起。步骤S102,根据预设的业务请求与目标对象的映射关系,获取与业务请求对应的目标对象,并获取目标对象在运行时的实际类型。一实施例中,可以通过配置的方式将业务请求与目标对象映射。对于包含请求路径和参数的业务请求,可以在配置文件中添加请求路径和目标对象的映射关系。对于消息类型的业务请求可以直接将消息的编码在配置文件中与目标对象建立映射。当目标对象的声明类型为动态类型时,目标对象便可映射多种业务请求。例如,不同的查询请求的参数可以是不同的数据类型,该查询请求可以映射一个负责执行查询操作的动态的目标对象。获取与业务请求对应的目标对象的方法可以是根据业务请求获取目标对象的定义,然后根据该定义临时创建目标对象,也可以在对象池中查找是否有缓存的目标对象。目标对象的声明类型可以是动态类型也可以是静态类型。当目标对象的声明类型为静态类型时,目标对象运行时的实际类型即为该预先声明的静态类型。当目标对象的声明类型为动态类型时,可以根据业务请求识别目标对象在运行时的实际类型。例如,当业务请求包含了请求路径和参数时,可以根据该参数的类型(如整形、字符型、自定义类型)来获取实际类型与该参数的类型匹配的目标对象。当业务请求为消息时,可以根据预设的消息和消息处理类(可以配置在配置文件中,也可以用一张哈希表存储)来获取与消息处理类匹配的目标对象。获取方式可以为前述的临时创建或在对象池中查找。步骤S103,根据预设的声明类型为动态类型的拦截器与目标对象的映射关系,以及目标对象在运行时的实际类 型,得到实际类型与目标对象的实际类型相同的拦截器。将拦截器的声 明类型设置为动态类型,是指在编译期没有为该拦截器指明具体的类型,而是将对象类型的识别延后到运行时,通过解释器根据对象本身的属性来识别实际类型。例如,.net架构中,可以将拦截器定义为dynamic类型,java架构中,可以对拦截器定义一个空接口作本文档来自技高网...

【技术保护点】
一种数据拦截方法,包括以下步骤:获取业务请求;根据预设的业务请求与目标对象的映射关系,获取与所述业务请求对应的目标对象,并获取所述目标对象在运行时的实际类型;根据预设的声明类型为动态类型的拦截器与目标对象的映射关系,以及所述目标对象在运行时的实际类型,得到实际类型与所述目标对象的实际类型相同的拦截器;根据所述实际类型与所述目标对象的实际类型相同的拦截器,调用预设的动态链接库中对应的库函数。

【技术特征摘要】
1.一种数据拦截方法,包括以下步骤: 获取业务请求; 根据预设的业务请求与目标对象的映射关系,获取与所述业务请求对应的目标对象,并获取所述目标对象在运行时的实际类型; 根据预设的声明类型为动态类型的拦截器与目标对象的映射关系,以及所述目标对象在运行时的实际类型,得到实际类型与所述目标对象的实际类型相同的拦截器; 根据所述实际类型与所述目标对象的实际类型相同的拦截器,调用预设的动态链接库中对应的库函数。2.根据权利要求1所述的数据拦截方法,其特征在于,所述预设的拦截器与目标对象的映射关系是通过将预设的拦截器和目标对象封装成动态类型的代理对象,然后通过所述代理对象实现映射关系。3.根据权利要求2所述的数据拦截方法,其特征在于,所述预设的拦截器与目标对象的映射关系是通过采用元数据标注将预设的拦截器和目标对象封装成动态类型的代理对象,然后通过所述代理对象实现映射关系。4.根据权利要求1所述的数据拦截方法,其特征在于,所述实际类型与目标对象的实际类型相同的拦截器为多个; 所述得到实际类型与目标对象的实际类型相同的拦截器之后还包括: 将所述多个实际类型与目标对象的实际类型相同的拦截器按预设的顺序排列成拦截器链; 所述调用预设的动态链接库中对应的库函数的步骤具体为: 依次从所述拦截器链中提取所述拦截器,根据所述实际类型与目标对象的实际类型相同的拦截器调用预设的动态链接库中对应的库函数。5.根据权利要求4所述的数据拦截方法,其特征在于,所述得到实际类型与目标对象的实际类型相同的拦截器的步骤具体为: 获取所述缓存中的拦截器链,根据预设的拦截器与目标对象的映射关系在所述拦截器链中弹栈提取所述实际类型与目标对象的实际类型相同的拦截器; 所述将所述多个实际类型与目标对象的实际类型相同的拦截器...

【专利技术属性】
技术研发人员:杨刚
申请(专利权)人:金蝶软件中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1