数据管理装置和数据管理方法转让专利

申请号 : CN201110298279.2

文献号 : CN102323956B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张劲涛郑芸

申请人 : 用友软件股份有限公司

摘要 :

本发明提供一种数据管理装置和一种数据管理方法,其中,数据管理装置包括:项目设置模块,设置多个项目,所述多个项目之间具有继承关系;元数据设置模块,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;业务对象加载模块,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象。通过本发明,保证不同项目的元数据都可以基于最终被继承项目的元数据进行定制,且互不覆盖,也不会对最终被继承项目的元数据造成影响。

权利要求 :

1.一种数据管理装置,其特征在于,包括:

项目设置模块,设置多个项目,所述多个项目之间具有继承关系;

元数据设置模块,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;

业务对象加载模块,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象;

所述项目设置模块还根据所述多个项目之间的继承关系,为所述多个项目设置层次标识;

所述元数据设置模块还将所述多个项目的层次标识,设置在所述多个项目中的业务对象的元数据中;

所述业务对象加载模块根据所述多个项目中的业务对象的元数据中的层次标识,来获取所述需运行项目所继承的所有项目中对应业务对象的元数据;

导出卸载模块,根据所述多个项目中的业务对象的元数据中的层次标识,来实现所述多个项目中的任一业务对象的元数据的导出和/或卸载;

且项目采用分层存储,分层存储的元数据加载具有继承关系。

2.根据权利要求1所述的数据管理装置,其特征在于,所述项目设置模块还按照预设的规则,为所述多个项目设置层次标识。

3.根据权利要求1或2所述的数据管理装置,其特征在于,所述项目设置模块根据所述多个项目的一个或多个属性,设置所述多个项目之间的所述继承关系。

4.一种数据管理方法,其特征在于,包括:

步骤202,设置多个项目,所述多个项目之间具有继承关系;

步骤204,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;

步骤206,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象;

所述步骤202还包括:

根据所述多个项目之间的继承关系,为所述多个项目设置层次标识;

所述步骤204还包括:

将所述多个项目的层次标识,设置在所述多个项目中的业务对象的元数据中;

所述步骤206具体包括:

根据所述多个项目中的业务对象的元数据中的层次标识,来获取所述需运行项目所继承的所有项目中对应业务对象的元数据;

其中,根据所述多个项目中的业务对象的元数据中的层次标识,来实现所述多个项目中的任一业务对象的元数据的导出和/或卸载;

且项目采用分层存储,分层存储的元数据加载具有继承关系。

5.根据权利要求4所述的数据管理方法,其特征在于,所述步骤202具体包括:按照预设的规则,为所述多个项目设置层次标识。

6.根据权利要求4或5所述的数据管理方法,其特征在于,所述步骤202还包括:根据所述多个项目的一个或多个属性,设置所述多个项目之间的所述继承关系。

说明书 :

数据管理装置和数据管理方法

技术领域

[0001] 本发明涉及计算机技术领域,具体而言,涉及一种数据管理装置和一种数据管理方法。

背景技术

[0002] 在现有应用软件中,大型的软件公司通常会按照大多数客户的需求,研发标准通用产品,但是由于行业特性或者用户的个性化定制,往往这些产品上线后,产品中涉及到的业务对象无法满足用户的需求,此时需要对标准产品更改或者新增。
[0003] 最基本的做法,用户将需求反馈回研发人员,由需求进行建模分析,决定是否需要放到通用产品中,然后开发人员修改数据库,修改业务逻辑,通常为了保证程序的稳定性和其他在用客户的习惯,这种变动往往放在大的软件版本中实现,这样这些有定制化需求的客户,往往被告知后续版本才能实现定制,必须升级软件版本,而这些通常是用户不能容忍的。或者有些需求因为没有通用性,根本不予考虑放到标准产品中,导致用户无法使用。
[0004] 现在很多软件公司已经意识到需要快速响应用户的需求,所以在产品架构上利用了一些先进的框架来进行元数据建模,目前很多应用于多技术平台的生成表单的方案,都是针对如何定义元数据和存储元数据本身,认为只要这些产品中使用的业务对象能用元数据描述并展现即可,均没有考虑这些元数据的创建是经历了多个阶段,不同生命周期的开发,没有考虑知识的传承,也即是如果二次开发人员在标准产品上进行了定制开发,比如按照行业特性,增加了商品流通行业的定制属性,商品流通行业的客户就会希望在此基础上再次开发,而不是在标准产品上开发。
[0005] 因此,需要一种新的表单处理方案,支持客户化的开发,能够在不影响标准产品的开发基础上,快速响应用户的个性化要求,同时还要保障客户化开发的延续性。

发明内容

[0006] 本发明所要解决的技术问题在于,提供一种新的表单处理方案,支持客户化的开发,能够在不影响标准产品的开发基础上,快速响应用户的个性化要求,同时还要保障客户化开发的延续性。
[0007] 有鉴于此,本发明提供一种数据管理装置,包括:项目设置模块,设置多个项目,所述多个项目之间具有继承关系;元数据设置模块,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;业务对象加载模块,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象。通过技术方案,保证不同项目的元数据都可以基于最终被继承项目的元数据进行定制,且互不覆盖,也不会对最终被继承项目的元数据造成影响,且变更数据占用存储空间较小,同时能提高元数据的加载效率。
[0008] 在上述技术方案中,优选地,所述项目设置模块还根据所述多个项目之间的继承关系,为所述多个项目设置层次标识;所述元数据设置模块还将所述多个项目的层次标识,设置在所述多个项目中的业务对象的元数据中;所述业务对象加载模块根据所述多个项目中的业务对象的元数据中的层次标识,来获取所述需运行项目所继承的所有项目中对应业务对象的元数据。通过该技术方案,可以保证完整地获取项目的所有相关数据,以进行进一步的使用。
[0009] 在上述技术方案中,优选地,还包括:导出卸载模块,根据所述多个项目中的业务对象的元数据中的层次标识,来实现所述多个项目中的任一业务对象的元数据的导出和/或卸载。通过该技术方案,实现了元数据的导出和卸载,且不对其继承项目的元数据造成影响,不妨碍其继承项目的元数据的使用。
[0010] 在上述技术方案中,优选地,所述项目设置模块还按照预设的规则,为所述多个项目设置层次标识。通过该技术方案,按标准规则设置标识,可以表明对应项目的层次、名称以及其他描述信息等,可以按照指定的标识,轻易找出所需的元数据。
[0011] 在上述技术方案中,优选地,所述项目设置模块根据所述多个项目的一个或多个属性,设置所述多个项目之间的所述继承关系。通过该技术方案,可以合理制定项目之间的继承关系,便于项目对应元数据的设计。
[0012] 本发明还提供一种数据管理方法,包括:步骤202,设置多个项目,所述多个项目之间具有继承关系;步骤204,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;步骤206,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象。通过技术方案,保证不同项目的元数据都可以基于最终被继承项目的元数据进行定制,且互不覆盖,也不会对最终被继承项目的元数据造成影响,且变更数据占用存储空间较小,同时能提高元数据的加载效率。
[0013] 在上述技术方案中,优选地,所述步骤202还包括:根据所述多个项目之间的继承关系,为所述多个项目设置层次标识;所述步骤204还包括:将所述多个项目的层次标识,设置在所述多个项目中的业务对象的元数据中;所述步骤206具体包括:根据所述多个项目中的业务对象的元数据中的层次标识,来获取所述需运行项目所继承的所有项目中对应业务对象的元数据。通过该技术方案,可以保证完整地获取项目的所有相关数据,以进行进一步的使用。
[0014] 在上述技术方案中,优选地,还包括:根据所述多个项目中的业务对象的元数据中的层次标识,来实现所述多个项目中的任一业务对象的元数据的导出和/或卸载。通过该技术方案,实现了元数据的导出和卸载,且不对其继承项目的元数据造成影响,不妨碍其继承项目的元数据的使用。
[0015] 在上述技术方案中,优选地,所述步骤202具体包括:按照预设的规则,为所述多个项目设置层次标识。通过该技术方案,按标准规则设置标识,可以表明对应项目的层次、名称以及其他描述信息等,可以按照指定的标识,轻易找出所需的元数据。
[0016] 在上述技术方案中,优选地,所述步骤202还包括:根据所述多个项目的一个或多个属性,设置所述多个项目之间的所述继承关系。通过该技术方案,可以合理制定项目之间的继承关系,便于项目对应元数据的设计。
[0017] 通过以上技术方案,可以实现一种数据管理装置和一种数据管理方法,支持客户化的开发,能够在不影响标准产品的开发基础上,快速响应用户的个性化要求,同时还要保障客户化开发的延续性。

附图说明

[0018] 图1是根据本发明的一个实施例的数据管理装置的框图;
[0019] 图2是根据本发明的一个实施例的数据管理方法的流程图;
[0020] 图3是现有技术方案的数据管理方案的示意图;
[0021] 图4是根据本发明的一个实施例的数据管理方法的示意图;
[0022] 图5是根据本发明的一个实施例的数据管理方法的流程示意图;
[0023] 图6是根据本发明的一个实施例的数据管理方法的项目展现示意图;
[0024] 图7是根据本发明的一个实施例的数据管理方法的项目编码示意图;
[0025] 图8是根据本发明的一个实施例的数据管理方法的元数据结构图;
[0026] 图9是根据本发明的一个实施例的数据管理方法的元数据编码示意图;
[0027] 图10是根据本发明的一个实施例的数据管理方法的元数据结构示意图。

具体实施方式

[0028] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
[0029] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
[0030] 图1是根据本发明的一个实施例的数据管理装置的框图。
[0031] 如图1所示,本发明提供一种数据管理装置100,包括:项目设置模块102,设置多个项目,所述多个项目之间具有继承关系;元数据设置模块104,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;业务对象加载模块106,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象。通过技术方案,保证不同项目的元数据都可以基于最终被继承项目的元数据进行定制,且互不覆盖,也不会对最终被继承项目的元数据造成影响,且变更数据占用存储空间较小,同时能提高元数据的加载效率。
[0032] 在上述技术方案中,所述项目设置模块102还根据所述多个项目之间的继承关系,为所述多个项目设置层次标识;所述元数据设置模块104还将所述多个项目的层次标识,设置在所述多个项目中的业务对象的元数据中;所述业务对象加载模块106根据所述多个项目中的业务对象的元数据中的层次标识,来获取所述需运行项目所继承的所有项目中对应业务对象的元数据。通过该技术方案,可以保证完整地获取项目的所有相关数据,以进行进一步的使用。
[0033] 在上述技术方案中,还包括:导出卸载模块108,根据所述多个项目中的业务对象的元数据中的层次标识,来实现所述多个项目中的任一业务对象的元数据的导出和/或卸载。通过该技术方案,实现了元数据的导出和卸载,且不对其继承项目的元数据造成影响,不妨碍其继承项目的元数据的使用。
[0034] 在上述技术方案中,所述项目设置模块102还按照预设的规则,为所述多个项目设置层次标识。通过该技术方案,按标准规则设置标识,可以表明对应项目的层次、名称以及其他描述信息等,可以按照指定的标识,轻易找出所需的元数据。
[0035] 在上述技术方案中,所述项目设置模块102根据所述多个项目的一个或多个属性,设置所述多个项目之间的所述继承关系。通过该技术方案,可以合理制定项目之间的继承关系,便于项目对应元数据的设计。
[0036] 图2是根据本发明的一个实施例的数据管理方法的流程图。
[0037] 如图2所示,本发明还提供一种数据管理方法,包括:步骤202,设置多个项目,所述多个项目之间具有继承关系;步骤204,为所述多个项目中的业务对象设置元数据,其中,对于存在直接继承关系的两个项目,继承项目中业务对象的元数据为被继承项目中对应业务对象的变更数据;步骤206,在所述多个项目中存在需运行的项目时,获取需运行项目中的业务对象的元数据,以及所述需运行项目所继承的所有项目中对应业务对象的元数据,以加载所述需运行项目中的业务对象。通过技术方案,保证不同项目的元数据都可以基于最终被继承项目的元数据进行定制,且互不覆盖,也不会对最终被继承项目的元数据造成影响,且变更数据占用存储空间较小,同时能提高元数据的加载效率。
[0038] 在上述技术方案中,所述步骤202还包括:根据所述多个项目之间的继承关系,为所述多个项目设置层次标识;所述步骤204还包括:将所述多个项目的层次标识,设置在所述多个项目中的业务对象的元数据中;所述步骤206具体包括:根据所述多个项目中的业务对象的元数据中的层次标识,来获取所述需运行项目所继承的所有项目中对应业务对象的元数据。通过该技术方案,可以保证完整地获取项目的所有相关数据,以进行进一步的使用。
[0039] 在上述技术方案中,还包括:根据所述多个项目中的业务对象的元数据中的层次标识,来实现所述多个项目中的任一业务对象的元数据的导出和/或卸载。通过该技术方案,实现了元数据的导出和卸载,且不对其继承项目的元数据造成影响,不妨碍其继承项目的元数据的使用。
[0040] 在上述技术方案中,所述步骤202具体包括:按照预设的规则,为所述多个项目设置层次标识。通过该技术方案,按标准规则设置标识,可以表明对应项目的层次、名称以及其他描述信息等,可以按照指定的标识,轻易找出所需的元数据。
[0041] 在上述技术方案中,所述步骤202还包括:根据所述多个项目的一个或多个属性,设置所述多个项目之间的所述继承关系。通过该技术方案,可以合理制定项目之间的继承关系,便于项目对应元数据的设计。
[0042] 为详细解释本发明的技术方案,先对以下名词术语进行解释:
[0043] 元数据:描述数据的数据,在软件产品中,通常指可以通过其值的改变来改变程序的行为的数据。它在程序运行过程中起着以解释方式控制程序行为的作用。在程序的不同位置配置不同值的元数据,就可以得到与原来等价的程序行为。
[0044] 项目号:区分不同开发阶段的唯一标示。可以按照行业特性,客户信息等来区分。
[0045] 本实施例的数据管理方法,处理的是元数据的分层管理,至于元数据本身是如何描述系统行为的,与本实施例的技术方案无关,本实施例中,假定元数据自身的描述信息已经采用其他方案定义和存储了,元数据信息在原有元数据基础上增加项目号,通常的元数据结构描述(ID,元数据信息),改动后的元数据结构:(ID,Code,项目号,元数据信息)。所有元数据描述均增加项目号进行存储,对开发的不同阶段,按照开发的目的,创建不同的项目,项目的层次决定运行过程中业务对象加载的顺序;支持按照项目导出元数据信息;支持按照项目卸载元数据信息。
[0046] 为了简化描述,将软件开发的生命周期缩减为研发、发布和维护三个阶段,一般的软件开发过程的示意图如图3所示,客户化在标准产品的基础上直接修改,元数据不区分行业特性,客户化开发的内容只能特定客户使用,标准产品不能分享客户化的成果。
[0047] 经本实施例中的数据管理方法改进后,软件开发过程的示意图如图4所示,软件开发流程按照产品的不同开发阶段区分出层次,如标准产品在第一级,依次是行开项目、客开项目等等,每个阶段按照不同的项目号保存当前阶段开发的元数据,不同项目的元数据不会相互覆盖,元数据可以共享给标准产品,指导标准产品的完善。
[0048] 利用对所有的元数据增加项目号描述,就可以对元数据分层次加载、输出、卸载、分析、比较等。
[0049] 元数据的管理流程图如图5所示,客户化开发的流程包括:
[0050] 步骤502,创建新项目;
[0051] 步骤504,进行元数据的处理(增/改);
[0052] 步骤506,收集处理完毕的元数据;
[0053] 步骤508,将收集的元数据进行上传。
[0054] 以下对上述流程中的细节进行说明:
[0055] 一、创建新项目:
[0056] 项目之间支持继承关系。
[0057] 为了支持继承关系,项目采用分层存储,可以按照不同的分类方式来创建项目树,标准产品因为开发顺序最早,所以位于项目树的根节点。其余节点由二次开发人员自己进行分类,比如可以按照行业特性,或者按照区域特性,项目的层次关系决定了它的继承关系。
[0058] 项目表的存储方式举例:
[0059]项目编码 项目名称 父项目
10 系统预置项目 null
1012 工业企业 10
101210 YY股份有限公司 1012
[0060] 项目的展现示意图为图6。
[0061] 项目的编码严格按照一定的编码规则来编码,编码规则按位存储,如图7所示。例如,本实施例中的编码规则为222,也就是说项目支持三级,第一级、第二级、第三级的编码长度均为2,编码按照规则来编排,目的是为了运行时提高元数据的加载效率。
[0062] 二、元数据存储:
[0063] 如图8所示,分层存储的元数据必须包括如下特性:
[0064] ID:元数据描述的唯一标识,Guid。
[0065] Code:按照一定编码规则,分段表示元数据层次关系的标示。
[0066] Name:元数据的名称,如采购订单。
[0067] ModifiedOn:元数据修改时间,如2011-08-10 11:37。
[0068] ProjectID:项目编号,如10。
[0069] MetaInfo:元数据信息,可以采用XML存储,也可以拆表进行存储。
[0070] 因为元数据根据项目树的层次具有继承性,所以下级项目树只保存新增和修改的元数据即可,减少了元数据的存储空间。
[0071] 2.1、元数据的编码规则:
[0072] <编码>::={<元数据类型>}.{<业务简称>}.{<自定义名称>}.{<项目号>}.[<继承关系>]
[0073]符号 备注
{} 必选语法项
[0074] 元数据的编码采用多级编码体系,每级编码有特定含义,级与级之间用逗点分隔,这样有利于编程过程中的代码维护,同时还可以提高元数据的复用,相同编码的元数据,可以认为是同一个元数据,在后续升级,对比时,是一个参考指标。
[0075] 元数据的编码规则如图9所示:
[0076] 元数据类型:区分不同的元数据,比如表单业务对象vch,档案业务对象cbo;
[0077] 业务简称:用简称标识一个业务对象,比如SO表示销售订单;
[0078] 自定义名称:可以根据元数据自身的特性,进行编码,保证唯一性,比如表单头为Head,表单体为Body;
[0079] 项目号:项目的编码,比如系统预置项目Sys;
[0080] 继承关系:比如Base,表示这个元数据是同类的基类,其他对象可以继承它的配置信息;
[0081] 等等,这些级次的定义可以按照需要任意定制。
[0082] 2.2、运行时,元数据的加载:
[0083] 分层存储的元数据加载具有继承关系,按照项目树的层次关系体现继承关系。
[0084] 如图10所示,系统预置项目所在层次为1,行开项目层次为2,客开项目为3,则相同元数据编码,修改的元数据以项目层次数最大的为准。
[0085] 假定当前项目的层次为n,则元数据信息(N)=第N层的元数据信息+第N-1层的元数据+...第N-k...+第1层,(0<k<N-1)。
[0086] 下面举例说明如何加载指定项目的元数据信息,为了方便说明情况,简化了配置表的内容:
[0087] 元数据配置表
[0088]编码 名称 项目号
vch.so.head.sys 订单头 10
vch.so.body.gy 订单体 1012
vch.so.bodyChild.yy 订单体下的子订单体 101210
[0089] 假定需要加载YY股份有限公司定制的订单对象,运行过程中,只要执行:
[0090] select*from Entity inner join businessobject bo on bo.id=bo_id[0091] where charindex(Entity.projectid,’101210’)>0
[0092] and BO.code=’vch.so.sys’and charindex(Entity.projectid,’101210’)>0
[0093] 就可以将订单业务对象加载进来,无论这个对象是本项目还是本项目的任何上级项目定义的,均可以加载进来,利用项目树的编码规则,提高了配置信息的读取速度。
[0094] 属性配置表:
[0095]编码 名称 项目号 实体
cNo 表单编号 10 销售订单
cMaker 制单人 10 销售订单
cMaker 销售订单制单人 1012 销售订单
linkTel 联系人电话 101210 销售订单
ModifiedBy 变更人 101210 销售订单
[0096] 如果要获取销售订单对象的所有属性定义,因为允许子项目修改父级项目增加的属性内容,如果被修改,则只需要记录被修改内容,这样可以减少存储的空间,加载时需要剔除重复的字段属性,只保证最下级修改的内容被加载,一种可以参考的实现方式如下:
[0097] WITH fieldattrTMP as*
[0098] (Select Row_NUMBER()OVER(order by code,project)as rownumber,from fieldattr)*
[0099] (selectfrom fieldattrTMP where charindex(projected,’101210’)>0[0100] and entity_id =’DA71659E-AC38-4F0F-BF05-84F3522DC7FE’and rownumber in(select MAX(rownumber)from fieldattrTMP where charindex(projected,’101210’)>0
[0101] and entity_id=’DA71659E-AC38-4F0F-BF05-84F3522DC7FE’group by code))[0102] 三、按项目导出,卸载业务对象。
[0103] 因为元数据都是按照项目存储,所以很容易根据项目号导出或者卸载元数据。利用导出的元数据描述信息,标准产品公司可以收集用户需求和分析行业特性,假定用户在标准版本中发现某个模块没有实现,通过设计器自建了项目进行开发,并将配置数据,导出并上传到软件公司,在使用了一段时间后,软件开发公司在新版本中增加了此模块,客户又可以通过项目卸载自行增加的模块,而采用标准产品提供的功能。标准产品在升级时,通过对比工具,根据项目号和元数据编码进行配置信息的更改,可以保留客户的修改配置。
[0104] 综上所述,通过本发明的技术方案,采用项目树来分层存储元数据,使得合作伙伴或者客户可以在标准产品上定制开发,而不会影响标准产品的元数据定义,这样客户化的内容支持绿色卸载,卸载后,标准产品仍然能正常运行。通过项目树的编码规则,在程序运行过程中,弱化客户化开发和标准开发的元数据差异,提高了元数据的加载效率。通过按项目导入并上传元数据,能方便收集客户化开发的成果,通过分析这些客户定制的内容,为下一版本的研发提供素材。通过对元数据进行编码管理,使得高版本的标准产品对客户化内容支持向下兼容。
[0105] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。