CN105224293A - 目标对象的生成方法及服务器 - Google Patents
目标对象的生成方法及服务器 Download PDFInfo
- Publication number
- CN105224293A CN105224293A CN201410238702.3A CN201410238702A CN105224293A CN 105224293 A CN105224293 A CN 105224293A CN 201410238702 A CN201410238702 A CN 201410238702A CN 105224293 A CN105224293 A CN 105224293A
- Authority
- CN
- China
- Prior art keywords
- destination object
- root node
- destination
- maps
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种目标对象的生成方法及服务器,包括:将预先配置好的配置文件读入内存,存储为对应的对象映射根节点;接收源对象,从对象映射根节点中选择与源对象相关联的目标对象映射根节点,目标对象映射根节点中包括转化条件和目标对象模型;根据目标对象模型,对目标对象映射根节点分组;对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。由此,可以解决当源对象到目标对象的转化为复杂的多对多的关系时,存在的编码复杂,进而耗费大量人力和计算机资源的问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种目标对象的生成方法及服务器。
背景技术
随着电子商务技术的发展,随之出现的业务***越来越多,而且用户往往需要通过这些业务***来完成某种操作,完成一个操作有时需要借助共享***来实现。共享***会接收源业务***发送的自定义的对象,即源对象,而目标业务***也会从该共享***中获取自己需要的信息,然而目标业务***并不希望理解越来越多的源业务***自定义的源对象,所以就需要共享***将上述源对象转化成标准的目标对象,从而使得目标业务***能够获取到自己需要的信息。由此,目标业务***只需要理解标准的目标对象即可,不再需要费力去理解各种源业务***自定义的各种源对象。
例如,用户通过源业务***例如商品中心购买自己需要的商品,而在购买的过程中,用户很有可能会选择支付宝这样的共享***来完成付款,在这个过程中,用户首先通过商品中心向共享***提交所定义的淘宝订单对象,共享***将商品中心所定义的淘宝订单对象转化成标准的订单,从而验证用户合法性的目标业务***例如认证中心就可以从标准的订单中读取用户信息,从而判断上述用户的合法性。
图1为共享***与各业务***之间的消息交互示意图,其中,共享***主要包括消息中心和实时数据平台(zdatabus)两个部分,其具体处理过程如下:
1)消息中心负责收集各个源业务***(数据生产方)发出来的源对象,并推送给实时数据平台;
2)实时数据平台在收到源对象后,通过转化工具进行源对象的转化处理,生成标准的目标对象,并将生成的标准的目标对象,实时推送给有订阅的目标业务***(数据消费方)。
然而在进行zdatabus的建设过程中碰到的最大的问题就是,由于源对象种类繁多,按照一般的做法,每一种对象都需要通过编写java代码,转成标准的目标对象,工作量大,需求复杂,不符合共享***的标准。
现有技术中,转化工具预先建立数据库表,然后通过该数据库表描述源对象的属性和目标对象模型的属性之间的对应关系,当需要将源对象转化为目标对象时,转化工具通过读取数据库表来获取源对象的属性和目标对象模型的属性之间的对应关系,并根据该对应关系,为目标对象模型的属性赋值,从而生成目标对象。然而数据库表只能描述简单的属性间对应关系,而无法描述更复杂的逻辑,例如条件判断、对象转化的触发条件等;另外,很多对象的转化是复杂的多对多的关系,如果想要通过数据库表来完整描述各种属性的对应关系,表的定义会非常复杂,以致难以理解,反而给开发带来难度;另外,数据库表中属性的维护也比较困难。
另一种现有技术中,脚本引擎把源对象的属性和目标对象模型的属性之间的对应关系放在具有自身语法体系的脚本中,在运行时读取和解析脚本,并执行脚本得到结果,根据得到的结果,为目标对象模型的属性赋值,从而生成目标对象。但是,通过编写脚本的方法,依然是传统意义上的代码开发,差别只是换了一种语言,并不能有效降低程序员的开发工作。而且,写在脚本中的源对象的属性和目标对象模型的属性之间的对应关系仍然是非结构化的,无法体现对象之间的继承关系,在脚本运行出现问题时,不能快速的定位问题。
由上述可知,现有技术中在将源对象转化为目标对象过程中,当源对象到目标对象的转化为复杂的多对多的关系时,存在编码复杂,进而耗费大量人力和计算机资源的问题。
发明内容
本申请实施例提供了一种目标对象的生成方法及服务器,以解决当源对象到目标对象的转化为复杂的多对多的关系时,存在的编码复杂,进而耗费大量人力和计算机资源的问题。
第一方面,提供了一种目标对象的生成方法,该方法包括:
将预先配置好的配置文件读入内存,存储为对应的对象映射根节点;
接收源对象,从所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点,所述目标对象映射根节点中包括转化条件和目标对象模型;
根据所述目标对象模型,对所述目标对象映射根节点分组;
对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。
第二方面,提供了一种服务器,该服务器包括:存储单元、接收单元、分组单元和生成单元;
所述存储单元,用于将预先配置好的配置文件读入内存,存储为对应的对象映射根节点;
所述接收单元,用于接收源对象,从所述存储单元存储的所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点,所述目标对象映射根节点中包括转化条件和目标对象模型;
所述分组单元,用于根据所述目标对象模型,对所述目标对象映射根节点分组;
所述生成单元,用于对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。
本申请实施例提供的目标对象的生成方法及服务器,通过编写配置文件的方法来描述复杂的目标对象模型的属性的赋值方式,在转化的过程中,在接收到源对象之后,通过读取并解析与该源对象关联的配置文件,为目标对象模型的属性赋值,从而生成目标对象。由于编写配置文件比编写代码要简单很多,因此,可以有效降低编程复杂难度,从而缩短开发时间,并在运行时达到节省计算机资源的目的。
附图说明
图1为共享***与各业务***之间的消息交互示意图;
图2为本申请实施例一提供的目标对象的生成方法流程图;
图3为目标对象的生成方法示意图;
图4示出了目标对象映射根节点的排序结果图;
图5为本申请实施例二提供的目标对象的生成方法流程图;
图6为本申请实施例三提供的服务器的示意图。
具体实施方式
下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。
本申请实施例提供的目标对象的生成方法及服务器,通过编写配置文件的方法来描述复杂的目标对象模型的属性的赋值方式,在转化的过程中,在接收到源对象之后,通过读取并解析与该源对象关联的配置文件,为目标对象模型的属性赋值,从而生成目标对象。由于编写配置文件比编写代码要简单很多,因此,可以有效降低编程复杂难度,从而缩短开发时间,并在运行时达到节省计算机资源的目的。
本申请实施例提供的目标对象的生成方法可以应用于如下场景中:用户通过源业务***例如商品中心购买自己需要的商品,而在购买的过程中,用户很有可能会选择支付宝这样的共享***来完成付款,在这个过程中,用户首先通过商品中心向共享***提交所定义的淘宝订单对象(即源对象),共享***将商品中心所定义的淘宝订单对象转化成标准的订单对象(即目标对象),从而验证用户合法性的目标业务***例如认证中心就可以从标准的订单(目标对象)中读取用户信息,从而判断上述用户的合法性。
图2为本申请实施例一提供的目标对象的生成方法流程图。所述方法的执行主体可以为具有处理能力的设备:服务器或者***或者装置,例如图1中的实时数据平台,如图2所示,所述方法具体包括:
步骤210,将预先配置好的配置文件读入内存,存储为对应的对象映射根节点。
需要说明的是,该配置文件是由人工预先配置的,人工预先把目标对象的生成规则写成结构化的配置文件。其中,目标对象就是由实时数据平台生成的目标业务***可以理解的对象。该配置文件用于描述在满足一定的条件下,如何为目标对象模型的属性赋值,从而生成目标对象。目标对象模型是由人工预先建立的,对应特定的类,并且该目标对象模型具有不同的属性,为上述目标对象模型的属性赋值之后,就可以生成目标对象。可以理解的是,给定同一目标对象模型的属性不相同的值时,则可以生成不同的目标对象,但是这些目标对象属于同一类,即属于目标对象模型对应的特定类。
可以理解的是,待生成的目标对象不同,则需要配置的配置文件则不同。当需要生成N个不同的目标对象时,则需要配置N个不同的配置文件。该配置文件包括转化条件,还可以包括目标对象模型的属性的赋值方式,其中,转化条件也可以称为过滤条件,用于判断是否要根据配置文件中的目标对象模型的属性的赋值方式,为目标对象模型的属性赋值,从而生成目标对象。
需要说明的是,由于在java语言中,当需要引用目标对象模型的属性时,可以通过表达式“class.property”去引用,其中,class是人工预先建立的目标对象模型,property是目标对象模型的属性。当目标对象模型的属性的赋值方式为:通过默认值为目标对象模型的属性赋值时,可以为:class.Property=0,其中,0为默认值。可以理解的是,通过目标对象模型的属性的赋值方式可以直接获取到该目标对象模型,例如,从赋值方式“class.Property=0”中可以直接获取到目标对象模型class。
优选地,配置文件为用xml语法来编写的,即xml配置文件。当通过xml语法来编写配置文件时,不再需要经过冗长的编译、发布过程,而可以通过在一个图形化的界面上来完成配置,并在线更改实时生效,大大加快了编写配置文件的速度,真正做到所见即所得。此外,由于xml是一种树形结构的语言,有严谨的层次关系,在分析对象的继承关系时,只要解析xml的层次结构,可以快速且自动的获得从最初的源对象到最终的目表对象之间的血缘关系,并且可以通过图形技术很直观的来展示。
在对源对象转化之前,源对象是源业务***向实时数据平台发送的自己定义的对象,实时数据平台预先将xml配置文件读入内存,并按照xml的树形层次结构存储为对应的对象映射根节点(ClassMap),该对象映射根节点为java对象。一般采用文档对象模型(DocumentObjectModel,DOM)来在内存中映射xml文件,并利用dom4j这个类库读取具体的xml配置文件并在内存中转成DOM对象,其中,dom4j为解析器,包括读取xml配置文件中预先定义好的转化条件和目标对象模型的属性的赋值方式,并用标准的javaDOM对象来存储,存储后的javaDOM对象同样包括转化条件和目标对象模型的属性的赋值方式,并且上述转化条件和目标对象模型的属性的赋值方式都是能够被java理解的。而ClassMap对象是对JavaDOM对象的进一步解释和封装,解释就是对JavaDOM对象的访问方法进行进一步的翻译,形成更容易理解和使用的对象访问方法,封装就是将部分属性的访问方法转换为私有的。因此,ClassMap对象同样包括转化条件和目标对象模型的属性的赋值方式。
可以理解的是,多个配置文件可以存储为多个对应的对象映射根节点,对象映射根节点同样是用于描述在满足一定的条件下,如何为目标对象模型的属性赋值,从而生成目标对象。不同的是,对象映射根节点是java对象,并且对象映射根节点中的内容都是可以被java理解的。在本申请中,所涉及的对象均为java对象。
步骤220,接收源对象,从所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点。
需要说明的是,该源对象是由源业务***(数据生产方)发送的,举例来说,商品中心向实时数据平台提交所定义的淘宝订单对象时,该商品中心即为源业务***,而所定义的淘宝订单对象则为源对象。
可选地,所述对象映射根节点中包括源对象列表;其中,步骤220中接收源对象,从所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点具体包括:
接收源对象,判断所述对象映射根节点的源对象列表中是否包括所述源对象,当所述对象映射根节点中的源对象列表中包括所述源对象时,则将所述对象映射根节点选择为与所述源对象相关联的目标对象映射根节点。
举例来说,参见图3所示的目标对象的生成方法示意图,实时数据平台预先订阅统一收单中心所定义的外部订单对象、商品中心所定义的淘宝订单对象、以及资金中心所定义的批量代发订单对象,分别表示为源对象Source1、Source2和Source3,其中,每个源对象均包括类型(type)属性,假如,内存中已存储了5个对象映射根节点,分别为:ClassMap1,ClassMap2,ClassMap3,ClassMap4和ClassMap5,其中,ClassMap1中包括的源对象列表为:Source1和Source2,包括的转化条件为:Source1.type=1andSource2.type=1;ClassMap2中包括的源对象列表为:Source2,包括的转化条件为Source2.type=2;ClassMap3中包括的源对象列表为:Source2,包括的转化条件为Source2.type=3;ClassMap4中包括的源对象列表为:Source2和Source3,包括的转化条件为:Source2.type=4andSource3.type=4;ClassMap5中包括的源对象列表为:Source2,包括的转化条件为Source2.type=5。当实时数据平台接收到商品中心所定义的淘宝订单对象,即接收到源对象为Source2,且源对象Source2的type属性值为2时,则依次读取已存储的ClassMap1,ClassMap2,ClassMap3,ClassMap4和ClassMap5,并判断上述5个对象映射根节点的源对象列表中是否包括源对象Source2,由于该5个对象映射根节点的源对象列表中均包括源对象Source2,则将该5个对象映射根节点都选择为与源对象Source2相关联的目标对象映射根节点。
需要说明的是,目标对象映射根节点是从对象映射根节点中选择的,而对象映射根节点包括转化条件,还可以包括目标对象模型的属性的赋值方式,因此,目标对象射根节点也包括转化条件,还可以包括目标对象模型的属性的赋值方式。而在步骤210中已经说明可以从目标对象模型的属性赋值方式中获取目标对象模型,所以目标对象根节点中包括目标对象模型。
步骤230,根据所述目标对象模型,对所述目标对象映射根节点分组。
其中,步骤230中根据所述目标对象模型,对所述目标对象映射根节点分组具体包括:
将包括相同的目标对象模型的目标对象映射根节点分为一组。举例来说,假如步骤220中给出的例子中,实时数据平台预先订阅统一收单中心所定义的外部订单对象:源对象Source1,还包括属性A和B,商品中心所定义的淘宝订单对象:源对象Source2还包括属性C和D,资金中心所定义的批量代发订单对象:源对象Source3,还包括属性E和F,实时数据平台转化成的标准订单表示为目标对象模型DestA,DestA包括属性X,实时数据平台转化成的资金单表示为目标对象模型DestB,DestB包括属性Y,且假如,ClassMap1中包括的目标对象模型的属性的赋值方式为:DestA.X=Source1.A+Source1.B+Source2.C+Source2.D,ClassMap2中包括的目标对象模型的属性的赋值方式为:DestA.X=Source2.C+Source2.D;ClassMap3中包括的目标对象模型的属性的赋值方式为:DestA.X=(Source2.C+Source2.D)*2;ClassMap4中包括的目标对象模型的属性的赋值方式为:DestB.Y=Source2.C+Source3.E+Source3.F;ClassMap5中包括的目标对象模型的属性的赋值方式为:DestB.Y=Source2.C+Source3.E。则读取上述5个目标对象映射根节点中包括的目标对象模型的属性的赋值方式,ClassMap1中是为属性DestA.X赋值,则从上述属性的引用方式就可以获取到该属性所属的目标对象模型DestA,即ClassMap1中包括DestA,依次类推,ClassMap2中包括DestA,ClassMap3中包括DestA,而ClassMap4中包括DestB,ClassMap5中也包括DestB。
综上,由于ClassMap1、ClassMap2和ClassMap3中包括的目标对象模型为DestA,因此,将ClassMap1、ClassMap2和ClassMap3分为一组,且与该组目标对象映射根节点对应的目标对象模型为DestA;同理,将ClassMap4和ClassMap5分为一组,且与该组目标对象映射根节点对应的目标对象模型为DestB。
步骤240,对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。
其中,步骤240中对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立具体包括:
步骤2401,对每组中的目标对象映射根节点,按照优先级进行排序。
在步骤230中给出的例子中,可将ClassMap1、ClassMap2和ClassMap3分为一组,且与该组目标对象映射根节点对应的目标对象模型为DestA;同理,将ClassMap4和ClassMap5分为一组,且与该组目标对象映射根节点对应的目标对象模型为DestB。对第一组目标对象映射根节点,假如预先分配给ClassMap1的优先级最高,ClassMap2的优先级次之,ClassMap3的优先级最低;对第二组目标对象映射根节点,假如预先分配给ClassMap4的优先级最高,ClassMap5的优先级次之。则根据目标对象映射根节点的优先级,可以对对每组中的目标对象映射根节点进行排序,图4示出了目标对象映射根节点的排序结果图。
步骤2402,依次判断排序后的所述组中的各个目标对象映射根节点中的转化条件是否成立。
在步骤230中给出的例子中,当实时数据平台接收到商品中心所定义的淘宝订单对象:源对象Source2时,并且假设该接收到的源对象Source2的type属性值为2,C的属性值为3,D的属性值为4,那么对于第一组目标对象映射根节点,参见图4所示,首先判断ClassMap1中转化条件是否成立,由于ClassMap1的转化条件为Source1.type=1andSource2.type=1,而接收到的源对象Source2的type的属性值为2,所以不满足条件;然后判断ClassMap2中转化条件是否成立,由于ClassMap2的转化条件为Source2.type=2与接收到的源对象Source2的type属性值相同,所以满足转化条件。然后根据ClassMap2中包括的目标对象模型的属性的赋值方式,为该组目标对象映射根节点对应的目标对象模型的属性赋值,即为DestA的属性X赋值,赋值方法为:DestA.X=Source2.C+Source2.D,在对目标对象模型DestA的属性赋值之后,就可以生成目标对象DestA1,而后续的ClassMap3中的转化条件则不再进行判断。
同上,对于第二组目标对象映射根节点,先判断ClassMap4中的转化条件是否成立,由于ClassMap4的转化条件为Source2.type=4andSource3.type=4,而接收到的源对象Source2的type的属性值为2,所以不满足条件;然后判断ClassMap5中的转化条件是否成立,由于ClassMap5的转化条件为Source2.type=5,而接收到的源对象Source2的type的属性值为2,所以也不满足条件,因此不对目标对象模型DestB进行转化。
需要说明的是,步骤240中为该组目标对象映射根节点对应的目标对象模型的属性赋值包括:
根据所述目标对象模型的属性的赋值方式,为该组目标对象映射根节点对应的目标对象模型的属性赋值,该步骤具体为:
根据默认值或所述源对象的属性值和/或其它源对象的属性值,为该组目标对象映射根节点对应的目标对象模型的属性赋值;或者,当所述目标对象模型包括一个或多个子对象,并且所述源对象也包括一个或多个子对象时,根据所述源对象的一个或多个子对象的属性值,为该组目标对象映射根节点对应的目标对象模型的子对象属性赋值;或者,根据脚本运算的结果或者调用外部接口函数获取的结果,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
举例来说,假如实时数据平台接收到商品中心所定义的淘宝订单对象:源对象Source2(包括属性C和D),实时数据平台转化成的标准订单:目标对象模型为DestA,目标对象模型的属性为X,则根据所述源对象的属性值,为该组目标对象映射根节点对应的目标对象模型的属性赋值为:DestA.X=Source2.C+Source2.D;再假如还接收到统一收单中心所定义的外部订单对象:其它源对象Source1(包括属性A和B),则根据所述源对象Source2的属性值和其它源对象Source1的属性值,为该组目标对象映射根节点对应的目标对象模型的属性赋值为:DestA.X=Source1.A+Source1.B+Source2.C+Source2.D。
本申请实施例提供的目标对象的生成方法,由于编写配置文件比编写代码要简单很多,因此,可以有效降低编程复杂难度,从而缩短开发时间,并在运行时达到节省计算机资源的目的。
上述描述的本申请方法的执行主体是实时数据平台,但并不限于实时数据平台,凡是具有信息处理能力的设备均可以作为本申请方法的执行主体,例如,本申请还提供了一种解析引擎,该解析引擎作为处理器嵌入到实时数据平台中。参见图5所示的本申请实施例二提供的目标对象的生成方法流程图,该方法的执行主体是解析引擎,所述方法具体包括如下步骤:
步骤510,规则映射模块(MappingRuleParser)将预先配置好的配置文件读入内存,并存储为对应的ClassMapjava对象。
一个ClassMapjava对象存储了一个目标对象模型的属性的赋值方式,其内部会存储转化出目标对象转所需要全部源对象,目标对象模型的属性的赋值方式(PropertyMap),以及转化条件(Filter)。
步骤520,功能节点(Node)接收源对象,并将源对象发送给转化器(Convertor),转化器根据该源对象,去查找所关联到的ClassMap对象,所述关联到的ClassMap对象包括目标对象模型。
需要说明的是,功能节点(Node)是解析引擎中进行消息接收、数据处理、数据持久化等各种操作的标准单元,所有操作都最终会以一个功能节点(Node)的形式,嵌入在整个功能链中,形成一条完整的链条。而数据转化,也是这个链条中的一个节点,从前一个Node(通常是数据接收节点)中得到源对象,然后调用转化器进行对象转化,得到目标对象,在把目标对象传给下一个节点(通常是数据推送节点和数据持久化节点)。
步骤530,根据目标对象模型,对已查找到的所有ClassMap对象进行分组。
步骤540,对每组ClassMap对象,Convertor会依次读取并判断ClassMap对象中的转化条件是否成立,如果成立,则读取ClassMap对象中的目标对象模型的属性的赋值方式(PropertyMap),为目标对象模型的属性赋值,从而生成目标对象。
需要说明的是,当转化条件成立时,是由映射规则工厂(MappingRuleFactory)来读取ClassMap对象中的目标对象模型的属性的赋值方式(PropertyMap),并为目标对象模型的属性赋值的。对于不同的赋值方式,映射规则工厂会执行不同的属性值计算,例如对于一一对应的属性映射,该模块会根据赋值方式中所声明的源对象的属性,读取该源对象的属性值,然后把这个值set到目标对象模型对应的属性中;如果是四则运算型的属性映射,则会读取源对象多个属性的值,然后根据赋值方式中所指定的计算方法,进行四则运算,再把运算结果set到目标对象对应的属性中。
综上,当接收到一个源对象时,转化器用于据该源对象,查找所关联到的ClassMap对象;对所关联到的ClassMap对象,依次读取并判断ClassMap对象中的转化条件是否成立,如果成立,则读取ClassMap对象中的目标对象模型的属性的赋值方式(PropertyMap),为目标对象模型的属性赋值,从而生成目标对象。
上述转化器的核心方法是充分利用java的反射功能,在运行时获得源对象的属性值,并根据配置文件中定义的目标对象模型的属性的赋值方式,计算出目标对象模型的属性值,从而生成目标对象,并调用目标对象的属性赋值方法来为各个属性set具体的值。由于转化器完全是读取配置文件来获得目标对象模型的属性的赋值方式,并利用java的反射功能来实时的操作对象,本身不需要在事先引入和加载对象,因此,完全独立在源/目标对象之外,是一个通用的对象转化器。由于转化器本身是稳定的,不需要频繁更改和发布,也就是说不需要停应用来升级,而配置文件也不存在编译的问题,真正做到了在线更改、实时见效。
图6为本申请实施例三提供的服务器的示意图。所述服务器可以用于执行图2所述的方法。图6中,所述服务器包括:存储单元601、接收单元602、分组单元603和生成单元604。
存储单元601,用于将预先配置好的配置文件读入内存,存储为对应的对象映射根节点。
接收单元602,用于接收源对象,从存储单元601存储的所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点,所述目标对象映射根节点中包括转化条件和目标对象模型。
分组单元603,用于根据所述目标对象模型,对所述目标对象映射根节点分组。
生成单元604,用于对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。
可选地,所述目标对象映射根节点中还包括所述目标对象模型的属性的赋值方式;生成单元604具体用于:根据所述目标对象模型的属性的赋值方式,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
可选地,生成单元604具体用于:
根据默认值或所述源对象的属性值和/或其它源对象的属性值,为该组目标对象映射根节点对应的目标对象模型的属性赋值;或者,
当所述目标对象模型包括一个或多个子对象,并且所述源对象也包括一个或多个子对象时,根据所述源对象的一个或多个子对象的属性值,为该组目标对象映射根节点对应的目标对象模型的子对象属性赋值;或者,
根据脚本运算的结果或者调用外部接口函数获取的结果,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
可选地,所述对象映射根节点中包括源对象列表;
接收单元602具体用于:接收源对象,判断所述对象映射根节点的源对象列表中是否包括所述源对象,当所述对象映射根节点中的源对象列表中包括所述源对象时,则将所述对象映射根节点选择为与所述源对象相关联的目标对象映射根节点。
可选地,分组单元603具体用于:将包括相同的目标对象模型的目标对象映射根节点分为一组。
可选地,生成单元604包括:
排序单元605,用于对每组中的目标对象映射根节点,按照优先级进行排序;
判断单元606,用于依次判断排序单元605排序后的所述组中的各个目标对象映射根节点中的转化条件是否成立。
本申请实施例提供的服务器,由于编写配置文件比编写代码要简单很多,并且不需要经过编译、停机、发布等软件部署过程,因此,可以有效降低编程复杂难度,从而缩短开发时间,并在运行时达到节省计算机资源的目的。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种目标对象的生成方法,其特征在于,所述方法包括:
将预先配置好的配置文件读入内存,存储为对应的对象映射根节点;
接收源对象,从所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点,所述目标对象映射根节点中包括转化条件和目标对象模型;
根据所述目标对象模型,对所述目标对象映射根节点分组;
对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。
2.根据权利要求1所述的方法,其特征在于,所述目标对象映射根节点中还包括所述目标对象模型的属性的赋值方式;
所述为该组目标对象映射根节点对应的目标对象模型的属性赋值包括:
根据所述目标对象模型的属性的赋值方式,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
3.据权利要求2所述的方法,其特征在于,所述根据所述目标对象模型的属性的赋值方式,为该组目标对象映射根节点对应的目标对象模型的属性赋值包括:
根据默认值或所述源对象的属性值和/或其它源对象的属性值,为该组目标对象映射根节点对应的目标对象模型的属性赋值;或者,
当所述目标对象模型包括一个或多个子对象,并且所述源对象也包括一个或多个子对象时,根据所述源对象的一个或多个子对象的属性值,为该组目标对象映射根节点对应的目标对象模型的子对象属性赋值;或者,
根据脚本运算的结果或者调用外部接口函数获取的结果,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
4.根据权利要求1或3所述的方法,其特征在于,所述对象映射根节点中包括源对象列表;
所述接收源对象,从所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点包括:
接收源对象,判断所述对象映射根节点的源对象列表中是否包括所述源对象,当所述对象映射根节点中的源对象列表中包括所述源对象时,则将所述对象映射根节点选择为与所述源对象相关联的目标对象映射根节点。
5.根据权利要求1所述的方法,其特征在于,所述根据所述目标对象模型,对所述目标对象映射根节点分组包括:
将包括相同的目标对象模型的目标对象映射根节点分为一组。
6.根据权利要求1所述的方法,其特征在于,所述对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立包括:
对每组中的目标对象映射根节点,按照优先级进行排序;
依次判断排序后的所述组中的各个目标对象映射根节点中的转化条件是否成立。
7.一种服务器,其特征在于,所述服务器包括:存储单元、接收单元、分组单元和生成单元;
所述存储单元,用于将预先配置好的配置文件读入内存,存储为对应的对象映射根节点;
所述接收单元,用于接收源对象,从所述存储单元存储的所述对象映射根节点中选择与所述源对象相关联的目标对象映射根节点,所述目标对象映射根节点中包括转化条件和目标对象模型;
所述分组单元,用于根据所述目标对象模型,对所述目标对象映射根节点分组;
所述生成单元,用于对每组目标对象映射根节点,判断所述组中的各个目标对象映射根节点中的转化条件是否成立,当其中任一目标对象映射根节点中的转化条件成立时,为该组目标对象映射根节点对应的目标对象模型的属性赋值,从而生成目标对象。
8.根据权利要求7所述的服务器,其特征在于,所述目标对象映射根节点中还包括所述目标对象模型的属性的赋值方式;
所述生成单元具体用于:根据所述目标对象模型的属性的赋值方式,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
9.根据权利要求8所述的服务器,其特征在于,所述生成单元具体用于:
根据默认值或所述源对象的属性值和/或其它源对象的属性值,为该组目标对象映射根节点对应的目标对象模型的属性赋值;或者,
当所述目标对象模型包括一个或多个子对象,并且所述源对象也包括一个或多个子对象时,根据所述源对象的一个或多个子对象的属性值,为该组目标对象映射根节点对应的目标对象模型的子对象属性赋值;或者,
根据脚本运算的结果或者调用外部接口函数获取的结果,为该组目标对象映射根节点对应的目标对象模型的属性赋值。
10.根据权利要求7或9所述的服务器,其特征在于,所述对象映射根节点中包括源对象列表;
所述接收单元具体用于:接收源对象,判断所述对象映射根节点的源对象列表中是否包括所述源对象,当所述对象映射根节点中的源对象列表中包括所述源对象时,则将所述对象映射根节点选择为与所述源对象相关联的目标对象映射根节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410238702.3A CN105224293A (zh) | 2014-05-30 | 2014-05-30 | 目标对象的生成方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410238702.3A CN105224293A (zh) | 2014-05-30 | 2014-05-30 | 目标对象的生成方法及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105224293A true CN105224293A (zh) | 2016-01-06 |
Family
ID=54993295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410238702.3A Pending CN105224293A (zh) | 2014-05-30 | 2014-05-30 | 目标对象的生成方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224293A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297633A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1677935A (zh) * | 2004-03-31 | 2005-10-05 | 华为技术有限公司 | 电信管理网中配置信息模型树的转换***及其方法 |
CN101055578A (zh) * | 2006-04-12 | 2007-10-17 | 龙搜(北京)科技有限公司 | 基于规则的文档内容挖掘器 |
CN102521411A (zh) * | 2011-12-28 | 2012-06-27 | 畅捷通信息技术股份有限公司 | 公式及公式数据处理装置和公式及公式数据处理方法 |
CN103294462A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 对象映射处理方法、映射处理器和对象映射处理*** |
CN103532808A (zh) * | 2013-10-30 | 2014-01-22 | 江苏万全科技有限公司 | 一种整合规则引擎的企业服务总线 |
-
2014
- 2014-05-30 CN CN201410238702.3A patent/CN105224293A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1677935A (zh) * | 2004-03-31 | 2005-10-05 | 华为技术有限公司 | 电信管理网中配置信息模型树的转换***及其方法 |
CN101055578A (zh) * | 2006-04-12 | 2007-10-17 | 龙搜(北京)科技有限公司 | 基于规则的文档内容挖掘器 |
CN102521411A (zh) * | 2011-12-28 | 2012-06-27 | 畅捷通信息技术股份有限公司 | 公式及公式数据处理装置和公式及公式数据处理方法 |
CN103294462A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 对象映射处理方法、映射处理器和对象映射处理*** |
CN103532808A (zh) * | 2013-10-30 | 2014-01-22 | 江苏万全科技有限公司 | 一种整合规则引擎的企业服务总线 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297633A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
CN110297633B (zh) * | 2019-06-28 | 2023-05-23 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cui et al. | A genetic algorithm based data replica placement strategy for scientific applications in clouds | |
CN102375731B (zh) | 一种免编码集成应用软件平台*** | |
EP3502915A1 (en) | Computing data lineage across a network of heterogeneous systems | |
CN103714129B (zh) | 基于条件规则的动态数据结构和关系的构建装置和构建方法 | |
CN110019397B (zh) | 用于进行数据处理的方法及装置 | |
US9201700B2 (en) | Provisioning computer resources on a network | |
CN104035754A (zh) | 一种基于xml的自定义代码生成方法及生成器 | |
CN106557307B (zh) | 业务数据的处理方法及处理*** | |
CN112231917A (zh) | 空间数字孪生建模方法、装置、计算机设备及存储介质 | |
CN111160658B (zh) | 一种协同制造资源优配方法、***和平台 | |
CN105787808A (zh) | 基于泛型编程和反射机制的iec61968标准文档生成***及方法 | |
US20240037264A1 (en) | Systems and methods for providing network-based permissioning using security node hash identifiers | |
US20170147943A1 (en) | Global data flow optimization for machine learning programs | |
Sanin et al. | Manufacturing collective intelligence by the means of Decisional DNA and virtual engineering objects, process and factory | |
CN106897198B (zh) | 一种日志数据的处理方法及装置 | |
CN103186384A (zh) | 一种面向业务组件的软件设计分析***及其使用方法 | |
CN110781430B (zh) | 互联网新型虚拟数据中心***及其构造方法 | |
CN112597105A (zh) | 文件关联对象的处理方法、服务端设备及存储介质 | |
CN111767406B (zh) | Plc工程的知识表示方法及装置 | |
CN107479870A (zh) | 一种第三方类库调用方法、装置、移动终端及存储介质 | |
US20190258653A1 (en) | System of dynamic hierarchies based on a searchable entity model | |
Mehrotra et al. | Apache Spark Quick Start Guide: Quickly learn the art of writing efficient big data applications with Apache Spark | |
CN105224293A (zh) | 目标对象的生成方法及服务器 | |
US20140067874A1 (en) | Performing predictive analysis | |
US20140149186A1 (en) | Method and system of using artifacts to identify elements of a component business model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20160106 |