CN113742038A - 业务的处理方法、装置和非易失性计算机可读存储介质 - Google Patents
业务的处理方法、装置和非易失性计算机可读存储介质 Download PDFInfo
- Publication number
- CN113742038A CN113742038A CN202011052680.3A CN202011052680A CN113742038A CN 113742038 A CN113742038 A CN 113742038A CN 202011052680 A CN202011052680 A CN 202011052680A CN 113742038 A CN113742038 A CN 113742038A
- Authority
- CN
- China
- Prior art keywords
- service
- original
- service processing
- class
- processing method
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 144
- 238000000034 method Methods 0.000 claims abstract description 552
- 238000012545 processing Methods 0.000 claims abstract description 86
- 238000009739 binding Methods 0.000 claims abstract description 47
- 230000027455 binding Effects 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 44
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000013507 mapping Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 239000002131 composite material Substances 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000001308 synthesis method Methods 0.000 description 1
- 238000010189 synthetic method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种业务的处理方法、装置和非易失性计算机可读存储介质,涉及计算机技术领域。该方法包括:根据业务的处理过程,利用与处理过程相关的原始方法和切面方法生成综合方法,原始方法用于处理业务的基础业务逻辑,切面方法用于处理业务的附加业务逻辑;将综合方法与原始方法所属的对象和所属的类绑定;响应于有业务处理方法被调用,根据业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定业务处理方法的执行方式。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种业务的处理方法、业务的处理装置和非易失性计算机可读存储介质。
背景技术
在很多业务场景中,可以利用计算机处理技术在业务处理过程的基础业务逻辑外设置不同的附加业务逻辑,以满足不同的业务需求。例如,苹果公司的iOS(interactiveOperating System,交互式操作系统)利用面向切面编程,在指定方法的前、后等维度增加切面方法,以实现基础业务逻辑和附加业务逻辑。
在相关技术中,在添加切面方法时,通过Selector(方法选择器)的方式识别相应的原始方法的方法名称,以实现基础业务逻辑和附加业务逻辑。
发明内容
本公开的发明人发现上述相关技术中存在如下问题:无法快速识别出需要添加切面方法的原始方法,降低了业务处理效率。
鉴于此,本公开提出了一种业务的处理技术方案,能够快速识别出需要添加切面方法的原始方法,从而提高业务处理效率。
根据本公开的一些实施例,提供了一种业务的处理方法,包括:根据业务的处理过程,利用与处理过程相关的原始方法和切面方法生成综合方法,原始方法用于处理业务的基础业务逻辑,切面方法用于处理业务的附加业务逻辑;将综合方法与原始方法所属的对象和所属的类绑定;响应于有业务处理方法被调用,根据业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,根据业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定业务处理方法的执行方式包括:在具有绑定的综合方法的情况下,执行综合方法;在不具有绑定的综合方法的情况下,根据业务处理方法是否为切面方法,确定业务处理方法的执行方式。
在一些实施例中,根据业务处理方法是否为切面方法,确定业务处理方法执行的执行方式包括:在业务处理方法不为切面方法的情况下,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务业务处理方法的执行方式。
在一些实施例中,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务处理方法的执行方式包括:在父类具有绑定的综合方法的情况下,执行父类绑定的综合方法;在父类不具有绑定的综合方法的情况下,执行业务处理方法。
在一些实施例中,与处理过程相关的切面方法包括多个相关切面方法,综合方法包含的多个相关切面方法和原始方法根据处理过程进行排序。
在一些实施例中,根据业务处理方法是否为切面方法,确定业务处理方法执行的执行方式包括:在业务处理方法为切面方法,且业务处理方法在绑定的综合方法中具有排序在前的相关切面方法或原始方法的情况下,先执行排序在前的相关切面方法或原始方法再执行业务处理方法;在业务处理方法为切面方法,且业务处理方法不具有排序在前的相关切面方法或原始方法的情况下,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,先执行排序在前的相关切面方法再执行业务处理方法包括:根据业务处理方法的相关参数,生成调用对象;根据调用对象确定排序在前的相关切面方法或原始方法的输入参数,并根据输入参数执行排序在前的相关切面方法或原始方法。
在一些实施例中,根据业务处理方法的相关参数,生成调用对象包括:根据相关参数的数量和参数类型,确定相关参数的内存地址;根据内存地址,获取相关参数的参数值;根据参数值和参数类型,生成调用对象。
在一些实施例中,先执行排序在前的相关切面方法或原始方法再执行业务处理方法包括:在排序在前的相关切面方法或原始方法执行完毕的情况下,获取返回值;根据返回值,执行业务处理方法。
在一些实施例中,根据业务的处理过程,利用与处理过程相关的原始方法和切面方法生成综合方法包括:在处理过程相关的原始方法所属的类未绑定过其他综合方法的情况下,为所属的类注入强制转发方法,用于响应于处理过程相关的原始方法被调用,调用绑定的综合方法;在处理过程相关的原始方法所属的类绑定过其他综合方法的情况下,利用强制转发方法替换所属的类的原有转发方法。
根据本公开的另一些实施例,提供一种业务的处理装置,包括:生成单元,用于根据业务的处理过程,利用与处理过程相关的原始方法和切面方法生成综合方法,原始方法用于处理业务的基础业务逻辑,切面方法用于处理业务的附加业务逻辑;绑定单元,用于将综合方法与原始方法所属的对象和所属的类绑定;执行单元,用于响应于有业务处理方法被调用,根据业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,执行单元在具有绑定的综合方法的情况下,执行综合方法;在不具有绑定的综合方法的情况下,根据业务处理方法是否为切面方法,确定业务处理方法的执行方式。
在一些实施例中,执行单元在业务处理方法不为切面方法的情况下,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务业务处理方法的执行方式。
在一些实施例中,执行单元在父类具有绑定的综合方法的情况下,执行父类绑定的综合方法;在父类不具有绑定的综合方法的情况下,执行业务处理方法。
在一些实施例中,与处理过程相关的切面方法包括多个相关切面方法,综合方法包含的多个相关切面方法和原始方法根据处理过程进行排序。
在一些实施例中,执行单元在业务处理方法为切面方法,且业务处理方法在绑定的综合方法中具有排序在前的相关切面方法或原始方法的情况下,先执行排序在前的相关切面方法或原始方法再执行业务处理方法;在业务处理方法为切面方法,且业务处理方法不具有排序在前的相关切面方法或原始方法的情况下,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,生成单元根据业务处理方法的相关参数,生成调用对象;执行单元根据调用对象确定排序在前的相关切面方法或原始方法的输入参数,并根据输入参数执行排序在前的相关切面方法或原始方法。
在一些实施例中,生成单元根据相关参数的数量和参数类型,确定相关参数的内存地址;根据内存地址,获取相关参数的参数值;根据参数值和参数类型,生成调用对象。
在一些实施例中,执行单元在排序在前的相关切面方法或原始方法执行完毕的情况下,获取返回值;根据返回值,执行业务处理方法。
在一些实施例中,生成单元在处理过程相关的原始方法所属的类未绑定过其他综合方法的情况下,为所属的类注入强制转发方法,用于响应于处理过程相关的原始方法被调用,调用绑定的综合方法;在处理过程相关的原始方法所属的类绑定过其他综合方法的情况下,利用强制转发方法替换所属的类的原有转发方法。
根据本公开的又一些实施例,提供一种业务的处理装置,包括:存储器;和耦接至存储器的处理器,处理器被配置为基于存储在存储器装置中的指令,执行上述任一个实施例中的业务的处理方法。
根据本公开的再一些实施例,提供一种非易失性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一个实施例中的业务的处理方法。
在上述实施例中,通过类、对象、方法的三级绑定方式将切面方法和原始方法绑定,确定了切面方法与调用的业务处理方法之间的关联关系。这样,能够快速识别出需要添加切面方法的原始方法,从而提高业务处理效率。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开:
图1示出本公开的业务的处理方法的一些实施例的流程图;
图2示出图1的步骤110和步骤120的一些实施例的流程图;
图3示出图1的步骤130的一些实施例的流程图;
图4示出图3的步骤1340的一些实施例的流程图;
图5示出本公开的业务的处理方法的另一些实施例的流程图;
图6示出本公开的业务的处理装置的一些实施例的框图;
图7示出本公开的业务的处理装置的另一些实施例的框图;
图8示出本公开的业务的处理装置的又一些实施例的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
如前所述,Selector方式增加了通用的info参数作为切面方法实现的第一个参数,造成原始方法的参数形式被破坏。这导致需要添加切面方法的原始方法无法被快速识别出。
而且,Selector方式无法在切面方法中获取前序切面方法或者原始方法的返回值;无法于在前切面方法中灵活修改在后切面方法的输入参数。
针对上述技术问题,本公开通过三级绑定方式将切面方法与原始方法所属的类、对象进行绑定,能够降低切面方法的开发成本,避免晦涩难懂的切面方法声明方式,从而提高业务处理效率;还可以通过输入参数、返回值的方式将各切面方法、原始方法进行灵活衔接。
在一些实施例中,本公开的技术方案可以通过注册绑定模块、强制转发模块和递归调用模块实现。
例如,注册绑定模块用于处理各个切面方法与原始方法之间的绑定关系。注册绑定模块将切面方法的相关信息存储到由类、对象、方法构成的三级存储中作为映射关系。根据此映射关系在原始方法所属的对象中注册强制转发方法,确保原始方法被调用时进入强制转发模块。
强制转发模块处理原始方法调用时的强制转发逻辑,打断原始方法的正常执行,时期流转到含有各个切面方法的递归调用模块。递归调用模块通过之前的三级存储中保存的各切面方法的映射关系,递归调用执行各切面方法直至执行到原始方法。
例如,可以通过如下的实施例实现本公开的技术方案。
图1示出本公开的业务的处理方法的一些实施例的流程图。
如图1所示,处理方法包括:步骤110,生成综合方法;步骤120,绑定所属对象和类;和步骤130,确定业务处理方法的执行方式。
在步骤110中,根据业务的处理过程,利用与处理过程相关的原始方法和切面方法生成综合方法。原始方法用于处理业务的基础业务逻辑,切面方法用于处理业务的附加业务逻辑。
在步骤120中,将综合方法与所述原始方法所属的对象和所属的类绑定。
在一些实施例中,在声明一个切面方法时,可以调用对外暴露的API(ApplicationProgramming Interface,应用程序接口),将该切面方法与相应的类进行绑定,以实现为该类增加切面方法的功能。例如,一个类可以增加多个切面方法,一个切面方法内部可以绑定一个类中多个原始方法。
在一些实施例中,从对外调用入口开传入待处理的对象及其所属的类;通过运行时机制,获取出类中的所有的类方法、实例方法及其所有属性;根据属性生成set(属性设置)方法和get(属性获取)方法,获取该类中所有方法的列表;通过注册绑定模块,将列表中所有方法进行切面方法的绑定和注册。
在一些实施例中,可以通过图2中的实施例实现步骤110和120。
图2示出图1的步骤110和步骤120的一些实施例的流程图。
如图2所示,处理方法包括:步骤210,获取原始方法所属类的信息;步骤220,判断所属类是否绑定过综合方法;步骤230,注入强制转发方法;步骤240,生成综合方法;步骤250,注入强制转发方法;和步骤260,替换原转发方法。
在步骤210中,获取原始方法所属的类包含的各方法的相关信息。
在一些实施例中,注册绑定模块可以包括绑定模块和转入模块。绑定模块用于提取切面方法的特征(如切面方法对应的类、对象、原始方法等),并与要添加切面方法的类或对象进行绑定。
例如,绑定模块可以按照所属的类(Class),所属的对象(Object)以及相应的原始方法(Selector),将切面方法进行三级存储,并缓存在全局单例中。
在步骤220中,判断所属的类是否绑定过综合方法。在处理过程相关的原始方法所属的类绑定过其他综合方法的情况下,执行步骤230;在处理过程相关的原始方法所属的类未绑定过其他综合方法的情况下,执行步骤240。
在一些实施例中,在绑定关系建立之后,判断原始方法所属的类(当前处理的类)是否为“新类”,即是否绑定过综合方法。
在步骤230中,为所属的类注入强制转发方法,用于响应于处理过程相关的原始方法被调用,调用绑定的综合方法。
在一些实施例中,如果为“新类”,则为其注入强制转发方法。例如,强制转发方法为sgs_forwardInvocation方法,其内部实现为直接调用强制转发方法。这样,后续能够快速实现强制转发方法。
在步骤240中,根据切面方法和相应的原始方法,生成综合方法。
在步骤250中,为原始方法所属的类注入强制转发方法。
在步骤260中,利用强制转发方法替换所属的类的原有转发方法。
在一些实施例中,转入模块用于为对应的类注入强制转发方法,以替换其原有的转发方法。转入模块将原始方法的执行过程转入强制转发模块。
在一些实施例中,根据需要绑定切面方法的类、对象、原始方法的名称,生成综合方法的方法名。可以通过调用系统自带的注入方法,将综合方法注入到绑定的类中。
在一些实施例中,可以通过注入的强制转发方法,将综合方法转发到递归调用模块中。例如,将强制转发方法与类的原有转发方法进行交换,在调用该类的原有转发方法时,执行该强制转发方法。
在绑定了综合方法和所属的类、对象之后,可以图1中的其他步骤继续处理任务。
在步骤130中,响应于有业务处理方法被调用,根据业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,可以通过图3中的实施例实现步骤130。
图3示出图1的步骤130的一些实施例的流程图。
如图3所示,步骤130包括:步骤1310,调用业务处理方法;步骤1320,判断是否具有绑定的综合方法;步骤1330,执行综合方法;和步骤1340,再次确定执行方式。
在步骤1310中,调用业务处理方法。该业务方法可能是原始方法或切面方法。
在步骤1320中,判断该业务处理方法所属的类和对象是否具有绑定的综合方法。在具有绑定的综合方法的情况下,执行步骤1330;在不具有绑定的综合方法的情况下,执行步骤1340。
在步骤1330中,执行绑定的综合方法。
在步骤1340中,根据业务处理方法是否为切面方法,确定业务处理方法的执行方式。
在一些实施例中,可以通过图4中的实施例实现步骤1340。
图4示出图3的步骤1340的一些实施例的流程图。
如图4所示,步骤1340包括:步骤410,检测业务处理方法;步骤420,判断是否为切面方法;步骤430,判断是否找到前序切面方法;步骤440,执行前序切面方法;步骤450,判断父类是否绑定综合方法;步骤460,执行父类综合方法;和步骤470,执行原始方法。
在步骤410中,对调用的业务处理方法进行检测。例如,强制转发模块响应于有业务处理方法被调用后,从三级存储的映射关系中后去该方法对应的综合方法。
在步骤420中,判断业务处理方法是否为切面方法。在业务处理方法为切面方法的情况下,执行步骤430;在业务处理方法不为切面方法的情况下,执行步骤450。
在一些实施例中,如果业务处理方法的方法名称与注册绑定模块生成的唯一的综合方法的方法名称匹配,则业务处理方法为切面方法。
在步骤430中,判断业务处理方法在绑定的综合方法中是否具有排序在前的相关切面方法(前序切面方法)或原始方法。
在一些实施例中,与处理过程相关的切面方法包括多个相关切面方法。综合方法包含的多个相关切面方法和原始方法根据处理过程进行排序。
在一些实施例中,在业务处理方法在绑定的综合方法中具有排序在前的相关切面方法或原始方法的情况下,执行步骤440;在业务处理方法不具有排序在前的相关切面方法或原始方法的情况下,执行步骤450。
例如,如果三级存储中存在多个绑定的切面方法,优先执行排序在最后的切面方法(对应处理过程中需要最先执行的逻辑)绑定的综合方法。这样,实现了不执行原始方法,转而执行综合方法的目的。
例如,从三级存储中找出所属的类中该切面方法的前一个切面方法,转而强制执行前一个切面方法。这样,实现了在一个切面方法中调用到其前序切面方法的目的。
在步骤440中,先执行排序在前的相关切面方法或原始方法再执行业务处理方法。
在步骤450中,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务业务处理方法的执行方式。在父类具有绑定的综合方法的情况下,执行步骤460;在父类不具有绑定的综合方法的情况下,执行步骤470。
在一些实施例中,执行前序切面方法时,可以递归调用之前的业务处理方法。
在一些实施例中,如果无法找到前序切面方法,则转而寻找父类是否存在三级存储的映射关系。如果存在,则转入到父类的切面方法执行流程。这样,保证了切面方法不会影响原始方法的继承关系。
在步骤460中,执行父类绑定的综合方法。例如,执行父类绑定的综合方法时,可以递归调用之前的业务处理方法。
在步骤470中,执行业务处理方法。例如,如果上述查找方法都未成功,则会直接执行原始方法。
在一些实施例中,通过递归调用模块,可以在当前切面方法中执行该切面方法的前一个切面方法,并获取相应结果。递归调用模块通过与强制转发模块配合,实现切面方法到切面方法,最终到原始方法的递归调用过程。
图5示出本公开的业务的处理方法的另一些实施例的流程图。
如图5所示,处理方法包括:步骤510,调用业务处理方法;步骤520,执行前序切面方法;步骤530,获取输入参数;步骤540,强制转发;步骤550,获取递归调用返回值;和步骤560,执行后序切面方法。
在步骤510中,调用业务处理方法,该业务处理方法为切面方法且具有前序切面方法和后序切面方法(排序在后的相关切面方法)或原始方法。
在步骤520中,执行前序切面方法。
在步骤530中,获取前序切面方法的输入参数。
在一些实施例中,根据业务处理方法的相关参数,生成调用对象。例如,根据相关参数的数量和参数类型,确定相关参数的内存地址;根据内存地址,获取相关参数的参数值;根据参数值和参数类型,生成调用对象。根据调用对象确定排序在前的相关切面方法或原始方法的输入参数。
在一些实施例中,递归调用模块通过系统API获取到当前切面方法的参数数量与参数类型,以计算出各参数的内存地址。这样,可以动态获取到当前切面方法的所有相关参数。根据每个参数的具体值和类型,动态拼装出综合方法的调用对象(NSInvocation),传入强制转发模块中。
在步骤540中,根据业务处理方法所属的类事先注入的强制转发方法,根据输入参数执行排序在前的相关切面方法或原始方法。
在步骤550中,在排序在前的相关切面方法或原始方法执行完毕的情况下,获取返回值;根据返回值,执行业务处理方法。
在步骤560中,执行后序切面方法。
在一些实施例中,递归调用模块动态获取参数,并根据当前切面方法的特征和参数值,动态拼装出调用对象。将调用对象作为输入参数传入到强制转发模块中。例如,可以将当前切面方法的输入参数和方法名称传入强制转发模块。
强制转发模块按照根据输入参数、方法名称和业务处理过程的相应逻辑,进行切面方法的强制转发和执行。例如,可以触发上一个切面方法或原始方法的执行,当前切面方法执行完毕后可以获取返回值。至此一个切面方法内部的递归调用完成。当存在多个相关切面方法时,可以递归执行上述过程,从而实现多切面方法之间的递归调用。
上述实施例中,通过类、对象、方法划分成的三级存储的方式进行切面方法绑定。通过自定义的三层包含关系确定了切面方法与原始方法之间的关联关系。
通过强制转发方法,分别从三级存储中寻找切面方法、前序切面方法、父类切面方法、原始方法,将当前切面方法的调用逻辑强制转发到对应的原始方法中。
通过参数的动态获取,将当前切面方法递归调用到前序切面方法或者原始方法中。
通过递归的方式,以原始方法入口为起点对绑定的各切面方法进行层层递归调用,直至执行到原始方法为止。
图6示出本公开的业务的处理装置的一些实施例的框图。
如图6所示,业务的处理装置6包括生成单元61、绑定单元62和执行单元63。
生成单元61根据业务的处理过程,利用与处理过程相关的原始方法和切面方法生成综合方法。原始方法用于处理业务的基础业务逻辑,切面方法用于处理业务的附加业务逻辑。
在一些实施例中,生成单元61在处理过程相关的原始方法所属的类未绑定过其他综合方法的情况下,为所属的类注入强制转发方法,用于响应于处理过程相关的原始方法被调用,调用绑定的综合方法;在处理过程相关的原始方法所属的类绑定过其他综合方法的情况下,利用强制转发方法替换所属的类的原有转发方法。
绑定单元62将综合方法与原始方法所属的对象和所属的类绑定。
执行单元63响应于有业务处理方法被调用,根据业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,执行单元63在具有绑定的综合方法的情况下,执行综合方法;在不具有绑定的综合方法的情况下,根据业务处理方法是否为切面方法,确定业务处理方法的执行方式。
在一些实施例中,执行单元63在业务处理方法不为切面方法的情况下,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务业务处理方法的执行方式。
在一些实施例中,执行单元63在父类具有绑定的综合方法的情况下,执行父类绑定的综合方法;在父类不具有绑定的综合方法的情况下,执行业务处理方法。
在一些实施例中,与处理过程相关的切面方法包括多个相关切面方法,综合方法包含的多个相关切面方法和原始方法根据处理过程进行排序。
在一些实施例中,执行单元63在业务处理方法为切面方法,且业务处理方法在绑定的综合方法中具有排序在前的相关切面方法或原始方法的情况下,先执行排序在前的相关切面方法或原始方法再执行业务处理方法;在业务处理方法为切面方法,且业务处理方法不具有排序在前的相关切面方法或原始方法的情况下,根据业务处理方法所属类的父类是否具有绑定的综合方法,确定业务处理方法的执行方式。
在一些实施例中,生成单元61根据业务处理方法的相关参数,生成调用对象;执行单元63根据调用对象确定排序在前的相关切面方法或原始方法的输入参数,并根据输入参数执行排序在前的相关切面方法或原始方法。
在一些实施例中,生成单元61根据相关参数的数量和参数类型,确定相关参数的内存地址;根据内存地址,获取相关参数的参数值;根据参数值和参数类型,生成调用对象。
在一些实施例中,执行单元63在排序在前的相关切面方法或原始方法执行完毕的情况下,获取返回值;根据返回值,执行业务处理方法。
图7示出本公开的业务的处理装置的另一些实施例的框图。
如图7所示,该实施例的业务的处理装置7包括:存储器71以及耦接至该存储器71的处理器72,处理器72被配置为基于存储在存储器71中的指令,执行本公开中任意一个实施例中的业务的处理方法。
其中,存储器71例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序Boot Loader、数据库以及其他程序等。
图8示出本公开的业务的处理装置的又一些实施例的框图。
如图8所示,该实施例的业务的处理装置8包括:存储器810以及耦接至该存储器810的处理器820,处理器820被配置为基于存储在存储器810中的指令,执行前述任意一个实施例中的业务的处理方法。
存储器810例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序Boot Loader以及其他程序等。
业务的处理装置8还可以包括输入输出接口830、网络接口840、存储接口850等。这些接口830、840、850以及存储器810和处理器820之间例如可以通过总线860连接。其中,输入输出接口830为显示器、鼠标、键盘、触摸屏、麦克、音箱等输入输出设备提供连接接口。网络接口840为各种联网设备提供连接接口。存储接口850为SD卡、U盘等外置存储设备提供连接接口。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质包括但不限于磁盘存储器、CD-ROM、光学存储器等上实施的计算机程序产品的形式。
至此,已经详细描述了根据本公开的业务的处理方法、业务的处理装置和非易失性计算机可读存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。
Claims (12)
1.一种业务的处理方法,包括:
根据业务的处理过程,利用与所述处理过程相关的原始方法和切面方法生成综合方法,所述原始方法用于处理所述业务的基础业务逻辑,所述切面方法用于处理所述业务的附加业务逻辑;
将所述综合方法与所述原始方法所属的对象和所属的类绑定;
响应于有业务处理方法被调用,根据所述业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定所述业务处理方法的执行方式。
2.根据权利要求1所述的处理方法,其中,所述根据所述业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定所述业务处理方法的执行方式包括:
在具有绑定的综合方法的情况下,执行所述综合方法;
在不具有绑定的综合方法的情况下,根据所述业务处理方法是否为切面方法,确定所述业务处理方法的执行方式。
3.根据权利要求2所述的处理方法,其中,所述根据所述业务处理方法是否为切面方法,确定所述业务处理方法执行的执行方式包括:
在所述业务处理方法不为切面方法的情况下,根据所述业务处理方法所属类的父类是否具有绑定的综合方法,确定所述业务业务处理方法的执行方式。
4.根据权利要求3所述的处理方法,其中,所述根据所述业务处理方法所属类的父类是否具有绑定的综合方法,确定所述业务处理方法的执行方式包括:
在所述父类具有绑定的综合方法的情况下,执行所述父类绑定的综合方法;
在所述父类不具有绑定的综合方法的情况下,执行所述业务处理方法。
5.根据权利要求2所述的处理方法,其中,
与所述处理过程相关的切面方法包括多个相关切面方法,所述综合方法包含的所述多个相关切面方法和所述原始方法根据所述处理过程进行排序;
所述根据所述业务处理方法是否为切面方法,确定所述业务处理方法执行的执行方式包括:
在所述业务处理方法为切面方法,且所述业务处理方法在绑定的综合方法中具有排序在前的相关切面方法或原始方法的情况下,先执行所述排序在前的相关切面方法或原始方法再执行所述业务处理方法;
在所述业务处理方法为切面方法,且所述业务处理方法不具有所述排序在前的相关切面方法或原始方法的情况下,根据所述业务处理方法所属类的父类是否具有绑定的综合方法,确定所述业务处理方法的执行方式。
6.根据权利要求5所述的处理方法,其中,所述先执行所述排序在前的相关切面方法再执行所述业务处理方法包括:
根据所述业务处理方法的相关参数,生成调用对象;
根据所述调用对象确定所述排序在前的相关切面方法或原始方法的输入参数,并根据所述输入参数执行所述排序在前的相关切面方法或原始方法。
7.根据权利要求6所述的处理方法,其中,所述根据所述业务处理方法的相关参数,生成调用对象包括:
根据所述相关参数的数量和参数类型,确定所述相关参数的内存地址;
根据所述内存地址,获取所述相关参数的参数值;
根据所述参数值和所述参数类型,生成所述调用对象。
8.根据权利要求5所述的处理方法,其中,所述先执行所述排序在前的相关切面方法或原始方法再执行所述业务处理方法包括:
在所述排序在前的相关切面方法或原始方法执行完毕的情况下,获取返回值;
根据所述返回值,执行所述业务处理方法。
9.根据权利要求1-8任一项所述的处理方法,其中,所述将所述综合方法与所述原始方法所属的对象和所属的类绑定包括:
在所述处理过程相关的原始方法所属的类未绑定过其他综合方法的情况下,为所述所属的类注入强制转发方法,用于响应于所述处理过程相关的原始方法被调用,调用绑定的综合方法;
在所述处理过程相关的原始方法所属的类绑定过其他综合方法的情况下,利用所述强制转发方法替换所述所属的类的原有转发方法。
10.一种业务的处理装置,包括:
生成单元,用于根据业务的处理过程,利用与所述处理过程相关的原始方法和切面方法生成综合方法,所述原始方法用于处理所述业务的基础业务逻辑,所述切面方法用于处理所述业务的附加业务逻辑;
绑定单元,用于将所述综合方法与所述原始方法所属的对象和所属的类绑定;
执行单元,用于响应于有业务处理方法被调用,根据所述业务处理方法所属的对象和所属的类是否具有绑定的综合方法,确定所述业务处理方法的执行方式。
11.一种业务的处理装置,包括:
存储器;和
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行权利要求1-9任一项所述的业务的处理方法。
12.一种非易失性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-9任一项所述的业务的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011052680.3A CN113742038A (zh) | 2020-09-29 | 2020-09-29 | 业务的处理方法、装置和非易失性计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011052680.3A CN113742038A (zh) | 2020-09-29 | 2020-09-29 | 业务的处理方法、装置和非易失性计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113742038A true CN113742038A (zh) | 2021-12-03 |
Family
ID=78728056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011052680.3A Pending CN113742038A (zh) | 2020-09-29 | 2020-09-29 | 业务的处理方法、装置和非易失性计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742038A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005521111A (ja) * | 2001-07-06 | 2005-07-14 | コンピュータ アソシエイツ シンク,インコーポレイテッド | ビジネスプロセスポリシーオブジェクト |
CN101276271A (zh) * | 2007-03-29 | 2008-10-01 | 北京邮电大学 | 一种面向切面编程的拦截器系统及方法 |
US7613726B1 (en) * | 2006-03-27 | 2009-11-03 | Emc Corporation | Framework for defining and implementing behaviors across and within content object types |
CN110221829A (zh) * | 2019-05-10 | 2019-09-10 | 杭州米雅信息科技有限公司 | 信息处理方法及其系统、计算机系统及计算机可读介质 |
-
2020
- 2020-09-29 CN CN202011052680.3A patent/CN113742038A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005521111A (ja) * | 2001-07-06 | 2005-07-14 | コンピュータ アソシエイツ シンク,インコーポレイテッド | ビジネスプロセスポリシーオブジェクト |
US7613726B1 (en) * | 2006-03-27 | 2009-11-03 | Emc Corporation | Framework for defining and implementing behaviors across and within content object types |
CN101276271A (zh) * | 2007-03-29 | 2008-10-01 | 北京邮电大学 | 一种面向切面编程的拦截器系统及方法 |
CN110221829A (zh) * | 2019-05-10 | 2019-09-10 | 杭州米雅信息科技有限公司 | 信息处理方法及其系统、计算机系统及计算机可读介质 |
Non-Patent Citations (2)
Title |
---|
BERTA, PETER ET AL.: "Synergy of Organizational Patterns and Aspect-Oriented Programming", 2019 IEEE 15TH INTERNATIONAL SCIENTIFIC CONFERENCE ON INFORMATICS (INFORMATICS 2019), 17 June 2020 (2020-06-17), pages 439 - 444 * |
沈凯;: "利用反射和动态代理机制实现面向切面的程序设计", 计算机时代, no. 11, 2 November 2010 (2010-11-02), pages 56 - 58 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190243912A1 (en) | Rapid design, development, and reuse of blockchain environment and smart contracts | |
CN112486563A (zh) | 一种代码管理方法、系统、计算设备及可读存储介质 | |
CN111338716A (zh) | 基于规则引擎的数据处理方法、装置及终端设备 | |
CN114327375A (zh) | 一种检测java代码依赖关系的方法、工具以及计算机设备 | |
CN114816170A (zh) | 规则方案生成方法、装置、介质及电子设备 | |
Wolczko | Semantics of object-oriented languages | |
CN108446301B (zh) | 业务文件拆分汇总方法、装置及设备 | |
CN115525534A (zh) | 基于swagger的接口测试的测试用例生成方法、生成平台 | |
CN109947488B (zh) | 通用功能模块的对象初始化方法、装置、设备和存储介质 | |
CN113742038A (zh) | 业务的处理方法、装置和非易失性计算机可读存储介质 | |
CN115269040B (zh) | 一种租户业务应用的拓展方法、装置及系统 | |
CN111352631A (zh) | 一种接口兼容性检测方法及装置 | |
CN111158667A (zh) | 代码注入方法和装置、电子设备及存储介质 | |
CN113110870B (zh) | 一种资源打包管理方法、装置、设备及存储介质 | |
CN112181816B (zh) | 一种基于场景的接口测试方法、装置、计算机设备及介质 | |
CN111538491B (zh) | 数据事件处理方法、装置、设备和存储介质 | |
CN115033590A (zh) | 一种多域数据融合的方法、装置和存储介质 | |
CN114691496A (zh) | 单元测试方法、装置、计算设备及介质 | |
US20220075875A1 (en) | Language-independent application monitoring through aspect-oriented programming | |
CN114358936A (zh) | 一种基于微服务区块链的智能合约运行方法 | |
CN110750271B (zh) | 服务聚合、聚合服务的执行方法、装置和电子设备 | |
CN116263717A (zh) | 基于事件的订单业务处理方法及装置 | |
CN113485686A (zh) | 信息系统程序的生成方法、装置、电子设备及存储介质 | |
CN113326034A (zh) | 策略实现的调用方法及装置、电子设备、存储介质 | |
CN106126313A (zh) | 一种基于Ambari集成Solr的方法及服务器 |
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 |