`
`United States Patent
`Hallman et al.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,678,887 B1
`Jan. 13, 2004
`
`US006678887B1
`
`(54) CUSTOMIZING BUSINESS LOGIC AND
`METHODS
`
`(75) Inventors: Clinton J_ Hallman San Jose CA
`(US); David Forney, Cupertino, CA
`(Us)
`
`(73) Assignee: Networks Associates Technology, Inc.,
`Santa Clara, CA (Us)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U-S-C- 154(k)) by 507 days-
`
`(21) Appl. No.: 09/613,653
`.
`_
`Jul‘ 11’ 2000
`(22) Flled'
`/
`()
`51
`Int. Cl.7 ................................................ .. G06F 9 44
`(52) us. Cl. ...................... .. 717/162- 717/171- 717/176
`(58) Field of Search
`’
`717/162 171
`""""""""""""""
`n76, 70’7/171’
`’
`
`(56)
`
`References Cited
`
`US. PATENT DOCUMENTS
`
`*
`*
`6:182:142 B1 * 1/2001 Win et a1. ................. .. 709/229
`6,321,374 B1 * 11/2001 Choy ................ ..
`717/106
`6,412,071 B1 * 6/2002 Hollander et a1. ........ .. 713/200
`
`OTHER PUBLICATIONS
`IBM Dictionary of Computing, Geroge Mc Daniel, p. 255,
`published 1994.*
`IBM Technical Disclosure Bulletin, vol 31, no 1, Jun. 1988,
`pp‘ 294—298'*
`* cited by examiner
`
`Primary EX?min€r—T0dd lngberg
`(74) Attorney, Agent, or Firm—Silicon Valley IP Group,
`PC; Kevin J. Zilka; Christopher J. Hamaty
`
`ABSTRACT
`(57)
`A system that facilitates customizing a softWare package by
`modifying an implementation of a target method de?ned
`Within an application programming interface (API) for the
`softWare package is presented. The system operates by
`receiving additional code for integration into a target method
`d?d'h'hAPId
`d'
`h'd
`6 n6 Wlt lnt e
`an acomman tolntegratet 15 CO e,
`wherein the API de?nes a plurality of methods that Operate
`on objects. This command is received through a pre-de?ned
`method Within the API. In response, the system links the
`additional code into the target method so that the additional
`code is executed upon invocation of the target method. In
`one embodiment the API de?nes: a method that creates an
`object; a method that deletes the object; a method that
`fetches the object; and a method that updates the object. In
`one embodiment the additional code causes the target
`method to operate on data from an alternative Source
`
`24 Claims, 3 Drawing Sheets
`
`PRECREATE()
`CREATE( ){
`PRECREATE CODE; /
`DEFAULT CODE; 4— CREATESOURCE()
`POSTCREATE CODE;
`
`}
`
`\ POSTCREATE()
`
`DELETE( )
`DELETE( ){
`PREDELETE CODE; /
`DEFAULT CODE; <— DELETESOURCE()
`POSTDELETE;
`
`\ POSTDELETE()
`
`}
`
`/ PREFETCH()
`
`FETCH( ){
`PREFETCH CODE;
`DEFAULT CODE; <—— FETCHSOURCE()
`POSTFETCH CODE;
`\ POSTFETCH()
`
`}
`
`PREUPDATE()
`/
`UPDATE( ){
`PREUPDATE CODE;
`DEFAULT CODE; <— UPDATESOURCE( )
`POSTUPDATE CODE; \
`POSTUPDATE( )
`
`Page 1 of 8
`
`GOOGLE EXHIBIT 1030
`
`
`
`U.S. Patent
`
`Jan. 13,2004
`
`Sheet 1 013
`
`US 6,678,887 B1
`
`CLIENT
`102
`BROWSER
`106
`
`CLIENT
`103
`
`BROWSER
`107
`
`CLIENT
`104
`
`BROWSER
`108
`
`SEEQER
`
`WEB SERVER
`114
`
`'
`MIDDLE LAYER
`INCLUDING
`APPLICATION
`DEFINING
`METHODS THAT
`OPERATE ON
`OBJECTS
`115
`
`DATABASE
`116
`DATA
`118
`
`DISTRIBUTED COMPUTING SYSTEM
`100
`
`NETWORK
`110
`
`WEB SERVER
`(CLIENT)
`/ 114
`
`CLIENT
`102 _
`
`ACTIvE SERVER
`PAGES
`f | \
`‘l
`l- —> 216
`218
`
`CLIENT
`
`217
`
`104 — — -- — —- ->
`
`COM OBJECT
`221
`
`// CREATE()
`METHODS
`DELETE( )
`222 \
`
`\ FETCH()
`
`\
`\ UPDATE()
`
`MIDDLE LAYER
`115
`
`FIG. 2
`
`DATABASE
`116
`
`DATA
`118
`
`Page 2 of 8
`
`
`
`U.S. Patent
`
`Jan. 13, 2004
`
`Sheet 2 0f 3
`
`US 6,678,887 B1
`
`MODULE
`302
`
`CUSTOMIZED
`BUSINESS
`LOGIC
`307
`
`VIEWS
`
`BASE
`TABLES
`306
`
`FORMS
`308
`
`CREATE
`
`DELETE
`
`FETCH
`
`UPDATE
`
`PRECREATE()
`CREATE ( ){
`PRECREATE CODE; /
`DEFAULT CODE; <— CREATESOURCE( )
`POSTCREATE CODE;
`
`}
`
`\ POSTCREATE()
`
`DELETE( )
`DELETE( ){
`PREDELETE CODE; /
`DEFAULT CODE; 4- DELETESOURCE()
`POSTDELETE;
`
`\ POSTDELETE( )
`
`}
`
`/ PREFETCH()
`
`FETCH( ){
`PREFETCH CODE;
`DEFAULT CODE; <— FETCHSOURCE( )
`POSTFETCH CODE;
`\ POSTFETCH( )
`
`}
`
`PREUPDATE( )
`UPDATE( ){ PREUPDATE CODE; /
`DEFAULT CODE; <—— UPDATESOURCE( )
`POSTUPDATE CODE;
`\ POSTUPDATE( )
`
`FIG. 4
`
`Page 3 of 8
`
`
`
`U.S. Patent
`
`Jan. 13, 2004
`
`Sheet 3 0f 3
`
`US 6,678,887 B1
`
`START
`500
`
`PROGRAMMER
`CREATES ADDITIONAL
`CODE
`502
`
`PROGRAMMER
`REGISTERS
`ADDITIONAL CODE
`504
`
`SYSTEM RECEIVES
`ADDITIONAL CODE WITH
`COMMAND TO INTEGRATE
`ADDITIONAL CODE INTO
`METHOD
`506
`
`SYSTEM LINKS ADDITIONAL CODE
`INTO METHOD SO THAT ADDITIONAL
`CODE IS EXECUTED WHEN METHOD IS
`INVOKED
`508
`
`FIG 5.
`
`Page 4 of 8
`
`
`
`US 6,678,887 B1
`
`1
`CUSTOMIZING BUSINESS LOGIC AND
`DATA SOURCES BY MODIFYING METHODS
`DEFINED WITHIN AN API
`
`BACKGROUND
`
`1. Field of the Invention
`The present invention relates to application programming
`interfaces (APIS) for computer systems. More speci?cally,
`the present invention relates to a method and an apparatus
`for modifying an application by customiZing methods
`de?ned Within an API for the application to include addi
`tional business logic and/or to specify additional data
`sources.
`2. Related Art
`As businesses scramble to exploit the potential ef?cien
`cies that arise through the use of information technology,
`numerous business processes are becoming computeriZed.
`This trend has led to an explosion in the development of
`softWare packages to facilitate speci?c business processes.
`Unfortunately, organiZations are typically unable to make
`use of off-the-shelf applications to facilitate a speci?c busi
`ness process because the requirements of a speci?c business
`process are typically dictated by requirements of a speci?c
`type of business and a speci?c organiZational structure.
`Hence, a business is typically forced to develop its oWn
`softWare package for a speci?c business process. This typi
`cally entails employing expensive teams of programmers
`and/or consultants to develop, debug and maintain the
`softWare package.
`The process of developing a softWare package can con
`sume a great deal of time and can distract management from
`focussing on the main line of a business. Furthermore, a
`softWare package must be continually maintained and
`updated, Which can require additional commitments of time
`and ?nancial resources.
`For example, a company may Want to design a softWare
`package to facilitate a “help desk” for computer system
`support. A completely off-the-shelf help desk system is
`typically not practical to use because different organiZations
`have different requirements. For example, one company may
`Want to tie a help desk system into a speci?c inventory
`database to keep track of parts that are used in ?xing a
`computer system. Another company may Want to use the
`help desk system to facilitate automatic purchasing for parts.
`Yet another company may Want to use the help desk system
`to track equipment faults.
`HoWever, note that building a completely neW softWare
`system from the ground up for each company is Wasteful
`because many elements of a help desk system can be shared
`betWeen different organiZations.
`Hence, What is needed is a method and an apparatus that
`facilitates customiZing an off-the-shelf softWare system to
`ful?ll speci?c requirements of a speci?c business process for
`a speci?c organiZation.
`
`SUMMARY
`
`2
`operate on objects. The system also receives a command to
`integrate the additional code into the target method Within
`the application programming interface. This command is
`received through a pre-de?ned code integration method
`Within the application programming interface. In response to
`this command, the system links the additional code into the
`target method Within the application programming interface
`so that the additional code is executed When the target
`method is invoked.
`In one embodiment of the present invention, the applica
`tion programming interface de?nes: a method that creates an
`object; a method that deletes the object; a method that
`fetches the object; and a method that updates the object.
`In one embodiment of the present invention, the object
`includes: an object associated With a help desk; an object
`associated With a client of the help desk; an object associated
`With a support staff member associated With the help desk;
`an object associated With an inventory item for the help
`desk; and an object associated With a subject of a help desk
`ticket.
`In one embodiment of the present invention, the addi
`tional code causes the target method to operate on data from
`an alternative data source.
`In one embodiment of the present invention, the pre
`de?ned code integration method integrates the additional
`code so that it is executed prior to executing default code for
`the target method.
`In one embodiment of the present invention, the pre
`de?ned code integration method integrates the additional
`code so that it is executed after executing default code for
`the target method.
`In one embodiment of the present invention, the applica
`tion programming interface is implemented in a middle tier
`of a three-tier distributed computing architecture, Which
`includes: a client tier for interacting With users; the middle
`tier for performing business logic functions; and a database
`tier for storing data.
`In one embodiment of the present invention, the applica
`tion programming interface is de?ned Within a common
`object model (COM) object.
`
`10
`
`15
`
`25
`
`35
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`45
`
`55
`
`FIG. 1 illustrates a distributed computing system in accor
`dance With an embodiment of the present invention.
`FIG. 2 illustrates the structure of a Web server and a
`middle layer in accordance With an embodiment of the
`present invention.
`FIG. 3 illustrates structures related to a module in accor
`dance With an embodiment of the present invention.
`FIG. 4 illustrates hoW several methods are implemented
`so they can be modi?ed in accordance With an embodiment
`of the present invention.
`FIG. 5 is a How chart illustrating the processing of
`incorporating additional code into a method in accordance
`With an embodiment of the present invention.
`
`One embodiment of the present invention provides a
`system that facilitates customiZing a softWare package by
`modifying an implementation of a target method de?ned
`Within an application programming interface for the soft
`Ware package. The system operates by receiving additional
`code to be integrated into a target method de?ned Within the
`application programming interface, Wherein the application
`programming interface de?nes a plurality of methods that
`
`65
`
`DETAILED DESCRIPTION
`The folloWing description is presented to enable any
`person skilled in the art to make and use the invention, and
`is provided in the context of a particular application and its
`requirements. Various modi?cations to the disclosed
`embodiments Will be readily apparent to those skilled in the
`art, and the general principles de?ned herein may be applied
`to other embodiments and applications Without departing
`
`Page 5 of 8
`
`
`
`US 6,678,887 B1
`
`3
`from the spirit and scope of the present invention. Thus, the
`present invention is not intended to be limited to the embodi
`ments shown, but is to be accorded the Widest scope
`consistent With the principles and features disclosed herein.
`The data structures and code described in this detailed
`description are typically stored on a computer readable
`storage medium, Which may be any device or medium that
`can store code and/or data for use by a computer system.
`This includes, but is not limited to, magnetic and optical
`storage devices such as disk drives, magnetic tape, CDs
`(compact discs) and DVDs (digital video discs), and com
`puter instruction signals embodied in a transmission
`medium (With or Without a carrier Wave upon Which the
`signals are modulated). For eXample, the transmission
`medium may include a communications netWork, such as
`the Internet.
`Distributed Computing System
`FIG. 1 illustrates a distributed computing system 100 in
`accordance With an embodiment of the present invention.
`Distributed computing system 100 includes clients 102—104,
`Which are coupled With server 112 through netWork 110.
`Network 110 can include any type of Wire or Wireless
`communication channel capable of coupling together com
`puting nodes. This includes, but is not limited to, a local area
`netWork, a Wide area netWork, or a combination of netWorks.
`In one embodiment of the present invention, netWork 110
`includes the Internet.
`Server 112 can include any computational node With a
`mechanism for servicing requests from a client for compu
`tational or data storage resources. Note that server 112
`includes Web server 114. Web server 114 acts as a host for
`at least one Web site that provides Web pages for broWsers
`that communicate With Web server 114. Web server 114
`communicates With middle layer 115, Which includes an
`application (such as a help desk) With an application pro
`gramming interface (API) de?ning a number of methods that
`operate on objects associated With the application. For
`eXample a help desk application can operate on objects
`associated With, a help desk, a client of the help desk,
`support staff for the help desk, inventory associated With the
`help desk and purchasing transactions for the help desk.
`Note that middle layer 115 is the middle layer in a
`three-tier architecture. The top tier of the architecture (Which
`is often referred to as the client) typically performs user
`interface functions. This top tier includes broWsers 106—108
`as Well as Web server 114. The middle tier includes middle
`layer 115 and typically performs business logic functions.
`The bottom tier includes database 116 and typically stores
`data.
`Middle layer 115 Within server 112 communicates With
`database 116. Database 116 contains data 118 that is
`accessed by Web server 114 and middle layer 115. In one
`embodiment of the present invention, database 116 is
`located on the same computational node as server 112. In
`another embodiment, database 116 is located on a separate
`computational node from server 112, and communications
`betWeen server 112 and database 116 take place across a
`netWork, such as netWork 110.
`Clients 102—104 can include any node on netWork 110
`including computational capability and including a mecha
`nism for communicating across netWork 110 to request
`services from a server, such as server 112.
`Note that clients 102—104 contain broWsers 106—108,
`respectively. BroWsers 106—108 can include any type of
`broWser for vieWing Web pages supplied by Web server 114
`on server 112. For eXample, broWsers 106—108 can include
`a version of the Internet Explorer broWser produced by the
`Microsoft Corporation of Redmond, Wash.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`4
`Although the present invention is described in the conteXt
`of distributed computing system 100 as is illustrated in FIG.
`1, the present invention can generally be applied to any type
`of computer system upon Which an application With an API
`can operate. Hence, the present invention is not limited to a
`distributed computing system that employs Web servers and
`Web broWsers as is illustrated in FIG. 1.
`Middle-Tier Server
`FIG. 2 illustrates the structure of Web server 114 and
`middle layer 115 from FIG. 1 in accordance With an embodi
`ment of the present invention. Web server 114 includes
`active server pages (ASPs) 216—218, Which communicate
`With common object model (COM) object 221 in middle
`layer 115. In one embodiment of the present invention, ASPs
`216—218 are de?ned Within the Internet Information Server
`(IIS) that is distributed by the Microsoft Corporation of
`Redmond, Wash.
`COM object 221 contains interfaces for methods such as
`“create,” “delete,” “fetch,” and “update.” In performing
`these methods, COM object 221 takes in parameters speci
`fying an object to be operated on, data involved in the
`operation, and an action to be performed using the data. Note
`that COM object 221 can be accessed by different ASPs 216
`and 217 that are associated With different clients 102 and
`104. This alloWs clients 102 and 104 to share the same COM
`object 221, Which can greatly reduce memory usage Within
`server 112. Note that COM object 221 also communicates
`With database 116 to manipulate data 118.
`Web server 114 operates generally as folloWs. Clients 102
`and 104 communicate With ASPs 216 and 217, respectively,
`Within Web server 114. Clients 102 and 104 cause server
`side scripts Within ASPs 216 and 217 to be triggered. These
`server-side scripts cause operations to be performed by
`COM object 221.
`In order to alloW incorporate additional business logic
`into an application, such as a help desk, the methods create,
`delete, fetch and update de?ned Within COM object 221 can
`be modi?ed as is described beloW With reference to FIGS. 4
`and 5.
`Structures Related to a Module
`FIG. 3 illustrates structures related to a module 302 in
`accordance With an embodiment of the present invention.
`Note that module 302 can eXist for each entity that operated
`on by an application. For eXample, a help desk application
`can include modules for: a help desk, a help desk client, a
`subject of the help desk, support staff for the help desk,
`inventory for the help desk and purchasing transactions for
`the help desk.
`Module 302 is associated With a number of vieWs 304 of
`underlying base tables 306 stored Within database 116. Note
`that different sets of vieWs can be associated With different
`groups.
`Various forms 308 for vieWing and entering data can be
`associated With various vieWs. For example, FIG. 3 illus
`trates forms for the methods create, fetch, update and delete.
`These forms call the methods create( ), fetch( ), update() and
`delete( ) of module 302.
`Module 302 is also associated With customiZed business
`logic 307 that customiZes the operation of methods associ
`ated With module 302. Module 302 can use vieWs 304 and
`base tables 306, equivalently, to access and modify data.
`Furthermore, customiZed business logic 307 can override or
`Work alongside of the default logic of a generically imple
`mented module 302 to access vieWs 304, base tables 306,
`third party databases or other third party systems.
`Method Structure
`FIG. 4 illustrates hoW several methods are implemented
`so they can be modi?ed in accordance With an embodiment
`
`Page 6 of 8
`
`
`
`US 6,678,887 B1
`
`5
`of the present invention. These methods includes create,
`delete, fetch and update.
`There are three Ways in Which each of these methods can
`be modi?ed. (1) Pre-processing code can be added before
`default code for the method. (2) Post-processing code can be
`added after default code for the method. (3) Code can be
`added to specify a neW data source for the method.
`For example, the methods precreate, predelete, prefetch
`and preupdate can be used to link additional code into the
`methods create, delete, fetch and update, respectively, before
`the default code for the methods.
`Similarly, the methods postcreate, postdelete, postfetch
`and postupdate can be used to link additional code into the
`methods create, delete, fetch and update, respectively, after
`the default code for the methods.
`Also, the methods createsource, deletesource, fetchsource
`and updatesource can be used to update a data source that is
`used by the default code for the methods or to substitute neW
`code for the default code. For example, the method fetch
`source can be called to sWitch the data source from a local
`database to a remote database located across a netWork.
`Note that the above-described methods for modifying the
`methods create, delete, fetch and update are de?ned Within
`an API for the application. This alloWs the application to be
`easily modi?ed to include neW business logic or to operate
`on data from a different data source. Also note that code that
`calls the methods create, delete, fetch and update does not
`have to be modi?ed, because the additional functionality is
`incorporated into the implementation of these methods.
`Process of Modifying a Method
`FIG. 5 is a How chart illustrating the processing of
`incorporating additional code into a method in accordance
`With an embodiment of the present invention. Aprogrammer
`desiring to modify an application ?rst creates additional
`code containing additional business logic to be incorporated
`into one of the methods (create, delete, fetch or update)
`involved in the application (step 502). Next, the programmer
`registers this additional code With the system by invoking
`one of the prede?ned code integration methods, precreate,
`predelete, prefetch, preupdate, createsource, deletesource,
`fetchsource, updatesource, postcreate, postdelete, postfetch
`and postupdate (step 504).
`When a prede?ned code integration method is called, the
`system receives the additional code along With the command
`to integrate the additional code into the method (step 506).
`Next, system links the additional code into the target
`method so that the additional code is executed Whenever the
`target method is executed (step 508).
`The foregoing descriptions of embodiments of the inven
`tion have been presented for purposes of illustration and
`description only. They are not intended to be exhaustive or
`to limit the present invention to the forms disclosed.
`Accordingly, many modi?cations and variations Will be
`apparent to practitioners skilled in the art. Additionally, the
`above disclosure is not intended to limit the present inven
`tion. The scope of the present invention is de?ned by the
`appended claims.
`What is claimed is:
`1. A method for modifying a softWare package by cus
`tomiZing an implementation of a target method de?ned
`Within an application programming interface for the soft
`Ware package, comprising:
`receiving additional code to be integrated into the target
`method de?ned Within the application programming
`interface;
`Wherein the application programming interface de?nes a
`plurality of methods that operate on objects associated
`With the softWare package;
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`6
`receiving a command to integrate the additional code into
`the target method;
`Wherein the command is received through a pre-de?ned
`code integration method that already exists Within the
`application programming interface and is used for
`integrating additional code into the target method
`Within the application programming interface;
`Wherein the integrating of the additional code into the
`target method includes a step selected from a group
`consisting of:
`adding preprocessing code before
`default code for the target method, (ii) adding post
`processing code after the default code for the target
`method, and (iii) adding code to specify a neW data
`source for the target method; and
`linking the additional code into the target method Within
`the application programming interface so that the addi
`tional code is executed When the target method is
`invoked.
`2. The method of claim 1, Wherein the application pro
`gramming interface de?nes:
`a method that creates an object;
`a method that deletes the object;
`a method that fetches the object; and
`a method that updates the object.
`3. The method of claim 1, Wherein the additional code
`causes the target method to operate on data from an alter
`native data source.
`4. The method of claim 1, Wherein the prede?ned code
`integration method integrates the additional code so that it is
`executed prior to executing default code for the target
`method.
`5. The method of claim 1, Wherein the prede?ned code
`integration method integrates the additional code so that it is
`executed after executing default code for the target method.
`6. The method of claim 1, Wherein the application pro
`gramming interface is implemented in a middle tier of a
`three-tier distributed computing architecture, Which
`includes:
`a client tier for interacting With users;
`the middle tier for performing business logic functions;
`and
`a database tier for storing data.
`7. The method of claim 6, Wherein the object includes one
`of:
`an object associated With a help desk;
`an object associated With a client of the help desk;
`an object associated With a support staff member associ
`ated With the help desk;
`an object associated With an inventory item for the help
`desk; and
`an object associated With a subject of a help desk ticket.
`8. The method of claim 1, Wherein the application pro
`gramming interface is de?ned Within a common object
`model (COM) object.
`9. A computer-readable storage medium storing instruc
`tions that When executed by a computer cause the computer
`to perform a method for modifying a softWare package by
`customiZing an implementation of a target method de?ned
`Within an application programming interface for the soft
`Ware package, the method comprising:
`receiving additional code to be integrated into the target
`method de?ned Within the application programming
`interface;
`Wherein the application programming interface de?nes a
`plurality of methods that operate on objects associated
`With the softWare package;
`
`Page 7 of 8
`
`
`
`US 6,678,887 B1
`
`7
`receiving a command to integrate the additional code into
`the target method;
`Wherein the command is received through a pre-de?ned
`code integration method that already exists Within the
`application programming interface and is used for
`integrating additional code into the target method
`Within the application programming interface;
`Wherein the integrating of the additional code into the
`target method includes a step selected from a group
`consisting of:
`adding pre-processing code before
`default code for the target method, (ii) adding post
`processing code after the default code for the target
`method, and (iii) adding code to specify a neW data
`source for the target method; and
`linking the additional code into the target method Within
`the application programming interface so that the addi
`tional code is executed When the target method is
`invoked.
`10. The computer-readable storage medium of claim 9,
`Wherein the application programming interface de?nes:
`a method that creates an object;
`a method that deletes the object;
`a method that fetches the object; and
`a method that updates the object.
`11. The computer-readable storage medium of claim 10,
`Wherein the object includes one of:
`an object associated With a help desk;
`an object associated With a client of the help desk;
`an object associated With a support staff member associ
`ated With the help desk;
`an object associated With an inventory item for the help
`desk; and
`an object associated With a subject of a help desk ticket.
`12. The computer-readable storage medium of claim 9,
`Wherein the additional code causes the target method to
`operate on data from an alternative data source.
`13. The computer-readable storage medium of claim 9,
`Wherein the prede?ned code integration method integrates
`the additional code so that it is executed prior to executing
`default code for the target method.
`14. The computer-readable storage medium of claim 9,
`Wherein the prede?ned code integration method integrates
`the additional code so that it is executed after executing
`default code for the target method.
`15. The computer-readable storage medium of claim 9,
`Wherein the application programming interface is imple
`mented in a middle tier of a three-tier distributed computing
`architecture, Which includes:
`a client tier for interacting With users;
`the middle tier for performing business logic functions;
`and
`a database tier for storing data.
`16. The computer-readable storage medium of claim 9,
`Wherein the application programming interface is de?ned
`Within a common object model (COM) object.
`17. A apparatus that facilitates modifying a softWare
`package by customiZing an implementation for a target
`method de?ned Within an application programming inter
`face for the softWare package, comprising:
`the softWare package;
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`8
`the application programming interface, Within the soft
`Ware package, that de?nes a plurality of methods that
`operate on objects associated With the softWare pack
`age;
`a pre-de?ned code integration method, already existing
`Within the application programming interface, Wherein
`the pre-de?ned code is con?gured to integrate addi
`tional code into a target method Within the application
`programming interface; and
`a linking mechanism, Within the prede?ned code integra
`tion method, that is con?gured to link the additional
`code into the target method Within the application
`programming interface so that the additional code is
`executed When the target method is invoked;
`Wherein the pre-de?ned code that integrates the additional
`
`
`code into the target method includes at least one of: code for adding pre-processing code before default
`code for the target method, (ii) code for adding post
`processing code after the default code for the target
`method, and (iii) code for adding code to specify a neW
`data source for the target method.
`18. The apparatus of claim 17, Wherein the application
`programming interface de?nes:
`a method that creates an object;
`a method that deletes the object;
`a method that fetches the object; and
`a method that updates the object.
`19. The apparatus of claim 18, Wherein the object includes
`one of:
`an object associated With a help desk;
`an object associated With a client of the help desk;
`an object associated With a support staff member associ
`ated With the help desk;
`an object associated With an inventory item for the help
`desk; and
`an object associated With a subject of a help desk ticket.
`20. The apparatus of claim 17, Wherein the additional
`code causes the target method to operate on data from an
`alternative data source.
`21. The apparatus of claim 17, Wherein the prede?ned
`code integration method is con?gured to integrate the addi
`tional code so that it is executed prior to executing default
`code for the target method.
`22. The apparatus of claim 17, Wherein the prede?ned
`code integration method is con?gured to integrate the addi
`tional code so that it is executed after executing default code
`for the target method.
`23. The apparatus of claim 17, Wherein the application
`programming interface is implemented in a middle tier of a
`three-tier distributed computing architecture, Which
`includes:
`a client tier for interacting With users;
`the middle tier for performing business logic functions;
`and
`a database tier for storing data.
`24. The apparatus of claim 17, Wherein the application
`programming interface is de?ned Within a common object
`model (COM) object.
`
`*
`
`*
`
`*
`
`*
`
`*
`
`Page 8 of 8
`
`