核心业务对象一致性处理方法及代理的制作方法

文档序号:6631183阅读:147来源:国知局
核心业务对象一致性处理方法及代理的制作方法
【专利摘要】本发明实施例公开了核心业务对象一致性处理方法及代理。上述方法基于核心业务对象代理,核心业务对象代理用于代理对一个核心业务对象或多个相关联的核心业务对象的处理;该方法包括核心业务对象代理接收来自角色的操作请求;核心业务对象代理执行与操作请求相应的事务,事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作;核心业务对象代理向角色反馈处理结果。可见,在本发明实施例中,统一由核心业务对象代理对核心业务对象进行处理。在处理时,核心业务对象代理执行的是事务,事务具有使数据库从一个一致性状态变到另一个一致性状态的特点。因此,在事务结束时,都能保持数据一致性。
【专利说明】核心业务对象一致性处理方法及代理

【技术领域】
[0001]本发明涉及计算机【技术领域】,更具体地说,涉及核心业务对象一致性处理方法及代理。

【背景技术】
[0002]核心业务对象关系到整个业务的流程,在业务的执行过程中,核心业务对象通常需要与多个业务角色发生交互,同时也与其它业务对象发生数据交换。比如在电子商务的交易中,交易订单是交易的核心业务对象,买家、卖家和系统进程等(业务角色)都会与订单发生交互。
[0003]在现有方式中,每个业务角色都可对核心业务对象进行操作,而在多个业务角度同时对核心业务对象进行操作时,不可避免地会出现数据不一致的情况。例如,一个商品订单提交后,会减少相应的商品库存,以避免重复出售;但为了保障正常交易,没有支付的订单不能一直占据有效商品库存,因此订单有一个超时失效机制,一旦超时,系统进程会对其进行失效操作。在另一方面,商品订单的支付过程可能无法预订,可能在发起支付时,商品订单尚未失效,而经过较长时间的支付过程后,在支付完成时,订单已经失效。此时订单对象和支付对象就会存在不一致:订单对象的状态是已失效,而与之相关的支付对象的状态是已支付。


【发明内容】

[0004]有鉴于此,本发明实施例的目的在于提供核心业务对象一致性处理方法及代理,以解决数据不一致的问题。
[0005]为实现上述目的,本发明实施例提供如下技术方案:
[0006]根据本发明实施例的第一方面,提供基于核心业务对象代理,所述核心业务对象代理用于代理对一个核心业务对象的处理,或者,用于代理对多个相关联的核心业务对象的处理;
[0007]所述方法包括:
[0008]核心业务对象代理接收来自角色的操作请求;
[0009]所述核心业务对象代理执行与所述操作请求相应的事务,所述事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作;
[0010]所述核心业务对象代理向所述角色反馈处理结果。
[0011]结合第一方面,在第一种可能的实现方式中,所述核心业务对象代理执行与所述操作请求相应的事务包括:所述核心业务对象代理获取目标核心业务对象的当前状态;所述目标核心业务对象为所述操作请求指示的核心业务对象,或者所述目标核心业务包括所述操作请求指示的核心业务对象及与之相关联的其他核心业务对象;所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换。
[0012]结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述操作请求指示的核心业务对象表示为指定对象;所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换包括:所述核心业务对象代理依据所述指定对象的当前状态和所述操作请求中指示的具体操作,对所述指定对象进行状态转换。
[0013]结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,在对所述指定对象进行状态转换后,所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换还包括:所述核心业务对象代理获取与所述指定对象相关联的其他核心业务对象的当前状态;所述核心业务对象代理根据所述其他核心业务对象的当前状态,判断所述指定对象的状态是否需要转换;如需要,则进行相应的转换。
[0014]结合第一方面第二或第三种可能的实现方式,在第四种可能的实现方式中,在对所述指定对象进行状态转换后,所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换还包括:所述核心业务对象代理根据所述指定对象转换后的状态,判断与所述指定对象相关联的其他核心业务对象的状态是否需要转换;如需要,则进行相应的转换。
[0015]根据本发明实施例的第二方面,提供一种核心业务对象一致性处理代理,用于代理对一个核心业务对象的处理,或者,用于代理对多个相关联的核心业务对象的处理,所述代理包括:
[0016]接收单元,用于接收来自角色的操作请求;
[0017]执行单元,用于执行与所述操作请求相应的事务,所述事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作;
[0018]反馈单元,用于向所述角色反馈处理结果。
[0019]结合第二方面,在第一种可能的实现方式中,在执行与所述操作请求相应的事务的方面,所述执行单元用于:获取目标核心业务对象的当前状态;所述目标核心业务对象为所述操作请求指示的核心业务对象,或者所述目标核心业务对象包括所述操作请求指示的核心业务对象及与之相关联的其他核心业务对象;根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行相应的状态转换。
[0020]结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述操作请求指示的核心业务对象表示为指定对象;在根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换的方面,所述执行单元用于:依据所述指定对象的当前状态和所述操作请求中指示的具体操作,对所述指定对象进行状态转换。
[0021]结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,在对所述指定对象进行状态转换后,在根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行相应的状态转换的方面,所述执行单元还用于:获取与所述指定对象相关联的其他核心业务对象的当前状态;根据所述其他核心业务对象的当前状态,判断所述指定对象的状态是否需要转换;如需要,则进行相应的转换。
[0022]结合第二方面第二或第三种可能的实现方式,在第四种可能的实现方式中,在对所述指定对象进行状态转换后,在根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换的方面,所述执行单元还用于:根据所述指定对象转换后的状态,判断与所述指定对象相关联的其他核心业务对象的状态是否需要转换;如需要,则进行相应的转换。
[0023]可见,在本发明实施例中,不再由角色直接对核心业务对象进行操作,而是统一由核心业务对象代理对核心业务对象进行处理。在处理时,核心业务对象代理执行的是事务,事务具有一致性特点,事务可使数据库从一个一致性状态变到另一个一致性状态。因此,在事务结束时,都能保持数据一致性。这样,本实施例可以实现在事务执行完毕后,数据一致性。

【专利附图】

【附图说明】
[0024]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]图1为本发明实施例提供的核心业务对象一致性处理方法流程图;
[0026]图2为本发明实施例提供的代理结构示例图;
[0027]图3为本发明实施例提供的代理结构另一示例图。

【具体实施方式】
[0028]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029]核心业务对象关系到整个业务的流程,在业务的执行过程中,核心业务对象通常需要与多个业务角色发生交互,同时也与其它业务对象发生数据交换。比如在电子商务的交易中,交易订单是交易的核心业务对象,买家、卖家和系统进程等(业务角色)都会与订单发生交互。
[0030]在现有方式中,每个业务角色都可对核心业务对象进行操作,而在多个业务角度同时对核心业务对象进行操作时,不可避免地会产生不一致。例如,一个商品订单提交后,会减少相应的商品库存,以避免重复出售;但为了保障正常交易,没有支付的订单不能一直占据有效商品库存,因此订单有一个超时失效机制,一旦超时,系统进程会对其进行失效操作。在另一方面,商品订单的支付过程可能无法预订,可能在发起支付时,商品订单尚未失效,而经过较长时间的支付过程后,在支付完成时,订单已经失效。此时订单对象和支付对象就会存在不一致:订单对象的状态是已失效,而与之相关的支付对象的状态是已支付。
[0031]或者,A角色在对订单对象操作的时候,B角色在同时操作支付对象,这样,操作完成后,订单对象与支付对象的状态也可能会不一致。
[0032]为解决上述问题,本发明实施例提供核心业务对象一致性处理方法。
[0033]请参见图1,上述方法至少可包括如下步骤:
[0034]S1、核心业务对象代理接收来自角色的操作请求。
[0035]上述操作请求可用于指示对指定的核心业务对象的具体操作。
[0036]具体操作可为查询、修改、增加或删除。
[0037]例如,操作请求可指示对订单对象的修改操作。
[0038]核心业务对象代理可为进程或模块,用于代理对一个核心业务对象的处理,或者,用于代理对多个相关联的核心业务对象的处理。
[0039]例如核心业务对象代理可仅代理对订单对象的处理。
[0040]当然,在很多场景下,由于订单对象与支付对象关联紧密,因此,核心业务对象代理也可代理对订单对象、支付对象等的处理。
[0041]在本实施例中,角色可为用户服务、商户服务、后台服务、系统服务进程等。
[0042]S2、核心业务对象代理执行与上述操作请求相应的事务,上述事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作。
[0043]事务是恢复和并发控制的基本单位。事务具有原子性、一致性。
[0044]原子性指一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。举例来讲,银行转账事务包含两个操作,一个操作是从一个账号扣款,另一个操作是使另一个账号增款,上述两个操作要么都执行,要么都不执行。
[0045]一致性指事务必须是使数据库从一个一致性状态变到另一个一致性状态。也即,在事务结束时,都能保持数据一致性。
[0046]在本实施例中,状态转换是基于状态机处理机制。
[0047]状态机可归纳为4个要素,即现态、条件、动作、次态。其中:
[0048]现态:是指当前所处的状态;在本实施例中,可具体指核心业务对象的当前状态。
[0049]条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移;
[0050]动作:当条件满足后,可执行某一动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,因为当条件满足后,也可以不执行任何动作,直接迁移到新状态;
[0051]次态:当条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,或者说,一旦由现态迁移至次态,次态就转变成新的“现态” 了。
[0052]在执行上述方法之前,需要设计核心业务对象的数据模型,确定对象之间的数据关联。根据具体的业务规则分析每类对象的状态数、相关约束,结合具体的业务流程,定义状态的转换条件。
[0053]此外,还需要事先设计对核心业务对象每一操作所对应的事务。一般情况下,查询这一具体操作并不需要设计相应的事务。
[0054]这样后续在接收到操作请求后,可根据操作请求的具体操作执行相应的事务。例如,事先设计订单对象修改事务,则在接收到指示对订单对象进行修改的操作请求时,可执行上述订单对象修改事务。并且,需要指出的是,由于订单对象与支付对象等密切相关联,因此,订单对象修改事务中可同时包括对订单对象和支付对象的一系列操作。
[0055]S3、核心业务对象代理向上述角色反馈处理结果。
[0056]可见,在本发明实施例中,不再由角色直接对核心业务对象进行操作,而是统一由核心业务对象代理对核心业务对象进行处理。在处理时,核心业务对象代理执行的是事务,事务具有一致性特点,事务可使数据库从一个一致性状态变到另一个一致性状态。因此,在事务结束时,都能保持数据一致性。这样,本实施例可以实现在事务执行完毕后,数据一致性。
[0057]更具体的,核心业务对象代理执行与操作请求相应的事务可包括如下步骤:
[0058]步骤A:核心业务对象代理获取目标核心业务对象的当前状态。
[0059]在本实施例中,目标核心业务可为前述操作请求指示的核心业务对象。或者,目标核心业务无明可包括操作请求指示的核心业务对象及与之相关联的其他核心业务对象。
[0060]举例来讲,操作请求是对支付对象发起修改操作,目的是将支付对象的状态由未支付修改为已支付。而支付对象状态如由未支付状态转换成已支付状态,相关联的订单对象的状态也需要随之改变。因此,虽然操作请求指示的核心业务对象为支付对象,但核心业务对象代理处理的目标业务对象却是订单对象和支付对象,所以需要获取订单对象与支付对象的当前状态。
[0061]步骤B:核心业务对象代理根据目标核心业务对象的当前状态对目标核心业务对象进行状态转换。
[0062]为称呼方便,可将前述操作请求指示的核心业务对象称为指定对象。则上述步骤B可细化包括如下步骤:
[0063]步骤B1、核心业务对象代理依据指定对象的当前状态和上述操作请求中指示的具体操作,对上述指定对象进行相应的状态转换。
[0064]举例来讲,操作请求指示了对支付对象发起修改操作。支付对象当前的状态为“未支付”,则核心业务对象代理会依据操作请求中指示的具体操作,将支付对象状态由“未支付”转换成“已支付”。转换后的状态变成支付对象的当前状态。
[0065]由于很多场景下,一个对象的状态改变会引起关联对象的状态改变。因此,在步骤BI之后,步骤B还可包括如下步骤:
[0066]步骤B2、核心业务对象代理获取与指定对象相关联的其他核心业务对象的当前状态。
[0067]仍沿用前例,核心业务对象代理可获取与支付对象相关联的其他核心业务对象(如订单对象)的当前状态。
[0068]步骤B3、核心业务对象代理根据上述其他核心业务对象的当前状态,判断上述指定对象的状态是否需要转换;如需要,则进行相应的转换。
[0069]仍沿用前例,假定订单对象的当前状态是“已取消”,而支付对象当前的状态已转换为“已支付”,二者不符,则核心业务对象代理判断支付对象的状态需要转换,将支付对象的状态转换为“已退款”。
[0070]需要说明的是,在执行事务过程中,从“未支付”到“已支付”,执行了修改操作,从“已支付”到“已退款”相当于对支付对象的修改操作进行了回退。
[0071]而从业务角度看,在未执行事务前,支付对象的状态为“未支付”,在执行事务后,支付对象的状态为“已退款”,由“未支付”到“已退款”,支付操作相当于未执行。这与前述提及的诸操作要么都做,要么都不做是相一致的。
[0072]在本发明其他实施例中,在步骤BI之后,步骤B还可包括如下步骤:
[0073]步骤B4、核心业务对象代理根据指定对象转换后的状态,判断与上述指定对象相关联的其他核心业务对象的状态是否需要转换;如需要,则进行相应的转换。
[0074]举例来讲,前述步骤中,核心业务对象代理已依据操作请求中指示的具体操作,将支付对象状态转换成“已支付”。
[0075]此时,订单对象是与支付对象相关联的其他核心业务对象,其当前状态是“未支付”,则核心业务对象代理根据指定对象转换后的状态(支付对象状态转换后的状态为“已支付”),判断订单对象的状态需要转换,则将订单对象的状态转换为“已支付”。
[0076]与之相对应,本发明实施例还要求保护核心业务对象一致性处理代理,其用于代理对一个核心业务对象的处理,或者,用于代理对多个相关联的核心业务对象的处理。
[0077]请参见图2,上述代理可包括核心对象处理模块201和角色接口模块202。
[0078]其中,请参见图3,对象处理模块201可包括执行单元I,而角色接口模块202可包括接收单元2和反馈单元3。其中:
[0079]接收单元2用于接收来自角色的操作请求;
[0080]执行单元I用于执行与上述操作请求相应的事务,上述事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作;
[0081]反馈单元3用于向上述角色反馈处理结果。
[0082]在本发明其他实施例中,在执行与上述操作请求相应的事务的方面,上述所有实施例中的执行单元I可用于:
[0083]获取目标核心业务对象的当前状态;上述目标核心业务对象为上述操作请求指示的核心业务对象,或者上述目标核心业务对象包括上述操作请求指示的核心业务对象及与之相关联的其他核心业务对象;
[0084]根据目标核心业务对象的当前状态,对上述目标核心业务对象进行状态转换。
[0085]具体细节请参见本文前述记载,在此不作赘述。
[0086]上述操作请求指示的核心业务对象可表示为指定对象。
[0087]在本发明其他实施例中,在根据目标核心业务对象的当前状态,对上述目标核心业务对象的状态进行状态转换的方面,上述所有实施例中的上述执行单元I可用于:
[0088]依据指定对象的当前状态和上述操作请求中指示的具体操作,对上述指定对象进行状态转换。
[0089]具体细节请参见本文前述记载,在此不作赘述。
[0090]在本发明其他实施例中,在对所述指定对象进行相应的状态转换后,在根据目标核心业务对象的当前状态,对所述目标核心业务对象进行相应的状态转换的方面,上述所有实施例中的执行单元I还用于:
[0091]获取与所述指定对象相关联的其他核心业务对象的当前状态;
[0092]根据所述其他核心业务对象的当前状态,判断所述指定对象的状态是否需要转换;如需要,则进行相应的转换。
[0093]在本发明其他实施例中,在对所述指定对象进行相应的状态转换后,在根据目标核心业务对象的当前状态,对所述目标核心业务对象进行相应的状态转换的方面,上述所有实施例中的执行单元I还用于:
[0094]根据所述指定对象转换后的状态,判断与所述指定对象相关联的其他核心业务对象的状态是否需要转换;如需要,则进行相应的转换。
[0095]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0096]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【技术领域】内所公知的任意其它形式的存储介质中。
[0097]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种核心业务对象一致性处理方法,其特征在于,基于核心业务对象代理,所述核心业务对象代理用于代理对一个核心业务对象的处理,或者,用于代理对多个相关联的核心业务对象的处理; 所述方法包括: 核心业务对象代理接收来自角色的操作请求; 所述核心业务对象代理执行与所述操作请求相应的事务,所述事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作; 所述核心业务对象代理向所述角色反馈处理结果。
2.如权利要求1所述的方法,其特征在于,所述核心业务对象代理执行与所述操作请求相应的事务包括: 所述核心业务对象代理获取目标核心业务对象的当前状态;所述目标核心业务对象为所述操作请求指示的核心业务对象,或者所述目标核心业务包括所述操作请求指示的核心业务对象及与之相关联的其他核心业务对象; 所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换。
3.如权利要求2所述的方法,其特征在于,所述操作请求指示的核心业务对象表示为指定对象; 所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换包括: 所述核心业务对象代理依据所述指定对象的当前状态和所述操作请求中指示的具体操作,对所述指定对象进行状态转换。
4.如权利要求3所述的方法,其特征在于,在对所述指定对象进行状态转换后,所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换还包括: 所述核心业务对象代理获取与所述指定对象相关联的其他核心业务对象的当前状态; 所述核心业务对象代理根据所述其他核心业务对象的当前状态,判断所述指定对象的状态是否需要转换;如需要,则进行相应的转换。
5.如权利要求3或4所述的方法,其特征在于,在对所述指定对象进行状态转换后,所述核心业务对象代理根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换还包括: 所述核心业务对象代理根据所述指定对象转换后的状态,判断与所述指定对象相关联的其他核心业务对象的状态是否需要转换;如需要,则进行相应的转换。
6.一种核心业务对象一致性处理代理,其特征在于,用于代理对一个核心业务对象的处理,或者,用于代理对多个相关联的核心业务对象的处理,所述代理包括: 接收单元,用于接收来自角色的操作请求; 执行单元,用于执行与所述操作请求相应的事务,所述事务包括对一个核心业务对象的状态转换操作,或者包括对多个相关联的核心业务对象的状态转换操作; 反馈单元,用于向所述角色反馈处理结果。
7.如权利要求6所述的代理,其特征在于,在执行与所述操作请求相应的事务的方面,所述执行单元用于: 获取目标核心业务对象的当前状态;所述目标核心业务对象为所述操作请求指示的核心业务对象,或者所述目标核心业务对象包括所述操作请求指示的核心业务对象及与之相关联的其他核心业务对象; 根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换。
8.如权利要求7所述的代理,其特征在于, 所述操作请求指示的核心业务对象表示为指定对象; 在根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换的方面,所述执行单元用于: 依据所述指定对象的当前状态和所述操作请求中指示的具体操作,对所述指定对象进行状态转换。
9.如权利要求8所述的代理,其特征在于,在对所述指定对象进行状态转换后,在根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行相应的状态转换的方面,所述执行单元还用于: 获取与所述指定对象相关联的其他核心业务对象的当如状态; 根据所述其他核心业务对象的当前状态,判断所述指定对象的状态是否需要转换;如需要,则进行相应的转换。
10.如权利要求8或9所述的装置,其特征在于,在对所述指定对象进行状态转换后,在根据所述目标核心业务对象的当前状态,对所述目标核心业务对象进行状态转换的方面,所述执行单元还用于: 根据所述指定对象转换后的状态,判断与所述指定对象相关联的其他核心业务对象的状态是否需要转换;如需要,则进行相应的转换。
【文档编号】G06Q30/00GK104268767SQ201410566565
【公开日】2015年1月7日 申请日期:2014年10月22日 优先权日:2014年10月22日
【发明者】赵金鑫, 刘威, 王伟, 包辰明, 胡立强, 张舜华, 梁可尊, 谢潇宇, 邓龙腾 申请人:中国建设银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1