`Hesse et al.
`
`I lllll llllllll Ill lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US005950010A
`[HJ Patent Number:
`[451 Date of Patent:
`
`5,950,010
`*Sep.7,1999
`
`[54] SYSTEM AND METHOD FOR CUSTOMIZED
`APPLICATION PACKAGE BUILDING AND
`INSTALIATION
`
`(75]
`
`Inventors: Frederick W. Hesse, Littleton; Patti J.
`Kato, Denver, both of Colo.
`
`(73] As.signee: J.D. Edwards World Source Co.,
`Denver, Colo.
`
`[ *] Notice:
`
`This patent i5sued on a continued pros(cid:173)
`ecution application filed under 37 CPR
`l.53(d), and is subject to the twenty year
`patent term provisions of 35 U.S.C.
`154(aX2).
`
`(21] Appl. No.: 08/756,067
`
`Nov. 25, 1996
`
`(22] Filed:
`Int. C l.6
`... .......................................... ... ... ... G06F 9/445
`[51]
`[52] U.S. Cl . ................................ 395/712; 709/2W; 713/1
`(58] Field of Search ................................. 395/ 712, W0.5,
`395/200.51, W0.52, 651, 652, 653; 709/220,
`221, 222; 713/1, 2, 100
`
`(56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,432,941
`5,524,246
`5,666,501
`5,671,420
`5,684,996
`5,694,546
`5,715,463
`5,721,824
`5,734,822
`
`7 /1995 Crick et al. .................... ... ... ... 395/651
`6/1996 Hurley et al. ........................... 395/651
`9/1997 Jones et al. ........................ 395/200.52
`9/1997 Bell et al. ............................... 395/712
`11/1997 Westerholm et al. ................... 395/712
`12/1997 Reisman .................................. 395/712
`2/1998 Merkin .................................... 395/712
`2/1998 Taylor ..................................... 395/712
`3/1998 Houha et al .
`........................ 395/200.5
`
`OTHER PUBLICAl.lONS
`"Microsoft Systems Management Server", Microsoft Cor(cid:173)
`poration, Redmond, WA, 1994.
`" Microsoft Systems Management Server for Windows NT
`Administrator's Guide", Document No. 66254, Microsoft
`Corporation, Redmond, WA, 1993- 1995.
`"Future- Proof Solutions", J.D. Edwards & Co., Denver, CO,
`1995.
`"Case Tools and 4GLs: The Enterprise Distinction", J.D.
`Edwards & Co., Denver, CO, 1995.
`"One World and the Event-Driven Model", J .D. Edwards &
`Co., Denver, CO, 1995.
`"One World Integrated Toolset Highlights'', J .D. Edwards &
`Co., Denver, CO, 1995.
`Primary Examiner~ric W. Stamber
`Attorney, Agent, or Firm-Fenwick & West LLP
`[57]
`ABSTRACT
`
`A system for building and installing custom application
`packages in a distributed computing environment that
`includes a server computer and a client computer coupled
`through a network . The server computer includes a storage
`media subsystem, a build subsystem, and a server package
`storage, all of which are coupled together. The client com(cid:173)
`puter includes a storage media subsystem, an installation
`subsystem, and a local application package storage, all of
`which are coupled together. Application packages are cre(cid:173)
`ated through the build subsystem by bundling one or more
`application modules and/or application executables together
`using and then storing the application packages in the server
`package storage. The application packages are then installed
`through the installation subsystem on the client computer in
`the local application storage. The present invention also
`includes a method for building and installing custom appli(cid:173)
`cation packages on a client computer.
`
`10 Claims, 12 Drawing Sheets
`
`SERVER COMPUTER 111
`
`BUSINESS
`VIEWS
`4 10
`
`DYNAMIC LINK
`LIBRARI ES
`420
`
`215
`
`105
`
`REPORT
`OE~L()Pt.A ENT
`425
`
`DATA
`DICTIONARY
`
`"'°
`
`225
`
`BUSINESS
`LOGtC 435
`
`FORM
`TABLE
`DEVELOPMENT OEVELOl'MENT
`440
`'45
`
`BUS.NESS
`VtEW 450
`
`COUPILER 455
`
`230
`
`CODE
`GENERATOR
`.ieo
`
`DEVELOl't.tENT CLIENT 121
`
`IPR2017-00184
`UNIFIED EX1006
`
`
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 1of12
`
`5,950,010
`
`D
`
`D _
`
`~o:
`
`MACINTOSH COMPATIBLE
`120b
`
`IBM COMPATIBLE
`120a
`
`D
`
`=· · · · · ··
`WORKSTATION .__, NETWORK
`120c
`190
`
`DEPLOYMENT SERVER
`110a
`
`FILE SERVER
`110b
`
`100
`
`•
`
`(
`
`(
`
`•
`
`( c
`
`•
`
`(
`
`(
`
`DATA
`SERVER
`110c
`
`FIG. 1A
`
`
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 2 of 12
`
`5,950,010
`
`PROCESSOR
`145
`
`MEMORY 150
`
`.o..
`
`BUS 140
`
`STORAGE
`DEVICE 155
`
`NETWORK
`CONNECTION
`160
`
`CLIENT COMPUTER 120a
`
`"
`
`NETWORK 190
`
`FIG. 18
`
`
`
`d •
`\JJ.
`•
`
`BUILD SUBSYSTEM 205
`
`'--
`
`I
`RELATIONAL DATABASE
`210
`I
`SYSTEM APPLICATION
`STORAGE 215
`SERVER COMPUTER 111
`
`-
`
`NETWORK
`190
`
`DEVELOPMENT TOOLS
`220
`CODING
`TOOLS
`230
`
`CASE
`TOOLS
`225
`
`DEVELOPMENT CLIENT 121
`
`INSTALL
`MENU
`DRIVER -
`SUBSYS
`250
`235
`I
`I
`LOCAL APPLICATION
`STORAGE 240
`
`CLIENT COMPUTER 122
`
`FIG. 2
`
`--103
`
`
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 4 of 12
`
`5,950,010
`
`310
`
`315
`
`320
`
`325
`
`START
`
`CREATE
`APPLICATION
`MODULE AT
`DEVELOPMENT
`CLIENT
`
`STORE
`APPLICATION
`IN SERVER
`
`CREATE
`APPLICATION
`PACKAGE AT
`SERVER
`
`INSTALL V 330
`APPLICATION I
`PACKAGE AT
`USER CLIENT
`
`FIG. 3
`
`END
`
`335
`
`
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 5 of 12
`
`5,950,010
`
`SERVER COMPUTER 111
`
`RELATIONAL
`DATABASE 210 r - - OBJECT LIBRARIAN 405
`
`I
`
`I
`
`BUSINESS
`VIEWS
`410
`
`BUSINESS
`LOGIC
`415
`
`DYNAMIC LINK
`LIBRARIES
`420
`
`TABLES 422
`
`215
`
`I
`NETWORK
`190
`
`I
`
`105
`
`REPORT
`DEVELOPMENT
`425
`
`DATA
`DICTIONARY
`430
`
`225
`
`BUSINESS
`LOGIC 435
`
`FORM
`DEVELOPMENT
`440
`
`TABLE
`DEVELOPMENT
`445
`
`BUSINESS
`VIEW450
`
`COMPILER 455
`
`I
`230
`
`CODE
`GENERATOR
`460
`
`DEVELOPMENT CLIENT 121
`
`FIG. 4
`
`
`
`U.S. Patent
`U.S. Patent
`
`Sep.7,1999
`Sep.7,1999
`
`Sheet 6 of 12
`Sheet 6 of 12
`
`5,950,010
`5,950,010
`
`::;;?
`er:
`0
`LL
`
`..0
`0
`('I)
`L()
`
`::;;?
`er:
`0
`LL
`
`<ti
`0
`('I)
`L()
`
`-
`
`
`
`m_._3ao_>_ZO_._.<O_._n_n_<
`
`w
`w
`....J
`=>
`I- w
`0
`=> 0
`0 ::;;?
`(/) 0
`z ()
`::;;? <(
`z er:
`0 ::;;?
`0 (9 -o I- w
`I- er:
`<( I-
`() Cf)
`<( 0...
`....J >-
`()
`0... (/)
`....J
`0...
`0...
`0...
`<(
`<(
`
`0
`0%
`N
`L()
`
`s_<moom_n_
`
`0
`2m
`'Of'"'"
`L()
`
`
`
`maoos_m:m>m
`
`-
`
`mtzwZO_._.<0_._n_n_<
`
`66GE
`
`~
`•
`Cl
`iI:
`
`'Of'"'"
`N
`'Of'"'"
`
`I-
`
`z w
`
`....J
`()
`
`§._.Zm=:_O._.Zm_>_n_O._m_>m_D
`
`
`
`I-z w
`
`::;;?
`0...
`0
`....J w
`> w
`
`0
`
`
`
`U.S. Patent
`U.S. Patent
`
`Sep.7,1999
`Sep.7,1999
`
`Sheet 7 of 12
`Sheet 7 of 12
`
`5,950,010
`5,950,010
`
`_J
`_J
`
`0 z c.o
`23m
`mmm
`0::: ::J N
`>- 0::: LO
`<(
`a_
`
`._._om><n_
`
`._.0m:.Ow_n_>>m__>mm
`
`I-u
`w
`o:?
`0::: 0:::
`
`"""')
`
`I-
`z
`0::: :?
`a_ 0:::
`~o
`U LL
`w
`I
`u
`
`
`
`._.Z_N_n_v_om__._o
`
`_>_mon_
`
`_J
`_J N
`Nwm
`o'I""""
`0::: LO
`>-
`<(
`a_
`z
`0
`I-
`<( u
`_J
`a_
`a_
`<(
`
`
`
`._._Om><m”ZO_H<O_._n_n_<
`
`Ol
`Lt)
`ci
`Li:
`
`mmGE
`
`~ 0
`_>_m_Ou_
`
`W:?
`:? 0:::
`I- 0
`0::: LL
`w
`I-z
`w
`
`
`
`<53m=>__._.m_m_._.Zm_
`
`s_mon_
`a_ 0 S LL
`w
`> w
`
`0:::
`
`N
`('I')
`LO
`
`~
`('I')
`LO
`
`c.o
`('I')
`LO
`
`>-W 0::: N
`:? I- N
`- Z LO
`I- w
`
`~s
`ow~
`I- > N
`vmm
`U) W LO
`0:::
`I
`
`>mo5_:
`
`>>m__>m_m
`
`'I'"""
`
`'I'""" N
`I-z
`w
`_J u
`I-z
`w
`:?
`a_
`0
`_J
`
`
`
`
`
`_‘N_,._.Zm_._O._.Zm__>_n_O._m>m_n_
`
`w > w
`
`0
`
`
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 8 of 12
`
`5,950,010
`
`START
`
`610
`
`640
`
`ADD'L BUSINESS
`LOGIC REQ?
`
`620
`
`625
`
`630
`
`SELECT DATA
`ELEMENT
`
`CREATE
`TABLE
`
`CREATE
`BUSINESS
`VIEW
`
`635
`\___
`
`CREATE
`FORMS AND
`REPORTS
`
`670
`
`FIG. 6
`
`Yes
`
`645
`
`No
`
`CREATE
`BUSINESS
`LOGIC
`
`STORE IN
`SPEC FILE
`
`GENERATE C
`CODE FOR
`APPLICATION
`
`COMPILE
`APPLICATION
`
`650
`
`655
`
`660
`
`665
`
`RESULT
`
`CHECK-IN
`
`
`
`730
`
`OBJECT LIBRARY LIST~ 710
`SUITE ~ 720
`MODULE J
`06 (PAYROLL)
`P0610 (TIME ENTRY)
`06 (PAYROLL)
`P0610 (TIME ENTRY)
`06 (PAYROLL)
`P0615 (PAYROLL RUN)
`06 (PAYROLL)
`P0620 (HISTORY)
`06 (PAYROLL)
`P0620 (HISTORY)
`09 (GEN ACCT)
`P0910 (GEN LEDGER)
`41 (INVENTORY)
`P4110 (STOCK)
`
`740~
`FORMS (WINDOW)
`W0610A (ENTER DATA)
`W0610B (REV PROJ)
`R0615A (CHECK PRT)
`W0620A (EMPL HIST)
`W0620B (PROJ HIST)
`W091 QA (DAILY LEDGE)
`W411 OA (CURR STK)
`
`FIG. 7
`
`d •
`\JJ.
`•
`
`PACKAGE LIST...._____ 810
`820
`PACKAGE-'
`ALL
`06
`41
`41U
`41U
`41PLUS
`
`830
`DESCRIPTION_/
`ALL SOFTWARE
`PAYROLL
`INVENTORY
`INVENTORY UPDATE 1
`INVENTORY UPDATE 2
`INVENTORY PLUS
`TIME ENTRY
`PAYROLL PLUS
`MS EXCEL
`SPECIAL APPS
`
`06PLUS
`
`SPECL
`
`COMBINE
`
`ACCOUNTING PLUS
`SPECIAL APPS
`FIG. 8
`
`(840
`OBJECTS
`*ALL
`06
`41
`P41100
`P41200
`41
`P0610
`06
`EXCEL.EXE
`P0650
`P0655
`03
`SPECL
`
`(850
`
`( 860
`
`OBJ TYPE PK TYPE
`I
`I
`I
`u
`u
`I
`I
`I
`I
`I
`I
`I
`I
`
`SY
`SY
`APPL
`APPL
`SY
`APPL
`SY
`EXE
`APPL
`APPL
`SY
`PKG
`
`
`
`RELATIONAL
`DATABASE 210
`I
`
`215
`BUSINESS
`VIEWS
`410
`
`BUSINESS LOGIC
`415
`
`I
`
`I TABLES 422 I
`
`~
`
`DYNAMIC
`LINK
`LIBRARIES
`420
`I
`BUILD SUBSYSTEM
`205
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 10 of 12
`
`5,950,010
`
`SERVER COMPUTER 111
`
`OBJECT LIBRARIAN 405
`
`I
`
`I
`SERVER PACKAGE
`STORAGE 905
`
`107
`
`240
`
`I
`
`NETWORK
`190
`
`I
`
`I
`
`SPECIFICATION ~
`FILES
`910
`I
`
`>--
`
`I
`
`'
`LOCAL DYNAMIC '"'
`LINK LIBRARIES 3
`915
`-
`
`I
`
`MENU DRIVER
`235
`
`I
`
`INSTALLATION
`SUBSYSTEM
`250
`
`CLIENT COMPUTER 122
`
`FIG. 9
`
`
`
`U.S. Patent
`
`Sep.7,1999
`
`Sheet 11 of 12
`
`5,950,010
`
`1010
`
`READ
`DEFINITION
`FROM
`PACKAGE LIST
`
`MATCH
`PACKAGE LIST
`DEFINITION
`WITH OBJECT
`LIBRARY LIST
`
`CREATE LIST
`OF MATCHED
`MODULES
`
`READ
`RELATIONAL
`DATABASE
`
`1015
`
`1020
`
`1025
`
`1035
`
`Yes
`
`~l
`
`1040
`
`READ SPEC.
`FILE FROM
`PACKAGE
`LIBRARY
`
`CREATE SPEC.
`FILE FROM
`I RELATIONAL
`; DATABASE
`
`FIG. 10
`
`1045
`
`COPY DLL
`
`1050
`
`No
`
`EVELOPER>
`INSTALL? /
`
`'~<·
`~--Y~~es_L 1055
`
`COPY SOURCE
`CODE
`
`( 1060
`
`CREATE
`DIRECTORY
`FOR PACKAGE
`
`;,
`
`,-- 1065
`
`STORE
`PACKAGE
`
`-
`
`/
`\
`
`RESULT
`
`)
`
`10?0
`
`
`
`d •
`\JJ.
`•
`
`1110
`
`DEFINE USERS
`1130
`J
`1120
`USERID J
`DESCRIPTION
`ALLENR
`ALLEN, RAY
`BROWNJ
`BROWN, JOE
`COURT, ANN
`COURTA
`
`r 1140
`
`SECURITY
`3
`5
`3
`
`JO NESS
`
`JONES, SALLY
`
`4
`
`FIG. 11
`
`1210
`
`DEFINE PACKAGES TO USERS
`1120
`
`USERID J
`ALLENR
`BROWNJ
`COURT A
`
`820
`PACKAGE _/
`06
`41 PLUS
`06
`41PLUS
`
`JO NESS
`
`*ALL
`41PLUS
`06PLUS
`
`FIG. 12
`
`
`
`5,950,010
`
`1
`SYSTEM AND METHOD FOR CUSTOMIZED
`APPLICATION PACKAGE BUILDING AND
`INSTALLATION
`
`CROSS REFERENCE TO RELATED
`APPLICATIONS
`
`2
`from one or more application suites and/or components of
`one or more third-party applications. Further, there is a need
`for a system to install or update an application package
`without having to update every application and every client
`5 computer having an assigned user in the network and
`without having to recompile an entire application suite.
`
`SUMMARY OF THE INVENTION
`
`The subject matter of this application is related to the
`subject matter of U.S. patent application Ser. No. 08/740,
`360, entitled "SYSTEM AND METHOD FOR INSTALL-
`ING APPLICATIONS ON AN AS NEEDED BASIS", filed
`on Oct. 28, 1996, by Glenn S. Yinger, Charles E. McVaney,
`and James L. Foos.
`
`BACKGROUND OF THE INVENTION
`
`10
`
`15
`
`In general, the system of the present invention includes a
`distributed computing system having at least one server
`computer and at least one client computer coupled by a
`network. The system of the present invention builds custom
`computer application packages which are then installed from
`a server computer to a client computer.
`The server computers include application suites, applica(cid:173)
`tion packages, and commercially-available applications. The
`application suites relate to enterprise functions such as
`payroll, inventory, accounts payable, and budgeting. The
`application suites are further defined by application modules
`20 or programs that include data or information that is usually
`specific to the particular application suite to which the
`application module is associated. For example, the payroll
`suite may include a time entry application module and an
`address application module, as well as a compensation
`25 application module, all of which are required to process a
`payroll in an enterprise.
`The application packages are comprised of one or more
`application modules or programs from the one or more
`application suites. The application packages may include
`only particular application modules from one or more appli-
`cation suites, but not an entire application suite, or may
`include one or more entire application suites plus particular
`application modules from other application suites.
`The system of the present invention builds an application
`package by linking various application modules, the various
`application suites, and/or various commercially-available
`applications and then providing select system users access to
`the newly built application package. The application pack(cid:173)
`age is then installed over the network on the select users'
`client computers. Thus, the select users are given access to
`particular application modules without requiring access to
`and installation of the entire application bundle just to get
`access to a particular application module.
`The present invention includes a method to build appli-
`cation packages. The method includes the steps of defining
`an application module, storing the application module,
`selecting the application module from a list of application
`modules and adding the selected application module to the
`50 application package. This process is continued until all the
`application modules necessary to create an application pack(cid:173)
`age are added to the application package list. After all the
`application modules sought are added, the application pack(cid:173)
`age is linked together and the application package is
`55 assigned to selected users in the master file. The application
`package is then installed at the client computer of the
`selected user authorized to install the application package.
`The system and method of the present invention offer an
`advantage of installing particular application modules or
`group of modules for a user of a client/server system without
`requiring an entire application suite to be installed to be able
`to have access to the particular application module. A benefit
`of the system and method of the present invention is that
`fewer system resources, such as client computer storage
`65 space, are required for operation. Another benefit is an
`additional layer of system security is introduced because not
`every application module of an application suite is required
`
`30
`
`1. Field of the Invention
`This invention generally relates to the field of data pro(cid:173)
`cessing systems and, more specifically, to the field of build(cid:173)
`ing and installing custom application packages in a distrib(cid:173)
`uted computing environment.
`2. Description of the Related Art
`Modern data processing systems are often implemented as
`distributed computing environments. A typical distributed
`computing environment configuration includes one or more
`"client" computers, including personal computers and
`workstations, that communicate with one or more "server"
`computers. In this "client/server" environment, the client
`computers request data, files, or other information from the
`server computer and the server computer serves the client
`with the requested information. In some distributed com(cid:173)
`puting environments, a computer may operate as a client
`computer and as a server computer.
`In many modem client/server environments, the number
`of application suites, or products, necessary to perform 35
`business tasks is becoming increasingly large. In some
`client/server environments all the components of an appli(cid:173)
`cation bundle are installed on each client computer's storage
`device. Thus, as the number and size of the application
`bundles increases, the amount of space necessary to store the 40
`application bundle becomes increasingly large. In many
`instances not every user requires an entire application
`bundle installed on the client computer, particularly those
`users involved with doing specific tasks versus system-wide
`tasks.
`Recognizing this problem, some modern data processing
`systems have environments in which the full application
`bundle is broken into smaller components, specifically
`application suites. For example, the software may include
`one application suite of each Sales Order Processing,
`Payroll, Human Resources, and Budgeting, rather than a
`single application bundle encompassing all four application
`suites. The problem, however, with the prior art systems is
`that the application suites are not further broken into a
`sufficient number of individual components so that portions
`of each suite may be installed and available to users who do
`not require access or should not have access, to an entire
`application suite. For example, an order entry clerk in an
`organization probably would not require access to an entire
`payroll application, despite having to enter his or her work- 60
`ing time entries (which is typically part of the payroll suite).
`Thus, the clerk would simply forward his time entry to one
`having the payroll application so that person may enter the
`time, rather than having the entire payroll application
`installed on the clerk's client computer.
`Therefore, there is a need for a system that customizes an
`application package for particular users using components
`
`45
`
`
`
`5,950,010
`
`3
`to be installed on a client computer when a user needs access
`to a particular application module.
`The features and advantages described in the specification
`are not all-inclusive and, in particular, many additional
`features and advantages will be apparent to one of ordinary
`skill in the art in view of the drawings, specification, and
`claims. Moreover, it should be noted that the language used
`in the specification has been principally selected for read(cid:173)
`ability and instructional purposes, and may not have been
`selected to delineate or circumscribe the inventive subject
`matter.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. lA is a block diagram illustrating a client/server
`system in accordance with the present invention;
`FIG. lB is a block diagram illustrating components of a
`client computer in accordance with the present invention;
`FIG. 2 is a block diagram illustrating a custom application
`package building and installation system in accordance with
`the present invention;
`FIG. 3 is a flow diagram illustrating an overview of
`custom application package building and installation pro(cid:173)
`cess in accordance with the present invention;
`FIG. 4 is a block diagram illustrating an application
`module development system in accordance with the present
`invention;
`FIGS. SA and SB are block diagrams illustrating layers
`within an application suite in accordance with the present
`invention;
`FIGS. 6 is a flow diagram illustrating a process of
`assembling application modules in accordance with the
`present invention;
`FIG. 7 is a table of an object librarian list in accordance
`with the present invention;
`FIG. 8 is a table of a package list in accordance with the
`present invention;
`FIG. 9 is a block diagram illustrating an application
`package installation system in accordance with the present
`invention;
`FIG. 10 is a flow diagram illustrating a process
`building an application package in accordance with
`present invention;
`FIG. 11 is a table for user definitions of users in the
`client/server system in accordance with the present inven(cid:173)
`tion; and
`FIG. 12 is a table for defining application packages to
`users of the client/server system in accordance with the
`present invention.
`
`for
`the
`
`DESCRIPTION OF A PREFERRED
`EMBODIMENT
`The present invention provides a system and method for
`bundling various computer applications or application mod(cid:173)
`ules together to build an application package, and installing
`the application package on a computer, such as client
`computers 120a-120c in FIG. lA, in a distributed comput(cid:173)
`ing environment. FIG. lA is a block diagram illustrating a
`client/server system 100 for data processing in accordance
`with the present invention. The client/server system includes 60
`server computers llOa-llOc and client computers
`120a-120c connected through a network 190. Each connec(cid:173)
`tion on the network 190 may be referred to as a node. It is
`noted that the server computers llOa-llOc may also operate
`as client computers and the client computers 120a-120c
`may also operate as server computers in the client/server
`system 100.
`
`4
`In a preferred embodiment of the present invention, the
`client computers 120a-120c are conventional personal com(cid:173)
`puters or workstation machines having conventional hard(cid:173)
`ware components such as a bus 140, a processor 14S, a
`5 memory lSO, a storage device lSS, and a network connec(cid:173)
`tion 160, as illustrated in FIG. lB. The processor may be a
`conventional processor that is commercially available such
`as a Pentium™ processor by Intel Corporation (Santa Clara,
`Calif.), a PowerPC™ processor by IBM Corporation
`10 (Armonk, N.Y.) or Motorola, Inc. (Schaumburg, Ill.), an
`Alpha™ processor by Digital Equipment Corporation
`(Maynard, Mass.), or a SPARC™ processor by Sun
`Microsystems, Inc. (Mountain View, Calif.). The client
`computers 120a-120c use conventional software operating
`15 environments that are commercially available such as
`Microsoft Windows™ from Microsoft Corporation
`(Redmond, Wash.), Apple System 7.x from Apple
`Computer, Inc. (Cupertino, Calif.), or Unix-based operating
`systems. In various embodiments, the client computers
`20 120a-120c connected to the network 190 may be of the
`same or different hardware and software platform types.
`The server computers llOa-llOc may be conventional
`personal computers, workstation machines, mid-range com(cid:173)
`puter platforms, or large system computer platforms. The
`25 server computers llOa-llOc have conventional hardware
`components, such as those illustrated for the client computer
`120 in FIG. lB, including a bus, a processor, a memory, a
`storage device, and a network connection. The server com(cid:173)
`puters llOa-llOc use conventional software operating envi-
`30 ronments depending on the available hardware platform. For
`example, an OS/400 operating system is used on an
`AS/400™ mid-range computer by IBM Corporation
`(Armonk, N.Y.), a HP-UX operating system is used on an
`HP-9000™ mid-range computer by Hewlett-Packard Cor-
`35 poration (Palo Alto, Calif.), a Microsoft Windows NT™
`operating system is used on an Alpha TM System by Digital
`Equipment Corporation (Maynard, Mass.), or a MYS or VM
`operating system is used on an ES/9000™ large system
`computer by IBM Corporation (Armonk, N.Y.). The server
`40 computers llOa-llOc may also operate on other conven(cid:173)
`tional software operating environments such as Microsoft
`Windows or Unix-based operating systems. Similar to the
`client computers 120a-120c, the server computers
`llOa-llOc connected to the network 190 may, in various
`45 embodiments, be of the same or different hardware and
`software platforms.
`The network 190 interconnects the client computers
`120a-120c and the server computers llOa-llOc. In a pre(cid:173)
`ferred embodiment the network 190 is a conventional logical
`50 network such as a local area network ("LAN") or a wide area
`network ("WAN"), as appropriate for the particular embodi(cid:173)
`ment in which the system 100 is to operate. In accordance
`with the present invention, the logical network is physically
`implemented using commercially available conventional
`55 network hardware and software such as a file server com(cid:173)
`puter using a Novell NetWare™ from Novell Corporation
`(Provo, Utah) or Microsoft Windows NT™ from Microsoft
`Corporation (Redmond, Wash.) network operating system
`software.
`In a preferred embodiment of the present invention, the
`server computers include application suites and application
`packages. The application suites relate to computer appli(cid:173)
`cation programs that perform enterprise functions such as
`payroll, inventory, accounts payable, and budgeting. The
`65 application suites are further defined by individual applica(cid:173)
`tions or application modules that include data or information
`that is usually specific to the particular application suite to
`
`
`
`5,950,010
`
`5
`
`5
`which the application module is associated. For example, the
`payroll suite may include a time entry application module
`and an address application module, as well as a compensa(cid:173)
`tion application module, all of which are required to process
`a payroll in an enterprise.
`The application packages are comprised of one or more
`application modules or programs from the one or more
`application suites. The application packages may include
`only particular application modules from one or more appli(cid:173)
`cation suites, but not an entire application suite, or may 10
`include one or more entire application suites plus particular
`application modules from other application suites. Further,
`each application module is comprised of a logical group of
`forms that are associated with specific application functions
`or elements, such as data entry or file browsing. In addition, 15
`an application may be a third-party application such as a
`Microsoft Word word processor from Microsoft Corporation
`(Redmond, Wash.), or a graphics package such as Corel
`Draw from Corel Corporation (Ottawa, Canada). As will be
`further described below, the system and method of the 20
`present invention configures application packages from the
`applications and application modules in the client server
`system 100 for installation in the client/server environment.
`FIG. 2 is a block diagram illustrating a custom application
`package building and installation environment 103 in accor- 25
`dance with the present invention. The custom application
`package building and installation environment 103 operates
`within the client/server system 100. The custom application
`package building and installation environment 103 includes
`a server computer 111, that is functionally equivalent to one 30
`or more of the server computers llOa-llOc of the client/
`server system 100, a development client computer 121 and
`a user client computer 122, both of which are functionally
`equivalent to one or more of the client computers 120a-120c
`of the client/server system 100, and the network 190 for 35
`connecting the various computers to one another.
`In a typical client/server environment, there are one or
`more application bundles (not illustrated). An application
`bundle is a combination of enterprise type application suites
`bundled together. An example of an application bundle is a 40
`bundle for operating a manufacturing facility, that may
`include individual application suites for payroll, accounting,
`inventory, and the like. Thus, the application bundle is
`comprised of one or more application suites and is not
`broken down any further. Referring briefly to FIGS. SA and 45
`SB, in the client/server system 100 an application suite or
`system code SlO is an enterprise type application such as a
`payroll application Sl2, an inventory application, or a sales
`order application. Each application suite SlO is comprised of
`one or more application modules or programs S20 such as a 50
`time entry module S22, history review module S24, or
`payroll run module S26 within a payroll application suite
`Sl2. Each application module S20 is further comprised of
`forms S30a, S30b that define particularities of an application
`module S20 such as a data entry field, an application window 55
`size, or an interaction button for doing a task. For example,
`the payroll run module S26 includes a time entry data form
`S32, a review project form S34, and a check print form S36.
`The forms are defined by a set of specification information,
`of which a master copy of the specification information is 60
`stored on the server computer 111. An application package
`is comprised of one or more application modules of various
`application suites, either alone or in combination with entire
`application suites, as further described below in FIGS. 4
`through 8.
`Turning back to FIG. 2, the server computer 111 includes
`a build subsystem 20S, a system application storage 21S, and
`
`6
`a file structure for storage, such as a relational database 210,
`all of which are coupled together. The build subsystem 20S
`assembles application packages for the client/server system
`100. The file structure for storage may be any file structure
`that allows for indexing application components such as
`executables, specifications and file lists. Indexing identifies
`which files are associated with a particular application
`module S20. In a preferred embodiment, the file structure is
`the relational database 210. The relational database 210
`stores the specification information for the application mod(cid:173)
`ules in the client/server system 100. In a preferred
`embodiment, the relational database 210 is implemented by
`a conventional relational database such as SQL Server from
`Microsoft Corporation (Redmond, Wash.), Oracle7 from
`Oracle Corporation (Redwood Shores, Calif.), or DB2 from
`IBM Corporation (Armonk, N.Y.). The system application
`storage 21S is a files segment where applications, including
`application package components, are stored. The build sub(cid:173)
`system 20S, the relational database 210, and the system
`application storage are all stored on the storage medium of
`the server computer 111.
`The development client computer 121 includes develop-
`ment tools 220 that are used for creating the application
`modules or other application components for the client/
`server system 100. The development tools 220 are com(cid:173)
`prised of computer assisted software engineering ("CASE")
`tools 22S as well as coding tools 230. The CASE tools 22S
`are used to create and design an application module and the
`coding tools 230 are used to generate and compile the
`programming code for the created application module. Both
`the CASE tools 22S and the development tools 230 are
`further described in FIG. 4 below. The development tools
`220 are stored on the storage device of the development
`client computer 121.
`The user client computer 122 includes a menu driver 23S
`and a local application storage 240 that are coupled to one
`another. The menu driver 23S provides the executable code
`to launch application programs on a client computer 122 or
`to launch a server application from the server computer 111
`in the client/server system 100. The local application storage
`240 is where application packages located on the client
`computer 122 are stored. The user client computer 122 also
`includes an installation subsystem 2SO that is coupled to the
`menu driver 23S and the local application storage 240. The
`installation subsystem 2SO is used to install application
`packages on the user client computer 122. In a preferred
`embodiment, the installation subsystem 2SO may reside on
`the server computer 111. When an application is ready for
`installation, the installation subsystem 2SO is loaded into the
`memory lSO of the client computer 122 from the server
`computer 111 to run the installation process from the client
`computer 122. In an alternative embodiment, the installation
`subsystem 2SO may reside and be run from the server
`computer 111. The menu driver 23S, local application stor(cid:173)
`age 240, and the installation subsystem 2SO are stored on the
`storage device lSS of the user client computer 122.
`FIG. 3 is a flow diagram illustrating an overview of a
`process for building and installing application packages
`using the custom application package building and installa(cid:173)
`tion environment 103 of FIG. 2 in accordance with the
`present invention. Once the custom application package
`building and installation environment 103 starts 310
`operation, an application module is created 31S at the
`development client computer 121 using the development
`65 tools 220 at the client computer 121. Once the application
`module has been created 31S, the application module is
`stored 320 in the server computer 111. Specifically, the
`
`
`
`5,950,010
`
`5
`
`7
`application module code is stored in the system application
`storage 215 and the application module specifications are
`stored in the relational database 210. The build subsystem
`205 at the server computer 111 then creates 325 or builds an
`application package that is also stored in the system appli-
`cation storage 215. The application package is installed 330
`at the user client computer 122 using the installation sub(cid:173)
`system 250 for selecting the application package and having
`the application package stored in the local application stor(cid:173)
`age 240.
`FIG. 4 is a block diagram illustrating an application
`module development system 105 in accordance with the
`present invention. The application module development
`system 105 includes the server computer 111 and the devel(cid:173)
`opment client computer 121 coupled together by the net(cid:173)
`work 190. The server computer includes an