CN102591638B - 事件激发的前后方法执行 - Google Patents

事件激发的前后方法执行 Download PDF

Info

Publication number
CN102591638B
CN102591638B CN201110416404.5A CN201110416404A CN102591638B CN 102591638 B CN102591638 B CN 102591638B CN 201110416404 A CN201110416404 A CN 201110416404A CN 102591638 B CN102591638 B CN 102591638B
Authority
CN
China
Prior art keywords
preprocessor
post processor
invoked
input parameter
rreturn value
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.)
Expired - Fee Related
Application number
CN201110416404.5A
Other languages
English (en)
Other versions
CN102591638A (zh
Inventor
P·维拉森
K·西蒙森
M·C·马西亚斯
R·戈图穆卡拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102591638A publication Critical patent/CN102591638A/zh
Application granted granted Critical
Publication of CN102591638B publication Critical patent/CN102591638B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及事件激发的前后方法执行。启用对企业应用这样的软件程序的源代码的定制,而无须修改软件的源代码。源代码的外部片段可以在调用所选方法之前和/或之后执行。在指定的方法调用之前执行的外部方法可以改变用来调用该指定方法的参数值,在已经调用指定方法之后执行的方法可以改变从该指定方法返回的值。

Description

事件激发的前后方法执行
技术领域
本发明涉及计算机领域,尤其涉及代码执行。 
背景技术
随着计算设备的快速增长,软件已成为日常工作和个人生活的主要部分。企业应用是软件的使用户能执行企业相关任务的主要部分,所述任务诸如会计、顾客关系管理、盘点、销售、市场营销等等。集成的和模块化的企业应用变得越来越普遍。本地安装的或主存的企业应用提供和各种各样的企业方面有关的服务。由于企业(也包括非商业组织)的大小和类型会不同,因此它们的需求通常由专用企业应用或定制版本的通用企业应用来进行服务。 
设计诸如企业应用这样的软件程序是一项复杂的任务,所述任务一般涉及深入研究、大量代码、多种测试等等。当涉及像企业应用这样的复杂软件的定制时,设计者或者可以提供有限量的缺省替代(这可限制用户体验),或者为定制代码的开发者提供对完整代码的访问。然而,当软件应用的大部分或完整代码可访问时,原始开发者失去对程序特征的控制。各个开发者作出的改变使对原始程序执行的任何测试无效,可能发生原始开发者不具有控制的非预期的错误或执行结果。因此,打开代码会有使程序目的(即用户满意)失败的不想要的结果。 
发明内容
提供本发明内容以便以简化的形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并不旨在专门标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。 
各实施例涉及允许对像企业应用这样的软件程序的源代码进行定制,而无须修改该软件的源代码。根据一些实施例,源代码的外部片段可以在调用所选 方法之前和/或之后执行。在指定的方法调用之前执行的外部方法可以改变用来调用该指定方法的参数值,在已经调用指定方法之后执行的方法可以改变从该指定方法返回的值。 
通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。可以理解,前述一般描述和以下的详细描述都是说明性的,并且不限制所要求保护的各方面。 
附图说明
图1是示出在软件环境中的示例方法和处理程序的概念图; 
图2示出示例的前后激活图; 
图3示出另一示例的前后激活图; 
图4是可实现根据各实施例的系统的联网环境; 
图5是可实现各实施例的示例计算操作环境的框图;以及 
图6示出根据各实施例、使用预处理程序和后处理程序来定制软件程序的过程的逻辑流程图。 
具体实施方式
如上简述,通过插入前后方法处理程序,可以定制软件应用,而无须修改源代码。预处理程序可以修改被传递到所选方法上的参数,而后处理程序可以修改来自所选方法的返回值。在一些实现中,后处理程序也可以修改到后续后处理程序的参数。在以下具体实施方式中,参考了构成具体实施方式的一部分并作为说明示出各具体实施例或示例的附图。可组合这些方面,可利用其他方面,并且可以做出结构上的改变而不背离本发明的精神或范围。因此,以下具体实施方式并不旨在限制,并且本发明的范围由所附权利要求及其等效方案来限定。 
尽管在结合在计算设备上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述了各实施方式,但是本领域的技术人员会认识到各方面也可以结合其它程序模块实现。 
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、 程序、组件、数据结构和其它类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其它计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、小型计算机、大型计算机以及类似计算设备。各实施方式还能在任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。 
各实施例可被实现为计算机实现的过程(方法)、计算系统、或者诸如计算机程序产品或计算机可读介质等的制品。计算机程序产品可以是计算机系统可读并且编码包括用于使计算机或计算系统执行示例过程的指令的计算机程序的计算机存储介质。计算机可读存储介质可例如通过易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘以及类似存储介质中的一个或多个来实现。 
在整个说明书中,术语“平台”可以是用于执行应用的软件和硬件组件的组合,其中可实现各实施例。平台的示例包括但不限于,在多个服务器上执行的托管服务、在单个服务器上执行的应用以及类似系统。术语“服务器”一般指通常在联网环境中执行一个或多个软件程序的计算设备。然而,服务器还可以被实现为被视作网络上的服务器的、在一个或多个计算设备上执行的虚拟服务器(软件程序)。尽管不修改源代码而定制程序的过程中使用企业应用作为用于实现预处理程序和后处理程序的例子,但是各实施例可以在任何类型的应用中实现。以下提供关于这些技术和示例操作的更多细节。 
图1包括示出在软件环境中的示例方法和处理程序的概念图100。源代码的基本形式可以包括语句、声明、方法、操作符和关键词。方法是或者与类相关联(该情况下它被称为类方法或静态方法)或者与对象相关联的子例程(在该情况下它是实例方法)。方法通常包括用于执行动作的一系列编程语句、用于定制那些动作的一组输入参数、以及可能的一个或多个输出值(也称为(诸)返回值)。方法提供了用于访问和处理所指定的数据部分的机制。 
基本上,方法或子例程基于输出一个或多个返回值的所提供的输入参数,对一数据部分执行自包含的计算。源代码可以包括从几种方法到几千种方法。典型的企业应用会具有较高的复杂度范围并且有大量方法。由于各方法彼此交互(即,一个方法的返回值可以被用作一个或多个其他方法的输入参数),则在软件开发中,操作的一致性和已定义的限制是显著的设计参数。因此,开发者在设计阶段定义了对他们的程序的特定限制,这些特定限制关于程序能做什么、程序可以获得什么输入、程序可以提供什么输出、怎样控制用户界面、等等。
在诸如企业运营、类型、需求等每一方面都有各种各样的变化的当今世界,对通用软件设计的限制对于程序的顾客来说是有相反生产性的。另一方面,软件程序的测试、验证、维护、升级等固有地需要那些限制。因此,新兴的软件定制行业利用二分法,基于可用的通用解决方案来向更多的顾客提供定制解决方案。如上面所讨论的,允许定制者访问完整的源代码使软件开发者回到起点,因为同一软件可能有许多定制版本,顾客可以相信原始开发者最终是负责的。 
根据各实施例的软件定制系统允许定制复杂的软件而无须修改源代码,同时允许定制者通过定制程序中每一个方法的输入和输出来修改该程序的许多方面。这可以通过为软件程序102的源代码104中的每一方法(108-1、108-2)之前和之后的预处理程序(106-1、106-2)和/或后处理程序(110-1、110-2)提供“挂钩”或插入点来完成,软件程序102可由服务器、台式机、膝上型电脑、手持电脑、车载电脑、智能电话和类似的计算设备来执行。 
预处理程序和后处理程序本质上是可由定制开发者定义的外部方法,或者从原始开发者所提供的多个可选方法中被选择。预处理程序可以利用它所相关联的方法的输入参数,并且提供其可能修改的参数值作为到该方法的输入参数,从而可能修改该方法的输入。后处理程序可以将它所相关联的方法的返回值作为输入参数。因此,后处理程序可以修改该方法的输出。由此,可以修改源代码中一个或多个方法的输入和/或输出,而无须修改源代码本身。 
图2示出示例的前后激活图200。如图200所示,在源代码的常规执行中,过程(调用者202)可以将输入参数传递至方法208来调用方法208,并且接收作为执行方法208的结果的返回值。为了定制输入参数和返回值之间的关系,方法208会需要被修改就意味着源代码本身需要被修改。在通用企业应用中,其中大量特定场景可导致对许多定制的需求,这可意味着存在大量的定制版本的程序。考虑到典型的软件程序中通常包括多少种方法,可能要求测试、验证和维护的定制的数量可能指数性增长,并且随之的所有者成本也提高。 
在根据各实施例的系统中,可以采用一个或多个预处理程序(204、206)和后处理程序(210、212)以便在不实际修改方法208的情况下定制源代码。预处理程序和后处理程序可以结合所选方法使用,并且它们可用于任何配置(即,零个、一个、或多个预处理程序和/或后处理程序可以与所选方法相关联)中。在示例情况下,两个预处理程序和两个后处理程序与方法208相关联。当调用方法208时,用被发送至方法208的参数来调用(214)第一预处理程序204。预处理程序204可以计算参数的新值并将它们传递至预处理程序206,预处理程序206可以基于接收到的输入来计算进一步的其他值(216)。第二预处理程序206基于(第一预处理程序204所计算的)参数而计算的值可以被传递至方法208,方法就像它正常被执行地那样被执行(218)。预处理程序和/或后处理程序的次序可以根据程序定义来预定义,或者由定制开发者来定义。在还有其他实施例中,调用预处理程序和/或后处理程序的次序可以未被定义。 
根据其他实施例,除了方法的输入参数以外,也可以修改方法208的返回值。方法208的返回值可以被传递至第一后处理程序210,且该后处理程序被执行(220)。在多个后处理程序的情况下,在先的后处理程序的返回值可以被传递至随后的后处理程序(例如222),直到最后一个后处理程序被执行且其返回值在程序中被传播(224)。 
图3示出另一示例的前后激活图300。图300示出另一示例情况,其中在程序302内调用可定制的方法326。根据示例情况,有两个预处理程序和一个后处理程序与可定制方法326相关联。由此,结合程序中的方法可以使用任何数量的预处理程序和/或后处理程序。预处理程序304可以用可定制方法的参数首先调用(314)。预处理程序304所计算的值可以被提供给预处理程序306,预处理程序306被执行(316),且其计算的值被传递至可定制方法326本身。在该示例实施方式中,用接收自第二预处理程序的参数来执行可定制方法326(318),方法的返回值仅被提供给后处理程序310。在后处理程序310执行(320)后,该定制方法的返回值就被返回至程序。 
根据各实施例的基于预处理程序和后处理程序的机制提供了各事件,作为 在较高层解除源代码和任选定制代码间的耦合的方式。该机制在许多情况下使开发者能仅仅注册事件处理程序来向现有方法添加定制的行为,而不是必须复制并且然后保持所有的系统层代码。 
前后方法特征还使开发者能为现有的类和表方法注册静态事件处理程序(方法),类和表方法或者可以在正常方法执行的开始或结束处被调用。预处理程序可以访问并且可能修改到方法的输入变量,类似地,后处理程序可以访问并且可能修改来自方法的返回值。如果为一给定方法注册了多个事件处理程序,则它们的执行可以根据预定义的或未定义的次序。 
以上讨论的基于预处理程序和后处理程序的定制的配置和实现是为了例示的目的,并且不构成对各实施例的限制。可使用此处讨论的原理采用其它模块、进程和配置来实现各实施例。 
图4是可实现各实施例的示例联网环境。基于预处理程序和后处理程序的源代码定制可经由在一个或多个服务器414或诸如托管服务的单个服务器(例如web服务器)416上执行的软件来实现。平台可以通过网络410来与诸如智能电话413、膝上型计算机412、或台式计算机411(‘客户机设备’)等各个计算设备上的客户端应用进行通信。 
如上面所讨论的,插入点(“挂钩”)可以被置于应用的源代码中,使得可以实现预处理程序和后处理程序。当调用方法时,被调用的方法可以以预定义的次序为所指定的方法调用任何预处理程序。参数可以被传递至这些预处理程序中的每一个,每一个处理程序可以对被传递至下一处理程序、且最终至所指定方法的参数进行修改。当所指定的方法结束了其执行时,它会确定是否为所指定的方法规定了任何后处理程序。如果是,则会以预定义的已定义次序来调用这些处理程序。然后可由后处理程序的每一个来修改所返回的值。 
在联网环境中,如以前所讨论的,客户机设备411-413可允许对在远程服务器(例如,服务器414中的一个)上执行的应用进行访问。服务器可直接地或通过数据库服务器418来从数据存储419中检索相关的数据,或将相关的数据存储到数据存储419中。 
网络410可包括服务器、客户机、因特网服务供应商以及通信介质的任何拓扑结构。根据各实施例的系统可以具有静态或动态拓扑结构。网络410可包 括诸如企业网络等安全网络、诸如无线开放网络或因特网等非安全网络。网络410还可通过诸如公共交换电话网络(PSTN)或蜂窝网络等其他网络来协调通信。此外,网络410可包括诸如蓝牙或类似网络等短程无线网络。网络410提供此处描述的节点之间的通信。作为示例而非限制,网络410可以包括例诸如声学、RF、红外线和其它无线介质等的无线介质。 
可以采用计算设备、应用、数据源和数据分发系统的许多其它配置来实现通过预处理程序和后处理程序的源代码定制。此外,图4中所讨论的联网环境仅用于说明目的。各实施方式不限于示例应用、模块、或过程。 
图5及相关描述旨在提供对其中可实现各实施例的合适计算环境的简要概括描述。参考图5,示出了用于根据各实施的应用(诸如计算设备500)的示例计算操作环境的框图。在基本配置中,计算设备500可以是执行软件应用的任何计算设备并且包括至少一个处理单元502和系统存储器504。计算设备500还可包括协作执行程序的多个处理单元。取决于计算设备的确切配置和类型,系统存储器504可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。系统存储器504通常包括适于控制平台的操作的操作系统505,例如来自华盛顿州雷蒙德市的微软公司的 操作系统。系统存储器504还可以包括诸如程序模块506、企业应用522等一个或多个软件应用,软件应用可以在其源代码中包括定制挂钩524。 
企业应用522可以包括在方法之前和之后的预处理程序和后处理程序,使得可以修改所选方法的参数以及来自那些方法的返回值,从而在不实际修改源代码本身的情况下定制所述源代码。该基本配置在图5中由虚线508内的那些组件示出。 
计算设备500可以具有附加特征或功能。例如,计算设备500还可包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。在图5中通过可移动存储509和不可移动存储510示出这样的附加存储。计算机可读存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器504、可移动存储509和不可移动存储510都是计算机可读存储介质的示例。计算机可读存储介质包括但不限于,RAM、ROM、EEPROM、 闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光学存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或能用于存储所需信息且能够由计算设备500访问的任何其它介质。任何这样的计算机可读存储介质都可以是计算设备500的一部分。计算设备500还可以具有输入设备512,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备和类似输入设备。还可以包括输出设备514,诸如显示器、扬声器、打印机和其它类型的输出设备。这些设备在本领域中公知并且无需在此处详细讨论。 
计算设备500还可以包含允许该设备与其他设备518通信的通信连接516,诸如通过分布式计算环境中的无线网络、卫星链接、蜂窝链接和类似机制。其他设备518可包括执行通信应用的计算机设备、存储服务器和类似设备。通信连接516是通信介质的一个示例。通信介质可包括其中的计算机可读指令、数据结构、程序模块,并包括任何信息递送介质。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。 
各示例实施例还包括各种方法。这些方法可以用任何数量的方式,包括本文中所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。 
另一可任选方式是结合一个或多个人类操作者执行该方法的各个操作中的某一些来执行该方法的一个或多个操作。这些人类操作者无需彼此同在一处,而是其每一个可以仅与执行程序的一部分的机器同在一处。 
图6示出根据各实施例、使用预处理程序和后处理程序来定制源代码的过程600的逻辑流程图。过程600可在任何软件应用中实现。 
过程600从操作610开始,其中检测到对源代码中的所选方法的调用。被调用的方法可以在决定操作620确定是否存在任何预处理程序。根据一些实施例,在特定方法的调用之前和/或之后立即运行的(“触发”的)任选的或用户提供的源代码段可以作为修改它们所用的方法的参数和返回值的预处理程序和后处理程序被执行。如果存在预处理程序,它们可以在操作630被调用,它们的结果可以在操作640作为参数被传递至所选方法。 
在操作650,执行所选方法。在所选方法执行之后,作出另一确定,确定 在决定操作660处是否存在任何后处理程序。如果存在后处理程序,则所执行的方法的返回值可以在操作670被传递至它们(如果存在不止一个后处理程序,它们可以被顺序执行)。在操作680,调用后处理程序,修改所执行方法的返回值,从而在不修改源代码的情况下定制源代码。 
包括在过程600内的各操作是用于说明目的。根据各实施例的通过预处理程序和后处理程序的源代码定制可以使用此处所述的各原理通过具有更少或更多步骤的相似过程、以及不同的操作次序来实现。 
以上说明书、示例和数据提供了对各实施方式组成的制造和使用的全面描述。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求和各实施例的示例形式而公开的。 

Claims (15)

1.一种至少部分地由计算设备来执行的用于源代码定制的方法,所述方法包括:
响应于方法在程序的执行期间被调用(610),确定是否存在预处理程序方法(620);
如果存在预处理程序方法,则用被调用的方法的输入参数来执行预处理程序方法(630);
用预处理程序方法计算的值作为输入参数来执行所述被调用的方法(650);
如果存在后处理程序方法(660),则用所述被调用的方法的返回值作为输入参数来执行所述后处理程序方法(680);以及
在所述程序中传播所述后处理程序方法的返回值,其中所述预处理程序方法和所述后处理程序方法用于在不修改所述被调用的方法的源代码的情况下来定制所述被调用的方法的行为。
2.根据权利要求1所述的方法,其特征在于,还包括:
如果存在不止一个的预处理程序方法(204、206),则提供预处理程序方法的返回值作为后续预处理程序方法的输入参数,其中第一预处理程序方法接受所述被调用的方法(208)的输入参数作为输入参数,并且将上一个预处理程序方法所计算的值作为输入参数提供给所述被调用的方法。
3.根据权利要求1所述的方法,其特征在于,还包括:
如果存在不止一个的后处理程序方法(210、212),则向后处理程序方法提供所述被调用的方法(208)的返回值作为输入参数,并且提供所述后处理程序方法的返回值作为到一后续后处理程序方法的输入参数,其中在所述程序中传播上一个后处理程序方法的返回值。
4.如权利要求1所述的方法,其特征在于,所述预处理程序方法(204)和所述后处理程序方法(210)由定制开发者在多个任选的定制方法中选择。
5.根据权利要求1所述的方法,其特征在于,还包括:
使定制开发者能注册所述预处理程序方法(204)和所述后处理程序方法(210)。
6.如权利要求1所述的方法,其特征在于,所述预处理程序方法(204)和所述后处理程序方法(210)是静态事件处理程序。
7.如权利要求6所述的方法,其特征在于,所述静态事件处理程序用于所述程序(102)中的现有的类和表方法。
8.一种用于执行可定制的软件程序的计算设备,所述计算设备包括:
用于存储指令的存储器(504);
耦合至所述存储器的处理器(502),所述处理器结合所述存储器中存储的指令来执行所述可定制的软件程序,其中所述处理器被配置成:
使定制开发者能注册预处理程序方法和后处理程序方法中的至少一个;
响应于方法在程序执行期间被调用(610),确定是否注册了与被调用的方法相关联的预处理程序方法(620)和后处理程序方法(660)中的至少一个;
如果注册了与被调用的方法相关联的预处理程序方法,则在执行所述被调用的方法之前执行所述预处理程序方法;
用预处理程序方法计算的值作为所述被调用的方法的输入参数来执行所述被调用的方法(650);
如果注册了与被调用的方法相关联的后处理程序方法,则用所述被调用的方法的返回值作为后处理程序方法的输入参数来执行所述后处理程序方法(680);以及
在所述软件程序中传播所述后处理程序方法的返回值,其中所述预处理程序方法和所述后处理程序方法用于在不修改所述被调用的方法的源代码的情况下来定制所述被调用的方法的行为。
9.如权利要求8所述的计算设备,其特征在于,所述处理器还被配置成:
如果为被调用的方法(208)注册了不止一个的预处理程序方法(204、206),则将所述被调用的方法的输入参数提供给第一预处理程序方法,使用在先的预处理程序方法所计算的值作为一后续预处理程序方法的输入参数来执行每一个预处理程序方法,以及将上一个预处理程序方法所计算的值作为输入参数提供给被调用的方法。
10.如权利要求8所述的计算设备,其特征在于,所述处理器还被配置成:
如果为被调用的方法(208)注册了不止一个的后处理程序方法(210、212),则将所述被调用的方法的返回值提供给第一后处理程序方法作为输入参数,使用在先的后处理程序方法的返回值作为一后续后处理程序方法的输入参数来执行每一个后处理程序方法,以及在所述软件程序中传播上一个后处理程序方法的返回值。
11.如权利要求8所述的计算设备,其特征在于,所述处理器还被配置成:
使所述定制开发者能向程序表添加一属性,指定要忽视哪些预处理程序方法(204、206)以及哪些后处理程序方法(210、212)。
12.如权利要求11所述的计算设备,其特征在于,要在来自一组预定义的插入、更新和删除方法的至少一个上忽视所指定的预处理程序方法(204、206)和后处理程序方法(210、212)。
13.一种用于在不修改软件程序源代码的同时来定制所述软件程序的方法,所述方法包括:
使定制开发者能注册预处理程序方法和后处理程序方法中的至少一个;
对于程序源代码,提供在方法(108-1)之前的插入点(106-1)和方法(108-1)之后的另一插入点(110-1)中的至少一个;
如果在被调用的方法(208)之前插入预处理程序方法(204),则在执行所述被调用的方法之前执行所述预处理程序方法;
用预处理程序方法计算的值作为所述被调用的方法的输入参数来执行所述被调用的方法(650);
如果在被调用的方法(208)之后插入后处理程序方法(210),则用所述被调用方法的返回值作为所述后处理程序方法的输入参数来执行所述后处理程序方法;以及
在所述软件程序中传播所述后处理程序方法的返回值,其中所述预处理程序方法和所述后处理程序方法用于在不修改所述被调用的方法的源代码的情况下来定制所述被调用的方法的行为。
14.如权利要求13所述的方法,其特征在于,还包括:
将预处理程序方法(206)所计算的值传递至被调用的方法(208)作为输入参数;以及
将被调用的方法(208)的返回值传递至后处理程序方法(210)作为输入参数。
15.如权利要求14所述的方法,其特征在于,还包括:
允许在被调用的方法(208)执行之前的多个预处理程序方法(204、206)的顺序执行、以及在被调用的方法执行之后的多个后处理程序方法(210、212)的顺序执行,其中每个预处理程序方法和后处理程序方法的返回值被提供给相应的后续预处理程序方法和后处理程序方法作为输入参数。
CN201110416404.5A 2010-12-06 2011-12-05 事件激发的前后方法执行 Expired - Fee Related CN102591638B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/960,710 US20120144367A1 (en) 2010-12-06 2010-12-06 Events fired pre- and post-method execution
US12/960,710 2010-12-06

Publications (2)

Publication Number Publication Date
CN102591638A CN102591638A (zh) 2012-07-18
CN102591638B true CN102591638B (zh) 2015-01-28

Family

ID=46163488

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110416404.5A Expired - Fee Related CN102591638B (zh) 2010-12-06 2011-12-05 事件激发的前后方法执行

Country Status (5)

Country Link
US (1) US20120144367A1 (zh)
CN (1) CN102591638B (zh)
AU (1) AU2011338879B2 (zh)
WO (1) WO2012078350A2 (zh)
ZA (1) ZA201303464B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793706B2 (en) 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1568458A (zh) * 2001-08-17 2005-01-19 梁扶汉 无需修改现有代码即可增加新软件特征的方法
CN1648865A (zh) * 2004-01-14 2005-08-03 国际商业机器公司 为记录事件提供前置与后置处理程序的方法与装置
US7490214B2 (en) * 2006-06-12 2009-02-10 Sun Microsystems, Inc. Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355484A (en) * 1991-08-12 1994-10-11 International Business Machines Corporation Dynamically established event monitors in event management services of a computer system
US5450586A (en) * 1991-08-14 1995-09-12 Hewlett-Packard Company System for analyzing and debugging embedded software through dynamic and interactive use of code markers
DE69518123T2 (de) * 1994-06-23 2001-03-29 Ibm Visualisierung von objektorientierter Software
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US7069586B1 (en) * 2000-04-03 2006-06-27 Software Secure, Inc. Securely executing an application on a computer system
AU2001264713A1 (en) * 2000-05-19 2001-12-03 Wu-Hon Francis Leung Methods and apparatus for preventing software modifications from invalidating previously passed integration tests
GB0017201D0 (en) * 2000-07-14 2000-08-30 Ibm Generalised program hooks
US7069507B1 (en) * 2000-09-29 2006-06-27 Microsoft Corporation Event routing model for an extensible editor
EP1195676A3 (en) * 2000-10-03 2007-03-28 Microsoft Corporation Architecture for customizable applications
US7512935B1 (en) * 2001-02-28 2009-03-31 Computer Associates Think, Inc. Adding functionality to existing code at exits
US20030081007A1 (en) * 2001-10-31 2003-05-01 James Cyr Object oriented explorer type environment
US7836438B1 (en) * 2003-12-30 2010-11-16 Sap Ag Modified classfile registration with a dispatch unit that is responsible for dispatching invocations during runtime execution of modified bytecode
US20060026586A1 (en) * 2004-07-27 2006-02-02 Juergen Remmel Systems and methods for enabling functions in a computerized system
US7684349B2 (en) * 2005-07-26 2010-03-23 International Business Machines Corporation Method and system for transparently controlling the behavior of service methods in a service oriented architecture
US8533692B2 (en) * 2005-12-30 2013-09-10 Sap Ag Dynamic software enhancement parameters
US8001521B2 (en) * 2006-06-12 2011-08-16 Sap Ag Meta-date driven implementation of business objects and their transactional behavior
US20080127119A1 (en) * 2006-10-02 2008-05-29 Bulent Kasman Method and system for dynamic debugging of software
US7845006B2 (en) * 2007-01-23 2010-11-30 International Business Machines Corporation Mitigating malicious exploitation of a vulnerability in a software application by selectively trapping execution along a code path

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1568458A (zh) * 2001-08-17 2005-01-19 梁扶汉 无需修改现有代码即可增加新软件特征的方法
CN1648865A (zh) * 2004-01-14 2005-08-03 国际商业机器公司 为记录事件提供前置与后置处理程序的方法与装置
US7490214B2 (en) * 2006-06-12 2009-02-10 Sun Microsystems, Inc. Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space

Also Published As

Publication number Publication date
WO2012078350A3 (en) 2012-08-23
AU2011338879B2 (en) 2016-05-19
ZA201303464B (en) 2014-07-30
AU2011338879A1 (en) 2013-05-30
WO2012078350A2 (en) 2012-06-14
US20120144367A1 (en) 2012-06-07
CN102591638A (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
US8356056B2 (en) Functional extensions for business objects
US8108433B2 (en) Dynamic extension fields for business objects
EP3074863B1 (en) System and method for testing data representation for different mobile devices
US8630969B2 (en) Systems and methods for implementing business rules designed with cloud computing
US20080140671A1 (en) Extensible application platform
EP1868087A1 (en) System and method for configuration application programs
US20140136712A1 (en) Cloud resources as a service multi-tenant data model
US20100235275A1 (en) Card Processing
CN104067276A (zh) 客户机侧最小下载和模拟的页面导航特征
US20150178851A1 (en) Insurance product model relationships
CN110532041A (zh) 规则引擎参数配置方法、装置、计算机设备及存储介质
CN113110963A (zh) 业务处理方法、业务处理装置、电子设备及可读存储介质
CN102419709A (zh) 基于元数据的事件化
US20160034883A1 (en) Multi-destination routing of transactions
CN115993966B (zh) 应用开发系统及方法
CN104067262B (zh) 服务器侧最小下载和差错故障转移
CN108038665A (zh) 业务规则管理方法、装置、设备及计算机可读存储介质
US8234649B2 (en) Composite system to integrate process systems using secondarily created process objects for local database operations and inter process system communications
US20150095875A1 (en) Computer-assisted release planning
CN102591638B (zh) 事件激发的前后方法执行
CN102289367A (zh) 根据模式的命令行外壳命令生成
Ahmed-Nacer et al. Model-Driven Simulation of Elastic OCCI Cloud Resources
US8863132B2 (en) Using abstraction layers to facilitate communication between systems
JP7013602B1 (ja) 予想結果値に基づいて情報を提供する方法およびこれを利用した演算装置
CN115018621A (zh) 一种合约变更方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150729

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150128

Termination date: 20191205

CF01 Termination of patent right due to non-payment of annual fee