throbber
(12)
`
`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
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket