CN109947418A - 一种数据模型转换方法以及装置 - Google Patents
一种数据模型转换方法以及装置 Download PDFInfo
- Publication number
- CN109947418A CN109947418A CN201910238055.9A CN201910238055A CN109947418A CN 109947418 A CN109947418 A CN 109947418A CN 201910238055 A CN201910238055 A CN 201910238055A CN 109947418 A CN109947418 A CN 109947418A
- Authority
- CN
- China
- Prior art keywords
- model
- conversion
- object module
- source model
- source
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种数据模型的转换方法以及装置,涉及数据处理领域。该方法通过建立模型转换关系,包括源模型标记、目标模型标记以及所述源模型和目标模型进行转换的javascript脚本分组,所述javascript脚本分组包括转换参数;获取源模型的对象实例,并对所述对象实例进行预处理;根据所述源模型标记和目标模型标记,查询对应的脚本分组;遍历所述脚本分组,从所述源模型的对象实例中获取转换参数的参数值,并执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换。该方法能显著提高转换的灵活性,极大的减少后期系统维护的成本,特别是对于对类的属性比较多的情况,尤为明显。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种数据模型转换方法以及装置。
背景技术
目前不同软件系统之间需要进行数据通信和数据交换的场景很普遍,例如:在医疗领域,不同的心电图机所使用的软件系统通常不同,那么彼此之间的数据标准也不相同。但是,为了实现医疗数据的共享,通常希望对于不同软件系统输出的数据形式,通过一定的方式转换成统一的数据标准格式,以便于统一的数据管理和分析。
但是目前对于这种数据模型之间的转换往往通过同时建立源模型和目标模型的方法,往往存在不够灵活,效率低且开发量大的问题。很多的软件系统中所采用的数据模型为面向对象数据模型,该模型是捕获在面向对象程序设计中所支持的对象语义的逻辑数据模型,它是持久的和共享的对象集合。面向对象数据模型把实体表示为类,一个类描述了对象属性和实体行为。如,CUSTOMER类不仅含有客户的属性(比如CUST.ID、CUST.NAME和CUST.ADDRESS等),还包含模仿客户行为(如修改订单)的过程,本发明中的转换只针对类的属性。
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,它被广泛用于Web应用开发,常用来为网页添加各式各样的动态效果,为用户提供更流畅美观的浏览效果。JavaScript是一种解释性脚本语言,运行时将其一条条的翻译成机器可识别的指令,并按程序顺序执行。其中翻译成机器可识别的指令的程序称为解释器,javascript的解释器被称为JavaScript引擎。
而各语言均有javascript引擎的包装或者标准实现,基于此,本发明将为解决不同软件系统之间数据转换提供一种更为灵活且效率高的方法。
发明内容
为了克服如上所述的技术问题,本发明提出一种数据模型转换方法以及装置。该方法能显著提高转换的灵活性,极大的减少后期系统维护的成本,特别是对于对类的属性比较多的情况,尤为明显。
本发明所采用的具体技术方案如下:
第一方面,本发明提出一种数据模型转换方法,包括:
S1,建立模型转换关系,包括源模型标记、目标模型标记以及所述源模型和目标模型进行转换的javascript脚本分组,所述javascript脚本分组包括转换参数;
S2,获取源模型的对象实例,并对所述对象实例进行预处理;
S3,根据所述源模型标记和目标模型标记,查询对应的脚本分组;
S4,遍历所述脚本分组,从所述源模型的对象实例中获取转换参数的参数值,并执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换。
进一步地,所述S1包括:
源模型标记为源模型的类名,所述目标模型标记为目标模型的类名,所述源模型和目标模型进行转换的脚本分组包括一条或多条脚本记录,所述脚本记录包括分组id、目标模型的属性标识以及用于执行模型转换的javascript函数。
进一步地,所述目标模型的属性标识为目标模型的属性名或能够唯一关联至目标模型的标识。
进一步地,所述用于执行模型转换的javascript函数的参数为源模型的属性标识。
进一步地,所述源模型的属性标识为源模型的属性名或能够唯一关联至源模型的标识。
进一步地,所述S2包括:
接收源模型的对象实例数据,将源模型属性及属性值通过反射方法组织成字典集合对象或JSON对象。
进一步地,所述S3包括:
根据所述源模型标记和目标模型标记查询模型转换关系中的所述源模型和目标模型进行转换的脚本分组。
进一步地,所述S4包括:
S41,分析所述javascript脚本分组所包含的转换参数;
S42,从所述源模型的对象实例中获取转换参数的参数值;
S43,使用javascript引擎执行javascript代码,获取转换后的结果;
S44,将所述转换后的结果对所述目标模型进行赋值,完成模型转换。
第二方面,本发明提出一种数据模型转换装置,包括处理器和存储器,所述存储器存储有至少一段程序,所述程序由所述处理器执行以实现如第一方面任一所述的数据模型转换方法。
第三方面,本发明提出一种计算机可读存储介质,所述存储介质中存储有至少一段程序,所述至少一段程序运行时执行如第一方面任一所述的数据模型转换方法。
本发明提供的技术方案带来的有益效果是:
本发明通过建立模型转换关系,包括源模型标记、目标模型标记以及所述源模型和目标模型进行转换的javascript脚本分组,所述javascript脚本分组包括转换参数;获取源模型的对象实例,并对所述对象实例进行预处理;根据所述源模型标记和目标模型标记,查询对应的脚本分组;遍历所述脚本分组,从所述源模型的对象实例中获取转换参数的参数值,并执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换。该方法能显著提高转换的灵活性,极大的减少后期系统维护的成本,特别是对于对类的属性比较多的情况,尤为明显。
附图说明
为了更清楚地说明本发明实施的技术方案,下面将对实施描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示为本发明一种数据模型转换方法示意图;
图2所示为一种通过执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换的示意图;
图3示出了本发明实施例所涉及的一种数据模型转换的计算机装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方案作进一步地详细描述。
如图1所示为本发明一种数据模型转换方法示意图,该图示出了该方法的具体实施步骤,包括:
在步骤101中,建立模型转换关系,包括源模型标记、目标模型标记以及所述源模型和目标模型进行转换的javascript脚本分组,所述javascript脚本分组包括转换参数;
需要说明的是,本步骤中的源模型是指需要被转换的模型,为目标模型为源模型被转换后的模型,通常是根据具体场景的需要而预先设计好的数据模型。
对于一组源模型和目标模型而言,需要预先建立对应的模型转换关系,这样,当接收到源模型的实例对象时,通过预先建立的模型转换关系,便可以实现从源模型到目标模型的转换工作。
在一种可能的实现中,源模型标记为源模型的类名,所述目标模型标记为目标模型的类名,所述源模型和目标模型进行转换的脚本分组包括一条或多条脚本记录,所述脚本记录包括分组id、目标模型的属性标识以及用于执行模型转换的javascript函数。可选的,所述目标模型的属性标识为目标模型的属性名或能够唯一关联至目标模型的标识。可选的,所述用于执行模型转换的javascript函数的参数为源模型的属性标识,可选的,所述源模型的属性标识为源模型的属性名或能够唯一关联至源模型的标识。
在步骤102中,获取源模型的对象实例,并对所述对象实例进行预处理;
在一种可能的实现中,接收源模型的对象实例数据,将源模型属性及属性值通过反射方法组织成字典集合对象或JSON对象。
在步骤103中,根据所述源模型标记和目标模型标记,查询对应的脚本分组;
本步骤中的源模型标记和目标模型标记,可选的,为源模型和目标模型的类名,可以通过用反射的方法从程序中直接获得其类型的标识内容。在一种可能的实现中,根据所述源模型标记和目标模型标记,在步骤101中所建立的模型转换关系中,查询模型转换关系中的所述源模型和目标模型进行转换的脚本分组。
在步骤104中,遍历所述脚本分组,从所述源模型的对象实例中获取转换参数的参数值,并执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换。
在可能的实际操作中,这里的脚本分组包括一条或多条的脚本记录,而每一条脚本记录对应的是,对于目标模型中其中一个属性的转换脚本。例如,对于分组A中的一条脚本记录,包括:
分组A的id,Appellation(目标模型的属性或能够关联至目标模型的属性)和function_fun(Name,Gender){if(Gender==’女’){return Name+’先生’}else{returnName+“女士”};};建立脚本记录需要根据模型转换关系,”Appellation”作为脚本在所归属分组下的标记,必须是转换的目标模型的属性或者能够精确关联到目标模型的属性;function_fun(Name,Gender){if(Gender==’女’){return Name+’先生’}else{returnName+“女士”};}作为固定格式的javascript脚本内容,其参数Name和Gender是源模型的属性或者能够精确关联到源模型的属性。
在一种可能的实现中,如图2所示为一种通过执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换的示意图,包括:
在步骤201中,分析所述javascript脚本分组所包含的转换参数;
通过遍历所述javascript脚本分组中的一条或多条脚本记录,并解析出脚本函数中的入参,这些入参对应的是源模型的属性名。
在步骤202中,从所述源模型的对象实例中获取转换参数的参数值;
所接收到的源模型的实例对象的对应属性值作为脚本执行时的转换参数值。
在步骤203中,使用javascript引擎执行javascript代码,获取转换后的结果;
由于各语言均有javascript引擎的包装或者标准实现,因此可以很方便地使用javascript引擎执行javascript代码。
在步骤204中,将所述转换后的结果对所述目标模型进行赋值,完成模型转换。
在一种可能的实现中,以脚本记录描述中脚本在所归属分组下的标记作为Key,以转换后计算得到的新值作为Value,组成可以和目标模型匹配的字典集合,然后以目标字典集合为数据,通过反射的方式为目标模型类型的对象赋值,完成最终的模型转换。
本实施例通过建立模型转换关系,包括源模型标记、目标模型标记以及所述源模型和目标模型进行转换的javascript脚本分组,所述javascript脚本分组包括转换参数;获取源模型的对象实例,并对所述对象实例进行预处理;根据所述源模型标记和目标模型标记,查询对应的脚本分组;遍历所述脚本分组,从所述源模型的对象实例中获取转换参数的参数值,并执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换。该方法能显著提高转换的灵活性,极大的减少后期系统维护的成本,特别是对于对类的属性比较多的情况,尤为明显。
图3示出了本发明实施例所涉及的一种数据模型转换的计算机装置的结构示意图,该装置主要包括处理器301、存储器302和总线303,所述存储器存储有至少一段程序,所述程序由所述处理器执行以实现如上述实施例所述的数据模型转换方法。
处理器301包括一个或一个以上处理核心,处理器301通过总线303与存储器302相连,存储器302用于存储程序指令,处理器301执行存储器302中的程序指令时实现上述方法实施例提供的数据模型转换方法。
可选的,存储器302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随时存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本发明还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现上述方法实施例提供的数据模型转换方法。
可选的,本发明还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的数据模型转换方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储与一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用于以限制发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据模型转换方法,其特征在于,包括:
S1,建立模型转换关系,包括源模型标记、目标模型标记以及所述源模型和目标模型进行转换的javascript脚本分组,所述javascript脚本分组包括转换参数;
S2,获取源模型的对象实例,并对所述对象实例进行预处理;
S3,根据所述源模型标记和目标模型标记,查询对应的脚本分组;
S4,遍历所述脚本分组,从所述源模型的对象实例中获取转换参数的参数值,并执行所述脚本分组,将返回结果对所述目标模型进行赋值,完成模型转换。
2.根据权利要求1所述的数据模型转换方法,其特征在于,所述S1包括:
源模型标记为源模型的类名,所述目标模型标记为目标模型的类名,所述源模型和目标模型进行转换的脚本分组包括一条或多条脚本记录,所述脚本记录包括分组id、目标模型的属性标识以及用于执行模型转换的javascript函数。
3.根据权利要求2所述的数据模型转换方法,其特征在于,所述目标模型的属性标识为目标模型的属性名或能够唯一关联至目标模型的标识。
4.根据权利要求3所述的数据模型转换方法,其特征在于,所述用于执行模型转换的javascript函数的参数为源模型的属性标识。
5.根据权利要求4所述的数据模型转换方法,其特征在于,所述源模型的属性标识为源模型的属性名或能够唯一关联至源模型的标识。
6.根据权利要求1所述的数据模型转换方法,其特征在于,所述S2包括:
接收源模型的对象实例数据,将源模型属性及属性值通过反射方法组织成字典集合对象或JSON对象。
7.根据权利要求1所述的数据模型转换方法,其特征在于,所述S3包括:
根据所述源模型标记和目标模型标记查询模型转换关系中的所述源模型和目标模型进行转换的脚本分组。
8.根据权利要求1所述的数据模型转换方法,其特征在于,所述S4包括:
S41,分析所述javascript脚本分组所包含的转换参数;
S42,从所述源模型的对象实例中获取转换参数的参数值;
S43,使用javascript引擎执行javascript代码,获取转换后的结果;
S44,将所述转换后的结果对所述目标模型进行赋值,完成模型转换。
9.一种数据模型转换装置,其特征在于,包括处理器和存储器,所述存储器存储有至少一段程序,所述程序由所述处理器执行以实现如权利要求1至8任一所述的数据模型转换方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序运行时执行如权利要求1至8任一所述的数据模型转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910238055.9A CN109947418A (zh) | 2019-03-27 | 2019-03-27 | 一种数据模型转换方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910238055.9A CN109947418A (zh) | 2019-03-27 | 2019-03-27 | 一种数据模型转换方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947418A true CN109947418A (zh) | 2019-06-28 |
Family
ID=67012055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910238055.9A Pending CN109947418A (zh) | 2019-03-27 | 2019-03-27 | 一种数据模型转换方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947418A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112818129A (zh) * | 2021-01-22 | 2021-05-18 | 杭州绿湾网络科技有限公司 | 图谱建模系统及其方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521380A (zh) * | 2011-12-20 | 2012-06-27 | 浙江省电力公司 | 一种电网cim模型及svg图形数据导入的方法 |
CN103279542A (zh) * | 2013-06-05 | 2013-09-04 | 中国电子科技集团公司第十五研究所 | 数据导入处理方法及数据处理装置 |
CN103294462A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 对象映射处理方法、映射处理器和对象映射处理系统 |
US8826224B2 (en) * | 2007-04-18 | 2014-09-02 | International Business Machines Corporation | Apparatus and method for supporting model-driven development |
CN106933554A (zh) * | 2015-12-30 | 2017-07-07 | 北京国双科技有限公司 | 类转换方法和装置 |
-
2019
- 2019-03-27 CN CN201910238055.9A patent/CN109947418A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8826224B2 (en) * | 2007-04-18 | 2014-09-02 | International Business Machines Corporation | Apparatus and method for supporting model-driven development |
CN102521380A (zh) * | 2011-12-20 | 2012-06-27 | 浙江省电力公司 | 一种电网cim模型及svg图形数据导入的方法 |
CN103294462A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 对象映射处理方法、映射处理器和对象映射处理系统 |
CN103279542A (zh) * | 2013-06-05 | 2013-09-04 | 中国电子科技集团公司第十五研究所 | 数据导入处理方法及数据处理装置 |
CN106933554A (zh) * | 2015-12-30 | 2017-07-07 | 北京国双科技有限公司 | 类转换方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112818129A (zh) * | 2021-01-22 | 2021-05-18 | 杭州绿湾网络科技有限公司 | 图谱建模系统及其方法 |
CN112818129B (zh) * | 2021-01-22 | 2022-08-09 | 杭州绿湾网络科技有限公司 | 图谱建模系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10901709B2 (en) | Partitioning based migration of systems to container and microservice based platforms | |
CN105094754B (zh) | 基于标签的程序开发方法、页面请求响应方法及其装置 | |
CN106649212A (zh) | 一种业务数据处理的方法及装置 | |
Schäfer et al. | Autosubst: Reasoning with de Bruijn terms and parallel substitutions | |
CN109684607B (zh) | Json数据解析方法、装置、计算机设备和存储介质 | |
CN106936871A (zh) | 界面展示数据的方法及装置 | |
CN111813963A (zh) | 知识图谱构建方法、装置、电子设备及存储介质 | |
CN111752571A (zh) | 程序升级方法、装置、设备及存储介质 | |
KR20150143473A (ko) | 재계산 사용자 인터페이스 내의 신호 캡처 컨트롤 | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
CN103136107A (zh) | 一种嵌入式程序动态分配内存的变量调试方法 | |
US20120036089A1 (en) | System and Method for Dynamic, Real-Time Data Management and Processing to Facilitate Business Decisions | |
CN110795697B (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN109299032B (zh) | 数据分析方法、电子设备及计算机存储介质 | |
CN104168250A (zh) | 基于cgi框架的业务流程控制方法及装置 | |
CN110009299A (zh) | 业务数据处理的方法、装置、设备及存储介质 | |
CN112463986A (zh) | 信息存储的方法及装置 | |
US20120005655A1 (en) | Method and system for creating owl ontology from java | |
CN110275703A (zh) | 键值对数据的赋值方法、装置、计算机设备和存储介质 | |
CN109947418A (zh) | 一种数据模型转换方法以及装置 | |
US8935657B2 (en) | Model-to-model transformation by kind | |
CN110109675A (zh) | 智能合约处理方法、装置以及计算机可读存储介质 | |
US20210224046A1 (en) | Workflow engine for generating code based on visualizations | |
CN113721898A (zh) | 机器学习模型部署方法、系统、计算机设备及存储介质 | |
Sredojević et al. | ALAS: agent-oriented domain-specific language for the development of intelligent distributed non-axiomatic reasoning agents |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190628 |