基于条件规则的动态数据结构和关系的构建装置和构建方法

文档序号:6523592阅读:186来源:国知局
基于条件规则的动态数据结构和关系的构建装置和构建方法【专利摘要】本发明提供了一种基于条件规则的动态数据结构和关系的构建装置,包括:动态实体对象的模型构建模块,用于提供能让用户定义实体对象的可变属性和关系的功能,此模块输出实体定义文件;动态实体对象的部署模块,以实体定义文件作为输入,用于将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署;动态实体对象的存取访问模块,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。本发明还提供了一种基于条件规则的动态数据结构和关系的构建方法。通过本发明的技术方案,打破了系统构建中普遍采用的静态数据结构和关系,通过采用动态数据结构和关系,软件开发人员能够解决更复杂的业务问题。【专利说明】基于条件规则的动态数据结构和关系的构建装置和构建方法【
技术领域
】[0001]本发明涉及数据处理【
技术领域
】,具体地,涉及一种基于条件规则的动态数据结构和关系的构建装置和一种基于条件规则的动态数据结构和关系的构建方法。[0002]【
背景技术
】[0003]信息系统构建过程中,数据实体和关系的构建是其中的重要内容之一。在业务场景单一,应用不复杂的情况下,数据的结构和实体之间的关系比较显现,能够很直接的进行定义。但在复杂的应用场景中,数据的结构和关系并不是那么简单和容易固化,表现在以下几个方面:⑴首先,抽象对象在具体应用时往往会有许多派生,这些派生对象在数据层面表现为不同的字段和关系,传统的数据库受表结构固定的限制,不能直接存储这类对象,面向对象数据库技术理论上能解决这一问题,但目前发展并不成熟,而且成本高昂。[0004]⑵其次,对于应用于不同行业,不同业务模式和场景的软件产品,一些数据对象的属性结构以及数据之间的关系并不是固化的,而是基于不同的应用领域、应用模式、场景、上下文条件,具有不同的属性特征和不同的数据关系。例如:不同行业的物料,其属性特征差异很大;不同的采购或销售模式,其单据内容也有很大的差异;很多对象在生命期的不同阶段,也会呈现不同的属性、关系。[0005]当前解决上述问题的思路之一是全面采用面向对象数据库技术,但这类技术目前发展并不成熟,离实用还有很大的距离,而且成本高昂,涉及大量的数据库接口代码编写工作;对于像“基于某个条件,启用某个字段或关系”这类要求灵活的场景也很难应对。[0006]解决上述问题的另一类思路是采用变通办法,一般有两种:⑴将派生链上所有字段存在一张表中,用一个类型标识字段来区分对象类型,比如:销售订单表中用一个字段区分直运销售订单和普通销售订单。[0007]⑵将派生链的每个节点映射成一张数据表,父类对象存储在根表,子类对象同时存储根表和子表。[0008]以上两种变通办法有如下缺陷:(1)单表存储所有对象的字段会导致表结构膨胀,产生大量冗余的空值字段,存储效率低下;⑵应用开发者需要直接访问数据库,并在程序代码中小心处理对象模型与数据模型的映射关系,开发效率低下、容易产生差错。[0009]⑶应用开发者不能直接对现实世界业务对象的非固定属性和关系进行建模,应用开发者需要采用特殊的代码控制逻辑来实现具有动态结构和关系的对象在数据库中的映射与存储,这种固化的硬代码实现方式使得系统很难进行灵活扩展和变化。[0010]因此,需要一种新的基于条件规则的动态数据结构和关系的构建技术,可以在现有的数据结构和关系的构建方式基础上,充分利用单对象数据结构和关系的构建完成多对象数据的结构和关系的构建,建立多对象数据参与的面向动态数据和复杂对象的结构和关系的通用、统一构建思路。[0011]【
发明内容】[0012]本发明正是基于上述问题,提出了一种新的基于条件规则的动态数据结构和关系的构建技术,可以在现有的数据结构和关系的构建方式基础上,充分利用单对象数据结构和关系的构建完成多对象数据的结构和关系的构建,建立多对象数据参与的面向动态数据和复杂对象的结构和关系的通用、统一构建思路。[0013]有鉴于此,本发明提出了一种基于条件规则的动态数据结构和关系的构建装置,包括:动态实体对象的模型构建模块102,用于提供能让用户定义实体对象的可变属性和关系的功能,此模块输出实体定义文件;动态实体对象的部署模块104,以实体定义文件作为输入,用于将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署。在该技术方案中,可以通过配置基于不同场景的条件规则来灵活定义实体数据的结构和关系,能直接对现实世界复杂的业务对象进行动态结构和关系建模,避免手工编写固定代码来弊端。[0014]在上述技术方案中,优选地,所述基于条件规则的动态数据结构和关系的构建装置,还包括:动态实体对象的存取访问服务模块106,用于基于所述动态实体对象的模型构建模块102完成动态实体对象的模型构建、随后基于所述动态实体对象的部署模块104完成动态实体对象的物理部署后,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。在该技术方案中,可以对外提供统一的实体数据访问接口,以实体元数据的形式来承载实体对象数据,避免对强类型对象的依赖,同时又具备实体元数据自描述的特性。[0015]在上述技术方案中,优选地,所述动态实体对象的存取访问服务模块106,具体包括:实体存取访问子过程执行模块,用于接收至少包含应用模式、场景、上下文环境、业务类型的外界参数并输入到元数据快照子过程;元数据快照子过程执行模块,用于基于输入的外界参数,以实体定义文件中的动态属性和关系的规则条件作为判定依据,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据;数据访问子过程执行模块,用于基于实体对象元数据输入,根据映射转换规则,将实体对象元数据映射成数据库SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据写入数据库。[0016]在上述技术方案中,优选地,所述动态实体对象的部署模块104,具体包括:部署服务子过程执行模块,用于接收实体定义文件并输入到DDL映射子过程;DDL映射子过程执行模块,用于基于实体对象模型到数据库物理表结构的映射转换规则,将所述实体定义文件解析成关系数据库的DDL脚本。进一步地,所述DDL映射子过程执行模块将所述实体定义文件解析成关系数据库的DDL脚本的操作中,使用的转换规则具体包括:(I)为实体定义一个主表,建立实体到主表的映射关系;(2)将实体定义文件中的固定属性和固定关系定义转换成主表字段定义,并建立实体属性和关系到数据库表字段的映射关系;(3)将不同条件规则所对应的每一块动态结构定义一个动态结构表,并建立动态结构与动态结构表的映射关系;(4)将动态结构中的动态属性和动态关系定义转换成对应的动态结构表的字段定义,并建立实体的属性和关系到数据库表字段的映射关系。在该技术方案中,可以对外提供动态构建实体对象模型的API,避免对强类型对象的依赖,扩展性强。[0017]在上述技术方案中,优选地,所述动态实体对象的模型构建模块102,具体包括:静态结构定义模块,用于提供能让用户描述实体的固有属性特征的固定属性、以及描述实体与外部实体的固有关系特征的固定关系的实体静态定义功能;动态结构定义模块,用于提供能让用户描述动态结构适用的条件规则、描述实体的动态属性特征的动态属性、以及描述实体与外部实体的动态关系特征的动态关系的实体动态定义功能;条件规则定义模块,能定义实体对象的非固定属性或关系所适用/启用的规则条件;该规则条件能够关联到不同的应用模式、场景、上下文、业务类型;通过为该非固定属性或关系限定条件规则,使得对象在不同的情况下呈现不同的结构和关系。在该技术方案中,可以处理业务对象的属性之间的动态逻辑关系和动态属性问题,能完整解决业务对象的动态属性和关系问题。[0018]根据本发明的又一个方面,还提出了一种基于条件规则的动态数据结构和关系的构建方法,包括:步骤202:提供能让用户构建实体对象的可变属性和关系的建模功能,此建模功能输出实体定义文件;步骤204:基于所述步骤202提供输出的实体定义文件,将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署。在该技术方案中,可以通过配置基于不同场景的条件规则来灵活定义实体数据的结构和关系,能直接对现实世界复杂的业务对象进行动态结构和关系建模,避免手工编写固定代码来弊端。[0019]在上述技术方案中,优选地,在所述步骤204之后,还包括:步骤206:基于所述步骤204构建的动态实体对象的模型,在完成实体对象部署后,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。在该技术方案中,可以对外提供统一的实体数据访问接口,以实体元数据的形式来承载实体对象数据,避免对强类型对象的依赖,同时又具备实体元数据自描述的特性。[0020]在上述技术方案中,优选地,所述步骤206中提供动态实体对象的存取访问服务的操作,具体包括:步骤402:接收至少包含应用模式、场景、上下文环境、业务类型的外界参数并输入到元数据快照子过程;步骤404:元数据快照子过程基于输入的外界参数,以实体定义文件中的动态属性和关系的规则条件作为判定依据,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据快照;步骤406:调用数据访问子过程并将实体对象元数据快照输入,数据访问子过程根据映射转换规贝U,将实体对象元数据快照映射成SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据存入数据库。[0021]在上述技术方案中,优选地,所述步骤204中构建动态实体对象的模型的操作,具体包括:步骤302:通过API的方式向外公开构建所述步骤202提供的实体定义文件的功能,外部应用程序能够在其设计期或运行期使用此API;步骤304:执行204过程。在该技术方案中,可以对外提供动态构建实体对象模型的API,避免对强类型对象的依赖,扩展性强。[0022]在上述技术方案中,优选地,所述步骤202,具体包括:提供能让用户描述实体的固有属性特征的固定属性、以及描述实体与外部实体的固有关系特征的固定关系的实体静态定义文件;提供能让用户描述动态结构适用的条件规则、描述实体的动态属性特征的动态属性、以及描述实体与外部实体的动态关系特征的动态关系的实体动态定义文件;以及,所述步骤202提供的实体定义文件,能定义实体对象的非固定属性或关系、以及该非固定属性或关系所适用/启用的规则条件;该规则条件能够关联到不同的应用模式、场景、上下文、业务类型;通过为该非固定属性或关系限定条件规则,支持派生对象的特性属性。在该技术方案中,可以处理业务对象的属性之间的动态逻辑关系和动态属性问题,能完整解决业务对象的动态属性和关系问题。[0023]通过以上技术方案,可以在现有的数据结构和关系的构建方式基础上,充分利用单对象数据结构和关系的构建完成多对象数据的结构和关系的构建,建立多对象数据参与的面向动态数据和复杂对象的结构和关系的通用、统一构建思路。[0024]【专利附图】【附图说明】[0025]图1示出了根据本发明的实施例的基于条件规则的动态数据结构和关系的构建装置的框图;图2示出了根据本发明的实施例的基于条件规则的动态数据结构和关系的构建方法的流程图;图3示出了根据本发明的实施例的动态实体对象的模型的API构建方法的工作流程图;图4示出了根据本发明的实施例的动态实体对象的存取访问服务方法的工作流程图;图5示出了根据本发明的实施例的动态实体对象的建模及存取访问的整体功能架构图;图6示出了根据本发明的实施例的实体定义文件结构的框图;图7示出了根据本发明的实施例的部署服务子过程的功能结构图;图8示出了根据本发明的实施例的DDL映射子过程的原理示意图;图9示出了根据本发明的实施例的DDL映射子过程中的实体定义文件转换成数据库表结构的原理示意图;图10示出了根据本发明的实施例的动态实体对象的存取访问服务模块106的功能结构图。[0026]图11示出了根据本发明的实施例的元数据快照子过程的功能原理示意图。[0027]图12示出了根据本发明的实施例的数据访问子过程的功能原理示意图。[0028]【具体实施方式】[0029]为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和【具体实施方式】对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。[0030]在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。[0031]图1示出了根据本发明的实施例的基于条件规则的动态数据结构和关系的构建装置的框图。[0032]如图1所示,根据本发明的实施例的基于条件规则的动态数据结构和关系的构建装置100,包括:动态实体对象的模型构建模块102,用于提供能让用户定义实体对象的可变属性和关系的功能,此模块输出实体定义文件;动态实体对象的部署模块104,以实体定义文件作为输入,用于将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署。在该技术方案中,可以通过配置基于不同场景的条件规则来灵活定义实体数据的结构和关系,能直接对现实世界复杂的业务对象进行动态结构和关系建模,避免手工编写固定代码来弊端。[0033]在上述技术方案中,优选地,基于条件规则的动态数据结构和关系的构建装置,还包括:动态实体对象的存取访问服务模块106,用于基于所述动态实体对象的模型构建模块102完成动态实体对象的模型构建、随后基于所述动态实体对象的部署模块104完成动态实体对象的物理部署后,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。在该技术方案中,可以对外提供统一的实体数据访问接口,以实体元数据的形式来承载实体对象数据,避免对强类型对象的依赖,同时又具备实体元数据自描述的特性。[0034]在上述技术方案中,优选地,动态实体对象的存取访问服务模块106,具体包括:实体存取访问子过程执行模块,用于接收至少包含应用模式、场景、上下文环境、业务类型的外界参数并输入到元数据快照子过程;元数据快照子过程执行模块,用于基于输入的外界参数,以实体定义文件中的动态属性和关系的规则条件作为判定依据,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据;数据访问子过程执行模块,用于基于实体对象元数据输入,根据映射转换规则,将实体对象元数据映射成数据库SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据写入数据库。[0035]在上述技术方案中,优选地,动态实体对象的部署模块104,具体包括:部署服务子过程执行模块,用于接收实体定义文件并输入到DDL映射子过程;DDL映射子过程执行模块,用于基于实体对象模型到数据库物理表结构的映射转换规则,将所述实体定义文件解析成关系数据库的DDL脚本。进一步地,所述DDL映射子过程执行模块将所述实体定义文件解析成关系数据库的DDL脚本的操作中,使用的转换规则具体包括:(I)为实体定义一个主表,建立实体到主表的映射关系;(2)将实体定义文件中的固定属性和固定关系定义转换成主表字段定义,并建立实体属性和关系到数据库表字段的映射关系;(3)将不同条件规则所对应的每一块动态结构定义一个动态结构表,并建立动态结构与动态结构表的映射关系;(4)将动态结构中的动态属性和动态关系定义转换成对应的动态结构表的字段定义,并建立实体的属性和关系到数据库表字段的映射关系。在该技术方案中,可以对外提供动态构建实体对象模型的API,避免对强类型对象的依赖,扩展性强。[0036]在上述技术方案中,优选地,动态实体对象的模型构建模块102,具体包括:静态结构定义模块,用于提供能让用户描述实体的固有属性特征的固定属性、以及描述实体与外部实体的固有关系特征的固定关系的实体静态定义功能;动态结构定义模块,用于提供能让用户描述动态结构适用的条件规则、描述实体的动态属性特征的动态属性、以及描述实体与外部实体的动态关系特征的动态关系的实体动态定义功能;条件规则定义模块,能定义实体对象的非固定属性或关系所适用/启用的规则条件;该规则条件能够关联到不同的应用模式、场景、上下文、业务类型;通过为该非固定属性或关系限定条件规则,使得对象在不同的情况下呈现不同的结构和关系。在该技术方案中,可以处理业务对象的属性之间的动态逻辑关系和动态属性问题,能完整解决业务对象的动态属性和关系问题。[0037]图2示出了根据本发明的实施例的基于条件规则的动态数据结构和关系的构建方法的流程图。[0038]如图2所示,根据本发明的实施例的基于条件规则的动态数据结构和关系的构建方法,包括:步骤202:提供能让用户构建实体对象的可变属性和关系的建模功能,此建模功能输出实体定义文件;步骤204:基于所述步骤202提供输出的实体定义文件,将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署。在该技术方案中,可以通过配置基于不同场景的条件规则来灵活定义实体数据的结构和关系,能直接对现实世界复杂的业务对象进行动态结构和关系建模,避免手工编写固定代码来弊端。[0039]在上述技术方案中,优选地,在步骤204之后,还包括:步骤206:基于所述步骤204构建的动态实体对象的模型,在完成实体对象部署后,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。在该技术方案中,可以对外提供统一的实体数据访问接口,以实体元数据的形式来承载实体对象数据,避免对强类型对象的依赖,同时又具备实体元数据自描述的特性。[0040]在上述技术方案中,优选地,如图4所示,步骤206中提供动态实体对象的存取访问服务的操作,具体包括:步骤402:接收至少包含应用模式、场景、上下文环境、业务类型的外界参数并输入到元数据快照子过程;步骤404:元数据快照子过程基于输入的外界参数,以实体定义文件中的动态属性和关系的规则条件作为判定依据,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据快照;步骤406:调用数据访问子过程并将实体对象元数据快照输入,数据访问子过程根据映射转换规则,将实体对象元数据快照映射成SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据存入数据库。[0041]在上述技术方案中,优选地,如图3所示,步骤204中构建动态实体对象的模型的操作,具体包括:步骤302:通过API的方式向外公开构建所述步骤202提供的实体定义文件的功能,外部应用程序能够在其设计期或运行期使用此API;步骤304:执行204过程。在该技术方案中,可以对外提供动态构建实体对象模型的API,避免对强类型对象的依赖,扩展性强。[0042]在上述技术方案中,优选地,步骤202,具体包括:提供能让用户描述实体的固有属性特征的固定属性、以及描述实体与外部实体的固有关系特征的固定关系的实体静态定义文件;提供能让用户描述动态结构适用的条件规则、描述实体的动态属性特征的动态属性、以及描述实体与外部实体的动态关系特征的动态关系的实体动态定义文件;以及,步骤202提供的实体定义文件,能定义实体对象的非固定属性或关系、以及该非固定属性或关系所适用/启用的规则条件;该规则条件能够关联到不同的应用模式、场景、上下文、业务类型;通过为该非固定属性或关系限定条件规则,支持派生对象的特性属性。在该技术方案中,可以处理业务对象的属性之间的动态逻辑关系和动态属性问题,能完整解决业务对象的动态属性和关系问题。[0043]本发明技术方案的主要思路是:⑴系统提供能让用户定义实体对象的可变属性和关系的实体定义文件的建模功能,该实体定义文件能定义实体对象的非固定属性或关系,以及该属性或关系所适用(启用)的规则条件,这些规则条件可以关联到不同的应用模式、场景、上下文、业务类型。通过为属性或关系限定条件规则来实现对象在不同的情况下具备不同的结构和关系。⑵实体定义文件构建完成后,系统的部署服务子过程将实体定义文件解析成关系数据库的DDL脚本,并执行DDL操作,为实体对象建立对应的数据库物理表结构。这样便完成了动态实体对象的模型构建和部署过程。需要指出的是,所述动态实体对象模型的构建和部署功能通过API的方式向外公开,外部应用程序既可以在其设计期使用此API,也可以在其运行期使用此API。⑶系统还提供动态实体对象的存取访问服务,以便在完成实体对象建模和部署后,应用程序能够创建、使用、并存储对象实例。在存取访问服务中,系统接收到应用模式、场景、上下文环境、业务类型等外界参数,并以这些参数作为输入,通过自动计算实体定义文件中的规则条件,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据快照,系统随后基于此元数据快照,根据映射转换规贝1J,将实体对象元数据映射成数据库SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据写入数据库。[0044]例如,本发明技术方案的基本结构原理如图5所示,基本过程原理如图2和实体定义文件结构图6所示,详细实现方案如下:(-)实体定义文件结构,如图6所示。实体定义文件由静态定义部分和动态定义部分组成。[0045]静态定义部分包括:①固定属性定义:描述实体的固有属性特征;每一项固定属性至少包括以下要素:数据类型、数据长度、精度、缺省值、是否可空。[0046]②固定关系定义:描述实体与外部实体的固有关系特征;每一项固定关系至少包括以下要素:关系类型、关联实体名、多重性、关联属性。[0047]动态定义部分包括:①条件规则定义:描述动态结构适用的条件规则;包括:规则上下文、条件表达式。规则上下文:规则上下文可以关联应用程序中的应用模式、场景、上下文、业务类型、对象类型、以及其它可以用来参与动态结构启用条件判定的参数。[0048]规则上下文的一般定义为:〈FactObjects>〈FactObjectId="trade〃Source="系统上下文〃DataType=""Position="行业〃/>〈FactObjectId=^bizType"Source="系统上下文〃DataType=""Position="销售类型〃/>〈/FactObjects>②条件表达式:条件表达式是基于一定的语法规范,以规则上下文参数作为事实数据,并设定相应的判定值,来构成逻辑判断条件。条件表达式判定通过,表明实体对象应该包含此动态结构的属性和关系,否则不包含。[0049]条件表达式的语法为:〈Condition〉<![CDATA[FACT[bizType]=〃直运销售〃ANDFACT[trade]=〃装备制造业〃]]>〈/Condition〉动态属性定义:动态属性定义的结构和组成要素同固定属性定义。[0050]动态关系定义:动态关系定义的结构和组成要素同固定关系定义。[0051]实体定义文件可以通过系统提供的建模功能进行构建,也可通过系统对外提供的构建上述实体定义文件的功能API。外部应用程序既可以在其设计期使用此API,也可以在其运行期使用此API。[0052](二)部署服务子过程部署服务子过程的主要功能是基于实体对象模型到数据库物理表结构的映射转换规贝1J,将实体定义文件转换成关系数据库的DDL脚本,并执行DDL操作,为实体对象建立对应的数据库物理表结构。部署服务子过程包括DDL映射子过程和DDL执行子过程,DDL映射子过程如图8所示。将实体定义文件转换成关系数据库的DDL脚本,转换过程如图9所示。[0053]转换规则为:(I)为实体定义一个主表,建立实体到主表的映射关系;(2)将实体定义文件中的固定属性和固定关系定义转换成主表字段定义,并建立实体属性和关系到数据库表字段的映射关系;(3)将不同条件规则所对应的每一块动态结构定义一个动态结构表,并建立动态结构与动态结构表的映射关系;(4)将动态结构中的动态属性和动态关系定义转换成对应的动态结构表的字段定义,并建立实体的属性和关系到数据库表字段的映射关系。转换规则如图9所示。DDL执行子过程:调用数据库的接口执行DDL脚本。[0054](三)实体存取访问子过程实体对象存取访问子过程的功能包括:接收应用模式、场景、上下文环境、业务类型等外界参数,将这些参数输入元数据快照子过程,元数据快照子过程调用规则判定子过程,规则判定子过程基于输入的参数,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成匹配当前应用场景的实体对象元数据快照,元数据快照子过程的功能原理如图11。[0055]实体元数据快照动态生成过程条件2判定通过的流程如图11所示。条件规则判定原理为:⑴获取定义的上下文参数作为规则判定的事实数据,比如:基于事实对象定义:〈FactObjectId=//trade//Source="系统上下文〃DataType=""Position="行业〃/>获取上下文参数作为该事实对象的值。[0056]⑵将条件表达式中的FACT[事实对象]替换为事实对象的值:<![CDATA[FACT[bizType]=〃直运销售〃ANDFACT[trade]=〃装备制造业〃]]>⑶然后执行逻辑判定。逻辑判定通过,表明实体对象应该包含此动态结构的属性和关系,否则不包含。[0057]元数据快照生成完成后,将元数据快照输入数据访问子过程,数据访问子过程根据映射转换规则,将元数据快照转换成数据库SQL脚本,执行此SQL脚本,向应用程序返回对象数据或将对象数据写入数据库。数据访问子过程的功能原理如图12。[0058]传递和返回的实体对象数据统一采用Hashtable+实体元数据快照的形式来承载。[0059]本发明的技术方案,提供了一种针对现实世界具有不固定属性结构和关系的对象进行数据模型构建、部署、数据统一访问的装置和方法。本发明的技术方案的应用领域及应用方式包括:⑴具有动态数据结构和关系的复杂对象的模型构建、数据存储与访问本发明技术方案提供的对象模型构建功能,实现对现实世界中具有不固定属性结构和关系的复杂业务对象进行建模,并自动映射到数据库物理存储模型。本发明通过采用条件规则,来区分不同应用领域、应用模式、场景、上下文条件下的不同属性和关系。本发明技术方案还提供统一的对象元数据快照、对象存储和访问机制。[0060]⑵具有派生关系的对象的数据模型构建、数据存储与访问本发明技术方案提出的基于各种外界参数的条件规则,动态构建数据属性结构和关系的处理机制,可以用来解决面向对象软件开发中基类对象和派生对象的数据模型构建、数据存储与访问的问题。为目前尚不成熟、成本高昂的面向对象数据库技术提供一种轻量化、低成本的替代方案。[0061]本发明技术方案所支持的上述两类应用,可以免编码进行实现,并且可根据应用的需求变化对数据模型进行灵活动态调整,均不需要涉及直接的数据库结构变更和代码更改。[0062]针对现有技术存在的问题,本发明的技术方案提出了基于各种外界参数的条件规贝U、动态构建数据属性结构和关系的处理机制,可以来解决派生对象存储、基于现实世界实际对象的不固定的属性结构和关系特征构建的问题。本发明的技术方案,主要可以解决如下技术问题:⑴具有动态数据结构和关系的复杂对象的模型构建,构建的过程不涉及用户代码编写,支持模型的调整与变化;⑵具有动态数据结构和关系的对象模型与数据库物理存储模型的自动映射具有动态数据结构和关系的对象的元数据(结构)快照、数据存储与访问。[0063]本发明的技术方案与现有技术相比,至少具有如下优势:⑴与复杂庞大的面向对象数据库技术相比,本发明的技术方案是一种结合了关系数据库和模型驱动中间件技术的轻量级解决方案,使用成本低廉,避免复杂的代码编写,能支持诸如“基于某个条件,启用某个字段或关系”这类灵活度要求很高的需求场景。[0064]⑵与单表存储和多表映射的变通方案相比,本发明的技术方案将实体对象分为固定结构的主表和多个动态结构表来存储,避免了表结构膨胀和空值冗余,提高了存储效率;另一方面,本发明的技术方案可以通过配置基于不同场景的条件规则来灵活定义实体数据的结构和关系,能直接对现实世界复杂的业务对象进行动态结构和关系建模,避免了手工编写固定代码来弊端。[0065]⑶现有部分技术方案仅仅处理了业务对象的属性之间的动态逻辑关系,没有处理更为常用的动态属性问题,本发明的技术方案能完整解决业务对象的动态属性和关系问题。[0066]⑷本发明的技术方案可以对外提供统一的实体数据访问接口,并通过Hashtable+实体元数据的形式来承载实体对象数据,避免了对强类型对象的依赖,同时又具备实体元数据自描述的特性。[0067](5)本发明的技术方案对外提供动态构建实体模型的API,外部应用程序既可以在其设计期使用此API,也可以在其运行期使用此API。[0068]以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有简便的、统一的针对复杂数据结构和关系的构建的解决办法。现有的数据结构和关系的构建无法完成有复杂数据参与的结构和关系的构建过程。因此,本发明提出了一种基于条件规则的动态数据结构和关系的构建装置和一种基于条件规则的动态数据结构和关系的构建方法,可以在现有的数据结构和关系的构建方式基础上,充分利用单对象数据结构和关系的构建完成多对象数据的结构和关系的构建,建立多对象数据参与的面向动态数据和复杂对象的结构和关系的通用、统一构建思路。[0069]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。【权利要求】1.一种基于条件规则的动态数据结构和关系的构建装置,其特征在于,包括:动态实体对象的模型构建模块(102),用于提供能让用户定义实体对象的可变属性和关系的功能,此模块输出实体定义文件,动态实体对象的部署模块(104),以实体定义文件作为输入,用于将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署。2.根据权利要求1所述的基于条件规则的动态数据结构和关系的构建装置,其特征在于,还包括:动态实体对象的存取访问服务模块106,用于基于所述动态实体对象的模型构建模块(102)完成动态实体对象的模型构建、随后基于所述动态实体对象的部署模块104完成动态实体对象的物理部署后,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。3.根据权利要求2所述的基于条件规则的动态数据结构和关系的构建装置,其特征在于,所述动态实体对象的存取访问服务模块(106),具体包括:实体存取访问子过程执行模块,用于接收至少包含应用模式、场景、上下文环境、业务类型的外界参数并输入到元数据快照子过程;元数据快照子过程执行模块,用于基于输入的外界参数,以实体定义文件中的动态属性和关系的规则条件作为判定依据,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据;数据访问子过程执行模块,用于基于实体对象元数据输入,根据映射转换规则,将实体对象元数据映射成数据库SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据写入数据库。`4.根据权利要求1至3中任一`项所述的基于条件规则的动态数据结构和关系的构建装置,其特征在于,所述动态实体对象的部署模块(104),具体包括:部署服务子过程执行模块,用于接收实体定义文件并输入到DDL映射子过程;DDL映射子过程执行模块,用于基于实体对象模型到数据库物理表结构的转换规则,将所述实体定义文件解析成关系数据库的DDL脚本;进一步地,所述DDL映射子过程执行模块将所述实体定义文件解析成关系数据库的DDL脚本的操作中,使用的转换规则具体包括:(O为实体定义一个主表,建立实体到主表的映射关系;(2)将实体定义文件中的固定属性和固定关系定义转换成主表字段定义,并建立实体属性和关系到数据库表字段的映射关系;(3)将不同条件规则所对应的每一块动态结构定义一个动态结构表,并建立动态结构与动态结构表的映射关系;(4)将动态结构中的动态属性和动态关系定义转换成对应的动态结构表的字段定义,并建立实体的属性和关系到数据库表字段的映射关系。5.根据权利要求1至3中任一项所述的基于条件规则的动态数据结构和关系的构建装置,其特征在于,所述动态实体对象的模型构建模块(102),具体包括:静态结构定义模块,用于提供能让用户定义实体的固有属性特征的固定属性、以及定义实体与外部实体的固有关系特征的固定关系的实体静态定义功能;动态结构定义模块,用于提供能让用户描述定义动态结构适用的条件规则、描述定义实体的动态属性特征的动态属性、以及描述定义实体与外部实体的动态关系特征的动态关系的实体动态定义功能;条件规则定义模块,用于定义实体对象的非固定属性或关系所适用/启用的规则条件;该规则条件能够关联到不同的应用模式、场景、上下文、业务类型;通过为该非固定属性或关系限定条件规则,使得对象在不同的情况下呈现不同的结构和关系。6.一种基于条件规则的动态数据结构和关系的构建方法,其特征在于,包括:步骤202:提供能让用户构建实体对象的可变属性和关系的建模功能,此建模功能输出实体定义文件;步骤204:基于所述步骤202提供输出的实体定义文件,将实体对象模型映射成数据库物理存储结构,实现对动态实体对象的物理部署。7.根据权利要求6所述的基于条件规则的动态数据结构和关系的构建方法,其特征在于,在所述步骤204之后,还包括:步骤206:基于所述步骤204构建的动态实体对象的模型,在完成实体对象部署后,提供动态实体对象的存取访问服务,使用户应用程序能创建、使用、并存储对象实例。8.根据权利要求7所述的基于条件规则的动态数据结构和关系的构建方法,其特征在于,所述步骤206中提供动态实体对象的存取访问服务的操作,具体包括:步骤402:接收至少包含应用模式、场景、上下文环境、业务类型的外界参数并输入到元数据快照子过程;步骤404:元数据快照子过程基于输入的外界参数,以实体定义文件中的动态属性和关系的规则条件作为判定依据,自动计算规则条件表达式,找出所有符合条件的属性和关系,形成精确匹配当前应用场景的实体对象元数据快照;步骤406:调用数据访问子过程并将实体对象元数据快照输入,数据访问子过程根据映射转换规则,将实体对象元数据快照映射成SQL脚本,执行SQL脚本,向应用程序返回对象数据或将对象数据存入数据库。9.根据权利要求6至8中任一项所述的基于条件规则的动态数据结构和关系的构建方法,其特征在于,所述步骤204中构建动态实体对象的模型的操作,具体包括:步骤302:通过API的方式向外公开构建所述步骤202提供的实体定义文件的功能,外部应用程序能够在其设计期或运行期使用此API;步骤304:执行步骤204过程。10.根据权利要求6至8中任一项所述的基于条件规则的动态数据结构和关系的构建方法,其特征在于,所述步骤202,具体包括:提供能让用户描述实体的固有属性特征的固定属性、以及描述实体与外部实体的固有关系特征的固定关系的实体静态定义文件;提供能让用户描述动态结构适用的条件规则、描述实体的动态属性特征的动态属性、以及描述实体与外部实体的动态关系特征的动态关系的实体动态定义文件;以及,所述步骤202提供的实体定义文件,能定义实体对象的非固定属性或关系、以及该非固定属性或关系所适用/启用的规则条件;该规则条件能够关联到不同的应用模式、场景、上下文、业务类型;通过为该非固定属性或关系限定条件规则,支持派生对象的特性属性。【文档编号】G06F17/30GK103714129SQ201310683330【公开日】2014年4月9日申请日期:2013年12月12日优先权日:2013年12月12日【发明者】李静,罗涛申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1