CA2168762C - Flexible multi-platform partitioning for computer applications - Google Patents
Flexible multi-platform partitioning for computer applications Download PDFInfo
- Publication number
- CA2168762C CA2168762C CA002168762A CA2168762A CA2168762C CA 2168762 C CA2168762 C CA 2168762C CA 002168762 A CA002168762 A CA 002168762A CA 2168762 A CA2168762 A CA 2168762A CA 2168762 C CA2168762 C CA 2168762C
- Authority
- CA
- Canada
- Prior art keywords
- service object
- computer
- computers
- application program
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000638 solvent extraction Methods 0.000 title abstract 6
- 238000004883 computer application Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 78
- 238000013461 design Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims 11
- 230000003362 replicative effect Effects 0.000 claims 5
- 238000005192 partition Methods 0.000 abstract description 48
- 238000004458 analytical method Methods 0.000 description 22
- 238000012360 testing method Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 150000002500 ions Chemical class 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- NYPYHUZRZVSYKL-UHFFFAOYSA-N 2-azaniumyl-3-(4-hydroxy-3,5-diiodophenyl)propanoate Chemical compound OC(=O)C(N)CC1=CC(I)=C(O)C(I)=C1 NYPYHUZRZVSYKL-UHFFFAOYSA-N 0.000 description 3
- 241000234435 Lilium Species 0.000 description 3
- 101100343498 Mus musculus Lipn gene Proteins 0.000 description 2
- 241000282320 Panthera leo Species 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- SUBDBMMJDZJVOS-UHFFFAOYSA-N 5-methoxy-2-{[(4-methoxy-3,5-dimethylpyridin-2-yl)methyl]sulfinyl}-1H-benzimidazole Chemical compound N=1C2=CC(OC)=CC=C2NC=1S(=O)CC1=NC=C(C)C(OC)=C1C SUBDBMMJDZJVOS-UHFFFAOYSA-N 0.000 description 1
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 101100005275 Clostridium perfringens catP gene Proteins 0.000 description 1
- 102100031612 Hypermethylated in cancer 1 protein Human genes 0.000 description 1
- 101710133850 Hypermethylated in cancer 1 protein Proteins 0.000 description 1
- 101100274524 Mus musculus Clec18a gene Proteins 0.000 description 1
- 101100335765 Mus musculus G6pc2 gene Proteins 0.000 description 1
- 101100494762 Mus musculus Nedd9 gene Proteins 0.000 description 1
- 101100382526 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ylo-1 gene Proteins 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 241001296096 Probles Species 0.000 description 1
- 241000677635 Tuxedo Species 0.000 description 1
- 101150093411 ZNF143 gene Proteins 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 101150014126 incG gene Proteins 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- MYWUZJCMWCOHBA-VIFPVBQESA-N methamphetamine Chemical compound CN[C@@H](C)CC1=CC=CC=C1 MYWUZJCMWCOHBA-VIFPVBQESA-N 0.000 description 1
- FFEARJCKVFRZRR-UHFFFAOYSA-N methionine Chemical compound CSCCC(N)C(O)=O FFEARJCKVFRZRR-UHFFFAOYSA-N 0.000 description 1
- 238000003801 milling Methods 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- SBUYBNIDQXQZSZ-UHFFFAOYSA-N p-aminophenylphosphocholine Chemical compound C[N+](C)(C)CCOP([O-])(=O)OC1=CC=C(N)C=C1 SBUYBNIDQXQZSZ-UHFFFAOYSA-N 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Abstract
A method of partitioning an application program by defining an application program for execution on at least two interconnected computers (7), selected from at least two classes of computers (9) without considering what specific machine environment will be used at run time. Partitioning includes defining two or more objects as components of the application program (6B), where a first object is capable of execution on one class of computers and a second object is capable of execution on a second class of computers. Once the objects are defined, the method includes selecting an environment for the application program (11), and partitioning the application program by selecting each object to execute on the computer of the corresponding class. A system using the method can generate a default partitioning scheme to partition the program as a series of partitions, each assigned to available computing resources. The original partitioning can be modified automatically or by a user.
Description
~168762 F~F.X~R~F MULTI-PI,Arlro~M PAK~ ONING
FOR CO~ ;K APPLICATIONS
Field of the Invention SThe ~ ~sen~ invention relates to mPth~s and a~alus for partitirning objects of an object-o ;r-~ed plOgl~llll across mllltipl~ cc~ u~ g devices, inC~ ng real time ...n..~ and m~ylifi.-_tir n of the p~l;l;r~
Ba~kground of ~e Im~ention 10A cc~ tur l)lo alll grn~r~l1y CQI.c~ of at least three cu~ -F-.~: a user interface; an ap~ tinn pro lalll; and n,~"ol~ or storage. Early co~ used tape or card readers and p~iflt~ for pli~ y user int~-rf~c~. The plo~lalll or applica~on was loaded to lun on ~e central ~l~C~S`;~g unit and either memory or disc storage or both provided data storage. As ~e indus~y l~lul~d~ CQ~ .J~ S were able to 15 interact with ~ . n~lc to provide _noth~or i",~ltanl user i~t~-rf~^e. Small cc....~ s, known as wu-L~ l-c, l*~ available to provide a user intPrf~r~ and CC!II~ JI;I~g power in the same unit. With the advent of p.,.50..~1 co-.~l.."e-;> or PCs, il,e~ns;ve co-.~ t~ -s have reFl~r~ simple t~ ;n~lc in many c~ ub,~ inct~ tir~nc.
In early co.. l~ute- ~, a ~Oglalll could reside only in a single cu.. -l.uler. Large prùglallls could be broken into segments which could be k~le~, as needed, into active lllC.llGl,~ in the central ~)rOC~S' ng unit. As co-..l.,,~ bec~ more powt;lrul, larger ~,~og,~.,.c could be run but the capacity of a single cc---l-ut~ r ~ in~l a fi.-u~ l limit for the size of a cc~yv~r ~roglalll.
As wu L~l;9nc and PCs bcc~ more prevalent, a paradigm evolved which ' d to ...- ;-..;,~ effir;-nr,y by using available pr~cecc;~.g power in a logical n~e(. Since many users were inte~ri~ with larger co~ ..Jtl-- . ~rough a wu.L~ n or a PC, ~l~O~ r,~ realized ~at r~.. 1;n~c lcq~d to o~-,~e the 30 user in~ ^e, such as screen l~dlawillg, video refresh, ~r~phirs gen~ l;rtn~windowing control (size, positirm and U~ ), and input yroc~c~ g (ch~r~l-ter and filnrti-~n key h~n-lling, i~ s, and such), logically should be h~nrll~l by sorlw~e which was lesldenl on the local wu-~t~l;ol- Following ~is same line of re~coring, many plO~ ullS ~uil., extensive access to CQ...l~te- storage. A classic program of WO 95/04g68 ~168 76~ PCT/US94/08785 thLs type is a f-~qtq~qQ~ where a series of records are stored in a special storage area.
One c-qt~hq-~ used by many; .~ Ds is an ~ n~l~ record. Another -qtqhqse might be for payroll or for --~4~ payable. ~3~Pnerqlly~ a . ~e ~ qtqhqQ, is co~ of a ~u~hDr of ,~cords stored in the &,~L."s sto~ge area. Mllltip'- users S can use the fl'f~f'` l`f'--QD ~;~nUlt-qneo~Q-ly~ but there must be ~ u~i~cns to p~ l two users from PesQ~ing the same record at the same time for then both would be g old ;.,rO.,. q~ .n and possibly ~.qk;.~ and storing ;~lco~ ch~.~f,~
-S de~lG~d server r...~ ..c which controlled record access for reading or writing i~-f~ , record l-~i~ and, when available J"e."G,~ or storage was 10 li-nit.~" .~ ing media c~ es such as .~u~ g or u ~ ou ~ g ~lt~,~c~ ge-qhl-media such as discs or tape.
Mqnirllqti~ ,~rhi.-- ;..rO....zt;.-.n such as windows or menu stol~cti-.n, gr~rhi~
objects and such~ ne~q-lly ,~uiles ~ fi-~ g large z.. ~.. ~c of inf.^.. ~ .n, es~ ly when .--~ qting l ;I~.~al~s ~ this irr~ must be passed over a com~ron nclwul~ shared among m ny CO-~ ~ S, then the ~ wul~ can easily be filled with t~affic lllO~ g ~rh~ ug~s~ In a similar way, the low level cc...~-..z---~s l~uiled to select a sperfir storage media, move the reading heads to the correctportion of the media and puU the ;~.fn....q~;nl~ from the media ~q.l,l~ s a fair qm~lmt 20 of activity l)el~ the controUer and the l~ad;ng heads when aU the user or ~lOg reaUy needs is the result, typicaUy so ne or aU of the contents of the reql~est~record.
This ~qrr~ has evolved to be known as a client se ~,~r. The server, in 25 g~n~rql, p~ ;des control of and access to one or more shared l~soulce,s. One useful server is a ~ ~ server, ~;c~vss~ above. Another useful server is a fi~e server, where the server has access to ~io 1~ll or data or other files and can access this i--r~ ~;n-~ upon l~uesl. A print server might store and direct print jobs to a collP-ctinn of printers which are then ~-ceQQ;hl~ to a Large .-~ of users through 30 simple calls to this server.
lhe Evo~non of Cl~ent-Server t'liPr1t se~ has grown rapidly with advances in ~qtqbq~ mqnq~gf--.e-~l system (DBMS) tPrhnol-lgy and particularly rPlqti~nql .l~l;.h~ ~qnqge~..r-~ system 35 (RDBMS) tPcl nolr!gy. The ar~l~;t,c~ s of the l^-~ing muld-user RDBMSs provide a se~ n b~ the user-s~;fi-^, work of the apFli(;q~ti~n program and the shared
FOR CO~ ;K APPLICATIONS
Field of the Invention SThe ~ ~sen~ invention relates to mPth~s and a~alus for partitirning objects of an object-o ;r-~ed plOgl~llll across mllltipl~ cc~ u~ g devices, inC~ ng real time ...n..~ and m~ylifi.-_tir n of the p~l;l;r~
Ba~kground of ~e Im~ention 10A cc~ tur l)lo alll grn~r~l1y CQI.c~ of at least three cu~ -F-.~: a user interface; an ap~ tinn pro lalll; and n,~"ol~ or storage. Early co~ used tape or card readers and p~iflt~ for pli~ y user int~-rf~c~. The plo~lalll or applica~on was loaded to lun on ~e central ~l~C~S`;~g unit and either memory or disc storage or both provided data storage. As ~e indus~y l~lul~d~ CQ~ .J~ S were able to 15 interact with ~ . n~lc to provide _noth~or i",~ltanl user i~t~-rf~^e. Small cc....~ s, known as wu-L~ l-c, l*~ available to provide a user intPrf~r~ and CC!II~ JI;I~g power in the same unit. With the advent of p.,.50..~1 co-.~l.."e-;> or PCs, il,e~ns;ve co-.~ t~ -s have reFl~r~ simple t~ ;n~lc in many c~ ub,~ inct~ tir~nc.
In early co.. l~ute- ~, a ~Oglalll could reside only in a single cu.. -l.uler. Large prùglallls could be broken into segments which could be k~le~, as needed, into active lllC.llGl,~ in the central ~)rOC~S' ng unit. As co-..l.,,~ bec~ more powt;lrul, larger ~,~og,~.,.c could be run but the capacity of a single cc---l-ut~ r ~ in~l a fi.-u~ l limit for the size of a cc~yv~r ~roglalll.
As wu L~l;9nc and PCs bcc~ more prevalent, a paradigm evolved which ' d to ...- ;-..;,~ effir;-nr,y by using available pr~cecc;~.g power in a logical n~e(. Since many users were inte~ri~ with larger co~ ..Jtl-- . ~rough a wu.L~ n or a PC, ~l~O~ r,~ realized ~at r~.. 1;n~c lcq~d to o~-,~e the 30 user in~ ^e, such as screen l~dlawillg, video refresh, ~r~phirs gen~ l;rtn~windowing control (size, positirm and U~ ), and input yroc~c~ g (ch~r~l-ter and filnrti-~n key h~n-lling, i~ s, and such), logically should be h~nrll~l by sorlw~e which was lesldenl on the local wu-~t~l;ol- Following ~is same line of re~coring, many plO~ ullS ~uil., extensive access to CQ...l~te- storage. A classic program of WO 95/04g68 ~168 76~ PCT/US94/08785 thLs type is a f-~qtq~qQ~ where a series of records are stored in a special storage area.
One c-qt~hq-~ used by many; .~ Ds is an ~ n~l~ record. Another -qtqhqse might be for payroll or for --~4~ payable. ~3~Pnerqlly~ a . ~e ~ qtqhqQ, is co~ of a ~u~hDr of ,~cords stored in the &,~L."s sto~ge area. Mllltip'- users S can use the fl'f~f'` l`f'--QD ~;~nUlt-qneo~Q-ly~ but there must be ~ u~i~cns to p~ l two users from PesQ~ing the same record at the same time for then both would be g old ;.,rO.,. q~ .n and possibly ~.qk;.~ and storing ;~lco~ ch~.~f,~
-S de~lG~d server r...~ ..c which controlled record access for reading or writing i~-f~ , record l-~i~ and, when available J"e."G,~ or storage was 10 li-nit.~" .~ ing media c~ es such as .~u~ g or u ~ ou ~ g ~lt~,~c~ ge-qhl-media such as discs or tape.
Mqnirllqti~ ,~rhi.-- ;..rO....zt;.-.n such as windows or menu stol~cti-.n, gr~rhi~
objects and such~ ne~q-lly ,~uiles ~ fi-~ g large z.. ~.. ~c of inf.^.. ~ .n, es~ ly when .--~ qting l ;I~.~al~s ~ this irr~ must be passed over a com~ron nclwul~ shared among m ny CO-~ ~ S, then the ~ wul~ can easily be filled with t~affic lllO~ g ~rh~ ug~s~ In a similar way, the low level cc...~-..z---~s l~uiled to select a sperfir storage media, move the reading heads to the correctportion of the media and puU the ;~.fn....q~;nl~ from the media ~q.l,l~ s a fair qm~lmt 20 of activity l)el~ the controUer and the l~ad;ng heads when aU the user or ~lOg reaUy needs is the result, typicaUy so ne or aU of the contents of the reql~est~record.
This ~qrr~ has evolved to be known as a client se ~,~r. The server, in 25 g~n~rql, p~ ;des control of and access to one or more shared l~soulce,s. One useful server is a ~ ~ server, ~;c~vss~ above. Another useful server is a fi~e server, where the server has access to ~io 1~ll or data or other files and can access this i--r~ ~;n-~ upon l~uesl. A print server might store and direct print jobs to a collP-ctinn of printers which are then ~-ceQQ;hl~ to a Large .-~ of users through 30 simple calls to this server.
lhe Evo~non of Cl~ent-Server t'liPr1t se~ has grown rapidly with advances in ~qtqbq~ mqnq~gf--.e-~l system (DBMS) tPrhnol-lgy and particularly rPlqti~nql .l~l;.h~ ~qnqge~..r-~ system 35 (RDBMS) tPcl nolr!gy. The ar~l~;t,c~ s of the l^-~ing muld-user RDBMSs provide a se~ n b~ the user-s~;fi-^, work of the apFli(;q~ti~n program and the shared
- 2 -~wo 95/04g68 216 ~7 6 2 PCT/US94/08785 data mqnage-..f!n~ services of the RDBMS engine. This a~c]~ -c~..e aUows a single RDBMS engine to service multiple al~p~ ;n~ as well as multiple users of the same5p~ ;n~ Structured query lqngl~ag~ (SQL) p~.ides a~l l;c~ nC with an easy way of ~ ,esl;~ RDBMS services while ~ ~lirqti~nc from the details of data S mq~qee...~ (e.g., c~"~r~"~n~ control, backup and l~o.~, data access strategies).
With the advent of RDBMS n~,twu~Ling p~ducl~, al.l~ nc could be off loaded from the host and placed on a di~ machine, using SQL as the p~olocol to 10 co---~ ;rqt~ ~n them. At first, this t~h~nlogy was used l~t~n two rmilti Pot~ing ~ t~. S, one that ran the RDBMS engine (the back end) and the other (the front end) that drove the users' dumb tr~ c. With the growing acc~f~ of the PC, it was a logic~ step to replace a multi t-qQl~i~ front end m--hinP, with a collPrtir)n of PCs, each of which ran its own copy of the front end 15 ~pl;~sl;o~ O~ . The giUWJ~g pop~llq~ity of the y,J~l h;~l user interface (GU~ hasfur~ersoli~ ;~theappl~- ;A..~e,Sc of client3e.~cr,sincei~e~ ;vcde~
ch--.~ cycles can be used to drive the many details of the GUI.
Meanwhile, on the RDBMS server side, the ~chnnl~gy has also al~ ced.0 RDBMS ~ dols now offer multi-ll..~ded servers with ~ lo~_d ~1~ ~ c~ and ql ility. Some offer stored procedures that can speed the procec~ of p SQL ~lPriPs~ Many also offer gateways to l~ Cl~ the RDBMS vendor's SQL
dialect into RDBMSs . nd file ~:.h,.llS from other vendors.
Today, ~liP-n~ _r has come to mean PCs .~ g an a~ ir~t;rn ~rU~lalll that ~ ~ ~PQQes a sh. red RDBMS server over a n~hvolL Client-server is g~qinin~ rapid p'~ among I7O1~ 1000 co--~ s where is being used today for det,..lh-.f-~ e~c:~u~ pOl~ ~lirqti~nQ~ These co--~ ;es are very in~.~st~ in P ~ the client~er p~ ~ to ent,~ ide online a~ liC~t;nnQ0 Monolithic Cl~ent Appli~ n Prograrns Most ~liPn~ ,r developers today accept a prede~ned divis~ol of co..~l.ul;--g filncfir~nQ beh~n clients and servers. R~fi~-.;-~g to Figures lA and lB, with the most 35 cc--.~ ly used ~l~er.-~ split, clients run the P~ ?ti"n progl~ll which h~n-lles the user's dispLay and any ~ tion pl:OC4SC;~ of the data that goes into or comes
With the advent of RDBMS n~,twu~Ling p~ducl~, al.l~ nc could be off loaded from the host and placed on a di~ machine, using SQL as the p~olocol to 10 co---~ ;rqt~ ~n them. At first, this t~h~nlogy was used l~t~n two rmilti Pot~ing ~ t~. S, one that ran the RDBMS engine (the back end) and the other (the front end) that drove the users' dumb tr~ c. With the growing acc~f~ of the PC, it was a logic~ step to replace a multi t-qQl~i~ front end m--hinP, with a collPrtir)n of PCs, each of which ran its own copy of the front end 15 ~pl;~sl;o~ O~ . The giUWJ~g pop~llq~ity of the y,J~l h;~l user interface (GU~ hasfur~ersoli~ ;~theappl~- ;A..~e,Sc of client3e.~cr,sincei~e~ ;vcde~
ch--.~ cycles can be used to drive the many details of the GUI.
Meanwhile, on the RDBMS server side, the ~chnnl~gy has also al~ ced.0 RDBMS ~ dols now offer multi-ll..~ded servers with ~ lo~_d ~1~ ~ c~ and ql ility. Some offer stored procedures that can speed the procec~ of p SQL ~lPriPs~ Many also offer gateways to l~ Cl~ the RDBMS vendor's SQL
dialect into RDBMSs . nd file ~:.h,.llS from other vendors.
Today, ~liP-n~ _r has come to mean PCs .~ g an a~ ir~t;rn ~rU~lalll that ~ ~ ~PQQes a sh. red RDBMS server over a n~hvolL Client-server is g~qinin~ rapid p'~ among I7O1~ 1000 co--~ s where is being used today for det,..lh-.f-~ e~c:~u~ pOl~ ~lirqti~nQ~ These co--~ ;es are very in~.~st~ in P ~ the client~er p~ ~ to ent,~ ide online a~ liC~t;nnQ0 Monolithic Cl~ent Appli~ n Prograrns Most ~liPn~ ,r developers today accept a prede~ned divis~ol of co..~l.ul;--g filncfir~nQ beh~n clients and servers. R~fi~-.;-~g to Figures lA and lB, with the most 35 cc--.~ ly used ~l~er.-~ split, clients run the P~ ?ti"n progl~ll which h~n-lles the user's dispLay and any ~ tion pl:OC4SC;~ of the data that goes into or comes
- 3 -WO 95/04968 i~ 8 r~7 6 ~ PCTIUS94/08785 out of the RDBMS. The ~ ir~lSinn lJrOg~ l passes SQL to the RDBMS int~rf~e (which also runs on the client). Thé RDBMS ;~te~ then ships the SQL across the l~twu~L to the RDBMS server which prùces~s the l~uesl and returns the r~uei.~d data or a status m~s~Ee back through the RDBMS interface to the apFlic~tinn S ~l~Ogl~ll. Acco~ g to this model, the ~rFlir~ti~n ~l~OE;~ u-l is ~ ;c and resides entirely on the client. It is a client appli~ntrQn program . This model is sQ~ -es called remote data m~n~e.~ bec~l~se the d~t~h~e iS sc~ e from the app1ir~ti-n Ogl~ll. Other models for s~litting f(lnrtinn~lity bct~.~n clients and servers are ~licc..~Qed below.
There are many high level tools on the market today for bU~ g client arF1icstir~n p . These tools typically ;~ de a screen desigr~-r and a high level e, often called a 4GL (Fourth ('Jc ~r,-~l;nn ~ e), for ~efinin~ applir,~tinnr.---- ;o~ality. Most of these tools ~ Joll rapid~.vlol~g or the abi1ity to build an 15 app1ir~tinn as an int~ctive process of w~lillg a quick ~rotoly~e and sul~s~uc.~lly refining it.
~ Cmnlithi~ client arplir~tj~n l)~O~.~...c may be well suited for ~leci~ion support involving a single RDBMS. Rllnni~ the entire apr1ir~tinn on the client, howt;ver, 20 may ~.~senl a .. ~ e~ of problems for more con~r1irst~ ~rr1i~tion~. These problems inCl~l~e:
a~lPf~ lOC4S~ power on the des~l~ to drive the en~ty of a complex aprlir~tinn pio~-~u--slow pelro .~ ce due to eYc~C~ive l~twul~ traffic iffirl11ty of int~^in~ wit-h- data sOulc~s other t-h~n the plill~ RDBMS
and those ~ ,d by the RDBMS '~,lldG 'S gat~- ~s ~1 reus~bi1ity of arFlir9tinn cc~ among multiple app1ir~tiQns Coopera~ve Processing ;..,. pa~itinning is best unde ;~od in the larger cont~yt of coopera~ive processing (an umbrella term that desc~ es the division of ap~!lir~tinn fiunctinn~litv in a l~lwul~d ~.~v~ ). It would be incorrect to ~c~.. ~ that appkca~ion5 parti~ioning is synGl,~ll,ous with cooperative processing. An und~ of the .l;on bel~._en these terms can help to il11~st~te the co~ l of this invention. To WO 95/04968 2 i 6 8 7 6 2 PCT/US94/08785 make the ~iCti~lrtit)tl, it is first helpful to look at the dirr~J t styles of coop~ ;ve yl~oce~- ~g as e . ..f~ by the Gartner Group, a market ,~ ch firm based in s~llr~, CQnrlpctirut Cd~l,~r's rlqccifirqti~n of c~yc.~i~_ y~`OC4~ styles is based on an qtinn model that ;~r~ s ~ree dilr~ u~;~ fi~lnrtionc--user p,~se.~l;Qn services, apl~1irvqtirm logic, and data mqnagPment LisPd below are four of the ways fordi~idingthesefi~.~1; .-Cb_t._e. c4 ~ Each,~ t~a Sha~ for 1aclcling dirf~ nl al.pl:r~ yrol,l~- c~ and each is supported by a dirf~.~nt set of tools. Tog.~ r they ~ ~qtP some of ~ _s ~at conLont IS ~age~s as they move from s~and alone host-based e.,~ - . -- " to client ~.~r c~n~ F-'~
Remote Data Management. This di~ on of fimr.tir~nc places the p,~..l~l;~m services and ~rplirqti~)n logic on the client, while the ser~rer pr r~.. C the data 15 mqn~g~...r..l filnrtirln~c The cb"--.--~ r~ )n y,~Otlxol l~h._en these CO--~ is SQL. See Figure 2.
Remote data mq~lage~ n~ is a very co------~ model for l..D;~.cl. ~ll ~q~-q~-qQe çliPn~ r ~plirqt;r~nc where a set of users interact with a de~y ap~lirqt~on that20 accesses a shared ,,1~;O~D1 database ~RDBMS) sever. This model can oy~lale with a character o ;F -~r~ user interface or a z~ l user interface (GU~. Many tools areavailable today for b~ ing ~lirqtirnc that utilize this model (e.g., SQL*Forms, Po~ l,uilder, Uniface, and other 4GLs).
Distrlbuted rræse,.ln~iQn This model, often called Lul~ " or "screen S~pi~," ~ ~tS adivision of rV~ ;o~ y wi~in the ~ n portion of an ap~lir~l;or~ Dic~ .d p,~sr-.'~ takes a traditional .~ -r.~---P- al~l;c~ driving 3270 sc,~e.u and aUows developers to add GUI-based ~ 5e-~t~ n services that run on a PC des~ lop. See Figure 3. The 3270 data s~eam serves as ~e co--.--.----;~ Al;.~nc pl~olocol t~l~ ^hinPs.
.
Dichi~ led p,.,S~ t~ allûws c~ ;n..C to u~ e the user intP-~ce to an e~;!c~ ap~ q5irn without qltPri~ the appli~a~ -- Several products in the market today i".ppû,l this approacl~, and they are dirr~nl products from those that 35 ~ u~l remote data ~nqnq~ nl wo 9S/04g68 2 1~ 8 7 ~ 2 PCT/USg4/08785 D~stributed Data Management. This model ~ a division of f~metion within the data mqns~,e...~ portion of an spplirsti~n With this model, dat~. canreside on more than one co~ , and a ~;`h ~ d data m~nag~ f!n~ product will coo~lin~le access to the dat.. wl,.,.~ ,. it may reside while p.~,se~ g !.~
S apFlirstirm access. ~ef~.r i~ to Figure 4, the ,1;~ g~-q~, knows which tables are on each server and routes ~ accordingly.
Di.ch jl,.~t d da~. mq~agr...f~ can be used in co~ ~o~ with remote data ' where an ~p~ ~h~ E; on the client may access data that is 10 .1; ~ d across more than one RDBMS server. A few of the RDBMS vendors offerd~ datamqna~ r~p~c1~.A~ t~ a~esQ;~d;sl~ilJ.J~d data can be developed with 1- -'1;~ 1 4GL tools.
Distributed Function. This model ~q~pli~qtir)n logic that resides on more than one machine. The cr~ ;r~Pr~ may be a remote ~rocedu~G
call ~RPC) or a more ~ .I;rmql co~ .. r.lu.~;~.. (e.g., IBM's APPC
or CPI-C). See Figure 5.
In their report Client/Server and Cool,c~ e Processing: a Guide for the 20 Perplexed, 1991, Gartner Group ol~ s: "The fl;~hil.lJt~l r...~ style is par~cularly p~ rul for complex ~ ir~;r~l~Q that are both highly user-irt~r?ctiveand d~ /o in ,....Rec~ e the fi~ c reside on the more relevant ~ocal) node, the ~....~.her of n-Pc~ges that must be sent over the ~ u~ cl~.~n Atthe client] and B [the server] is ,--;~ 1, a,c.~y engl li~ relatively ~st lesponce 25 times for complex worlr1~ 1s." Gartner also obs~l.,_s: ~i~hi~ fi1n~ti~n ~l,p1jr l;(-.~c are inl~ tly the most dimr~1t coope~ oc~-c~ g ap~lirstir~nc to design and develop, since there are two S~ t 1y CQmpi1P~ aI~pli~gti~n p~ùgl~
Devel~FP-r~ must analyze thoroughly where each r.- .e ;~ ~ should reside and what type of dialog must occur l~t~.~n the two pro~ c.n Ar)pli(~ntic~n par~foning, which is central to the ~ ~ of this i.l~e.llion, is ah~c~ logy that ~;..,ll;r.fs the devel~ -' of al.~ C using the disl,ilu~d fi1nctirm model des~ above. The gPnP~1 cl.;c.~ ,r ~igrn, 1iccuæ~ed -above, is based on a division of co~ .u~ g fi~ ;o~c among two or more nodes in a35 l~elwul]~. By dividing up co..~ g ta~ks, client-server ;.U~pOlts a flPYih1P and cost errtclive cU~ g model that may di~p1ace t~1itinn~1 host-based Co~ )u~ g as the WO 95/04968 21 6 ~ 7 6 2 PCT/US94/08785 dQ-..;n~ p~r~digm for the future. ~ r~ti~n partitinning goes beyond tr~rlition~lcliPn~ er tPrhnnl~ gy and p~u~ides an ~pproach for ~lloc~ting ~lir~tinn fi..~ ;n.ulity among clients and servers.
S The ~ll~ti~n of co~ u~;~u run~;n~C may p~senl many options, each within~pljr~tiQnc for ~. rO. ~ r4~ control, and/or flPYihility. To handle ~ ;o-.
pa.l;~;n-~ g effectively, one should concirle~ several issues j"~"o~J~ the ~lloc~tion Of filn~fi~nc across multiple ~ rO....c in ~e ~tw~llL The overall goal is to ~ o,-lo~c more erf~ client-server ~ I;o ~c that can solve e.l~ing b-~ ess pro~lPm~.
Summury of the Invention The invention p~ides a system and a ~e~l~od of par~oning an apFlir~tinn g-~ll. A develo~ ,n~ ~og-~------Pr defines a logical applic~tion dÇr~ ;n ~ for an apFlirstion p.Og-~ll by defining two or more objects as co...l o.~n~ of the 15 qpplirstinn l~logl~ll. This ~PlPctinn is made willlou~ co-.c:~ g what s~)erifir machine c~ f!nt will be used at run time.
Once the objects are ~er-.r~ in ~,Jrrrir--- detail to allow the aprlirstir~n to 0~!~ , the ~rFlirqtinn a~ or will ide.~ a specifir- en~,ilo~ for the 20 g~ljr~tj~n ~,lug~ clvdi~ at least two int~,.co .-~ co~ s. Each object is sQQigrPd to a partition and each pa,Li~on is 5~Q~ d to a target co~ vt~r and loaded to allow the applirstinn pio lalll to run. The system can g~nf " ~ a default ;l;~ g s~l~-----~ to assist the applir~-l;on ~t1mini~tr~tor with initial partitioninE.
This results in the 5~r~!lir~tirJn ~lOg~ull being ~ n~ as a series of partitions, 25 each of which is s~dgJ~d to a c~ among available Co~ g l~,sour~s. The ~rig~ y~ ;nn;~ selected by the co~ can be ,..(y~ ~ su~ ;rslly or by a user. ]~o~lifirstion can inrl~e moving an object from one par~tion to snothPr orreplirsti-u entire p~ ons. The ul~,.ll;on also i~rl~ s ~ ""~l;c ~t -~-~; -. of ~.r... "~a~r~ bottlPnp~ in oye-~ the apL~ ;nn ylo 1~" and, where 30 dpp~o~le"J~yl;~ g one ormore objects to run on ~ itinn~l CO~ in order to &nhAnc~ throllghrut or increase r~pl~ ty in the system.
The ~E!lir~tinn ylO~ l can be run easily in a new e.lvil~o~ n~ by g~ ni~lg the sr~ific partitions to run on available e l.~;r~.c--~ A single aprlir~tirn pr~g.~
35 might run within the same cu~ in a variety of dil`f~ partitinning sç~ ..P,~, based on specific ~sources and needs in a specifir- COl~Olal~; lnc~tinn.
WO 95/04968 ~ i 8~ 6 ~ PCTtUS94tO8785 As cliP-nt s~,~er evolves from a de~h~ 1 to an en~ ;se-wide ~hat~ /, qrp1irqtjnn ~I;I;n~l;~ will be a key ~llaltgy.
. Applir~qtinn partitirning is the ability to create a unified aprlie-qtinn and ~,bs~lJe-~ y break it into a set of ~od~ s that cY~tP- on dirr~ nodes in a S ~lw~ n~r~,u~
~rFlir~tinn pa~itir)ni~ can be an ~ l llat~E;y for increasing . r.. ~ , control, and flP-Yi1~ility.
P~I;I;~ g leverages the client-server model to s.~pGll a new ee ~e~ n of enterprise a~ ;n~c.
Forté was ~PCi~P~I as a tool for de~e~ E and deploying parhti~ n a~Flirqti~nc.
Brief Description of the D~
ri~ s lA and lB illllct~q-te a prior art ~O~ ;r client apI!lir~tinn p,Og Figure 2 ill~h~t~ s a prior art remote dat~a Inqnq~e,~ model.
Figure 3 i~ t~s a ~ hi~ t.~ y~ l;O-- model.
Figure 4 ill~ tJ~S a f~ Jt~r~ data ~qnag~.. e.~t model.
Figure S i~ 3h~t~s a .licl.il..,~ r,..-~ model.
Figures 6A and 6B i~ strtq-tp ap~lirqtinn p,~l;l;,...;.~p.
Figure 7 i~ ch~t~s 3-u~tl.rr aspect of sl,ylir~tinn partitinnir~.
Figure 8 ill..~ t. S proc~sCi-~p laSICS in p,qrqllP-l-Figure 9 jll~ t S impl~ -n';~ a single logical aprlirqtinn d~Pfinitirln in ~nnl~ipl~ cnnfiFIlr~q~ ns.
Figure 10 il1~sl~t~.s ~ ..e-.~ g a single logical ap~lirqti~n definitinn in a mixed cQnfi~lr~qtinn Figure 11 illuSllateS a l~lese ~ e impl~- ~.e I~l;on of ~e me~od for a ~;u~!l.. er ser~ice app1ir~ti~n.
Pigure 12 i~ tr~t~s a l~ ,S~- ~t;~e impl~ n of ~e meth~ for a S simple .~ r ~t~ring l,~ocess apFlir~ti~n Figure 13 i~ sh~t~vs a ~ .e implc~-cn~-l;nn of ~e metll~ for ~nl~th.or r~ ng ap~ ti~n.
Figure 14 ill--~h~ s a l~ impl~ t~l;n~- of ~e ~ -~ for a r ~l se,~ s ~ r~
Figure 15 ill--cl-~tP,s a ~p~ont~ implr~.f .~ ... of ~e ~ l.od for a ~;v,~ : ~ product order/en~r al~l;r~;nn.
Figure 16 ill~ t~s a ~lOE;la.l~ de~ cycle using ~e new .. etl.nd.
Figures 17A and 17B illnstr~t~, a sample ~rI~li~tinrl program as a tr~-litinn~l ~ioc~lu,~ and as a coll~-ctinn of ~./ices.
Figure 18 ill.~yt~t~ S the new de~el~p~ e.~iro~ a~ t~,c~ e.
Figure 19 ill..~l.,.1~s ~lictrilnltinn of service objects through par~itinning~
Figure 20 ill~lctr~t~s default p~i~n~ g.
Figure 21 ill ~ tfs ~ J~d e ~ ;n~
Figure 22 ill~-ch~t~s using an e.,~o~ r for .. ~ g the .i; ch il ~t. ~1 ap~lir~ti~ n Figure 23 ill~ s a l~ nin~ int~^e.
wo 95/04968 21 6 8 7 6 2 PCT/US9410878~
Description of the ~f~ l Embodiments Some gton~ efinitionc and a ~esr- ;p~;on of the overall system will assist in e~ g the ~senl invention.
s Di~tribu~ed Applic~7ti~ns A l;ct.i~ ~ apI~1ir~tinn pr~rides access to l;ch;1.u~ mzchines and se~vices through a single, integrated system. The ~ ;o.~l client-server ~ ir~tir)n runs on only two --~ -s, a ~e~ ? CO~ t~ r and a database server. Ho~ ., an 0 ~,~lir~ti~m ~iOgl.~.~ll using the new ~ r~ can run on any .------l~e~ of dir~n~
machines, which may be only two machines or may be many m~rh;neS.
A single a~ r~;nn P~OE,1~l1 can acceæ any .--~ 1 er of d;~hilJ.~ services, ; . ,r1. ~ g any .~ her of ~lzt-hz~,s (on any ~ r of ~;s~;--rt m~rhirlPs) 3GL se.~rices, such as an API to the New York stock eYch~e, a cu~ e~c;al s~tictir~l analysis ~r~g~o, or a 3GL ~M!lir~ti~n developed in-house New services, such as an image server or coo,.1;~ n facility A new aprlir-ti~n ~roE;l~ll can also lJio~ride fault tolerance and p~r~
yl~,ce-s~ by ~ ""~I;r~lly~-CeQQ;ng backupandload Ch~ gmA^hin~5.
Par~ions In order to 1;CI~;hU~P an apr1irstir~n~ Forte (the new m~th~) divides it into two or more logical ~ , called ~ ;ons. Eachpartition is an inde~ d~nl co-.~l O..f ~-~ which can run on its own .--A-hi-~e. For e ~ 1e, a ~pical end user aM1ir-ti~n has a client partition, f~enr-r~lly placed on the de~l ~op, that provides a g ;tl hiC_1 user in~~ Ae. Other ~lil;ol~s could ;--A1~-de: a DBMS server that runs on a ~ r~--e; an inuge server that runs on a ~peris1i7~d msCAhine; a 3GL service; or 30 other special services. In a ~re.l~d impl~-m~ , the ~-~c~1-r~ of the invention ;-Jk~ ;cs11y coordi-la~s all co~ n l~h.~en the p~tions.
A partition is made up of one or more service objects. To create a disll;bu~d app1irstinn requires defining any needed service object as part of the project.
-- WO 95/04968 2!1 6 ~ 7 6 2 PCT/US94/08785 Service Objects A Forte ~r~lir~tion l)~Oglalll iS made up of objects. Each disl~ ed service with which the app1ir~til~n ~.Og~ t,,~ iS an object. For e~ )1r~ a ~t~h~e ^^c~s~l from the a~ r~l;r)n l,rogl~ull is an object. Lik~ise, an eYictin~ 3GL
S apF1ir~ti~n is an object. To int~P~r~t with an object, the user or ~noth~r object invokes a mPth xi on it, which f Sse~ lly is just like i~tP~^ting with any other object in the s~lir~tir n yl~O~l~UIl.
In a ~ ;b~J~ 9p~ , every object has a single, fixed location. When a 10 m~thod iS invoked on an object, it is ~ tr~ on the ~ on which the object is
There are many high level tools on the market today for bU~ g client arF1icstir~n p . These tools typically ;~ de a screen desigr~-r and a high level e, often called a 4GL (Fourth ('Jc ~r,-~l;nn ~ e), for ~efinin~ applir,~tinnr.---- ;o~ality. Most of these tools ~ Joll rapid~.vlol~g or the abi1ity to build an 15 app1ir~tinn as an int~ctive process of w~lillg a quick ~rotoly~e and sul~s~uc.~lly refining it.
~ Cmnlithi~ client arplir~tj~n l)~O~.~...c may be well suited for ~leci~ion support involving a single RDBMS. Rllnni~ the entire apr1ir~tinn on the client, howt;ver, 20 may ~.~senl a .. ~ e~ of problems for more con~r1irst~ ~rr1i~tion~. These problems inCl~l~e:
a~lPf~ lOC4S~ power on the des~l~ to drive the en~ty of a complex aprlir~tinn pio~-~u--slow pelro .~ ce due to eYc~C~ive l~twul~ traffic iffirl11ty of int~^in~ wit-h- data sOulc~s other t-h~n the plill~ RDBMS
and those ~ ,d by the RDBMS '~,lldG 'S gat~- ~s ~1 reus~bi1ity of arFlir9tinn cc~ among multiple app1ir~tiQns Coopera~ve Processing ;..,. pa~itinning is best unde ;~od in the larger cont~yt of coopera~ive processing (an umbrella term that desc~ es the division of ap~!lir~tinn fiunctinn~litv in a l~lwul~d ~.~v~ ). It would be incorrect to ~c~.. ~ that appkca~ion5 parti~ioning is synGl,~ll,ous with cooperative processing. An und~ of the .l;on bel~._en these terms can help to il11~st~te the co~ l of this invention. To WO 95/04968 2 i 6 8 7 6 2 PCT/US94/08785 make the ~iCti~lrtit)tl, it is first helpful to look at the dirr~J t styles of coop~ ;ve yl~oce~- ~g as e . ..f~ by the Gartner Group, a market ,~ ch firm based in s~llr~, CQnrlpctirut Cd~l,~r's rlqccifirqti~n of c~yc.~i~_ y~`OC4~ styles is based on an qtinn model that ;~r~ s ~ree dilr~ u~;~ fi~lnrtionc--user p,~se.~l;Qn services, apl~1irvqtirm logic, and data mqnagPment LisPd below are four of the ways fordi~idingthesefi~.~1; .-Cb_t._e. c4 ~ Each,~ t~a Sha~ for 1aclcling dirf~ nl al.pl:r~ yrol,l~- c~ and each is supported by a dirf~.~nt set of tools. Tog.~ r they ~ ~qtP some of ~ _s ~at conLont IS ~age~s as they move from s~and alone host-based e.,~ - . -- " to client ~.~r c~n~ F-'~
Remote Data Management. This di~ on of fimr.tir~nc places the p,~..l~l;~m services and ~rplirqti~)n logic on the client, while the ser~rer pr r~.. C the data 15 mqn~g~...r..l filnrtirln~c The cb"--.--~ r~ )n y,~Otlxol l~h._en these CO--~ is SQL. See Figure 2.
Remote data mq~lage~ n~ is a very co------~ model for l..D;~.cl. ~ll ~q~-q~-qQe çliPn~ r ~plirqt;r~nc where a set of users interact with a de~y ap~lirqt~on that20 accesses a shared ,,1~;O~D1 database ~RDBMS) sever. This model can oy~lale with a character o ;F -~r~ user interface or a z~ l user interface (GU~. Many tools areavailable today for b~ ing ~lirqtirnc that utilize this model (e.g., SQL*Forms, Po~ l,uilder, Uniface, and other 4GLs).
Distrlbuted rræse,.ln~iQn This model, often called Lul~ " or "screen S~pi~," ~ ~tS adivision of rV~ ;o~ y wi~in the ~ n portion of an ap~lir~l;or~ Dic~ .d p,~sr-.'~ takes a traditional .~ -r.~---P- al~l;c~ driving 3270 sc,~e.u and aUows developers to add GUI-based ~ 5e-~t~ n services that run on a PC des~ lop. See Figure 3. The 3270 data s~eam serves as ~e co--.--.----;~ Al;.~nc pl~olocol t~l~ ^hinPs.
.
Dichi~ led p,.,S~ t~ allûws c~ ;n..C to u~ e the user intP-~ce to an e~;!c~ ap~ q5irn without qltPri~ the appli~a~ -- Several products in the market today i".ppû,l this approacl~, and they are dirr~nl products from those that 35 ~ u~l remote data ~nqnq~ nl wo 9S/04g68 2 1~ 8 7 ~ 2 PCT/USg4/08785 D~stributed Data Management. This model ~ a division of f~metion within the data mqns~,e...~ portion of an spplirsti~n With this model, dat~. canreside on more than one co~ , and a ~;`h ~ d data m~nag~ f!n~ product will coo~lin~le access to the dat.. wl,.,.~ ,. it may reside while p.~,se~ g !.~
S apFlirstirm access. ~ef~.r i~ to Figure 4, the ,1;~ g~-q~, knows which tables are on each server and routes ~ accordingly.
Di.ch jl,.~t d da~. mq~agr...f~ can be used in co~ ~o~ with remote data ' where an ~p~ ~h~ E; on the client may access data that is 10 .1; ~ d across more than one RDBMS server. A few of the RDBMS vendors offerd~ datamqna~ r~p~c1~.A~ t~ a~esQ;~d;sl~ilJ.J~d data can be developed with 1- -'1;~ 1 4GL tools.
Distributed Function. This model ~q~pli~qtir)n logic that resides on more than one machine. The cr~ ;r~Pr~ may be a remote ~rocedu~G
call ~RPC) or a more ~ .I;rmql co~ .. r.lu.~;~.. (e.g., IBM's APPC
or CPI-C). See Figure 5.
In their report Client/Server and Cool,c~ e Processing: a Guide for the 20 Perplexed, 1991, Gartner Group ol~ s: "The fl;~hil.lJt~l r...~ style is par~cularly p~ rul for complex ~ ir~;r~l~Q that are both highly user-irt~r?ctiveand d~ /o in ,....Rec~ e the fi~ c reside on the more relevant ~ocal) node, the ~....~.her of n-Pc~ges that must be sent over the ~ u~ cl~.~n Atthe client] and B [the server] is ,--;~ 1, a,c.~y engl li~ relatively ~st lesponce 25 times for complex worlr1~ 1s." Gartner also obs~l.,_s: ~i~hi~ fi1n~ti~n ~l,p1jr l;(-.~c are inl~ tly the most dimr~1t coope~ oc~-c~ g ap~lirstir~nc to design and develop, since there are two S~ t 1y CQmpi1P~ aI~pli~gti~n p~ùgl~
Devel~FP-r~ must analyze thoroughly where each r.- .e ;~ ~ should reside and what type of dialog must occur l~t~.~n the two pro~ c.n Ar)pli(~ntic~n par~foning, which is central to the ~ ~ of this i.l~e.llion, is ah~c~ logy that ~;..,ll;r.fs the devel~ -' of al.~ C using the disl,ilu~d fi1nctirm model des~ above. The gPnP~1 cl.;c.~ ,r ~igrn, 1iccuæ~ed -above, is based on a division of co~ .u~ g fi~ ;o~c among two or more nodes in a35 l~elwul]~. By dividing up co..~ g ta~ks, client-server ;.U~pOlts a flPYih1P and cost errtclive cU~ g model that may di~p1ace t~1itinn~1 host-based Co~ )u~ g as the WO 95/04968 21 6 ~ 7 6 2 PCT/US94/08785 dQ-..;n~ p~r~digm for the future. ~ r~ti~n partitinning goes beyond tr~rlition~lcliPn~ er tPrhnnl~ gy and p~u~ides an ~pproach for ~lloc~ting ~lir~tinn fi..~ ;n.ulity among clients and servers.
S The ~ll~ti~n of co~ u~;~u run~;n~C may p~senl many options, each within~pljr~tiQnc for ~. rO. ~ r4~ control, and/or flPYihility. To handle ~ ;o-.
pa.l;~;n-~ g effectively, one should concirle~ several issues j"~"o~J~ the ~lloc~tion Of filn~fi~nc across multiple ~ rO....c in ~e ~tw~llL The overall goal is to ~ o,-lo~c more erf~ client-server ~ I;o ~c that can solve e.l~ing b-~ ess pro~lPm~.
Summury of the Invention The invention p~ides a system and a ~e~l~od of par~oning an apFlir~tinn g-~ll. A develo~ ,n~ ~og-~------Pr defines a logical applic~tion dÇr~ ;n ~ for an apFlirstion p.Og-~ll by defining two or more objects as co...l o.~n~ of the 15 qpplirstinn l~logl~ll. This ~PlPctinn is made willlou~ co-.c:~ g what s~)erifir machine c~ f!nt will be used at run time.
Once the objects are ~er-.r~ in ~,Jrrrir--- detail to allow the aprlirstir~n to 0~!~ , the ~rFlirqtinn a~ or will ide.~ a specifir- en~,ilo~ for the 20 g~ljr~tj~n ~,lug~ clvdi~ at least two int~,.co .-~ co~ s. Each object is sQQigrPd to a partition and each pa,Li~on is 5~Q~ d to a target co~ vt~r and loaded to allow the applirstinn pio lalll to run. The system can g~nf " ~ a default ;l;~ g s~l~-----~ to assist the applir~-l;on ~t1mini~tr~tor with initial partitioninE.
This results in the 5~r~!lir~tirJn ~lOg~ull being ~ n~ as a series of partitions, 25 each of which is s~dgJ~d to a c~ among available Co~ g l~,sour~s. The ~rig~ y~ ;nn;~ selected by the co~ can be ,..(y~ ~ su~ ;rslly or by a user. ]~o~lifirstion can inrl~e moving an object from one par~tion to snothPr orreplirsti-u entire p~ ons. The ul~,.ll;on also i~rl~ s ~ ""~l;c ~t -~-~; -. of ~.r... "~a~r~ bottlPnp~ in oye-~ the apL~ ;nn ylo 1~" and, where 30 dpp~o~le"J~yl;~ g one ormore objects to run on ~ itinn~l CO~ in order to &nhAnc~ throllghrut or increase r~pl~ ty in the system.
The ~E!lir~tinn ylO~ l can be run easily in a new e.lvil~o~ n~ by g~ ni~lg the sr~ific partitions to run on available e l.~;r~.c--~ A single aprlir~tirn pr~g.~
35 might run within the same cu~ in a variety of dil`f~ partitinning sç~ ..P,~, based on specific ~sources and needs in a specifir- COl~Olal~; lnc~tinn.
WO 95/04968 ~ i 8~ 6 ~ PCTtUS94tO8785 As cliP-nt s~,~er evolves from a de~h~ 1 to an en~ ;se-wide ~hat~ /, qrp1irqtjnn ~I;I;n~l;~ will be a key ~llaltgy.
. Applir~qtinn partitirning is the ability to create a unified aprlie-qtinn and ~,bs~lJe-~ y break it into a set of ~od~ s that cY~tP- on dirr~ nodes in a S ~lw~ n~r~,u~
~rFlir~tinn pa~itir)ni~ can be an ~ l llat~E;y for increasing . r.. ~ , control, and flP-Yi1~ility.
P~I;I;~ g leverages the client-server model to s.~pGll a new ee ~e~ n of enterprise a~ ;n~c.
Forté was ~PCi~P~I as a tool for de~e~ E and deploying parhti~ n a~Flirqti~nc.
Brief Description of the D~
ri~ s lA and lB illllct~q-te a prior art ~O~ ;r client apI!lir~tinn p,Og Figure 2 ill~h~t~ s a prior art remote dat~a Inqnq~e,~ model.
Figure 3 i~ t~s a ~ hi~ t.~ y~ l;O-- model.
Figure 4 ill~ tJ~S a f~ Jt~r~ data ~qnag~.. e.~t model.
Figure S i~ 3h~t~s a .licl.il..,~ r,..-~ model.
Figures 6A and 6B i~ strtq-tp ap~lirqtinn p,~l;l;,...;.~p.
Figure 7 i~ ch~t~s 3-u~tl.rr aspect of sl,ylir~tinn partitinnir~.
Figure 8 ill..~ t. S proc~sCi-~p laSICS in p,qrqllP-l-Figure 9 jll~ t S impl~ -n';~ a single logical aprlirqtinn d~Pfinitirln in ~nnl~ipl~ cnnfiFIlr~q~ ns.
Figure 10 il1~sl~t~.s ~ ..e-.~ g a single logical ap~lirqti~n definitinn in a mixed cQnfi~lr~qtinn Figure 11 illuSllateS a l~lese ~ e impl~- ~.e I~l;on of ~e me~od for a ~;u~!l.. er ser~ice app1ir~ti~n.
Pigure 12 i~ tr~t~s a l~ ,S~- ~t;~e impl~ n of ~e meth~ for a S simple .~ r ~t~ring l,~ocess apFlir~ti~n Figure 13 i~ sh~t~vs a ~ .e implc~-cn~-l;nn of ~e metll~ for ~nl~th.or r~ ng ap~ ti~n.
Figure 14 ill--~h~ s a l~ impl~ t~l;n~- of ~e ~ -~ for a r ~l se,~ s ~ r~
Figure 15 ill--cl-~tP,s a ~p~ont~ implr~.f .~ ... of ~e ~ l.od for a ~;v,~ : ~ product order/en~r al~l;r~;nn.
Figure 16 ill~ t~s a ~lOE;la.l~ de~ cycle using ~e new .. etl.nd.
Figures 17A and 17B illnstr~t~, a sample ~rI~li~tinrl program as a tr~-litinn~l ~ioc~lu,~ and as a coll~-ctinn of ~./ices.
Figure 18 ill.~yt~t~ S the new de~el~p~ e.~iro~ a~ t~,c~ e.
Figure 19 ill..~l.,.1~s ~lictrilnltinn of service objects through par~itinning~
Figure 20 ill~lctr~t~s default p~i~n~ g.
Figure 21 ill ~ tfs ~ J~d e ~ ;n~
Figure 22 ill~-ch~t~s using an e.,~o~ r for .. ~ g the .i; ch il ~t. ~1 ap~lir~ti~ n Figure 23 ill~ s a l~ nin~ int~^e.
wo 95/04968 21 6 8 7 6 2 PCT/US9410878~
Description of the ~f~ l Embodiments Some gton~ efinitionc and a ~esr- ;p~;on of the overall system will assist in e~ g the ~senl invention.
s Di~tribu~ed Applic~7ti~ns A l;ct.i~ ~ apI~1ir~tinn pr~rides access to l;ch;1.u~ mzchines and se~vices through a single, integrated system. The ~ ;o.~l client-server ~ ir~tir)n runs on only two --~ -s, a ~e~ ? CO~ t~ r and a database server. Ho~ ., an 0 ~,~lir~ti~m ~iOgl.~.~ll using the new ~ r~ can run on any .------l~e~ of dir~n~
machines, which may be only two machines or may be many m~rh;neS.
A single a~ r~;nn P~OE,1~l1 can acceæ any .--~ 1 er of d;~hilJ.~ services, ; . ,r1. ~ g any .~ her of ~lzt-hz~,s (on any ~ r of ~;s~;--rt m~rhirlPs) 3GL se.~rices, such as an API to the New York stock eYch~e, a cu~ e~c;al s~tictir~l analysis ~r~g~o, or a 3GL ~M!lir~ti~n developed in-house New services, such as an image server or coo,.1;~ n facility A new aprlir-ti~n ~roE;l~ll can also lJio~ride fault tolerance and p~r~
yl~,ce-s~ by ~ ""~I;r~lly~-CeQQ;ng backupandload Ch~ gmA^hin~5.
Par~ions In order to 1;CI~;hU~P an apr1irstir~n~ Forte (the new m~th~) divides it into two or more logical ~ , called ~ ;ons. Eachpartition is an inde~ d~nl co-.~l O..f ~-~ which can run on its own .--A-hi-~e. For e ~ 1e, a ~pical end user aM1ir-ti~n has a client partition, f~enr-r~lly placed on the de~l ~op, that provides a g ;tl hiC_1 user in~~ Ae. Other ~lil;ol~s could ;--A1~-de: a DBMS server that runs on a ~ r~--e; an inuge server that runs on a ~peris1i7~d msCAhine; a 3GL service; or 30 other special services. In a ~re.l~d impl~-m~ , the ~-~c~1-r~ of the invention ;-Jk~ ;cs11y coordi-la~s all co~ n l~h.~en the p~tions.
A partition is made up of one or more service objects. To create a disll;bu~d app1irstinn requires defining any needed service object as part of the project.
-- WO 95/04968 2!1 6 ~ 7 6 2 PCT/US94/08785 Service Objects A Forte ~r~lir~tion l)~Oglalll iS made up of objects. Each disl~ ed service with which the app1ir~til~n ~.Og~ t,,~ iS an object. For e~ )1r~ a ~t~h~e ^^c~s~l from the a~ r~l;r)n l,rogl~ull is an object. Lik~ise, an eYictin~ 3GL
S apF1ir~ti~n is an object. To int~P~r~t with an object, the user or ~noth~r object invokes a mPth xi on it, which f Sse~ lly is just like i~tP~^ting with any other object in the s~lir~tir n yl~O~l~UIl.
In a ~ ;b~J~ 9p~ , every object has a single, fixed location. When a 10 m~thod iS invoked on an object, it is ~ tr~ on the ~ on which the object is
4~tP~ Normally, ~e object is loc~tP~ on the machine on which it was created.
Each senrice object can be ~ 4~,.,t. ~1 on other ~alLLons by an object l~.,ei.
broker, ~Y--~ed below.
lS ~lth~ h the a~ lirqtir~n may consist of thOlu~-nrlC of objects, only a few of these need to be at a particular lor~l;oQ, These ;~ e:
an object that represents an e ~ g e t - --Al l~sGulce~ such as a lq-tq-h-q-~e n~qnqe,~ system or a 3GL service, that is already p.43e,.l on a particular mqrlnnP, an object that p~i~es a Forte service that is going to be shared by m111tip1P.users, such as an image server {or an auction ~q~q~er for an ~q~lctinning filnrtir~n}
an object that ~ a service that will be reF1ir~q~tPA to provide filover or load bq1qnçillg When an qpp1ir?tinn is divided into ~LLolls, these central services are objects that may need to be placed on s~eÇ;rc ,-.a~ 5 The qrp1ir~tinn plo~ has the option of S~C;~illg that a sPlecte~ object 30 must be 1~C~PA on a speçifie ~tilioll by ~ aLg and nqming a serl~ice object. The qrp1irqtinn p~O~, .. ~ does not need to worry about the lo~1;~ ~c of other objects in the apI~1irqtinn p~Ogl,UIl. If a service object creates other objects, these will be loGq~ on the same partition as their creator. For coll~eQ;~Ic~ the rest of this I;nn will ~c.,~....r. that a "service object~ inr11~les related objects created by the 35 actual service object.
WO 95/04g68 PCT/US94/08785 A service object is simply a named object that can be ~ nced from any mPth~ in ~e aprliAsti~n ~Og~ . It is like a global varLable, except that ~e value can be s~;f'~ at cQn~pil~ ~me. When ~lw.ling a service object, it is ~ci~n~ a name, a class, and values for its ~ 'Vt~-S.
s On. e created, a service object can be used like any o~er object. If a user or hf r object invokes a mPth~ on a service object that is locstP~ on a remote m^AhinP, a ~ e,.l for the service object is passed through a local object request broker. A broker l~plod~ces the interface of a co~EspQ~ service object so that 10 when a .--~ od is invoked on the service object, all r~eS~C are c~ ,d by ~e local object ~uei.l broker ~en f~ ed to the actual serviee object for pioc4sc~ . Any return value and output p~ are ~ uugh the object l~ broker to the originql invoking object. Thus invoking a .--~ od on a service object that is lor-qt~ on a remote ..,~ is completely !.. ~.S~.
One special service object is a DBMS l~,s~lur~ mqna~P,r, which provides access to an ~ e ~ hqce mqn:lgP,mPnt system. The new l~ souice mqnqgPr p,v~idf,S a shell to "wrap" the ~ E; system and intercept and l~ Cl~t~-, as -Pc~s~ , all m~s~ges~ l~ue~ or data sent to or from the c-;cl;-~g system. By 20 defirlins~, a DBMS l~s~ul~ .-.q~ger service object, an e ;c~ g d~h~, mqnq~,e...~
system can be treated like any other object. The user can thus invoke .~-ell~ocls on the new l~,s.~ur~ mqnagP,r to st~t a ~-h-q-~e seS~ n~ l~hic~, dat.., update data, and so on.
E,.v~
To implement a ~ apFlir-q-~inn in a ~pecifir- e,~ o~ cn~ lf~ui~S
providing some inrQ-..-~t;nn about that e"~ An e,-~i-o---..~ is a named des~ of the l~d..~ and sorlw~ at a par~cular site, such as a par~cular co-.~ of_c~ or a par~cular dcp~h,lcnl. The same logical a~ ... decç.;~
30 can be used, wi~out n.~ifir~ti~n, to implement a rl;~hi~-lt ~ n in any ..~r Of e,"~ f'~ In ~'Aiti-~n, a single ~ can ~I ner~lly ~.
more than one ~ a~lir~tit~n To; -l,le---f,~-l a l;cl~;bu~ed applir~lt1(m l~llil~,S par~ nin~ the applir~tion for 35 the specific en~,~o~.-.. --.~ This means ~sig~ing each of ~e applir~ti- n's service ~ WO 95/04968 216 8 7 6 2 PCT/US94/08785 objects to a sreçific ~&,Lilion and ~c;rying which partition will mn on which node or m~rh;~P.
Par~ioning In a p~r~ d imp~ t-~ ;rm, the ~ ~l m-oth~ ~ ;r~1ly partitions each object of an ~rpli~ ~ti~ n p~o~ into a partition. Tbis inCl~Jd~ps ide.~lilyillg and placing each service object in a ~)altil.;U~ ,f~ ,d for ~at service object. This also ;-~el~dcs id~nliry~,g each object created by the service object and l ~i~ that object in the same ~liLon as the servi-ce object. An object ~ est broker for ~at service0 object can be created for any other ~I;on and in g~,ne~l should be created for any il;on wbich co~ an object which can invoke the service object.
Ref~P-rri~ to Figures 6A and 6B, parli*nning ~ des ~c~igning each partition to a particular node or machine in the e n~r~o~ f ~ with appro~ suu~ces and 15 cqp~bilitiPs The par~itioning can be ~ n~d and .~ ;r.r~, for example by r~ ig~in~ a certain partition to ~no!1-er node or by moving a service object to ~n--thPr ~kuliliOll.
Viewed ~-~o~ way, apFlir~ti~n par~iti~ni~ is the ability to split an 20 ~ a~ n l~loE5~ to run on t~,vo or more cc---l~u~-~,.. Whereas the mnnnlithir, client al.p~ l- model splits the ~I~Flir~ n from the RDBMS server, ~p~l;f~ n partiti~-ni~ provides a way to ~l;c~ L~te the ~p~ l;nr ~O~ itself across mllltipl.-c~ .,tu-~. Part of the apFlir~tirJn may run on the client, ~nother part m~y run on the ba~.l~ that also drives the RDBMS server, and part may run on one or more other 25 servers.
A ~ f~lcd pallilion m~y be yl~er~p~d~ for ~ lr when a serv.ice object wiU wrap an eyicti~ applir~tinn which is already l~d~ on a sperifir m~rhine. Notall pi~re~cd partitions need to be predefinP~ since m~ny service objects can mn 30 equaUy weU on a variety of m--^hinPs The ~ ti~n of srecifir partitions can bemude based on the har.l~ and soh l~ui~ of a particular service object and any co.,.,~ ;~ created objects b~l~nr~ against other service objects and available ~ '''h;~ SOul"~S.
35Once a partition has been ~c~igrP~I to a node and fully spec;rP~l, inc~ inf~ all service objects, objects, and object request brokers for that partition, the partition can W O 95/04968 21 6 8 7 6 2 PCT~US94/08785 be comrilP~ for a particular mqehinP. This may involve simply ~,~.n~.".l;n~ an ap~ ~ ;n~ .~..PAiA~ source code, such as C+ +, for cQmrilqti~n into mqr~linlo n~lq~P on the ~ er.ifir. node. The comrilp~l m-q-chinP code can be loaded on each node and the ap~lirqtion piOgla", is ready to run.
s A partition can be .--r~;r.~ at any time by a ~--~---1~- of means. A particular service object might be moved from one pal~tion to ~no~ r. In the simplest system wi~ only two nodes, the initial ~~ ;~ implements at least one senrice object on each node. The pl~ hrd allows ~J~ the service object in th~e second 10 pa~ ioll then ~ ~ the o~jnql service object, erf~cli~e~ .a~ g the loc-q-tir~nof the actual service object. This should make no dirf,.~n~ to any other object in either partition except that calls from the second ~-~AI~ e which previously were brokered are now hqndl~p~ d~cll~r and calls from the first ,..=^h:~ which previously were hqn~lP~ d~ tl~ are now brokered. If there are more than two nodes, the same15 gpne~ql principles allow l~u~ing a service object to a diCf~,.enl partition.
Aprlirqtinn pa~ g does not dictate a yl~ r. ~ split of fi~nCtirnqlity for a client ~,~ v~o~.-..f,n~ It allows the ~;uus portions of the applicqtinn to be q11~qtPd in several pos~ ways. It ~cog~ s that the ap~,o~ e division of 20 ~I~r1ir~tjnn fi~nctinnq1i~y among clients and servers is highly a~ epen~1pnt-And even for a given ~p~lirqtinn, the optimal division may change over time with the ~litirm of new users and s~licqtinn ~ c:.,,,c With par~itiQni~ an ~rrlir9tinn pLO~ I can be bu~l~ as a cQ1lP~ctirm Of 25 service objects and depl ryed as a ~ d a~ , parhtinnillg allows a deve1~...f-~ Og~ r to place ~I~r1ir~tion fi1nrtinn~1ity on servers as well as clients. It ~ t -s the ~",---~ ;r~;on~ among the dirr~ 9ppli~tit~n pa~o~7s SO
that the ~I~r1ir~tinn will fi1nctinn the same ~l~ it runs entirely on the client or is t~d across several m~ ;rtPs.
A~pl;~ ;n~- p~l;l;n..;~ iS based on the CQ"~4pl of dGc4-,p1;--g the develol.",el, of an ~ ic~tinn~s funrtinn~lity from the dcc~ of where the ~aliuus ap~lic~ti~n Co~ s WiU run in the deplo~",fnl cQnfie~- .I;n~ A developer l~ro~ r can build a logical applic~rtion de~on that is ;-.~le~ F.~I of the underlying physical 35 (,.~ fnl After develûp",~nt, the logical ~rp1irs~inn de-finition is par~ (i.e., split apart into in~lf,~.~Fnt m~ lPs that can eYecl~tP on dir~ nodes in a nclwul~) --wo 95,04g68 ~ ~ 6 8 7 6 2 PCT/US94/08785 and co~ ;cqtinns are s~tn~ y set up, freeing the develo~ l progrrqm~nP.r from ~q1ing with co~ rqtionC during the apFlirqtinn A~finitic~n cycle. RPfPrri~gto Figure 7, a logical applirqtinn definiti~n i_ built as a collP-Pion of service objec$s that runs in a single address space even though it is ~lb~q~r ~ly d;C~ "ut~li over two S or more ~OC~5C~JS. After partitinni~ the spp~ n still ~senls a unified system view, allowing an applir~tinn a ~ iCl~tor to mqvn-q-~e all the co~ c~l partitions from a single user int~.f~c~.
PartitinnP~ qrFlirqtionc provide the basis for an a~ on a,~l it~c~ that0 ç~n~s the realm of qpFlirqti~n filnrti~n~lity and introduces several op~i~r C for -r..-~.R ~e, rÇliq~ lity and control. ~prli~ti~n parti~ mi~ can help o~ ;nnc errec~ ly use the clien~ r model to build new enterprise-wide online apFlirqtion~ that contqin more fi~nCtinnqlity~ Yc.co...~..n~zt~, more users, and are subject to rapidly evolving bl~ SS5 Principles of App1ienh.'on Part7honfng To be errt;-,live, ~ g should follow the following principles:
1. A parti~ioning scheme can be altered withou~ modifying the logical arplienhon definfnon. The dCr~ ;n~ of the a~ lir~ n ~ C~;n~Ulity should be i...lf,~.n.lf...~ of the pa~ ;n.~illg s~ r-~r . The ~rplirqtiQn ~f r. .;~;~ -- should be c.,v~u..-...~ nPll~l. It should be pos~ e to split the a~ ;nn in a .---~ r of dirr.,~ pLaces willlolll qltP.ring its fimr,tiQnqlity. It shouId be possible to increase the 25 n~ bf~( of pa,lilions for a given ~ lirqtion if, for r ;~ lc, a new server is added to an P~i~in~ cllvi~ f-~
2. The parhtioni~g model must be able to ac~"." odate an u~bilr~.~ numberof partitions rur~ung on m~ple n~n~ hi~.~s The ~I;~;nl-;-,~ sr,l~..e should not 30 s~c ~ ..e that all ~ ;onC will be split to mn on ~e same .~ " of nodes (e.g., a client and a d-q-tqt~qQP, server.) It should not q-cslrnP- that all clients are idçnticql. It should not qQnlmP, there is only one server (or any other .~ ker ). It should not seek to split out a certain type of fi--~ Ality (e.g., ~ rss rules) as the basis for ~ S.-;~. It should not ple,,.u"e the ple~.lce of a ~ q~ system. Tn~t~Pq~l~ it 35 should ~ p~ a very flPYihlP- partitir~ning model ~-vith no limitq~lnQ on the number of posQ;hlP partitions.
WO 95/04968 21 6 ~ 7 62 PCT/US94/08785 3. A single appl~cation definition can support m~iple G~VirV,u,~ , each with its own parti~ioning scherne. Since the ~ i~tion dçfini*on iS nd~ P,nt of a par~cular partiti~nin~ scl~ -, it should be po~QQ~ P to ~ dilf~nl e.~ Q~.-..r.--lc with the same ~ ;n.~ der;-.~ It should be possiblç, for example, to deploy the S same a~ ;nn at two sites, each with its own l~.l~ , cQnfi~tinn and 4. Individual partitions should be able to ~ate and respond to cormn~ trons with otherpar~tions. Since a p~li1;n.~ scl~ e can i~r~ e 10 multiple servers, a . erver should be able to interact dil~:tly with other e~
Servers should also be able to send a mPs~ to ~c ~ ~ clients which can then ~ucess those ...~ ae~ s.
Pa~titioning Appli~tron~
There are several ~asons to partition app~ tinn filn~ti~m~lity across mllltir~^
m~^hinPs Perforrnance. Simple RDBMS apFli~tir~n~ (e.g., l~~ g a screen of data into a ~1 l h~, or 5~lr~1;~ a record from a ~ h~.) are not the ~,.-,~ c~n~ t~s 20 for ~ g ~,. r~ nf~ wjth pa~ . H~ r~ qti~nc that ~,r~
analysis, access multiple data so~ces, and/or or~ st ~- a multi-step l,~ n~ss ~ocess may get ~-~bs~ rO-~ r~ gains with partitionin~. These gains can berealized with one or more of the following s~,-t~ ~jes.
Red~ce Network Traf~ic. For starters, p~~ n;~E can move dat analysis/reducfi~ n closer to the source of the data. This could be helpful, forexample, if a user wanted to idenlif~ the stock that c~ ged the most in value since the previous day. If the analysis to ide~ that stock Nns on the client, then the~Iqtq~--e would need to send l1.o..c~ s of ~ ds across the nctwo,l~ to the analysis 30 m~llllP. On the other h. nd, if the analysis is ~. rO ---~d on the server, only one record needs to be sent across the n~ twu,L.
Par~iti~ni~ can also be used to eY~P~ltP several se~ e l,~c;~sc steps with a single l~lwolL round trip. For eY~nple, an order entry ap~ may first verify a 35 c~ -'s crPAit, then co~r~u~ a dicco~ then check the s~lir~in~ schP~ lP, and finally enter ~e order. With par~itinnin~ all these filnctionc could be pL~ced on a ~ wO 95/04968 ;~16 ~ ~ 6 2 PCT/US94/08785 server so that the entire order/entry pr~ss could be ~eco~ ;cl.~d wi~ a single c~." .~ r~l;rJn round trip. This ~ ~o-~ r4 Sha~g~ may be very i.~ if the l~lw~L link to the client is slow, such as when portable co~ t~ ~ access a server via a mrAem, In genP~l, the more steps an ~!lir"tirn must ~ F-~uo" the greater the
Each senrice object can be ~ 4~,.,t. ~1 on other ~alLLons by an object l~.,ei.
broker, ~Y--~ed below.
lS ~lth~ h the a~ lirqtir~n may consist of thOlu~-nrlC of objects, only a few of these need to be at a particular lor~l;oQ, These ;~ e:
an object that represents an e ~ g e t - --Al l~sGulce~ such as a lq-tq-h-q-~e n~qnqe,~ system or a 3GL service, that is already p.43e,.l on a particular mqrlnnP, an object that p~i~es a Forte service that is going to be shared by m111tip1P.users, such as an image server {or an auction ~q~q~er for an ~q~lctinning filnrtir~n}
an object that ~ a service that will be reF1ir~q~tPA to provide filover or load bq1qnçillg When an qpp1ir?tinn is divided into ~LLolls, these central services are objects that may need to be placed on s~eÇ;rc ,-.a~ 5 The qrp1ir~tinn plo~ has the option of S~C;~illg that a sPlecte~ object 30 must be 1~C~PA on a speçifie ~tilioll by ~ aLg and nqming a serl~ice object. The qrp1irqtinn p~O~, .. ~ does not need to worry about the lo~1;~ ~c of other objects in the apI~1irqtinn p~Ogl,UIl. If a service object creates other objects, these will be loGq~ on the same partition as their creator. For coll~eQ;~Ic~ the rest of this I;nn will ~c.,~....r. that a "service object~ inr11~les related objects created by the 35 actual service object.
WO 95/04g68 PCT/US94/08785 A service object is simply a named object that can be ~ nced from any mPth~ in ~e aprliAsti~n ~Og~ . It is like a global varLable, except that ~e value can be s~;f'~ at cQn~pil~ ~me. When ~lw.ling a service object, it is ~ci~n~ a name, a class, and values for its ~ 'Vt~-S.
s On. e created, a service object can be used like any o~er object. If a user or hf r object invokes a mPth~ on a service object that is locstP~ on a remote m^AhinP, a ~ e,.l for the service object is passed through a local object request broker. A broker l~plod~ces the interface of a co~EspQ~ service object so that 10 when a .--~ od is invoked on the service object, all r~eS~C are c~ ,d by ~e local object ~uei.l broker ~en f~ ed to the actual serviee object for pioc4sc~ . Any return value and output p~ are ~ uugh the object l~ broker to the originql invoking object. Thus invoking a .--~ od on a service object that is lor-qt~ on a remote ..,~ is completely !.. ~.S~.
One special service object is a DBMS l~,s~lur~ mqna~P,r, which provides access to an ~ e ~ hqce mqn:lgP,mPnt system. The new l~ souice mqnqgPr p,v~idf,S a shell to "wrap" the ~ E; system and intercept and l~ Cl~t~-, as -Pc~s~ , all m~s~ges~ l~ue~ or data sent to or from the c-;cl;-~g system. By 20 defirlins~, a DBMS l~s~ul~ .-.q~ger service object, an e ;c~ g d~h~, mqnq~,e...~
system can be treated like any other object. The user can thus invoke .~-ell~ocls on the new l~,s.~ur~ mqnagP,r to st~t a ~-h-q-~e seS~ n~ l~hic~, dat.., update data, and so on.
E,.v~
To implement a ~ apFlir-q-~inn in a ~pecifir- e,~ o~ cn~ lf~ui~S
providing some inrQ-..-~t;nn about that e"~ An e,-~i-o---..~ is a named des~ of the l~d..~ and sorlw~ at a par~cular site, such as a par~cular co-.~ of_c~ or a par~cular dcp~h,lcnl. The same logical a~ ... decç.;~
30 can be used, wi~out n.~ifir~ti~n, to implement a rl;~hi~-lt ~ n in any ..~r Of e,"~ f'~ In ~'Aiti-~n, a single ~ can ~I ner~lly ~.
more than one ~ a~lir~tit~n To; -l,le---f,~-l a l;cl~;bu~ed applir~lt1(m l~llil~,S par~ nin~ the applir~tion for 35 the specific en~,~o~.-.. --.~ This means ~sig~ing each of ~e applir~ti- n's service ~ WO 95/04968 216 8 7 6 2 PCT/US94/08785 objects to a sreçific ~&,Lilion and ~c;rying which partition will mn on which node or m~rh;~P.
Par~ioning In a p~r~ d imp~ t-~ ;rm, the ~ ~l m-oth~ ~ ;r~1ly partitions each object of an ~rpli~ ~ti~ n p~o~ into a partition. Tbis inCl~Jd~ps ide.~lilyillg and placing each service object in a ~)altil.;U~ ,f~ ,d for ~at service object. This also ;-~el~dcs id~nliry~,g each object created by the service object and l ~i~ that object in the same ~liLon as the servi-ce object. An object ~ est broker for ~at service0 object can be created for any other ~I;on and in g~,ne~l should be created for any il;on wbich co~ an object which can invoke the service object.
Ref~P-rri~ to Figures 6A and 6B, parli*nning ~ des ~c~igning each partition to a particular node or machine in the e n~r~o~ f ~ with appro~ suu~ces and 15 cqp~bilitiPs The par~itioning can be ~ n~d and .~ ;r.r~, for example by r~ ig~in~ a certain partition to ~no!1-er node or by moving a service object to ~n--thPr ~kuliliOll.
Viewed ~-~o~ way, apFlir~ti~n par~iti~ni~ is the ability to split an 20 ~ a~ n l~loE5~ to run on t~,vo or more cc---l~u~-~,.. Whereas the mnnnlithir, client al.p~ l- model splits the ~I~Flir~ n from the RDBMS server, ~p~l;f~ n partiti~-ni~ provides a way to ~l;c~ L~te the ~p~ l;nr ~O~ itself across mllltipl.-c~ .,tu-~. Part of the apFlir~tirJn may run on the client, ~nother part m~y run on the ba~.l~ that also drives the RDBMS server, and part may run on one or more other 25 servers.
A ~ f~lcd pallilion m~y be yl~er~p~d~ for ~ lr when a serv.ice object wiU wrap an eyicti~ applir~tinn which is already l~d~ on a sperifir m~rhine. Notall pi~re~cd partitions need to be predefinP~ since m~ny service objects can mn 30 equaUy weU on a variety of m--^hinPs The ~ ti~n of srecifir partitions can bemude based on the har.l~ and soh l~ui~ of a particular service object and any co.,.,~ ;~ created objects b~l~nr~ against other service objects and available ~ '''h;~ SOul"~S.
35Once a partition has been ~c~igrP~I to a node and fully spec;rP~l, inc~ inf~ all service objects, objects, and object request brokers for that partition, the partition can W O 95/04968 21 6 8 7 6 2 PCT~US94/08785 be comrilP~ for a particular mqehinP. This may involve simply ~,~.n~.".l;n~ an ap~ ~ ;n~ .~..PAiA~ source code, such as C+ +, for cQmrilqti~n into mqr~linlo n~lq~P on the ~ er.ifir. node. The comrilp~l m-q-chinP code can be loaded on each node and the ap~lirqtion piOgla", is ready to run.
s A partition can be .--r~;r.~ at any time by a ~--~---1~- of means. A particular service object might be moved from one pal~tion to ~no~ r. In the simplest system wi~ only two nodes, the initial ~~ ;~ implements at least one senrice object on each node. The pl~ hrd allows ~J~ the service object in th~e second 10 pa~ ioll then ~ ~ the o~jnql service object, erf~cli~e~ .a~ g the loc-q-tir~nof the actual service object. This should make no dirf,.~n~ to any other object in either partition except that calls from the second ~-~AI~ e which previously were brokered are now hqndl~p~ d~cll~r and calls from the first ,..=^h:~ which previously were hqn~lP~ d~ tl~ are now brokered. If there are more than two nodes, the same15 gpne~ql principles allow l~u~ing a service object to a diCf~,.enl partition.
Aprlirqtinn pa~ g does not dictate a yl~ r. ~ split of fi~nCtirnqlity for a client ~,~ v~o~.-..f,n~ It allows the ~;uus portions of the applicqtinn to be q11~qtPd in several pos~ ways. It ~cog~ s that the ap~,o~ e division of 20 ~I~r1ir~tjnn fi~nctinnq1i~y among clients and servers is highly a~ epen~1pnt-And even for a given ~p~lirqtinn, the optimal division may change over time with the ~litirm of new users and s~licqtinn ~ c:.,,,c With par~itiQni~ an ~rrlir9tinn pLO~ I can be bu~l~ as a cQ1lP~ctirm Of 25 service objects and depl ryed as a ~ d a~ , parhtinnillg allows a deve1~...f-~ Og~ r to place ~I~r1ir~tion fi1nrtinn~1ity on servers as well as clients. It ~ t -s the ~",---~ ;r~;on~ among the dirr~ 9ppli~tit~n pa~o~7s SO
that the ~I~r1ir~tinn will fi1nctinn the same ~l~ it runs entirely on the client or is t~d across several m~ ;rtPs.
A~pl;~ ;n~- p~l;l;n..;~ iS based on the CQ"~4pl of dGc4-,p1;--g the develol.",el, of an ~ ic~tinn~s funrtinn~lity from the dcc~ of where the ~aliuus ap~lic~ti~n Co~ s WiU run in the deplo~",fnl cQnfie~- .I;n~ A developer l~ro~ r can build a logical applic~rtion de~on that is ;-.~le~ F.~I of the underlying physical 35 (,.~ fnl After develûp",~nt, the logical ~rp1irs~inn de-finition is par~ (i.e., split apart into in~lf,~.~Fnt m~ lPs that can eYecl~tP on dir~ nodes in a nclwul~) --wo 95,04g68 ~ ~ 6 8 7 6 2 PCT/US94/08785 and co~ ;cqtinns are s~tn~ y set up, freeing the develo~ l progrrqm~nP.r from ~q1ing with co~ rqtionC during the apFlirqtinn A~finitic~n cycle. RPfPrri~gto Figure 7, a logical applirqtinn definiti~n i_ built as a collP-Pion of service objec$s that runs in a single address space even though it is ~lb~q~r ~ly d;C~ "ut~li over two S or more ~OC~5C~JS. After partitinni~ the spp~ n still ~senls a unified system view, allowing an applir~tinn a ~ iCl~tor to mqvn-q-~e all the co~ c~l partitions from a single user int~.f~c~.
PartitinnP~ qrFlirqtionc provide the basis for an a~ on a,~l it~c~ that0 ç~n~s the realm of qpFlirqti~n filnrti~n~lity and introduces several op~i~r C for -r..-~.R ~e, rÇliq~ lity and control. ~prli~ti~n parti~ mi~ can help o~ ;nnc errec~ ly use the clien~ r model to build new enterprise-wide online apFlirqtion~ that contqin more fi~nCtinnqlity~ Yc.co...~..n~zt~, more users, and are subject to rapidly evolving bl~ SS5 Principles of App1ienh.'on Part7honfng To be errt;-,live, ~ g should follow the following principles:
1. A parti~ioning scheme can be altered withou~ modifying the logical arplienhon definfnon. The dCr~ ;n~ of the a~ lir~ n ~ C~;n~Ulity should be i...lf,~.n.lf...~ of the pa~ ;n.~illg s~ r-~r . The ~rplirqtiQn ~f r. .;~;~ -- should be c.,v~u..-...~ nPll~l. It should be pos~ e to split the a~ ;nn in a .---~ r of dirr.,~ pLaces willlolll qltP.ring its fimr,tiQnqlity. It shouId be possible to increase the 25 n~ bf~( of pa,lilions for a given ~ lirqtion if, for r ;~ lc, a new server is added to an P~i~in~ cllvi~ f-~
2. The parhtioni~g model must be able to ac~"." odate an u~bilr~.~ numberof partitions rur~ung on m~ple n~n~ hi~.~s The ~I;~;nl-;-,~ sr,l~..e should not 30 s~c ~ ..e that all ~ ;onC will be split to mn on ~e same .~ " of nodes (e.g., a client and a d-q-tqt~qQP, server.) It should not q-cslrnP- that all clients are idçnticql. It should not qQnlmP, there is only one server (or any other .~ ker ). It should not seek to split out a certain type of fi--~ Ality (e.g., ~ rss rules) as the basis for ~ S.-;~. It should not ple,,.u"e the ple~.lce of a ~ q~ system. Tn~t~Pq~l~ it 35 should ~ p~ a very flPYihlP- partitir~ning model ~-vith no limitq~lnQ on the number of posQ;hlP partitions.
WO 95/04968 21 6 ~ 7 62 PCT/US94/08785 3. A single appl~cation definition can support m~iple G~VirV,u,~ , each with its own parti~ioning scherne. Since the ~ i~tion dçfini*on iS nd~ P,nt of a par~cular partiti~nin~ scl~ -, it should be po~QQ~ P to ~ dilf~nl e.~ Q~.-..r.--lc with the same ~ ;n.~ der;-.~ It should be possiblç, for example, to deploy the S same a~ ;nn at two sites, each with its own l~.l~ , cQnfi~tinn and 4. Individual partitions should be able to ~ate and respond to cormn~ trons with otherpar~tions. Since a p~li1;n.~ scl~ e can i~r~ e 10 multiple servers, a . erver should be able to interact dil~:tly with other e~
Servers should also be able to send a mPs~ to ~c ~ ~ clients which can then ~ucess those ...~ ae~ s.
Pa~titioning Appli~tron~
There are several ~asons to partition app~ tinn filn~ti~m~lity across mllltir~^
m~^hinPs Perforrnance. Simple RDBMS apFli~tir~n~ (e.g., l~~ g a screen of data into a ~1 l h~, or 5~lr~1;~ a record from a ~ h~.) are not the ~,.-,~ c~n~ t~s 20 for ~ g ~,. r~ nf~ wjth pa~ . H~ r~ qti~nc that ~,r~
analysis, access multiple data so~ces, and/or or~ st ~- a multi-step l,~ n~ss ~ocess may get ~-~bs~ rO-~ r~ gains with partitionin~. These gains can berealized with one or more of the following s~,-t~ ~jes.
Red~ce Network Traf~ic. For starters, p~~ n;~E can move dat analysis/reducfi~ n closer to the source of the data. This could be helpful, forexample, if a user wanted to idenlif~ the stock that c~ ged the most in value since the previous day. If the analysis to ide~ that stock Nns on the client, then the~Iqtq~--e would need to send l1.o..c~ s of ~ ds across the nctwo,l~ to the analysis 30 m~llllP. On the other h. nd, if the analysis is ~. rO ---~d on the server, only one record needs to be sent across the n~ twu,L.
Par~iti~ni~ can also be used to eY~P~ltP several se~ e l,~c;~sc steps with a single l~lwolL round trip. For eY~nple, an order entry ap~ may first verify a 35 c~ -'s crPAit, then co~r~u~ a dicco~ then check the s~lir~in~ schP~ lP, and finally enter ~e order. With par~itinnin~ all these filnctionc could be pL~ced on a ~ wO 95/04968 ;~16 ~ ~ 6 2 PCT/US94/08785 server so that the entire order/entry pr~ss could be ~eco~ ;cl.~d wi~ a single c~." .~ r~l;rJn round trip. This ~ ~o-~ r4 Sha~g~ may be very i.~ if the l~lw~L link to the client is slow, such as when portable co~ t~ ~ access a server via a mrAem, In genP~l, the more steps an ~!lir"tirn must ~ F-~uo" the greater the
5 po~ for op!;~ .;~ ~.r.,.~ nr~ by placing fi..~ lity on one or more se.~el~.
Process AI)pli~ n Tasks in Parallel . The previous order/entry eY~n~p s how partitinni~ can .."~ o~,e ~f- r~ 4 for a sequential multi-step ~rrlir~tirm. A d~r~ l Shat~r may be apr~ lP when an ~ l;r~ can eYP-a~tP
10 ;~-~e~-n~ tasks in p~ P,l~ such as analyzing the project~d return on a pl~osed stock ~ur~La~ against h~ 1 data and analyzing how the addition of that stock would impact the in.e~lu,'s indiv;d~l p~ lio Sh~Lte~y. From a b~C ~.PCC st~ld~oinl, both analyses are needed to satisfy the ~ r, but they can run in p~11P1 since itdoes not matter which completes first. From a ~r~ Al s~ ~d~ i~-l, if both analyses 15 were run on the client, they would need to run seqv~ y (unless the user had awu~ l;r,-- with ~"..-... ~;~1 m~ s~ g). p~ g offers the option to move one of the analysis ~dv1es to a server so that it could e~ ,~,ut~ CQ~ -e l~ with the second analysis n-~111P running on the de~l~p. ~ll - . zl;~ly, with ~ , each analysis m-y31l1P could be loc~tP~ on its own server. See Figure 8. This could be a 20 c~ r~ l ~.. r~.. ,.,~.-r4 win if the analytical mo~ ps were cQn~p1PY and/or the pl`~CeQ~ '~g power of the server is ~L~b~ ;Ally gr_ater than the ~e ~ hinP.. By running multiple taslcs in p~11P1, an entire ~!lir~tir~n can complete with a shorter e~ time.
(~aoad Prooessing from an Ol~erloaded Client. Some ~1ir~tinnQ grow to the point where they simply overload the target client m~^hine~ even after tr~itinn~l ,. r~.. -.. ce ~ P.I;~.s such as l~,co~ e as much of the ~ tinn as possible in a 3GL, using stored l.,oc~lul-_s to do as much work as posQil lP- within the RDBMS, and up~ the l~d~ c~nfi~ l;o~ of the client. P~u~;l;O ~ can help by 30 ~ in~, portions of the apF1ir~tinn off the client and onto a server. Even if this Shab.,g~ results in -~-litinn~l llCtw~lL c~""."".~;r~l;n~ I;chi~ g the a~ r~l;nnoften offers a net ~,. rO....~--r~ gain.
Con~rol. Whereas des~top m~rhines offer cost effective ylOC~-5S;~ power, 35 they are the most ~liffiru1t e.,vi[o~ to control. By 1OMting critical portions of app1ir~tinn fimrtinn~1ity on servers, rather than placing the entire app1ir~tion on all WO 95/W968 21~ 8 7 6 ~ PCT~S94/08785 clients, o~ t;n~s can u~lize the proc~-ss;~ power of the de~k~ while g ~ o~ points of control.
Protection Against Tam~ering. CG1~J- ~;nn.C have long l~ga,~led their S o~--~ g data as a major Co~lJG~ asset, and they protect that data with many Qqf~ q-rds. Increasingly, org~ ;nn~ are also viewing their ap~lirqtinn logic as a CGl~Glat~ asset that de3~ s equal protection. A co..~ may have developed a so~ ;rq~ m~ olir~ l~io~ l, an~sh~ leading approachfor P..1~,....9.~ g several b--c:~rsc steps, or an a~ ;r~ for al,p.~ g pay L~c.~ases. If the key CQ"~l~O~ Q
10 of these q~lirqtion~ are placed on ~cs~ ~ ...9r-~ s, they run the risk of n ;~d access, individual ~ g or CG.~.ate espionage.
Server-Based Control Points. It may also make sense to ~~-..;--;~ -- control points (e.g., a~ ,i- g e lY- ~ accol~nt ~ ,.U ~- ~C~ Q) on a server l,ec~
15 ~f ~ 1s are easier to ~",;~;Qt. ~ in a ~P-nt~li7~d ~.vuu ~ ~e -~ Ba~ ;m-;ng allows server-based control points to be developed as part of an overall aprliç~tir~n and e~ placed on a server. As d.~ l;r~l~C CQ~ e to evolve, it is easier to change r.-~-c ;.~ lity in a server ~lilio - than to install a new a~lir~;r~ .~o" on each dest 1 ~.
Fl~ribili~t. One of the i~h~ngll~ of a client-server enviro~ t is the ability toincl~ ly add both clients and servers. But these evol~ltinn~ry cl~ ges can .esenl problems for aprli~ tmc. ~d~itinn~l clients can alter usage p~l~...c as well as increase overall ~roc~ cc;.~g~ load. If more servers are added to the nGlwulL~ how 25 can 9~ qticmc take advantage of the ad~ ~l p vce~C~ power? Partitinning can offer a sol ltirm to these l,ot ~ 1 problems as well.
Sr~rpL.lfor ~'r~1~le E..vi,~ .ls. ~efiP~ ~ to Figure 9, an o~ ;n..'s co~ ul; ~g ~.vuot ~ may evolve from a two-tier to a three-tier e~vuu . .~e ~ Or,30 o~;"l;nn~ may be ~ ued to s.-~ull the same ~rFli~tinn at two sit_s, each witha dirr~ envu~ rt~l In these i ~ ~s, a de~elG~.--c,lt piog.~ .c~ may find hin-cPlf ~de~_loping an apFlir~tinn for the dirr~ e..vilo-. ~c ~l~; With a~ lir~ n partitinni~, the ~ p~ r can build and ~..A;.~ a single logical ap~ tinn ~3çfinitinn that ~u~ individual ~ sc-l- .~-s for each target ~Ivilot. ..
-- wo 95/04968 2 ~ 6 8 7 6 2 PCT/US94/08785 Support for Muced Em~ir.u,."~cnts. Another problem arises when an appli~tion site has dirr~.,nt classes of client ~n~rhinps. For e~ c, last year an olg~ )n may have ~llrchased hu~d~,ds of 38~based PCs on a five year ~lo~ n schP~ . Since then, the o~ ;o.- has been buying some llN~ w.. L~l;on.c.
5 Ideally, a new target al~pl~ could utilize both classes of ~ op machines, but this p~senls problPms How much of the a~l;~-l;o.~ should nm on the ~1~s~ lop? Ifthe devel~p-.. ~ plog.~ must s ,Co... --~t the least p~ rul m~rhinp~ they would und~ ze the UN~ w.~ L~ C to ~ cc--- ~ r, the PC. Referring to Figure 10, ~rp~ ti~n ~ g offers a solution to this problem. With 10 pa~i~t~ni~ a !cm~llPr por~on of the a~l;r~ can run on the PC and a larger portion on the W..-L~
Examples of Pa~t7c~ned Ap~l;r~ 0n~
To ilhlctr~t_ the power of partitinni~ this section A~ .. i~s four eY~mp'-15 ~ tir~n.~ All share a co~ n~ ch~rr^~-rict~ the appl;~at;nn logic (i.e., the pGlt;Gn developed by the y~og.~ e staf~ is spread over several m~hinP-s, e, ch with its own ~r1pli~tir~n pa~ un. These examples do not e.hn...,( the pQ-Q-Q;hilitiPs of arpli~ti~n p~l;l;r~ g. Nor do a~ lir~ c need to be as multifaceted as these PY~mp' -s to benefit from par~itinni~.
r~tomer Service A e~ service ,~pi~se .'~ in an c~ .;c utility co ~ gets a call from a ~V~ r co"~ g about a recent bill. The serv,ice ~ se~ e first needs to call up an ele~ 0l~ic copy of the ~ S~ 'S c~ It would help to have25 some analysis of the e~ 's overall usage ~~ Was this month P~ o."~l in the co-l~e ~ of previous ~n~ c? Were all bills for the area higher, ~4 1~ S refl~-cting a cold spell or some other factor that affected most people in the area?
Armed with this ;~r"...~ .., the service l~,pl~F,se-~ s the 30 ~ . ..-- 's ~ ;n.~ In the course of the co.~c~s~ , the 1~ ,e may s~gg~st ~ ; ... in one of the co..~ 's special ~io~,.-. .~ (e.g., subsidy for home inc~llAtion or the ability to average p~--.~ ls over the t~velve .~ of the - year.) The system should be able to pio-,.~l the ~ _ to ask the y~ ;Ally relevant ~ estionc and then ~,~casl the c~d benefit of each ~rogl~ll. The 35 ~..c~ .r may request a m~eting with the Cool~ ulor of these special programs, and the system should be able to notify the Coor~l;ndlor, pe~ rs via e-mail. The 216~762 ~v~ "l~r may l~uesl a tP~hniei~n~s visit to see if there is an energy leak on the propc.ly, and the system should aUow the representali~ to s-h-PA~lP such a service visit. The bill may be in error (e.g., service was not shut off when a c~sb~ r moved), and the system should allow the represcntali~ to correct that oversight S (after ~,.;lyillg its validity-). And, when the call is complete, the system should e~-u,-~P a letter to the u~r~u~r r co~r~ P the actions that have been agreed upon.
This ty~e of ~)pli~ ;nn l~q~s access to multiple data S~Jur~S and ~rplir~ti~n services that may ~;Q~ t A, Ihl~ghoslt the nctwu,lL ~efP.~Ti~ to Figure 10 11, ~ and billing data may be kept in atl RDBMS. The service afpn~
s-hPA~llP may also be kept in the RDBMS. The usage profile analyses and CO~15C~dliul~ yioE,~Il analyses may mn on a ~lilr~..,nl server. The appl~ needs to int~^e with both the e-mail system (to send ~ld;fi~ to the yiOg coo,~lillaloi) and the printer (to g~ h. the cQ..fi....-~ n letter.) This example could use as few as two partitions or as many as five in various impLP ..~ One pa~ n would run on the user's ~Ic ~t ' p, most probably witha er~phi~-~l user interface (GU~ to ~ll~lir~ the navigation among the many ;r~ n filn~tinn~ The fo-.--~ g of the ~ U-~--.'S billing and ^Xo~nt 20 ; .rO ~ could take place either on the de~t~p or on the data server. The analyses may be newly written for this ay~lir~l;n~; or they may h~ve been written p,~,~,iously, in which case the new ~pli~` .t;..~. needs to int~^e with them. These analyses could conce;~dbly run on the client or on the ~A1'~"~ seNer, but it may be p~ fe- ~,1- to run them on a ,~p~-~t seNer. Par~itionine allows the develo~
25 P~OL' ~ f r to yO~ having to decide where -they will run, and it gives the develo~ 1 p,op.~ ...,. the rl~dGIII to l~,locat~, them after the initial deplo~ nt.
Tnt~rfi ^ing With the e-mail system and the printer pose their own ch~llPnges.
Tbis example covers the simple case of 5~...A;.,~, instructions to these ~
30 ~st~.lls. (The next example covers the more complex case of l~i~lg and dis~ g mail.) The interfaces could run on the client, but this could tie up the client ~n^^hinP while invoking the e-mail and print ~SySt~ll and while ~3e~ling with any error c~n~liti~n~ that arise (e.g., se~ g the letter to a dirr~ t pnnter, or~e~li~ the e-mail mPsQage until the e-mail system is available). The ~lh~ e is to 35 place those ~llions of the appli~tion on the e-mail server or a pnnt server (or a single server where both int~ces run).
2l6876~
Par~itinning can simplify the b~ ling of this apFlir~tion (and the other examples) in three ways. First, it allows deve1op~ ,c~ Jrog~ P-~ to build the entire xp~lir~tinn witl-uul having to decide in advance where the various co...po..~P.-will mn. Secon~l, it allows develo~ cnl ~.~og,~ e-~ to use the same tool for allS al)pl;,`~ " Cu ll~)Q~f~ , as o~pos~ to using one tool to build the client portion and a dirr~ ~ tool (or nll~ltiphP tools) for the server CO~ f-~`;. Third, it z ~ h-s co " " ~ ~ir~tirmc among the ~ LiOI S of the ai.~lir~ mnning on the dil`r~,le.
machines.
Man~ac~urtng RPf~-~ri~ to Figure 12, this example models a very simple ...z...~r~r,hlri~lg ~rocess where a c~ machines a part from a raw metal block. The co '~
es the raw blocks from a ~ l;f ~, shapes them with a lathe and drills a hole acco~ to the buyer's spe~ifi~tir~n- Then the parts are taken to a testing m-^hi~lP
15 to verify that they co~ro ~ to the w~t~ ~f!~'S s~;r~ ;o~ before 1~;~ -g. Thetesting system ~ c~ ly rejects failed parts and alerts m~nag~ if the failure rate eYc~P~s a s~er;r~ ,.-~ her per hour. The alert should be p~ e.ll~tive: it should open a new window and display a mPs~e~ even if the user is running ~nothPr a~ ;nn at that time.
Refe~ri~ to ~o~ r example il~ h~h~ in Figure 13, this aprlir~ti~n involves bl~ i~ many co--~ t~. a ch;l~p:.~g and .~;~ing system, a user intP~r~ for a OCeSS e--g~ . to set the hthe and drill for the leq~ed mea~ule-~c!n~ an interface to the testing m.^^hinP to set the tolerance allo~ ce and reject the failed parts, and 2~ the ability to send an alert to the p-ûcess e~jnPP~r if the ~ilure rate is çY~Pscive.
These cQ...~ r~ uill run on dirr~..,n~ co-.-l-u~-s incl~ in_ ,enP~l business systems and shop floor mzrhinP controllers. RPr~ P to Figure 13, in one preferred e~ o~ f.~ a ~^^hinP control c~ uo~r conh~ls milling machines, ~Irillir~ mzrhinP.and COI~ 0~ ~rst~ lls on the shop floor. A qualiq control machine controls 30 ~ g .--z~ s and ~-r....-.~ or ;,.~.v~s tolerance analysis. A pro~ctir~n ~ rhinP ~ .J.~ ...,fi~ ri~ steps and pro~uctir~n sl~hP~l~llps. A l~.~C;~Pss services m~rhinP "~ S l~ceivil~g, in~enlo ~ and shi~ir~-. Each of these mz~hinp~s iS CQ"~Pr~ gell~er~ along wi~ an int~ for a process e-.g;--~, to provide an in~zr~tP~ ap~lir~ti~n co---l~o~P~ of service objects as needed to ~ mPnt each 35 fii nrtinn WO 95/04g68 ~! 1 6 8 7 6 ~ PCT/US94/08785 The ~ericir~n as to where the various portions of the ~r~lir~tir~n should run may be less proble .--l;rAl than with the c~c~ service eY~mpl- above. The i~t.o~^~e to the .~ .r~^tllring and testing m~rhinPs should probably run on ehe controllers for those ..~Ah;..~s. The user interfaces for the proccss ~g; ~ and the S slli~.ng/.~ ;vi,~g clerk need to run on their ~c~ 1~,~. Maybe there are one or two gP.nPr~l l,u:iiness sy~ s. The ch~llpnge of this ap~lir~inn is to build all the co~ ~n ~ as a fully ~.t,glaled appli~til~n- The goal is to ...;n;~ , the ~ mt ofcode needed to ~ r" the ..~ r-^1llring s~erifir~tinn~ from the ~ocess enginP-P,r's screen to the shop floor nl~Al~; .e-~ and to ~r~ h the other l,~ res fimrtionc.
10 Without p~!;';'~ , develo~ g~ wauld need to build this ~rI~lir~ n from the ground up as a collP~tinn of ;~depe~d~ l parts. They would probably usetools for bllil~li~ the GllI portion and the interfaces to the ~ali(Jus m~r,hinto.
controllers. And they would need to do their own ~.~on control and sorL~
CQnfi~ tion m~n~ge...fn~ Partiti~ning offers the ~ I;ve of b~ ing the entire 15 aprlir~tion as a single entity and then ~ qting the various p~lilions to the nodes where they would logically run.
One of the ~pecial ch~llP-n~es of this ~ q~ n is the alert to the ~iocess e ~g;~ 1 when the failure rate eYc~e~s Ihl~sllold. It involves either CQ~ QUS polling 20 of the testing ~ h;--f or being able to send a mP~ gP, from the testing m~hin~. to the e~;~-~r~, 's de~p. Sentling a mPs~ge is prefie~hlP from a ~.r~.. ~.. ~
o ~t If this type of mPss~ging c~r~hility is su~o.~d in the developlllcnl c.lvir~ ..r!n~ partiti~ni~ allows the alert to be built as though it would run on a single m^~hin~P and then physically ~, the initi~tinn of the alert from the display 25 on the user's de~.
Financial Services A 5e.~ ;rs broker ~enel~lly needs . ~-do... access to many dir~ types of data. R~o-f~ ng to Figure 14, when a .~ e~ calls, the broker may need to look up30 the cu~ - - 's ~-c~llnt in~o .~ . When they discuss the purchase of a new ~;ul;ly, the broker needs data from real time feeds showi,lg the current price and any up-to-the-minute news on the CG~ . The broker may also want to consult h r~. ;r~l data on the ~ . Before l~o-.---.f!nrl;-~ a p~ebase, the broker may want to consult a Portfolio Analysis model to see how this s~u~;lr would fit in with 35 the ~ r- 'S overall illV~ I slla~ r. And the broker may also want to consult an Invesl...~ Analysis model that co~ s this potential l.,~e;,l...~- ~I with ~lt~ tive 21~876~
~ WO 95/04968 PCT/US94/08785 s~ . If the ~ ~r wants to buy the sc~,w;ly, the broker needs to enter the trade and get ;~ 1;At* co~ n that the trade was suGc-Pscfillly eYec-utP~ at the agreed upon price. Or, if the market has moved higher in the .~A-~1;---e, the broker can then ask the cUstQmp-r if they want to yu~ ase the sc~,w;l~ at a higher price.
S After the trade has been eYP~ltPA~ the broker needs to initiate the pr~c~s~es to bill the c~ ....cr, update the ;vsto--.~--'s ~,lroli~ listing, and ;--el~-de the trade in the broker's cQmmiQCi~ n plan.
In the ~ A~ P, other users are running di~f~,e,ll ~rFlir~tinnc that access 10 much of the same ;,.rO.... ~ . for dirren~ yulyOS~S. ~ 1 analysts may be """-;lo-; .g cw~ stock prices, following-up on reaent news, and c~n~ cting in-depth analyses of hi~tnrirql data and daily ~ading volume. They may change their A~ on a stock and need to send ~mail to brokers whose clients have a pOS;I;~... in that particular stock. At the same time, the office m~n~ger may be15 .~ ;~ the trading volume of his office and analyzing the pro~lucti~-n of the various brokers.
As with the other examples, this zp~l;r~l;o~ lends itself very well to a ç.liPn~ s~l-..r alrk;t -ct~ ~,. The dirf~,~nl types of users may be ~ g di~ nl 20 ~trl lop ap~lir~tionc~ but they all may access a set of shared services. These services can inr~ e direct access to raw data (stock price quotes and feeds, news feuls, plus account and hictorirsll data), l~er~n~ reports (c-ust~,-.-r~ pu~lrolios~ daily broker productivity) and other ap~lir~tirm sel~ices (analytical models such as i.,~e~ nl analysis and l.o.lrolio analysis, ~;Ull~,~ cu~ ion algû-;~ .c, e-mail, access to25 back office ~;,t~""s which provide trading system, cust~ billing and broker cr.--- ..;c~:~.n ;~r~ n). Client sc.~ gives the brokerage house .~;-~-----.
fleYih;lity for developing, ...~ t~ g, and ;-~ ~"~ g these services, while the use of a GUI on the de~p can ~"~ r, the -end user's t~sk of navigating among the various se.~ices. Without p&~ , the various ap~l;r~ cu~ n~c would 30 need to be built in icol-~ . With ~ ;~, all 5el~ices could be built in a single devel-~....e.-l ~",vi,o-.-..e--' and s~s~u~"lly ~ll~tJ~d to the dirf~,le.~l m~rhinPs in the client se.~l en~i,o~
OrderÆntry Many ol~ Q;~;onC are using or investig~ting visually o~;~n~ t~rtive order-entry ~ .-,s. These S~ S have ~e ~t~ntial to give cllslon.e-~ greater WO 95/W968 ~ 7 ~ 2 PCTIUS94/08785 control in ~iry~lg exactly what they need, to in~l~ase c~lc~.. ~r c~qticf~cti~n~ to reduce the ------1~r of i,~ ~l orders, and to streqn~line the entire l,rocess of buying a product. This approach is under active develo~-.-F--.t by several retil sales o~ ;nn~ The ~lcsen~ l;on c n be used to develop new ways of ordering S goods, for ex~nple o~Cli~lg a new car. All of the ~ ppolling the t ' Au~o-gy is in place, and partitinnin~ would s,~ liry the develo~ of the a~plir~ An After looking at, and maybe driving, an available floor model or two of a certain car, a c~ sits down with the QqlP~-r~ at a PC to get an exact quote 10 and close the deal. As with most order/entry S~St~,.l,S, the a~lir~l;o.. would first qualify the buyer, acc~s~ g available services to checlc credit ratings and possibly bank bqlqn~s and emplo~l"~nt status. The buyer would point-and-c]ick on the model he wanted (or he could view mllltirlA models Qimllll~ .cly~ ,oo...;..g in to view one at a time when desired). He could CT~ ' with dirL,~ color s ~ -..PS and 15 ~letqili~ oFtionc which would be dispL~ on the screen in full color. The model under CQ~ ~ie~ ~;"" could be rot, ted for viewing from any angle. Fytp-r~ r opt; Anc~
such as mag wheels, would be di~ d as they were s~vlo~.d. The system could yro~id- an interior view for that model's coc~ from the driver's ~ oinl. The system would lJlo~llyl the ~-~ct~---.- . for non~l~y~ble optirnC (engine size, 20 ~A~ eer side air bag, t~ ded ~ 4), all while ,..~ g a running total price that could be di~ d wl,c~u~er ayy,opllate. When the spe~ifi~tinn is complete, the system could check the av~ ility s^hP~le and give the buyer a target delivery date. Then the order could be slJlJ-..;IJed electronically and m~nzlg~dclecllo, ically throl~ehol~t the ~ r-~.cblring ~rocess and the ~ :-,g cycle.
The same .... ~1~ can be used for other ~urchases such as the design and order of an office Ç.-.,.;h~-~, system or custom window ~s~---.bliPs for the home.
Pfi~Prrj~ to Figure 15, all have similar ~uu~ c~ for co--~ fn~ services:
d~U s~L.ns (such as on line catalog or .i"r~J~--.;",~ ro-.--A~;- .-), analytical30 sy~L."s or services (such as pricing, confi~ti~n cherlri~ or space re~luil~
;~f ----~ ), data s~ (such as C.JS~ data, ;~ g ~-co~lnt ;.. r~.. ";~n, credit check il~- ...zl;~ n or product ~ co-~ "A~ and an int~rf~re to producti~n s~r;,~ "s (such as srh~~ g~ ~"a.~"r~,-hlring~ sL~,g, and billing).
Iike the other e~ lPs, tllis type of ~r~ tion is well suited for client sel~er where apE~li~ti~n cQ-~ Q-Ienlc will be running on mllltiplP m~t~hines.
~ WO 9~/04968 2 1 1~ g ~ ~ 2 PCT/US94/08785 The ap~ tion may need to taL~c to dSlt~h~es~ imaging Sy~ lS, and credit ch~ ng services, while providing analytical services (pricing, confif~ tinn çl~rL ;i~g~ total weight, delivery date) and bl~cin~-ss services (order/entry, .. r~*l.i.,~, sl~i~ping, billing). The more facets to an apFlir~tion~ the more partiti~ning can help to reduce S develol"-lcnl complexity.
RVi~i~g Partihone~ 7plicntions wi~h Fort~
Forté is an advanced apFli~ti~n develop"lclll e~.v.lo~ n~ for bnilditl~ and 10 deploying partitir~n~ ~plir~ti~nc. It ;~ dcs a ~ based de~lo~..--.r~
e, ~ Q~ u~ complete with a GllI forms painter, an object-oriented 4GL, and an interactive deb~ . ~OE~ use this d~ o~---er~ Q~ e ~1 to create a logical appli~stinn dPr~ ;O~ ~at j~;ÇifiFS the desired r~--cl;o-ulity i~p~ Of any ~ç;r.c yh~cal C.lvilOf.-..- --~ Forté also ;~ des tools for ~cil~i-lg a t~rget 15 deplo~ nl enV~ fnl and g-, ~f-'~ a default parhitif)nin~ sch~ for ~e targetede.lv~o~-..f! nl In ~-lrlitirJn, Forté inr~ldes tools for m~n~in~ ~e par~ition~
ir-~;nn once it has been deployed. l~efe-.;-~ to Figure 16, ~ese tools ~ul~po~l a ~ree-phased develoç~ n~ cycle: ~P1;~ ;r~n der~ ; system ~,e~f.~;ol-; and A;Q~ t~ d ~l;.chil".~ n, Aprlirsti~)n ~ r~ may utilize G~lI~GL ;-~fn....AI;nn and 20 a l~l)os;~u~ of inr~ n about service objects. A debu~&Pr is hPIrful for ~is phase of ~r~ll deve~-ç-~ ' System ~,e~-.,.~l;ol- in~ des cQnfig~ ;-v~ and as well as code ge-~f ,~;nn. Deployment uses a ~ - ib.Jt ~ object nl~n~gP,r and ~,r.,. ,~ r~ or for system ~;c~ ;Qn to effec*vely distribute and utilize service objects.
Bu~ing a Logical ApFli~ntion De.finition The first step is ~if-r. .;-~ the logical ~l)pl;~er~ This step col~espo--ds to i-lg a client-les~denl a~ l;nn with other 4GL tools. But with For~, the logical ir~*r)n ~çfini*on can be par**nnp~ b~.l.Je~l to the devel~ f ~-~ phase.
lhe Physical Developmen~ Em~irv,."~,.l. The logical ~lir~*nn ~çfini*on is in[lf,~!n~ of any particular ~hysical deplo~ nl (..~iro~.-..f ~ thus giving deVelOp~llC~ll p~ f-'S COn~ P~blfÇ flPYihility for their physical develo~"-el-_n~iro..-..~.~l The inven*ive n Pthod l,fo~ides l- .~ nl portability across many 35 ~ IVil'~ , inrl--~ing the following:
WO 95/04968 ~16 8 ~ 6 2 PCT/US94/08785 Desl~top/Gl~I--Windows, M~rintn~h, Motif, ~S~t~l;nn M~n~g~r Server--UNlX (IBM, .~e~ent HP, & Sparc) and VMS (VAX & Alpha) Network--TCP/IP, DECnet, Novell, AppleTalk RDBMS Oracle, Sybase, Rdb, Ingres, TP Monitf-rs-ACMS, Fnri~u, Tuxedo Develop--.f ~-~ p~og.~ can use any ~ po~Ld e.. ~ to create the logical ~pl;r~ n ~efinitinn The a~p~ can be ~"~S~ deployed in an e.~ o~ with dil~ nl 1~.1~ . and sorh.~ CQnfiFll~ti~nc- For example, 10 develo~ pro~.~-..-.---- i may use PC clients tall~ng to a Sparc server for deve1r~....- ~-~ and then deploy on Mac clients tall~ng to VMS server. Portability and are both l~qu;~d for e.,~.ir~ Aep~rn~1Fn~. As client ~cr ~n~ co~ e to evolve, the s lAiti~n of new ~ rh -s and usage ~I~. ."c may l~U~ both a 1~ e of the ap~lirqti~n and a reh :~sting of ~pplica~;~"
Cc~ c onto dilf~.~.~ rhinP ~ u~ f~
An App1~cnt~'~n as a (:~ol1e~hon of Service Objects. As desç il~cd above, a Forté
ay~lir~ p~ l is d~pci~d as a cQllP~i(~n of service objects. Service objects may inrlllde~ but are not limited to: display services, d~hq~G access, int~-rfaces to 20 e~h----~l services (legacy ~."s, elec~u"ic feeds, e-mail), and o~,~ n s~ifir,b!-c nrsc ser~i;es. The service object ayyi~oacl~ allows an ~lg~ n to model its own l,--~ sc from the user's ~,-~l~c~
For ey~nlrl^~ to yroces_ a new order, the o.~ may need to verify the 25 c--~ -'s address and credit rating, check with inve.lt~ to make sure the desired product is available, send notice to ncc~llnting to initiate the billing cycle, and instruct ~ & to mail the product. Prior to cc--.l-vtj -~, people dealt with other people or with paper forms that other people h~n-llP~. The plOCeSS was laborious but rela~vely easy to colllyl~h~.ld. With the advent of co-~l-vt~ , the time to p~ocess an 30 order can be ~Ac~le- ~d, but it ~ S a data ;nL~h. cture. C.J~ --- r records are stored in a ~ ~" along with ~ccolmti~g~ lo~ and ~ g data. The job of the apF1ic-~ti~n pro~"-.. --~- is to provide a l,~pyillg bch.~.l the user intef~A-e (~.I.al.s a form on a co...l-~ screen) and the data infrastructure.
With pr~ l pro~ -.. -.. ;-~g, this .~.al)~ is usually aprlicati~ n spe~ fiA and can be con~plAY An order/entry aprli~tir~n~ for eY~mrlP, may call up the cllclul~l~r ~6~76~
record from the c~lctom~r ~qt-q-h-q-~e, check the cus~ fr credit ~-q-tq-hq~e, request the Lily on hand from the ~ e.~ h~, check to see that the ~lu~liLy on hand can ~u~l)oll the order, update the order l~q-t-q-hqce, and add a new entry into the sl,i~g .lqtqhq~.
s With a service object approach, the job of the yrog.~ ..c~ can he ~
R~ernng to Figures 17A and 17B, the RDBMS data infrastructure le.~ lS in place.
But now deve~ -..c--~ y~Og~ --..-..r--~ simply create a new service object that e~ a~ qo~-s the data i~r~c~ cture. For example, develop"lc~l y,o~.. -.--..~ - ~ nuy 10 create an i.,~ent~"~ service object, an order 1~OC4C' ~g service object, a c;l~s~--.-f-r ;, r,....~l;..n service object, and a Chi~ ~ service object. These can be controlled or guided through a c~nn~c~ order entry screen service object and a l~h h~ serviceobject.
This type of service object ;~r~ ucture can S~ ]i~ the develo~"~nl ,-'s job in several ways. First, it ~ ;r.~s the de~lo~ cn~ of new PpplirA~;O~c by allowing develo~ yl~og~ to reuse e~ g service objects.
A new ill~en~ apFlir~tion can be written that uses the i"~,nlo.~ service object developed orig1n~l1y for the order/entry aypli~ n. Secon~l~ it c;~ ir~ps aprlir~tirm 20 ...~ .u,.,~ by providing an ~ itinn~l layer of ~.<.ç~;~ n where bl~c;~cc rules can be ~nfor~ed while in0ll~ti~u aypli~-l;nn p~Og,~,lc from change. If the c~-..l~A-.
wants to decrease the ~mnllnt of il~ ~n~ ~ it keeps on hand, it can modify the service object instead of ~llodilyillg many individual programs. (By using code g~nG.~I;nn t~ ~ D!cgies, Forté .-.;.~ s the ~--r~ ----~-.re impact of ~nothPr 25 ~l~s~^ti~n layer.) Third, service objects ~ ,e3elll a m~~ ri7~1 view of an aprli~tin n that can both mirror the CQ...l~ 'S OlpA..;, ~;nn~l structure and provide a basis for par~itinni~.
The Forté approach to partitioni~ is not based on sF~ ~ out bUcinpss rules 30 or some other pre~çfine~ category of a~lir~ n fi-n~tinn~lity. Forté does not require develop-.-~ ,-;, to fit their appli~ s into one or several y~der~
molds. ~n~ , Forté allows develoy",c.,l y~O~ f,~S to model their applil~tinn e ~ O-~ f!n~ in the way that makes most sense to them. No structured methodologyis 14uil~d to build Forté applir~linnc.
WO 95/04g68 21~8 ~ ~ PCT/US94/08785 Forté uses the develo~ n~ o~.~.. f r~efin~ service objects as the basis for partitir~ni~lg. Each partition i~ r~ es one or more service objects. All service objects will be kept intact within a partition. No service objects will be divided among partitions. An applir~tinn may have three service objects or it may have S thirty. The greater the ..~ of service objects, the greater the --~ hf r of possible ~",-IIA~ C forpartitinn~ ov~s.
Forté Objects. Forté is ~f~ ierl~ to deliver the 1,~ i of object-o- ;~
~.o~.~-..-..;-~g without l~uil-ng a total c~ ' to object technologies. Users do 10 not need to store their data in an object ~ hq~. Nor do they need to use C+ + Sm^~lltql~ or other object-oriented l~ngu-qges~ ~n~t^3~, Forté ~v~ides de~loL.nf--l pro~;.,..--..~-~ with a foIms-based en~ c~t for c,cating classes and a l,r~ lly r-;---~14GLforwritingtheir.
Under the covers, Forté is object o.;f!nh~ at is written in C++ and vu~po,~
object n- ;f .~ ;rm with e-~ v-~lqtion~ kP.. i1~.~re, and pol~lu~ .) Forté objects are reusable across ap~ q~tir~nS~ and de~e1o~ t P1`~KJ~ r~ ~ can add or change ~ ~f 11~$ wilLuul ~ the object. Forté objects pass .--es~a~.rs arnong thpm~lves. (Forté provides its own peer-to-peer meS~j~ system for 20 co--.-..----;r~tin~ among Forté p~liolls. It can also use either an RPC ~Remote ~1U1~ C l1) or a CORBA ((~-~------o-~ Object ~P~est Broker A.~ ;t c1-i~e) style mPs~a~ -S~- l for Cc"" ~ `, ti ~ with ~ t - .-5'1 objects and services.
Forté vu~l,oltv the . lw.lion and ,..~ ..1qti~n of both GUI-based objects and 25 ~enerq1 applirqti~n objects. Most G~lI tools v.l~)o,l GUI-based objects that are ~,csP---~ as icons on a screen. Not all of these tools, I~ er, Sl1~O1~ the creation of apF1ir?ti~n objects, such as an .n.enloly ærvice, that are apr1ir~ti~n logic services and not just y,~se-~ ;on services. Forté ~ ~ t these arr1ir~tir~n services which are crucial to ~rF1ir~tion par~itir~ni~. When an a~ is partitinnPA, these 30 ~ ". services can be located on a server where they may be -~c~ c~ by many users of the same d~ and/or by dilE~ rF1iC~ti~nc- Forté is a developrn~
~,.vin"..,~ for b~ ng both cl~ent appli~ ions and server ~Irpl;cnrtQns. T~ds is a major dep~ from ~tlitinn~1 apF1iratinn deve1o~ tools.
~ order to ,.~pl)oll the deve1~-~ of aprlir~titm objects that can function as servers, Forté PYtPnfle~ its object model in a few key areas. Most tools for building -- WO 9~/04968 216 8 7 6 2 PCT/US94/08785 client q~1irpti~n~ have no notion of slla~ability be~ se the ap~ *on code is nP~ to run on a single user client ~-,A^l-;--r. These Pr~lirqtic~nc rely on a server, such as an RDBMS, to handle such multi-user issues as conc~l~rency control and trPn~^tinn.c. Forté built cQ~ ;y control and trqn~qrtinn~ into its object model so S that server ~rElirqtinnc can y~Yide the same style of shareability as an RDBMS, even where a portion of the Pr~lirqtinn does not use an RDBMS.
The So~ware Deve~ l E~ rv,~ Forté p~oYides a set of visually Q~iPn~^~ w.. kl.~S for b~ i~ an ap~lirqtion~ There is a Windows Wo~ hop for 10 ~lecigr~ing sc~ s with a point-and-click style in~rf~r~ that creates screen widgets from a palette of s~l~d widget types. There is a Object W~ np that provides a form for creating ar~lirqtinn classes and other P~ lir-q-tinn c~ . There is a Method Wo~L~hnp for writing ..-~ll-~c in the Forté high level lqn~agP~. Since the Forté lqn~lqge ~.lpp~lt~ rev~ql-hP. ~ ;nn objects, it can be ~ ly ~es-- il.e~
15 as an object-o-;e-~ l 4GL.
The Forté lqn~lq,gP, inco.~ s constructs from three types of lqn~lqgçs. It inc~ olates event loop prog,u""".~,g, first pop~ q-ri7~1 by IIy~r~d and s!l~s~e-.lly l)tili7p.d by most GUI tools to deal with the un~ ~irt-q-hlP- . rrival of 20 non s_~ue 1;~l user actions such as chooc;~E a menu item from a list of several posQ;~lp- choices. Forté uses event loop p~ to handle events that ori~jnqtP.
on the user's screen and also to handle events that are i~ d by the system and by non S~ based apFlir~q~tion co~ o--cnL.~ (such . s sPnAing an alert from a testing mqrhine on the .~,a,luracturing floor to the process control ç~jnP~e~s wo~ n.) 25 The Forté hn~l~ge also inrl~des procedural prog~u.""~,g constructs found in most third and fourth ee.~f.~ n lqn~l~qges for hqnAli-u the flow of control (if....then...else) and for crea~ng vq~iqhl~s and eAl)~s~ol s (1 + 1). ~ ~AAi*on~
Porté illc~.~ .t~ s star~rd SQL for s r'c~-c~ ~g an RDBMS. By incG ~u~ g sku~ SQL into the develol,lllcnl lqnguqge, Forté can ~.~o~ide RDBMS portability 30 by ~a~ g SQL calls into ..ulllcroLs SQL ~ lpctc and by g~.~r.~ p vendor S~--;r~.
stored p~ cs for o~ RDBMS ~- r~ . Forté also provides an e~-tive 4GL debugger (that was built using ~e Forté 4GL.) RPf~Prrir~g to Figure 18, all develop--~.-l work is stored in the Forté
35 l~OS IOJ~. ~The Forté dev~P1o~""~"l e.-vi~..c-~ inr~ les a blo..~r to view the previously created cl~ses, their mçth~s, and ~ ~s so they can be reused or WO 95/04g68 PCT/US94/08785 2JL68~62 easily --~;rPA for new ~rF1icqti~nc.) The le~ 'J ,~/ stores the ~lefinitir.n of all jr~ti~n service objects in an envil~o~ ' neutral form.
The l~Oc;lO,~ ~ovides several filnrtinnc It ~ Olt~ t_am develo~l..enl with S check out/check in so that several deve~ p~ rs can be W~ki.lg on dirr~ t parts of the qrp1ir~ti~ n at the same time. It ~.-p~o,t~ ve~ ning and c~nfi~l~tirn ~r~nage...~ to f~rilit~te builds of complete apF1irqtir,n~. It stores the ~efiniti~m of that target deplo~ cnL e~ 1 And it stores each par~itinning sc1.r ..~ for each c.l~ r ~-Genera~inB a Pa~itioned Applicntion Once an qrFlirqtinn has been ~efin~, the deve~ ,o .~ cr can test any par~itirmin~ sc1-r~ by cim~ ting the deplc,~r~l~n~ en~ 1 in the developll~nL ~n~o~.. e-~ At this time the a n can be l~ n~ without ~yillg the ~rlFlir~tinn ~efinitinn The ~ lir~tinn can be l~l;l;n~l at other times as well.
The first step in the system ge-~f."t;nn phase is to define the target deploy.llcn 20 e,lvil~o-.-~ What are the clients (Windows, Mac and/or Moti~, what are the servers, l~lwG~ ~s? This ;~f~ t;nn is stored in the l~c~ for use in the p~l;l;lJ..;ng process.
The second step is the default partitinni~ of the ~ l;ol-. When the 25 partitinning co...-.~ is given, Forté l~ tl;~_S the sperifi~tinn of the target deplU,~lllfnl e~lVi~O~ and analyzes the logic of the a~l;r_l;nt~ ~efinition It s each service object and notes ~Lf ~r it was ~e.;g~ to be shared or to be ~^r~ss~d ex~ ely by a single user. If it was ~esig~ed for exclusive use (such asthe set of y~s~ l;nn services), Forté will place that object in a client partition. If it 30 was ~esi~ for shared use, it is a Ca-~ t for being moved to a server. Some service objects are ~Ccor ~ with an eYt~ ~sou-~. For e~ D, an inte~ce to access an RDBMS is ~cs~i~led with the target RDBMS and its physical loc~tinn. Ant~re to a legacy system is ~Cc~ori~tl~ with that system and its physical loc~tinn.
Other access services may inr~ 1e real time feeds such as a stock ticker or plocess 35 moi.;ll~. ;-.g feed. In each case of access to an eYtern~1 service, Forté will m-~ke a default ~ccig,.. ~ of the partition to run on the node where the int~ ce is located, as ~efinP~ in the repoitory. There may be a ,.-~ er of other shared service objects that are not d~l~clly ~csoc~ d with an e h ~ sJuree. These may inC~ e co~ n~1 or analytical services, and they may inrl-l(1e a set of business rules that e~o ~ an o~ t;n~'s po~ P-s. These shared l,~-c:~ ss services may access other S service objects that, in turn, pro~;de raw data from a ~ h~ or real time feed.These shared services may also access other Cl~iCeS for coo~ 1;on lJulyoses. Inthe order/entry ~ ~~ above, the order ~rocess service object r^csC.~ both the n~ly service and the d~i~-g service as weU as acc~ g the ~ h~ d~clly.
RP~P.1T;~ to Figure l9, where there is a set of service objects that do not dil~ctly 10 access an e-~ ce, Forté wiU ~-It ---l~l to ~ catP those service objects evenly across aU Ihe available ha~ servers as ~ ~ in the target c~nfi~ tinn.
This default partitinning approach may not produce the ideal partitinning 15 sc~ , but it is a Skulillg point. Forté also provides tools for ~lrO ~ c~
.~o,.;~ g and lcp~;~;oni~ to aUow for a m~nll~l o~ of the default partitinni~ S~ r...,~,.
The use of an object model for devel~enl helps to idenliÇy the logical0 bo~n~q-;es for parhtioni~. Since each service object ;~c'~ -s a ~o~ lly large be~ of objects at lu~lL ~le, each with its own .~. !l.odst the default partitinning roc~ss must identify aU the possible .~.e~l~ods that can be invoked in each partition.
The system must then locate those ...~Il.~c in that p~LLo,~ so they can be ~rcessed when called. Parhtir~ni~ wiU not work effici~Pntly if these mP~thods need to be25 ~ tCI~ at lu-~ --c from ~ Cr node.
After creating the a~ rql; ~ ~Ll;ol s, Forté moves the server ~LLons to the target servers in the e.lvilo~ Pf~ g to Figures 20 and 21, Forté refers to the t~rget c~nfi~l~tion definition to see what l~lwul~ are available and 30 ~ A11Y sets up the a~pro~lldt~ n~lwull~ co~ ;c-~;n~C to send mPs~ges b~t~ each set of nodes. Each Forté server may use dirf~ nl cQ~ ;c~Atinn plûtocols to cC~",.".~ir~te with diff.,l~nl servers.
Each par~tion is serviced by a cQl1pctinn of Forté system services that m~n~ge 35 c~.. "~ ;r~tinnc arnong partitions, mess~ge traffic within each par~tion and the 2~68762 p~Qcin~ of m-o.sc~E~es to remote objects. These system services m~n~e all the apI~lir~tir~n service objects on each node.
At this point in the system ~,e ~ n phase, the paItitir)n~ apFlir~ti~n can be S run int~,yl~ h~ly. Iike most 4GLs on the m~rl~t Forté Co~ ,tS 4GL source code into a pseudo-code that eYIo-cut~s ll~vu~,h the Forté l~t~ly~ . Since Forté can create shared ~p~!lir~ n service objects, these objects are stored in the l~JO~ J ,~, and ~t~ yl~t;~ eYr~vl;r-~ involves l~pOc ~ look-ups. In ~ltlitinn, int~_lyl~v~
e~cc~ es ~c~eC~ the RDBMS(s) with dynamic SQL. Whereas most of the0 ~ liti~n~l 4GLs use this ~yy~oach both for de.c~ and deployrnent, Forté only i~S interpretive mode for de~.~lop~ -n~ For pro~uctir~n ay~ c~ Forté offers a code ee~f-~;on option to 1I~C~ y -~1~
Each Forté p~ulil;on can be deployed for pro~c-tinn either as an nt~,ly et~d 15 ~ l;o,. or as a c~n~pil~ p~liGn. Since the ~eriQ;on to run ~--t~y~ ly or compi1ed can made on a y~liliull by pa,lil;on basis, it is pos-Q;~1e to h~ve a mixed env~ -f~1 of~ y~,liv~ and cQn~riled p~Ll;ons to ~ yyo l, for; ~'-, a ~1ec~ S~l~yGll r.. ~;n~ as part of a larger ap~ r~l;nn also co~ g some tr~n.Q~cfir-n y~O~
Forté offers two code en ,..I;.~n ~h; tf g;r-s to s.lyywl cr~n~Fil~ apFlir~ti~nc.
The first takes the Forté pseudo-code and runs its through a ee ~ 0~ to produce dard C++ code for each yaltiliOl . This C++ code is then con~ril~A witn tne local C+ + con~ril~-~ for that particular node. The res~lt~ hin~ code provides a 25 p.,- ru .~nr4 benefit over most applir~*~nQ created vith a 4GL ~at run in~lyrelively during deplo~I"cnl. During code ~en~ , Forté resolves aU I~,feiences to the ~o~lu.~ so the .~-"li-"~ system does not need to incur the ~,- fi -.-~--c4 penalty of repository look-ups.
The second code ee~G~t;nn ~hat~ ,s a set ûf RDBMS sI)ecific e~ f ~ that produce û~ ; ~ access for each s.~p~ol~d RDBMS. For eY~mr1~, the code ~,e--F,-~or for Sybase produces T,. ~ QL while the code e~onp~tor for Oracle 7 produces PL/SQL. ~ each case, the code ~ ..r~ tor takes the RDBMS-neutral definitirn of ~l~t,.l~ access and e~nf. ~o~s the a~l~ro~late s~ategy 35 for acce-QQ;~ the RDBMS with an op!; -;~ ye~r~ 4 Sllate~
-- WO 95/04g68 ~ 7 6 2 PCT/US94/08785 Managing a Partitioned Appl1cn~en Following system gcnP~l;r~n~ the ap~lir~tir~n is ready for deployrnent. The first step is to install the client partition(s) on the target de-~l lop m~r-hin~ps. The ap~lir~tir~n may call for a n~ixed t,..~ of PCs and Macs. In that case, Forté
5 would produce a PC ~on of the client ~L~n and a Mac version. The system - l...;n.ch~ r would then need to install the a~ o~idte partition on each ~&rl~lop m-^,hinP..
~nQt~ tion also offers the G~ul~ for re~lir~tp~d partitions. There are two 10 l~asolls for i~Qt~lli~ reFlir~tpJ~ liLons. The first is load ~ ncing. For s ~in an SMP (S~ .. h;C Multi 1?~OC~Q- -r) en~u~ nt~ it might make sense to run the RDBMS engine on more than one ~ ssor to i~ pO.l a greater load. In ~is case, the RDBMS access partition should run on each node where an RDBMS engine is locqtp~ Forté ;.~Il)pu ts the le~l;rAt;r~ of this RDBMS access partition and 15 provides a router to aUow multiple RDBMS e~ s to service the next RDBMS
Jei,~ in the ap~lirstinn queue. The other reason for re~lir~tinn is to provide backup in the event of a node ~ilure. Dich il .~ut~ e.-~uo ~ e~c inc.~ the probability that one node in the system wiU be down at any given point in time. If that node is particularly crucial, it may be a~lo~.~te to have a back-up node. For 20 example, a node may provide a key analytical service or image for the user. In these cases it is po~ihlP to define a ~ l;r~led ~lilion as an glt~ t~ node that can be?,r~ in the event that the p.~ node is unavailable. Forté also provides a router that can access such a backup node.
It has already been mPnfi~nP~l that the ~;`h ;~ nlil--e en~i,o-.-.. ent must ~ unde co~ ;rstionC among the ~l~pl~ partitions. This concept is foreign to most deve~ tools. Tr~itinnql tools rely on the RDBMS to provide the cci~ r~tinn~ .h.~,..n client and server, thus mski~ the RDBMS an esconl;~
part of every s~ljrqtion Fort~ does not g~ that an RDBMS is part of the 30 s~lirqtinn, and even if it is, Forté can sngmPnt the co~ ;rstinnc poscihilitips offered by RDBMSs. This can be esperiqlly ,..~o.t~ when co~ ;r~qting with non-RDBMS servers. Forté provides co...~ ;r~qtionc among applic-qtion partitionswith its own ~ J~1 mPsQagi~ system. The mes~gjng system is c~qble of ~c~:.,g meScq~gPs among objects within a p_rtition. It is _lso capable of psc~ing 35 mPccq~es beh.~-- objects located in dirr~.~nl partitions. Cross-node mPs~q,gjng is ccon~rli~hed with the help of proxy objects that are loc. ted in the local p. rtition. If WO 95/04g68 PCT/US94/08785 ~lS8762 an object in the client partition needs to send a mPc~qgP~ to an object in the server partition, the partitirming algo~ilL-I, must place a proxy for the server object in the client partition. This strategy en~hlPs aU client-resident objects to behave as though all server objects were also located on the client. And when a client object sends a S mP~agÇ to a server object, the proxy i lt,.ce~t~ the mPs~gP and ~ S it to the node where the physical server object is locqtP~l. This shdt~g~ of using ~o~s el;~ s the need to send large objects over the nelwulL, and it allows an ir-~;o-- to behave the same regardless of where the l)h~ical objects are located.
This is a critical aspect of a sw~r~sfi~l ap~ ;o~ pa.~ g sQl~l*nn Once a .1;-~. jb~ft~ 'qtinn has been deployed, it is very hPlI-fi-l to be able to mqna~Ç it as a single entity. This means being able to start and stop ~liliwLs from a single mqnq~e~...f.~ interface. It also means being able to .~ o ~lru-...~-.re for the ~pplir~ n as a whole, in r1~itir~n to troubl~hoo~ g in the event of 15 ~.ro-~ e problPmc. Where is the time being spent? In co--- .~ qtirnc? Inside a particular pa~ iûn? This ;--fo---~ allows the system a~ h~fOI' to spot .r.. ~ otll~u~ by ~ g the a~ lir~ n as a whole. RPfP~ ng to Figure 22, Forté ~vvides an ~llviro~.-..r-~1 M~nagPr interface to provide this inro-...~;nn for the .i;,~l. ;k~ltr~ ap~ tion as a whole from a single user in re. ru-~"~r~ n~ p may suggest a dil~ ,nl partitir~ninf~ P.
RPre~ E to figure 23, Forté provides a drag-and-drop style ~ ;l;nning intP~
to ~lily tbis proc~ss. The ~r~1ir~tinn ar~ lor can-view a SC~ AI;c diSIg~m of the current partition sr1-~ , and can intP,~r^t d~clly with that sç1u--..A1;c. Along 25 the left hand side i. d~played a listing of all partitions and the service object.
i.~h-d~P~ in each ~ n. To move a service object from one partition to A~o!1~Fr, the ~ ;Q~ .tnr can e ~f,C~ a simple drag-and-drop ope-~ i~wise, the lor can move a p~uLLon from one node in the s.1~ ;c to 5~0t1~f,r by ~Pgi~-and~o~ ng the ~ Lion name to the desired node. T}~ tP~r~ can also 30 be used to drag a p~lio~ name from the list on the left to a second node on the s~ l;c in order to set up a ~ a~ p&~ ;Gn.
Once the new par~itionin~ srl-~ has been d~P-finPd, the ^~lminictrator can eYec~tP a ccs-.--.~n~l to g~nf'~ a new ~ e scl~ for the same deployme.lt 35 ~.~VilO..-..~ Both partitinning sc-1~ s are stored in the l~O~;Iu- ~ for ...~........
--WO 95/04968 ~ 1 6 8 7 6 ~ PCT/US94/08785 flPYihi1ity. The new par~itinning scl~e ..~- then needs to be in.ct~l1~ for the changeover.
Par~itinning offers an easy way to build ~ ap~ tinnc~ to partition S the ;,l.ilir~l;nnc for a given deplc,~ n~ e.lvllo ~ 1, to ~ ;n;~ f all apr~ ti~n CCS~ Q~ as a single entity, and to f~pallilion the apFli-~tion as problems arise or as ~u--~.llcnls CQ~ e to evolve. ~ n partiti~ni~ is an ~ l sll~gy for c ~ the client- erver alchit~ ~t~ , for ,.,.~.t..~g the ~le .A~I~S of mic~i- n critical apr1i- ~ti.~nc that can span the e.lt,~.
A g~PnP,~1 ~esc ;l ~ of the device and --f-!h~ of using the ~,c~nl invention as well as a ple~f~d embo~ nl of the p,~,sclll L~c~l;on has been set forth above.
One skilled in the art will iecogl~ and be able tO p~rfir~ many ch~ngP,s in many~cpectc of the device and ~ !1-o~ ~es~ ~ ih~ above, incl~ ing v ~ which i~ll 15 within the ~ching,c of this invention. The spirit and scope of the invention should be liTnited only as set forth in the claims which follow.
Process AI)pli~ n Tasks in Parallel . The previous order/entry eY~n~p s how partitinni~ can .."~ o~,e ~f- r~ 4 for a sequential multi-step ~rrlir~tirm. A d~r~ l Shat~r may be apr~ lP when an ~ l;r~ can eYP-a~tP
10 ;~-~e~-n~ tasks in p~ P,l~ such as analyzing the project~d return on a pl~osed stock ~ur~La~ against h~ 1 data and analyzing how the addition of that stock would impact the in.e~lu,'s indiv;d~l p~ lio Sh~Lte~y. From a b~C ~.PCC st~ld~oinl, both analyses are needed to satisfy the ~ r, but they can run in p~11P1 since itdoes not matter which completes first. From a ~r~ Al s~ ~d~ i~-l, if both analyses 15 were run on the client, they would need to run seqv~ y (unless the user had awu~ l;r,-- with ~"..-... ~;~1 m~ s~ g). p~ g offers the option to move one of the analysis ~dv1es to a server so that it could e~ ,~,ut~ CQ~ -e l~ with the second analysis n-~111P running on the de~l~p. ~ll - . zl;~ly, with ~ , each analysis m-y31l1P could be loc~tP~ on its own server. See Figure 8. This could be a 20 c~ r~ l ~.. r~.. ,.,~.-r4 win if the analytical mo~ ps were cQn~p1PY and/or the pl`~CeQ~ '~g power of the server is ~L~b~ ;Ally gr_ater than the ~e ~ hinP.. By running multiple taslcs in p~11P1, an entire ~!lir~tir~n can complete with a shorter e~ time.
(~aoad Prooessing from an Ol~erloaded Client. Some ~1ir~tinnQ grow to the point where they simply overload the target client m~^hine~ even after tr~itinn~l ,. r~.. -.. ce ~ P.I;~.s such as l~,co~ e as much of the ~ tinn as possible in a 3GL, using stored l.,oc~lul-_s to do as much work as posQil lP- within the RDBMS, and up~ the l~d~ c~nfi~ l;o~ of the client. P~u~;l;O ~ can help by 30 ~ in~, portions of the apF1ir~tinn off the client and onto a server. Even if this Shab.,g~ results in -~-litinn~l llCtw~lL c~""."".~;r~l;n~ I;chi~ g the a~ r~l;nnoften offers a net ~,. rO....~--r~ gain.
Con~rol. Whereas des~top m~rhines offer cost effective ylOC~-5S;~ power, 35 they are the most ~liffiru1t e.,vi[o~ to control. By 1OMting critical portions of app1ir~tinn fimrtinn~1ity on servers, rather than placing the entire app1ir~tion on all WO 95/W968 21~ 8 7 6 ~ PCT~S94/08785 clients, o~ t;n~s can u~lize the proc~-ss;~ power of the de~k~ while g ~ o~ points of control.
Protection Against Tam~ering. CG1~J- ~;nn.C have long l~ga,~led their S o~--~ g data as a major Co~lJG~ asset, and they protect that data with many Qqf~ q-rds. Increasingly, org~ ;nn~ are also viewing their ap~lirqtinn logic as a CGl~Glat~ asset that de3~ s equal protection. A co..~ may have developed a so~ ;rq~ m~ olir~ l~io~ l, an~sh~ leading approachfor P..1~,....9.~ g several b--c:~rsc steps, or an a~ ;r~ for al,p.~ g pay L~c.~ases. If the key CQ"~l~O~ Q
10 of these q~lirqtion~ are placed on ~cs~ ~ ...9r-~ s, they run the risk of n ;~d access, individual ~ g or CG.~.ate espionage.
Server-Based Control Points. It may also make sense to ~~-..;--;~ -- control points (e.g., a~ ,i- g e lY- ~ accol~nt ~ ,.U ~- ~C~ Q) on a server l,ec~
15 ~f ~ 1s are easier to ~",;~;Qt. ~ in a ~P-nt~li7~d ~.vuu ~ ~e -~ Ba~ ;m-;ng allows server-based control points to be developed as part of an overall aprliç~tir~n and e~ placed on a server. As d.~ l;r~l~C CQ~ e to evolve, it is easier to change r.-~-c ;.~ lity in a server ~lilio - than to install a new a~lir~;r~ .~o" on each dest 1 ~.
Fl~ribili~t. One of the i~h~ngll~ of a client-server enviro~ t is the ability toincl~ ly add both clients and servers. But these evol~ltinn~ry cl~ ges can .esenl problems for aprli~ tmc. ~d~itinn~l clients can alter usage p~l~...c as well as increase overall ~roc~ cc;.~g~ load. If more servers are added to the nGlwulL~ how 25 can 9~ qticmc take advantage of the ad~ ~l p vce~C~ power? Partitinning can offer a sol ltirm to these l,ot ~ 1 problems as well.
Sr~rpL.lfor ~'r~1~le E..vi,~ .ls. ~efiP~ ~ to Figure 9, an o~ ;n..'s co~ ul; ~g ~.vuot ~ may evolve from a two-tier to a three-tier e~vuu . .~e ~ Or,30 o~;"l;nn~ may be ~ ued to s.-~ull the same ~rFli~tinn at two sit_s, each witha dirr~ envu~ rt~l In these i ~ ~s, a de~elG~.--c,lt piog.~ .c~ may find hin-cPlf ~de~_loping an apFlir~tinn for the dirr~ e..vilo-. ~c ~l~; With a~ lir~ n partitinni~, the ~ p~ r can build and ~..A;.~ a single logical ap~ tinn ~3çfinitinn that ~u~ individual ~ sc-l- .~-s for each target ~Ivilot. ..
-- wo 95/04968 2 ~ 6 8 7 6 2 PCT/US94/08785 Support for Muced Em~ir.u,."~cnts. Another problem arises when an appli~tion site has dirr~.,nt classes of client ~n~rhinps. For e~ c, last year an olg~ )n may have ~llrchased hu~d~,ds of 38~based PCs on a five year ~lo~ n schP~ . Since then, the o~ ;o.- has been buying some llN~ w.. L~l;on.c.
5 Ideally, a new target al~pl~ could utilize both classes of ~ op machines, but this p~senls problPms How much of the a~l;~-l;o.~ should nm on the ~1~s~ lop? Ifthe devel~p-.. ~ plog.~ must s ,Co... --~t the least p~ rul m~rhinp~ they would und~ ze the UN~ w.~ L~ C to ~ cc--- ~ r, the PC. Referring to Figure 10, ~rp~ ti~n ~ g offers a solution to this problem. With 10 pa~i~t~ni~ a !cm~llPr por~on of the a~l;r~ can run on the PC and a larger portion on the W..-L~
Examples of Pa~t7c~ned Ap~l;r~ 0n~
To ilhlctr~t_ the power of partitinni~ this section A~ .. i~s four eY~mp'-15 ~ tir~n.~ All share a co~ n~ ch~rr^~-rict~ the appl;~at;nn logic (i.e., the pGlt;Gn developed by the y~og.~ e staf~ is spread over several m~hinP-s, e, ch with its own ~r1pli~tir~n pa~ un. These examples do not e.hn...,( the pQ-Q-Q;hilitiPs of arpli~ti~n p~l;l;r~ g. Nor do a~ lir~ c need to be as multifaceted as these PY~mp' -s to benefit from par~itinni~.
r~tomer Service A e~ service ,~pi~se .'~ in an c~ .;c utility co ~ gets a call from a ~V~ r co"~ g about a recent bill. The serv,ice ~ se~ e first needs to call up an ele~ 0l~ic copy of the ~ S~ 'S c~ It would help to have25 some analysis of the e~ 's overall usage ~~ Was this month P~ o."~l in the co-l~e ~ of previous ~n~ c? Were all bills for the area higher, ~4 1~ S refl~-cting a cold spell or some other factor that affected most people in the area?
Armed with this ;~r"...~ .., the service l~,pl~F,se-~ s the 30 ~ . ..-- 's ~ ;n.~ In the course of the co.~c~s~ , the 1~ ,e may s~gg~st ~ ; ... in one of the co..~ 's special ~io~,.-. .~ (e.g., subsidy for home inc~llAtion or the ability to average p~--.~ ls over the t~velve .~ of the - year.) The system should be able to pio-,.~l the ~ _ to ask the y~ ;Ally relevant ~ estionc and then ~,~casl the c~d benefit of each ~rogl~ll. The 35 ~..c~ .r may request a m~eting with the Cool~ ulor of these special programs, and the system should be able to notify the Coor~l;ndlor, pe~ rs via e-mail. The 216~762 ~v~ "l~r may l~uesl a tP~hniei~n~s visit to see if there is an energy leak on the propc.ly, and the system should aUow the representali~ to s-h-PA~lP such a service visit. The bill may be in error (e.g., service was not shut off when a c~sb~ r moved), and the system should allow the represcntali~ to correct that oversight S (after ~,.;lyillg its validity-). And, when the call is complete, the system should e~-u,-~P a letter to the u~r~u~r r co~r~ P the actions that have been agreed upon.
This ty~e of ~)pli~ ;nn l~q~s access to multiple data S~Jur~S and ~rplir~ti~n services that may ~;Q~ t A, Ihl~ghoslt the nctwu,lL ~efP.~Ti~ to Figure 10 11, ~ and billing data may be kept in atl RDBMS. The service afpn~
s-hPA~llP may also be kept in the RDBMS. The usage profile analyses and CO~15C~dliul~ yioE,~Il analyses may mn on a ~lilr~..,nl server. The appl~ needs to int~^e with both the e-mail system (to send ~ld;fi~ to the yiOg coo,~lillaloi) and the printer (to g~ h. the cQ..fi....-~ n letter.) This example could use as few as two partitions or as many as five in various impLP ..~ One pa~ n would run on the user's ~Ic ~t ' p, most probably witha er~phi~-~l user interface (GU~ to ~ll~lir~ the navigation among the many ;r~ n filn~tinn~ The fo-.--~ g of the ~ U-~--.'S billing and ^Xo~nt 20 ; .rO ~ could take place either on the de~t~p or on the data server. The analyses may be newly written for this ay~lir~l;n~; or they may h~ve been written p,~,~,iously, in which case the new ~pli~` .t;..~. needs to int~^e with them. These analyses could conce;~dbly run on the client or on the ~A1'~"~ seNer, but it may be p~ fe- ~,1- to run them on a ,~p~-~t seNer. Par~itionine allows the develo~
25 P~OL' ~ f r to yO~ having to decide where -they will run, and it gives the develo~ 1 p,op.~ ...,. the rl~dGIII to l~,locat~, them after the initial deplo~ nt.
Tnt~rfi ^ing With the e-mail system and the printer pose their own ch~llPnges.
Tbis example covers the simple case of 5~...A;.,~, instructions to these ~
30 ~st~.lls. (The next example covers the more complex case of l~i~lg and dis~ g mail.) The interfaces could run on the client, but this could tie up the client ~n^^hinP while invoking the e-mail and print ~SySt~ll and while ~3e~ling with any error c~n~liti~n~ that arise (e.g., se~ g the letter to a dirr~ t pnnter, or~e~li~ the e-mail mPsQage until the e-mail system is available). The ~lh~ e is to 35 place those ~llions of the appli~tion on the e-mail server or a pnnt server (or a single server where both int~ces run).
2l6876~
Par~itinning can simplify the b~ ling of this apFlir~tion (and the other examples) in three ways. First, it allows deve1op~ ,c~ Jrog~ P-~ to build the entire xp~lir~tinn witl-uul having to decide in advance where the various co...po..~P.-will mn. Secon~l, it allows develo~ cnl ~.~og,~ e-~ to use the same tool for allS al)pl;,`~ " Cu ll~)Q~f~ , as o~pos~ to using one tool to build the client portion and a dirr~ ~ tool (or nll~ltiphP tools) for the server CO~ f-~`;. Third, it z ~ h-s co " " ~ ~ir~tirmc among the ~ LiOI S of the ai.~lir~ mnning on the dil`r~,le.
machines.
Man~ac~urtng RPf~-~ri~ to Figure 12, this example models a very simple ...z...~r~r,hlri~lg ~rocess where a c~ machines a part from a raw metal block. The co '~
es the raw blocks from a ~ l;f ~, shapes them with a lathe and drills a hole acco~ to the buyer's spe~ifi~tir~n- Then the parts are taken to a testing m-^hi~lP
15 to verify that they co~ro ~ to the w~t~ ~f!~'S s~;r~ ;o~ before 1~;~ -g. Thetesting system ~ c~ ly rejects failed parts and alerts m~nag~ if the failure rate eYc~P~s a s~er;r~ ,.-~ her per hour. The alert should be p~ e.ll~tive: it should open a new window and display a mPs~e~ even if the user is running ~nothPr a~ ;nn at that time.
Refe~ri~ to ~o~ r example il~ h~h~ in Figure 13, this aprlir~ti~n involves bl~ i~ many co--~ t~. a ch;l~p:.~g and .~;~ing system, a user intP~r~ for a OCeSS e--g~ . to set the hthe and drill for the leq~ed mea~ule-~c!n~ an interface to the testing m.^^hinP to set the tolerance allo~ ce and reject the failed parts, and 2~ the ability to send an alert to the p-ûcess e~jnPP~r if the ~ilure rate is çY~Pscive.
These cQ...~ r~ uill run on dirr~..,n~ co-.-l-u~-s incl~ in_ ,enP~l business systems and shop floor mzrhinP controllers. RPr~ P to Figure 13, in one preferred e~ o~ f.~ a ~^^hinP control c~ uo~r conh~ls milling machines, ~Irillir~ mzrhinP.and COI~ 0~ ~rst~ lls on the shop floor. A qualiq control machine controls 30 ~ g .--z~ s and ~-r....-.~ or ;,.~.v~s tolerance analysis. A pro~ctir~n ~ rhinP ~ .J.~ ...,fi~ ri~ steps and pro~uctir~n sl~hP~l~llps. A l~.~C;~Pss services m~rhinP "~ S l~ceivil~g, in~enlo ~ and shi~ir~-. Each of these mz~hinp~s iS CQ"~Pr~ gell~er~ along wi~ an int~ for a process e-.g;--~, to provide an in~zr~tP~ ap~lir~ti~n co---l~o~P~ of service objects as needed to ~ mPnt each 35 fii nrtinn WO 95/04g68 ~! 1 6 8 7 6 ~ PCT/US94/08785 The ~ericir~n as to where the various portions of the ~r~lir~tir~n should run may be less proble .--l;rAl than with the c~c~ service eY~mpl- above. The i~t.o~^~e to the .~ .r~^tllring and testing m~rhinPs should probably run on ehe controllers for those ..~Ah;..~s. The user interfaces for the proccss ~g; ~ and the S slli~.ng/.~ ;vi,~g clerk need to run on their ~c~ 1~,~. Maybe there are one or two gP.nPr~l l,u:iiness sy~ s. The ch~llpnge of this ap~lir~inn is to build all the co~ ~n ~ as a fully ~.t,glaled appli~til~n- The goal is to ...;n;~ , the ~ mt ofcode needed to ~ r" the ..~ r-^1llring s~erifir~tinn~ from the ~ocess enginP-P,r's screen to the shop floor nl~Al~; .e-~ and to ~r~ h the other l,~ res fimrtionc.
10 Without p~!;';'~ , develo~ g~ wauld need to build this ~rI~lir~ n from the ground up as a collP~tinn of ;~depe~d~ l parts. They would probably usetools for bllil~li~ the GllI portion and the interfaces to the ~ali(Jus m~r,hinto.
controllers. And they would need to do their own ~.~on control and sorL~
CQnfi~ tion m~n~ge...fn~ Partiti~ning offers the ~ I;ve of b~ ing the entire 15 aprlir~tion as a single entity and then ~ qting the various p~lilions to the nodes where they would logically run.
One of the ~pecial ch~llP-n~es of this ~ q~ n is the alert to the ~iocess e ~g;~ 1 when the failure rate eYc~e~s Ihl~sllold. It involves either CQ~ QUS polling 20 of the testing ~ h;--f or being able to send a mP~ gP, from the testing m~hin~. to the e~;~-~r~, 's de~p. Sentling a mPs~ge is prefie~hlP from a ~.r~.. ~.. ~
o ~t If this type of mPss~ging c~r~hility is su~o.~d in the developlllcnl c.lvir~ ..r!n~ partiti~ni~ allows the alert to be built as though it would run on a single m^~hin~P and then physically ~, the initi~tinn of the alert from the display 25 on the user's de~.
Financial Services A 5e.~ ;rs broker ~enel~lly needs . ~-do... access to many dir~ types of data. R~o-f~ ng to Figure 14, when a .~ e~ calls, the broker may need to look up30 the cu~ - - 's ~-c~llnt in~o .~ . When they discuss the purchase of a new ~;ul;ly, the broker needs data from real time feeds showi,lg the current price and any up-to-the-minute news on the CG~ . The broker may also want to consult h r~. ;r~l data on the ~ . Before l~o-.---.f!nrl;-~ a p~ebase, the broker may want to consult a Portfolio Analysis model to see how this s~u~;lr would fit in with 35 the ~ r- 'S overall illV~ I slla~ r. And the broker may also want to consult an Invesl...~ Analysis model that co~ s this potential l.,~e;,l...~- ~I with ~lt~ tive 21~876~
~ WO 95/04968 PCT/US94/08785 s~ . If the ~ ~r wants to buy the sc~,w;ly, the broker needs to enter the trade and get ;~ 1;At* co~ n that the trade was suGc-Pscfillly eYec-utP~ at the agreed upon price. Or, if the market has moved higher in the .~A-~1;---e, the broker can then ask the cUstQmp-r if they want to yu~ ase the sc~,w;l~ at a higher price.
S After the trade has been eYP~ltPA~ the broker needs to initiate the pr~c~s~es to bill the c~ ....cr, update the ;vsto--.~--'s ~,lroli~ listing, and ;--el~-de the trade in the broker's cQmmiQCi~ n plan.
In the ~ A~ P, other users are running di~f~,e,ll ~rFlir~tinnc that access 10 much of the same ;,.rO.... ~ . for dirren~ yulyOS~S. ~ 1 analysts may be """-;lo-; .g cw~ stock prices, following-up on reaent news, and c~n~ cting in-depth analyses of hi~tnrirql data and daily ~ading volume. They may change their A~ on a stock and need to send ~mail to brokers whose clients have a pOS;I;~... in that particular stock. At the same time, the office m~n~ger may be15 .~ ;~ the trading volume of his office and analyzing the pro~lucti~-n of the various brokers.
As with the other examples, this zp~l;r~l;o~ lends itself very well to a ç.liPn~ s~l-..r alrk;t -ct~ ~,. The dirf~,~nl types of users may be ~ g di~ nl 20 ~trl lop ap~lir~tionc~ but they all may access a set of shared services. These services can inr~ e direct access to raw data (stock price quotes and feeds, news feuls, plus account and hictorirsll data), l~er~n~ reports (c-ust~,-.-r~ pu~lrolios~ daily broker productivity) and other ap~lir~tirm sel~ices (analytical models such as i.,~e~ nl analysis and l.o.lrolio analysis, ~;Ull~,~ cu~ ion algû-;~ .c, e-mail, access to25 back office ~;,t~""s which provide trading system, cust~ billing and broker cr.--- ..;c~:~.n ;~r~ n). Client sc.~ gives the brokerage house .~;-~-----.
fleYih;lity for developing, ...~ t~ g, and ;-~ ~"~ g these services, while the use of a GUI on the de~p can ~"~ r, the -end user's t~sk of navigating among the various se.~ices. Without p&~ , the various ap~l;r~ cu~ n~c would 30 need to be built in icol-~ . With ~ ;~, all 5el~ices could be built in a single devel-~....e.-l ~",vi,o-.-..e--' and s~s~u~"lly ~ll~tJ~d to the dirf~,le.~l m~rhinPs in the client se.~l en~i,o~
OrderÆntry Many ol~ Q;~;onC are using or investig~ting visually o~;~n~ t~rtive order-entry ~ .-,s. These S~ S have ~e ~t~ntial to give cllslon.e-~ greater WO 95/W968 ~ 7 ~ 2 PCTIUS94/08785 control in ~iry~lg exactly what they need, to in~l~ase c~lc~.. ~r c~qticf~cti~n~ to reduce the ------1~r of i,~ ~l orders, and to streqn~line the entire l,rocess of buying a product. This approach is under active develo~-.-F--.t by several retil sales o~ ;nn~ The ~lcsen~ l;on c n be used to develop new ways of ordering S goods, for ex~nple o~Cli~lg a new car. All of the ~ ppolling the t ' Au~o-gy is in place, and partitinnin~ would s,~ liry the develo~ of the a~plir~ An After looking at, and maybe driving, an available floor model or two of a certain car, a c~ sits down with the QqlP~-r~ at a PC to get an exact quote 10 and close the deal. As with most order/entry S~St~,.l,S, the a~lir~l;o.. would first qualify the buyer, acc~s~ g available services to checlc credit ratings and possibly bank bqlqn~s and emplo~l"~nt status. The buyer would point-and-c]ick on the model he wanted (or he could view mllltirlA models Qimllll~ .cly~ ,oo...;..g in to view one at a time when desired). He could CT~ ' with dirL,~ color s ~ -..PS and 15 ~letqili~ oFtionc which would be dispL~ on the screen in full color. The model under CQ~ ~ie~ ~;"" could be rot, ted for viewing from any angle. Fytp-r~ r opt; Anc~
such as mag wheels, would be di~ d as they were s~vlo~.d. The system could yro~id- an interior view for that model's coc~ from the driver's ~ oinl. The system would lJlo~llyl the ~-~ct~---.- . for non~l~y~ble optirnC (engine size, 20 ~A~ eer side air bag, t~ ded ~ 4), all while ,..~ g a running total price that could be di~ d wl,c~u~er ayy,opllate. When the spe~ifi~tinn is complete, the system could check the av~ ility s^hP~le and give the buyer a target delivery date. Then the order could be slJlJ-..;IJed electronically and m~nzlg~dclecllo, ically throl~ehol~t the ~ r-~.cblring ~rocess and the ~ :-,g cycle.
The same .... ~1~ can be used for other ~urchases such as the design and order of an office Ç.-.,.;h~-~, system or custom window ~s~---.bliPs for the home.
Pfi~Prrj~ to Figure 15, all have similar ~uu~ c~ for co--~ fn~ services:
d~U s~L.ns (such as on line catalog or .i"r~J~--.;",~ ro-.--A~;- .-), analytical30 sy~L."s or services (such as pricing, confi~ti~n cherlri~ or space re~luil~
;~f ----~ ), data s~ (such as C.JS~ data, ;~ g ~-co~lnt ;.. r~.. ";~n, credit check il~- ...zl;~ n or product ~ co-~ "A~ and an int~rf~re to producti~n s~r;,~ "s (such as srh~~ g~ ~"a.~"r~,-hlring~ sL~,g, and billing).
Iike the other e~ lPs, tllis type of ~r~ tion is well suited for client sel~er where apE~li~ti~n cQ-~ Q-Ienlc will be running on mllltiplP m~t~hines.
~ WO 9~/04968 2 1 1~ g ~ ~ 2 PCT/US94/08785 The ap~ tion may need to taL~c to dSlt~h~es~ imaging Sy~ lS, and credit ch~ ng services, while providing analytical services (pricing, confif~ tinn çl~rL ;i~g~ total weight, delivery date) and bl~cin~-ss services (order/entry, .. r~*l.i.,~, sl~i~ping, billing). The more facets to an apFlir~tion~ the more partiti~ning can help to reduce S develol"-lcnl complexity.
RVi~i~g Partihone~ 7plicntions wi~h Fort~
Forté is an advanced apFli~ti~n develop"lclll e~.v.lo~ n~ for bnilditl~ and 10 deploying partitir~n~ ~plir~ti~nc. It ;~ dcs a ~ based de~lo~..--.r~
e, ~ Q~ u~ complete with a GllI forms painter, an object-oriented 4GL, and an interactive deb~ . ~OE~ use this d~ o~---er~ Q~ e ~1 to create a logical appli~stinn dPr~ ;O~ ~at j~;ÇifiFS the desired r~--cl;o-ulity i~p~ Of any ~ç;r.c yh~cal C.lvilOf.-..- --~ Forté also ;~ des tools for ~cil~i-lg a t~rget 15 deplo~ nl enV~ fnl and g-, ~f-'~ a default parhitif)nin~ sch~ for ~e targetede.lv~o~-..f! nl In ~-lrlitirJn, Forté inr~ldes tools for m~n~in~ ~e par~ition~
ir-~;nn once it has been deployed. l~efe-.;-~ to Figure 16, ~ese tools ~ul~po~l a ~ree-phased develoç~ n~ cycle: ~P1;~ ;r~n der~ ; system ~,e~f.~;ol-; and A;Q~ t~ d ~l;.chil".~ n, Aprlirsti~)n ~ r~ may utilize G~lI~GL ;-~fn....AI;nn and 20 a l~l)os;~u~ of inr~ n about service objects. A debu~&Pr is hPIrful for ~is phase of ~r~ll deve~-ç-~ ' System ~,e~-.,.~l;ol- in~ des cQnfig~ ;-v~ and as well as code ge-~f ,~;nn. Deployment uses a ~ - ib.Jt ~ object nl~n~gP,r and ~,r.,. ,~ r~ or for system ~;c~ ;Qn to effec*vely distribute and utilize service objects.
Bu~ing a Logical ApFli~ntion De.finition The first step is ~if-r. .;-~ the logical ~l)pl;~er~ This step col~espo--ds to i-lg a client-les~denl a~ l;nn with other 4GL tools. But with For~, the logical ir~*r)n ~çfini*on can be par**nnp~ b~.l.Je~l to the devel~ f ~-~ phase.
lhe Physical Developmen~ Em~irv,."~,.l. The logical ~lir~*nn ~çfini*on is in[lf,~!n~ of any particular ~hysical deplo~ nl (..~iro~.-..f ~ thus giving deVelOp~llC~ll p~ f-'S COn~ P~blfÇ flPYihility for their physical develo~"-el-_n~iro..-..~.~l The inven*ive n Pthod l,fo~ides l- .~ nl portability across many 35 ~ IVil'~ , inrl--~ing the following:
WO 95/04968 ~16 8 ~ 6 2 PCT/US94/08785 Desl~top/Gl~I--Windows, M~rintn~h, Motif, ~S~t~l;nn M~n~g~r Server--UNlX (IBM, .~e~ent HP, & Sparc) and VMS (VAX & Alpha) Network--TCP/IP, DECnet, Novell, AppleTalk RDBMS Oracle, Sybase, Rdb, Ingres, TP Monitf-rs-ACMS, Fnri~u, Tuxedo Develop--.f ~-~ p~og.~ can use any ~ po~Ld e.. ~ to create the logical ~pl;r~ n ~efinitinn The a~p~ can be ~"~S~ deployed in an e.~ o~ with dil~ nl 1~.1~ . and sorh.~ CQnfiFll~ti~nc- For example, 10 develo~ pro~.~-..-.---- i may use PC clients tall~ng to a Sparc server for deve1r~....- ~-~ and then deploy on Mac clients tall~ng to VMS server. Portability and are both l~qu;~d for e.,~.ir~ Aep~rn~1Fn~. As client ~cr ~n~ co~ e to evolve, the s lAiti~n of new ~ rh -s and usage ~I~. ."c may l~U~ both a 1~ e of the ap~lirqti~n and a reh :~sting of ~pplica~;~"
Cc~ c onto dilf~.~.~ rhinP ~ u~ f~
An App1~cnt~'~n as a (:~ol1e~hon of Service Objects. As desç il~cd above, a Forté
ay~lir~ p~ l is d~pci~d as a cQllP~i(~n of service objects. Service objects may inrlllde~ but are not limited to: display services, d~hq~G access, int~-rfaces to 20 e~h----~l services (legacy ~."s, elec~u"ic feeds, e-mail), and o~,~ n s~ifir,b!-c nrsc ser~i;es. The service object ayyi~oacl~ allows an ~lg~ n to model its own l,--~ sc from the user's ~,-~l~c~
For ey~nlrl^~ to yroces_ a new order, the o.~ may need to verify the 25 c--~ -'s address and credit rating, check with inve.lt~ to make sure the desired product is available, send notice to ncc~llnting to initiate the billing cycle, and instruct ~ & to mail the product. Prior to cc--.l-vtj -~, people dealt with other people or with paper forms that other people h~n-llP~. The plOCeSS was laborious but rela~vely easy to colllyl~h~.ld. With the advent of co-~l-vt~ , the time to p~ocess an 30 order can be ~Ac~le- ~d, but it ~ S a data ;nL~h. cture. C.J~ --- r records are stored in a ~ ~" along with ~ccolmti~g~ lo~ and ~ g data. The job of the apF1ic-~ti~n pro~"-.. --~- is to provide a l,~pyillg bch.~.l the user intef~A-e (~.I.al.s a form on a co...l-~ screen) and the data infrastructure.
With pr~ l pro~ -.. -.. ;-~g, this .~.al)~ is usually aprlicati~ n spe~ fiA and can be con~plAY An order/entry aprli~tir~n~ for eY~mrlP, may call up the cllclul~l~r ~6~76~
record from the c~lctom~r ~qt-q-h-q-~e, check the cus~ fr credit ~-q-tq-hq~e, request the Lily on hand from the ~ e.~ h~, check to see that the ~lu~liLy on hand can ~u~l)oll the order, update the order l~q-t-q-hqce, and add a new entry into the sl,i~g .lqtqhq~.
s With a service object approach, the job of the yrog.~ ..c~ can he ~
R~ernng to Figures 17A and 17B, the RDBMS data infrastructure le.~ lS in place.
But now deve~ -..c--~ y~Og~ --..-..r--~ simply create a new service object that e~ a~ qo~-s the data i~r~c~ cture. For example, develop"lc~l y,o~.. -.--..~ - ~ nuy 10 create an i.,~ent~"~ service object, an order 1~OC4C' ~g service object, a c;l~s~--.-f-r ;, r,....~l;..n service object, and a Chi~ ~ service object. These can be controlled or guided through a c~nn~c~ order entry screen service object and a l~h h~ serviceobject.
This type of service object ;~r~ ucture can S~ ]i~ the develo~"~nl ,-'s job in several ways. First, it ~ ;r.~s the de~lo~ cn~ of new PpplirA~;O~c by allowing develo~ yl~og~ to reuse e~ g service objects.
A new ill~en~ apFlir~tion can be written that uses the i"~,nlo.~ service object developed orig1n~l1y for the order/entry aypli~ n. Secon~l~ it c;~ ir~ps aprlir~tirm 20 ...~ .u,.,~ by providing an ~ itinn~l layer of ~.<.ç~;~ n where bl~c;~cc rules can be ~nfor~ed while in0ll~ti~u aypli~-l;nn p~Og,~,lc from change. If the c~-..l~A-.
wants to decrease the ~mnllnt of il~ ~n~ ~ it keeps on hand, it can modify the service object instead of ~llodilyillg many individual programs. (By using code g~nG.~I;nn t~ ~ D!cgies, Forté .-.;.~ s the ~--r~ ----~-.re impact of ~nothPr 25 ~l~s~^ti~n layer.) Third, service objects ~ ,e3elll a m~~ ri7~1 view of an aprli~tin n that can both mirror the CQ...l~ 'S OlpA..;, ~;nn~l structure and provide a basis for par~itinni~.
The Forté approach to partitioni~ is not based on sF~ ~ out bUcinpss rules 30 or some other pre~çfine~ category of a~lir~ n fi-n~tinn~lity. Forté does not require develop-.-~ ,-;, to fit their appli~ s into one or several y~der~
molds. ~n~ , Forté allows develoy",c.,l y~O~ f,~S to model their applil~tinn e ~ O-~ f!n~ in the way that makes most sense to them. No structured methodologyis 14uil~d to build Forté applir~linnc.
WO 95/04g68 21~8 ~ ~ PCT/US94/08785 Forté uses the develo~ n~ o~.~.. f r~efin~ service objects as the basis for partitir~ni~lg. Each partition i~ r~ es one or more service objects. All service objects will be kept intact within a partition. No service objects will be divided among partitions. An applir~tinn may have three service objects or it may have S thirty. The greater the ..~ of service objects, the greater the --~ hf r of possible ~",-IIA~ C forpartitinn~ ov~s.
Forté Objects. Forté is ~f~ ierl~ to deliver the 1,~ i of object-o- ;~
~.o~.~-..-..;-~g without l~uil-ng a total c~ ' to object technologies. Users do 10 not need to store their data in an object ~ hq~. Nor do they need to use C+ + Sm^~lltql~ or other object-oriented l~ngu-qges~ ~n~t^3~, Forté ~v~ides de~loL.nf--l pro~;.,..--..~-~ with a foIms-based en~ c~t for c,cating classes and a l,r~ lly r-;---~14GLforwritingtheir.
Under the covers, Forté is object o.;f!nh~ at is written in C++ and vu~po,~
object n- ;f .~ ;rm with e-~ v-~lqtion~ kP.. i1~.~re, and pol~lu~ .) Forté objects are reusable across ap~ q~tir~nS~ and de~e1o~ t P1`~KJ~ r~ ~ can add or change ~ ~f 11~$ wilLuul ~ the object. Forté objects pass .--es~a~.rs arnong thpm~lves. (Forté provides its own peer-to-peer meS~j~ system for 20 co--.-..----;r~tin~ among Forté p~liolls. It can also use either an RPC ~Remote ~1U1~ C l1) or a CORBA ((~-~------o-~ Object ~P~est Broker A.~ ;t c1-i~e) style mPs~a~ -S~- l for Cc"" ~ `, ti ~ with ~ t - .-5'1 objects and services.
Forté vu~l,oltv the . lw.lion and ,..~ ..1qti~n of both GUI-based objects and 25 ~enerq1 applirqti~n objects. Most G~lI tools v.l~)o,l GUI-based objects that are ~,csP---~ as icons on a screen. Not all of these tools, I~ er, Sl1~O1~ the creation of apF1ir?ti~n objects, such as an .n.enloly ærvice, that are apr1ir~ti~n logic services and not just y,~se-~ ;on services. Forté ~ ~ t these arr1ir~tir~n services which are crucial to ~rF1ir~tion par~itir~ni~. When an a~ is partitinnPA, these 30 ~ ". services can be located on a server where they may be -~c~ c~ by many users of the same d~ and/or by dilE~ rF1iC~ti~nc- Forté is a developrn~
~,.vin"..,~ for b~ ng both cl~ent appli~ ions and server ~Irpl;cnrtQns. T~ds is a major dep~ from ~tlitinn~1 apF1iratinn deve1o~ tools.
~ order to ,.~pl)oll the deve1~-~ of aprlir~titm objects that can function as servers, Forté PYtPnfle~ its object model in a few key areas. Most tools for building -- WO 9~/04968 216 8 7 6 2 PCT/US94/08785 client q~1irpti~n~ have no notion of slla~ability be~ se the ap~ *on code is nP~ to run on a single user client ~-,A^l-;--r. These Pr~lirqtic~nc rely on a server, such as an RDBMS, to handle such multi-user issues as conc~l~rency control and trPn~^tinn.c. Forté built cQ~ ;y control and trqn~qrtinn~ into its object model so S that server ~rElirqtinnc can y~Yide the same style of shareability as an RDBMS, even where a portion of the Pr~lirqtinn does not use an RDBMS.
The So~ware Deve~ l E~ rv,~ Forté p~oYides a set of visually Q~iPn~^~ w.. kl.~S for b~ i~ an ap~lirqtion~ There is a Windows Wo~ hop for 10 ~lecigr~ing sc~ s with a point-and-click style in~rf~r~ that creates screen widgets from a palette of s~l~d widget types. There is a Object W~ np that provides a form for creating ar~lirqtinn classes and other P~ lir-q-tinn c~ . There is a Method Wo~L~hnp for writing ..-~ll-~c in the Forté high level lqn~agP~. Since the Forté lqn~lqge ~.lpp~lt~ rev~ql-hP. ~ ;nn objects, it can be ~ ly ~es-- il.e~
15 as an object-o-;e-~ l 4GL.
The Forté lqn~lq,gP, inco.~ s constructs from three types of lqn~lqgçs. It inc~ olates event loop prog,u""".~,g, first pop~ q-ri7~1 by IIy~r~d and s!l~s~e-.lly l)tili7p.d by most GUI tools to deal with the un~ ~irt-q-hlP- . rrival of 20 non s_~ue 1;~l user actions such as chooc;~E a menu item from a list of several posQ;~lp- choices. Forté uses event loop p~ to handle events that ori~jnqtP.
on the user's screen and also to handle events that are i~ d by the system and by non S~ based apFlir~q~tion co~ o--cnL.~ (such . s sPnAing an alert from a testing mqrhine on the .~,a,luracturing floor to the process control ç~jnP~e~s wo~ n.) 25 The Forté hn~l~ge also inrl~des procedural prog~u.""~,g constructs found in most third and fourth ee.~f.~ n lqn~l~qges for hqnAli-u the flow of control (if....then...else) and for crea~ng vq~iqhl~s and eAl)~s~ol s (1 + 1). ~ ~AAi*on~
Porté illc~.~ .t~ s star~rd SQL for s r'c~-c~ ~g an RDBMS. By incG ~u~ g sku~ SQL into the develol,lllcnl lqnguqge, Forté can ~.~o~ide RDBMS portability 30 by ~a~ g SQL calls into ..ulllcroLs SQL ~ lpctc and by g~.~r.~ p vendor S~--;r~.
stored p~ cs for o~ RDBMS ~- r~ . Forté also provides an e~-tive 4GL debugger (that was built using ~e Forté 4GL.) RPf~Prrir~g to Figure 18, all develop--~.-l work is stored in the Forté
35 l~OS IOJ~. ~The Forté dev~P1o~""~"l e.-vi~..c-~ inr~ les a blo..~r to view the previously created cl~ses, their mçth~s, and ~ ~s so they can be reused or WO 95/04g68 PCT/US94/08785 2JL68~62 easily --~;rPA for new ~rF1icqti~nc.) The le~ 'J ,~/ stores the ~lefinitir.n of all jr~ti~n service objects in an envil~o~ ' neutral form.
The l~Oc;lO,~ ~ovides several filnrtinnc It ~ Olt~ t_am develo~l..enl with S check out/check in so that several deve~ p~ rs can be W~ki.lg on dirr~ t parts of the qrp1ir~ti~ n at the same time. It ~.-p~o,t~ ve~ ning and c~nfi~l~tirn ~r~nage...~ to f~rilit~te builds of complete apF1irqtir,n~. It stores the ~efiniti~m of that target deplo~ cnL e~ 1 And it stores each par~itinning sc1.r ..~ for each c.l~ r ~-Genera~inB a Pa~itioned Applicntion Once an qrFlirqtinn has been ~efin~, the deve~ ,o .~ cr can test any par~itirmin~ sc1-r~ by cim~ ting the deplc,~r~l~n~ en~ 1 in the developll~nL ~n~o~.. e-~ At this time the a n can be l~ n~ without ~yillg the ~rlFlir~tinn ~efinitinn The ~ lir~tinn can be l~l;l;n~l at other times as well.
The first step in the system ge-~f."t;nn phase is to define the target deploy.llcn 20 e,lvil~o-.-~ What are the clients (Windows, Mac and/or Moti~, what are the servers, l~lwG~ ~s? This ;~f~ t;nn is stored in the l~c~ for use in the p~l;l;lJ..;ng process.
The second step is the default partitinni~ of the ~ l;ol-. When the 25 partitinning co...-.~ is given, Forté l~ tl;~_S the sperifi~tinn of the target deplU,~lllfnl e~lVi~O~ and analyzes the logic of the a~l;r_l;nt~ ~efinition It s each service object and notes ~Lf ~r it was ~e.;g~ to be shared or to be ~^r~ss~d ex~ ely by a single user. If it was ~esig~ed for exclusive use (such asthe set of y~s~ l;nn services), Forté will place that object in a client partition. If it 30 was ~esi~ for shared use, it is a Ca-~ t for being moved to a server. Some service objects are ~Ccor ~ with an eYt~ ~sou-~. For e~ D, an inte~ce to access an RDBMS is ~cs~i~led with the target RDBMS and its physical loc~tinn. Ant~re to a legacy system is ~Cc~ori~tl~ with that system and its physical loc~tinn.
Other access services may inr~ 1e real time feeds such as a stock ticker or plocess 35 moi.;ll~. ;-.g feed. In each case of access to an eYtern~1 service, Forté will m-~ke a default ~ccig,.. ~ of the partition to run on the node where the int~ ce is located, as ~efinP~ in the repoitory. There may be a ,.-~ er of other shared service objects that are not d~l~clly ~csoc~ d with an e h ~ sJuree. These may inC~ e co~ n~1 or analytical services, and they may inrl-l(1e a set of business rules that e~o ~ an o~ t;n~'s po~ P-s. These shared l,~-c:~ ss services may access other S service objects that, in turn, pro~;de raw data from a ~ h~ or real time feed.These shared services may also access other Cl~iCeS for coo~ 1;on lJulyoses. Inthe order/entry ~ ~~ above, the order ~rocess service object r^csC.~ both the n~ly service and the d~i~-g service as weU as acc~ g the ~ h~ d~clly.
RP~P.1T;~ to Figure l9, where there is a set of service objects that do not dil~ctly 10 access an e-~ ce, Forté wiU ~-It ---l~l to ~ catP those service objects evenly across aU Ihe available ha~ servers as ~ ~ in the target c~nfi~ tinn.
This default partitinning approach may not produce the ideal partitinning 15 sc~ , but it is a Skulillg point. Forté also provides tools for ~lrO ~ c~
.~o,.;~ g and lcp~;~;oni~ to aUow for a m~nll~l o~ of the default partitinni~ S~ r...,~,.
The use of an object model for devel~enl helps to idenliÇy the logical0 bo~n~q-;es for parhtioni~. Since each service object ;~c'~ -s a ~o~ lly large be~ of objects at lu~lL ~le, each with its own .~. !l.odst the default partitinning roc~ss must identify aU the possible .~.e~l~ods that can be invoked in each partition.
The system must then locate those ...~Il.~c in that p~LLo,~ so they can be ~rcessed when called. Parhtir~ni~ wiU not work effici~Pntly if these mP~thods need to be25 ~ tCI~ at lu-~ --c from ~ Cr node.
After creating the a~ rql; ~ ~Ll;ol s, Forté moves the server ~LLons to the target servers in the e.lvilo~ Pf~ g to Figures 20 and 21, Forté refers to the t~rget c~nfi~l~tion definition to see what l~lwul~ are available and 30 ~ A11Y sets up the a~pro~lldt~ n~lwull~ co~ ;c-~;n~C to send mPs~ges b~t~ each set of nodes. Each Forté server may use dirf~ nl cQ~ ;c~Atinn plûtocols to cC~",.".~ir~te with diff.,l~nl servers.
Each par~tion is serviced by a cQl1pctinn of Forté system services that m~n~ge 35 c~.. "~ ;r~tinnc arnong partitions, mess~ge traffic within each par~tion and the 2~68762 p~Qcin~ of m-o.sc~E~es to remote objects. These system services m~n~e all the apI~lir~tir~n service objects on each node.
At this point in the system ~,e ~ n phase, the paItitir)n~ apFlir~ti~n can be S run int~,yl~ h~ly. Iike most 4GLs on the m~rl~t Forté Co~ ,tS 4GL source code into a pseudo-code that eYIo-cut~s ll~vu~,h the Forté l~t~ly~ . Since Forté can create shared ~p~!lir~ n service objects, these objects are stored in the l~JO~ J ,~, and ~t~ yl~t;~ eYr~vl;r-~ involves l~pOc ~ look-ups. In ~ltlitinn, int~_lyl~v~
e~cc~ es ~c~eC~ the RDBMS(s) with dynamic SQL. Whereas most of the0 ~ liti~n~l 4GLs use this ~yy~oach both for de.c~ and deployrnent, Forté only i~S interpretive mode for de~.~lop~ -n~ For pro~uctir~n ay~ c~ Forté offers a code ee~f-~;on option to 1I~C~ y -~1~
Each Forté p~ulil;on can be deployed for pro~c-tinn either as an nt~,ly et~d 15 ~ l;o,. or as a c~n~pil~ p~liGn. Since the ~eriQ;on to run ~--t~y~ ly or compi1ed can made on a y~liliull by pa,lil;on basis, it is pos-Q;~1e to h~ve a mixed env~ -f~1 of~ y~,liv~ and cQn~riled p~Ll;ons to ~ yyo l, for; ~'-, a ~1ec~ S~l~yGll r.. ~;n~ as part of a larger ap~ r~l;nn also co~ g some tr~n.Q~cfir-n y~O~
Forté offers two code en ,..I;.~n ~h; tf g;r-s to s.lyywl cr~n~Fil~ apFlir~ti~nc.
The first takes the Forté pseudo-code and runs its through a ee ~ 0~ to produce dard C++ code for each yaltiliOl . This C++ code is then con~ril~A witn tne local C+ + con~ril~-~ for that particular node. The res~lt~ hin~ code provides a 25 p.,- ru .~nr4 benefit over most applir~*~nQ created vith a 4GL ~at run in~lyrelively during deplo~I"cnl. During code ~en~ , Forté resolves aU I~,feiences to the ~o~lu.~ so the .~-"li-"~ system does not need to incur the ~,- fi -.-~--c4 penalty of repository look-ups.
The second code ee~G~t;nn ~hat~ ,s a set ûf RDBMS sI)ecific e~ f ~ that produce û~ ; ~ access for each s.~p~ol~d RDBMS. For eY~mr1~, the code ~,e--F,-~or for Sybase produces T,. ~ QL while the code e~onp~tor for Oracle 7 produces PL/SQL. ~ each case, the code ~ ..r~ tor takes the RDBMS-neutral definitirn of ~l~t,.l~ access and e~nf. ~o~s the a~l~ro~late s~ategy 35 for acce-QQ;~ the RDBMS with an op!; -;~ ye~r~ 4 Sllate~
-- WO 95/04g68 ~ 7 6 2 PCT/US94/08785 Managing a Partitioned Appl1cn~en Following system gcnP~l;r~n~ the ap~lir~tir~n is ready for deployrnent. The first step is to install the client partition(s) on the target de-~l lop m~r-hin~ps. The ap~lir~tir~n may call for a n~ixed t,..~ of PCs and Macs. In that case, Forté
5 would produce a PC ~on of the client ~L~n and a Mac version. The system - l...;n.ch~ r would then need to install the a~ o~idte partition on each ~&rl~lop m-^,hinP..
~nQt~ tion also offers the G~ul~ for re~lir~tp~d partitions. There are two 10 l~asolls for i~Qt~lli~ reFlir~tpJ~ liLons. The first is load ~ ncing. For s ~in an SMP (S~ .. h;C Multi 1?~OC~Q- -r) en~u~ nt~ it might make sense to run the RDBMS engine on more than one ~ ssor to i~ pO.l a greater load. In ~is case, the RDBMS access partition should run on each node where an RDBMS engine is locqtp~ Forté ;.~Il)pu ts the le~l;rAt;r~ of this RDBMS access partition and 15 provides a router to aUow multiple RDBMS e~ s to service the next RDBMS
Jei,~ in the ap~lirstinn queue. The other reason for re~lir~tinn is to provide backup in the event of a node ~ilure. Dich il .~ut~ e.-~uo ~ e~c inc.~ the probability that one node in the system wiU be down at any given point in time. If that node is particularly crucial, it may be a~lo~.~te to have a back-up node. For 20 example, a node may provide a key analytical service or image for the user. In these cases it is po~ihlP to define a ~ l;r~led ~lilion as an glt~ t~ node that can be?,r~ in the event that the p.~ node is unavailable. Forté also provides a router that can access such a backup node.
It has already been mPnfi~nP~l that the ~;`h ;~ nlil--e en~i,o-.-.. ent must ~ unde co~ ;rstionC among the ~l~pl~ partitions. This concept is foreign to most deve~ tools. Tr~itinnql tools rely on the RDBMS to provide the cci~ r~tinn~ .h.~,..n client and server, thus mski~ the RDBMS an esconl;~
part of every s~ljrqtion Fort~ does not g~ that an RDBMS is part of the 30 s~lirqtinn, and even if it is, Forté can sngmPnt the co~ ;rstinnc poscihilitips offered by RDBMSs. This can be esperiqlly ,..~o.t~ when co~ ;r~qting with non-RDBMS servers. Forté provides co...~ ;r~qtionc among applic-qtion partitionswith its own ~ J~1 mPsQagi~ system. The mes~gjng system is c~qble of ~c~:.,g meScq~gPs among objects within a p_rtition. It is _lso capable of psc~ing 35 mPccq~es beh.~-- objects located in dirr~.~nl partitions. Cross-node mPs~q,gjng is ccon~rli~hed with the help of proxy objects that are loc. ted in the local p. rtition. If WO 95/04g68 PCT/US94/08785 ~lS8762 an object in the client partition needs to send a mPc~qgP~ to an object in the server partition, the partitirming algo~ilL-I, must place a proxy for the server object in the client partition. This strategy en~hlPs aU client-resident objects to behave as though all server objects were also located on the client. And when a client object sends a S mP~agÇ to a server object, the proxy i lt,.ce~t~ the mPs~gP and ~ S it to the node where the physical server object is locqtP~l. This shdt~g~ of using ~o~s el;~ s the need to send large objects over the nelwulL, and it allows an ir-~;o-- to behave the same regardless of where the l)h~ical objects are located.
This is a critical aspect of a sw~r~sfi~l ap~ ;o~ pa.~ g sQl~l*nn Once a .1;-~. jb~ft~ 'qtinn has been deployed, it is very hPlI-fi-l to be able to mqna~Ç it as a single entity. This means being able to start and stop ~liliwLs from a single mqnq~e~...f.~ interface. It also means being able to .~ o ~lru-...~-.re for the ~pplir~ n as a whole, in r1~itir~n to troubl~hoo~ g in the event of 15 ~.ro-~ e problPmc. Where is the time being spent? In co--- .~ qtirnc? Inside a particular pa~ iûn? This ;--fo---~ allows the system a~ h~fOI' to spot .r.. ~ otll~u~ by ~ g the a~ lir~ n as a whole. RPfP~ ng to Figure 22, Forté ~vvides an ~llviro~.-..r-~1 M~nagPr interface to provide this inro-...~;nn for the .i;,~l. ;k~ltr~ ap~ tion as a whole from a single user in re. ru-~"~r~ n~ p may suggest a dil~ ,nl partitir~ninf~ P.
RPre~ E to figure 23, Forté provides a drag-and-drop style ~ ;l;nning intP~
to ~lily tbis proc~ss. The ~r~1ir~tinn ar~ lor can-view a SC~ AI;c diSIg~m of the current partition sr1-~ , and can intP,~r^t d~clly with that sç1u--..A1;c. Along 25 the left hand side i. d~played a listing of all partitions and the service object.
i.~h-d~P~ in each ~ n. To move a service object from one partition to A~o!1~Fr, the ~ ;Q~ .tnr can e ~f,C~ a simple drag-and-drop ope-~ i~wise, the lor can move a p~uLLon from one node in the s.1~ ;c to 5~0t1~f,r by ~Pgi~-and~o~ ng the ~ Lion name to the desired node. T}~ tP~r~ can also 30 be used to drag a p~lio~ name from the list on the left to a second node on the s~ l;c in order to set up a ~ a~ p&~ ;Gn.
Once the new par~itionin~ srl-~ has been d~P-finPd, the ^~lminictrator can eYec~tP a ccs-.--.~n~l to g~nf'~ a new ~ e scl~ for the same deployme.lt 35 ~.~VilO..-..~ Both partitinning sc-1~ s are stored in the l~O~;Iu- ~ for ...~........
--WO 95/04968 ~ 1 6 8 7 6 ~ PCT/US94/08785 flPYihi1ity. The new par~itinning scl~e ..~- then needs to be in.ct~l1~ for the changeover.
Par~itinning offers an easy way to build ~ ap~ tinnc~ to partition S the ;,l.ilir~l;nnc for a given deplc,~ n~ e.lvllo ~ 1, to ~ ;n;~ f all apr~ ti~n CCS~ Q~ as a single entity, and to f~pallilion the apFli-~tion as problems arise or as ~u--~.llcnls CQ~ e to evolve. ~ n partiti~ni~ is an ~ l sll~gy for c ~ the client- erver alchit~ ~t~ , for ,.,.~.t..~g the ~le .A~I~S of mic~i- n critical apr1i- ~ti.~nc that can span the e.lt,~.
A g~PnP,~1 ~esc ;l ~ of the device and --f-!h~ of using the ~,c~nl invention as well as a ple~f~d embo~ nl of the p,~,sclll L~c~l;on has been set forth above.
One skilled in the art will iecogl~ and be able tO p~rfir~ many ch~ngP,s in many~cpectc of the device and ~ !1-o~ ~es~ ~ ih~ above, incl~ ing v ~ which i~ll 15 within the ~ching,c of this invention. The spirit and scope of the invention should be liTnited only as set forth in the claims which follow.
Claims (51)
1. A method of using a computer to design an application program to be executed on at least two interconnected computers, selected from at least two classes of computers, said method comprising selecting a first class of computers comprising a first plurality of computers, each of distinct types, selecting a second class of computers comprising a second plurality of computers, each of distinct types, any one of said second plurality of computers interconnectable with any one of said first plurality of computers, and preparing a logical application definition for an application program, said logical application definition comprising defining a first service object, defining a second service object, and defining a third service object, such that each of said first, second and third service objects can communicate with at least one of the other said service objects, said first service object capable of execution on substantially any one of said first plurality of computers, said second service object capable of execution on substantially any one of said second plurality of computers, said third service object capable of execution on substantially any one of said first plurality of computers and also capable of execution on substantially any one of said second plurality of computers, but without selecting, at the time of preparing the logical application definition, a specific one of said first plurality of computers on which to execute said first service object, a specific one of said second plurality of computers on which to execute said second service object, or a specific one of said first plurality of computers or a specific one of said second plurality of computers on which to execute said third service object.
2. A method of loading an application program comprising designing an application program using the method of claim 1 and further comprising providing a heterogeneous environment in which said application can execute, said heterogeneous environment comprising a first computer selected from said first class of computers a,nd a second computer selected from said second class of computers, said second computer interconnected with said first computer, said second computer of a different type than said first computer, selecting said heterogeneous environment, loading said first service object on said first computer, loading said second service object on said second computer, and loading said third service object on said first computer.
3. A method of executing an application program comprising loading an application program using the method of claim 2 and further comprising executing each of said first, second and third service objects to execute said application program.
4. The method of claim 1 of designing an application program further comprising defining a first means for message transfer for passing a message to transfer information between said first service object and said second service object.
5. The method of claim 1 of designing an application program further comprising defining a first service object request broker, capable of execution on substantially any one of said second plurality of computers, connectable to and in communication with said first service object for relaying communications to and from said first service object.
6. The method of claim 5 of designing an application program further comprising defining a second service object request broker, capable of execution on substantially any one of said first plurality of computers, connectable to and in communication with said second service object for relaying communications to and from said second service object.
7. The method of claim 6 of designing an application program further comprising defining a second means for message transfer for passing a first message from said second or said third service object to said first service object request broker, then forwarding a second, corresponding message to said first service object.
8. The method of claim 7 of designing an application program further comprising defining a means for asynchronously passing a message from one of said second or third service objects to said first service object by sending a message to said first service object request broker, storing said message, then forwarding said message to said first service object.
9. The method of claim 8 of designing an application program further comprising defining said first, second and third service object request brokers and communications between respective ones of said first, second and third service objects and said first, second and third service object request brokers as needed to allow said application program to rim as if each of said first, second and third service objects were in a single physical address space.
10. The method of claim 1 of designing an application program wherein said first class of computers supports a user interface.
11. The method of claim 1 of designing an application program wherein said first class of computers comprises one or more computers selected from the group consisting of a workstation, a personal computer, a laptop computer, a palmtop computer and a personal digital assistant.
12. The method of claim 1 of designing an application program wherein a first computer in said second class of computers comprises a server.
13. The method of claim 11 of designing an application program wherein said second class of computers comprises one or more computers selected from the group consisting of a mainframe, a minicomputer, a superminicomputer, a workstation and a personal computer.
14. A method of loading an application program on interconnected computers selected from at least two classes of computers, said method comprising selecting a first class of computers comprising a first plurality of computers, each of distinct types, selecting a second class of computers comprising a second plurality of computers, each of distinct types, any one of said second plurality of computers interconnectable with any one of said first plurality of computers, and preparing a logical application definition for an .application program, said logical application definition comprising a first service object, a second service object, and a third service object, such that each of said first, second and third service objects can communicate with at least one of the other said service objects, said first service object capable of execution on substantially any one of said first plurality of computers, said second service object capable of execution on substantially any one of said second plurality of computers, said third service object capable of execution on substantially any one of said first plurality of computers and also capable of execution on substantially any one of said second plurality of computers, but without selecting, at the time of preparing the logical application definition, a specific one of said first plurality of computers on which to execute said first service object, a specific one of said second plurality of computers on which to execute said second service object, or a specific one of said first plurality of computers or a specific one of said second plurality of computers on which to execute said third service object, then providing a plurality of heterogeneous environments in each of which said application can execute independently, each heterogeneous environment comprising a first computer for said heterogeneous environment, selected from said first plurality of computers and a second computer for said heterogeneous environment, selected from said second plurality of computers and interconnected with said first computer for said heterogeneous environment, selecting a first heterogeneous environment of said plurality of heterogeneous environments, loading said first service object on said first computer of said first heterogeneous environment, loading said second service object on said second computer of said first heterogeneous environment, and selectively loading said third service object on one of said first computer or said second computer of said first heterogeneous environment, and selecting a second heterogeneous environment of said plurality of heterogeneous environments, loading said first service object on said first computer of said second heterogeneous environment, loading said second service object on said second computer of said second heterogeneous environment, and selectively loading said third service object on one ,of said first computer or said second computer of said second heterogeneous environment, independent of the selective loading of the third service object in said first heterogeneous environment.
15. The method of claim 14 of executing an application program further comprising loading said third service object on said first computer of said and, for each other object, selecting the other object for execution on one of said first heterogeneous environment.
16. The method of claim 15 of executing an application program further comprising moving said third service object from said first computer to said second computer of said first heterogeneous environment.
17. The method of claim 14 of executing an application program further comprising selecting said third service object to execute on said first computer in said first heterogeneous environment and selecting said third service object to execute on said second computer in said second heterogeneous environment without changing the overall operation of said application program in said first compared to said second heterogeneous environments.
18. The method of claim 3 of executing an application program further comprising replicating said third service object as a duplicate third service object and loading said duplicate third service object for execution on said second computer.
19. The method of claim 3 of executing an application program further comprising executing both said third service object and said duplicate third service object to provide load balancing.
20. The method of claim 3 of executing an application program further comprising using said third service object and said duplicate third service object to provide fault tolerance.
21. The method of claim 1 of designing an application program wherein said first and said second computers are respectively a first CPU and a second CPU tightly coupled to said first CPU.
22. The method of claim 1 of designing an application program wherein said first computer is a client and said second computer is a server.
23. The method of claim 1 of designing an application program wherein said first computer is a first server and said second computer is a second server.
16. The method of claim 15 of executing an application program further comprising moving said third service object from said first computer to said second computer of said first heterogeneous environment.
17. The method of claim 14 of executing an application program further comprising selecting said third service object to execute on said first computer in said first heterogeneous environment and selecting said third service object to execute on said second computer in said second heterogeneous environment without changing the overall operation of said application program in said first compared to said second heterogeneous environments.
18, The method of claim 3 of executing an application program further comprising replicating said third service object as a duplicate third service object and loading said duplicate third service object for execution on said second computer.
19. The method of claim 3 of executing an application program further comprising executing both said third service object and said duplicate third service object to provide load balancing.
20. The method of claim 3 of executing an application program further comprising using said third service object and said duplicate third service object to provide fault tolerance.
21. The method of claim 1 of designing an application program wherein said first and said second computers are respectively a first CPU and a second CPU tightly coupled to said first CPU.
22. The method of claim 1 of designing an application program wherein said first computer is a client and said second computer is a server.
23. The method of claim 1 of designing an application program wherein said first computer is a first server and said second computer is a second server.
16. The method of claim 15 of executing an application program further comprising moving said third service object from said first computer to said second computer of said first heterogeneous environment.
17. The method of claim 14 of executing an application program further comprising selecting said third service object to execute on said first computer in said first heterogeneous environment and selecting said third service object to execute on said second computer in said second heterogeneous environment without changing the overall operation of said application program in said first compared to said second heterogeneous environments.
18, The method of claim 3 of executing an application program further comprising replicating said third service object as a duplicate third service object and loading said duplicate third service object for execution on said second computer.
19. The method of claim 3 of executing an application program further comprising executing both said third service object and said duplicate third service, object to provide load balancing.
20. The method of claim 3 of executing an application program further comprising using said third service object and said duplicate third service object to provide fault tolerance.
21. The method of claim 1 of designing an application program wherein said first and said second computers are respectively a first CPU and a second CPU tightly coupled to said first CPU.
22. The method of claim 1 of designing an application program wherein said first computer is a client and said second computer is a server.
23. The method of claim 1 of designing an application program wherein said first computer is a first server and said second computer is a second server.
24. The method of claim 3 of executing an application program further comprising deactivating said third service object after said duplicate third service object begins execution.
25. The method of claim 3 of executing an application program further comprising moving said third service object from 'said first computer to said second computer.
26. The method of claim 3 of executing an application program further comprising replicating said third service object on said second computer.
27. A method of loading an application program comprising designing an application program using the method of claim 1 and further comprising providing a heterogeneous environment in which said application can execute, said heterogeneous environment comprising a first computer selected from said first class of computers and a second computer selected from said second class of computers, said second computer interconnected with said first computer, said second computer of a different type than said first computer, selecting said heterogeneous environment, loading said first service object on said first computer, loading said second service object on said second computer, and selectively loading said third service object on one of either said first computer or said second computer.
28. A method of executing an application program comprising loading an application program using the method of claim 31 and further comprising executing each of said first, second and third service objects to execute said application program.
29. The method of claim 1 of designing an application program further comprising defining a third service object request broker, capable of execution on substantially any one of said first plurality of computers and also capable of execution on substantially any one of said second plurality of computers, said third object request broker connectable to and in communication with said third service object for relaying communications to and from said third service object.
30. A method of executing an application program comprising loading an application program using the method of claim 14 and further comprising executing each of said first, second and third service objects to execute said application program in said first heterogeneous environment.
31. A method of executing an application program comprising loading an application program using the method of claim 14 and further comprising executing each of said first, second and third service objects to execute said application program in said second heterogeneous environment.
32. A method of using a computer to execute an application program on at least two interconnected computers, selected from at least two classes of computers, said method comprising selecting a first class of computers comprising a first plurality of computers, each of distinct types, selecting a second class of computers comprising a second plurality of computers, each of distinct types, any one of said second plurality of computers interconnectable with any one of said first plurality of computers, and preparing a logical application definition for an application program, said logical application definition comprising defining a first service object, defining a second service object, and defining a third service object, such that each of said first, second and third service objects can communicate with at least one of the other said service objects, said first service object capable of execution on substantially any one of said first plurality of computers.
said second service object capable of execution on substantially any one of said second plurality of computers, said third service object capable of execution on substantially any one of said first plurality of computers and also capable of execution on substantially any one of said second plurality of computers, but without selecting, at the time of preparing the logical application definition, a specific one of said first plurality of computers on which to execute said first service object, a specific one of said second plurality of computers on which to execute said second service object, or a specific one of said first plurality of computers or a specific one of said second plurality of computers on which to execute said third service object, providing a heterogeneous environment in which said application can execute, said heterogeneous environment comprising a first computer selected from said first class of computers and a second computer selected from said second class of computers, said second computer interconnected with said first computer, said second computer of a different type than said first computer, selecting said heterogeneous environment, loading said first service object on said first computer, loading said second service object on said second computer, and loading said third service object on said first computer, then executing each of said first, second and third service objects to execute said application program.
said second service object capable of execution on substantially any one of said second plurality of computers, said third service object capable of execution on substantially any one of said first plurality of computers and also capable of execution on substantially any one of said second plurality of computers, but without selecting, at the time of preparing the logical application definition, a specific one of said first plurality of computers on which to execute said first service object, a specific one of said second plurality of computers on which to execute said second service object, or a specific one of said first plurality of computers or a specific one of said second plurality of computers on which to execute said third service object, providing a heterogeneous environment in which said application can execute, said heterogeneous environment comprising a first computer selected from said first class of computers and a second computer selected from said second class of computers, said second computer interconnected with said first computer, said second computer of a different type than said first computer, selecting said heterogeneous environment, loading said first service object on said first computer, loading said second service object on said second computer, and loading said third service object on said first computer, then executing each of said first, second and third service objects to execute said application program.
33. The method of claim 32 of executing an application program further comprising moving said third service object from said first computer to said second computer.
34. The method of claim 32 of executing an application program further comprising replicating said third service object on said second computer.
35. The method of claim 32 of executing an application program further comprising not loading said third service object on said first computer, but instead selectively loading said third service object on one of either said first computer or said second computer,
36. The method of claim 32 of executing an application program wherein said first class of computers comprises one or mere computers selected from the group consisting of a workstation. a personal computer, a laptop computer, a palmtop computer and a personal digital assistant.
37. The method of claim 32 of executing an application program wherein said second class of computers comprises one or more computers selected from the group consisting of a mainframe, a minicomputer, a superminicomputer, a workstation and a personal computer.
38. The method of claim 32 of executing an application program wherein said first computer is a client and said second computer is a server.
39. The method of claim 32 of executing an application program further comprising defining a first means for message transfer for passing a message to transfer information between said first service object and said second service object.
40. The method of claim 39 of executing an application program further comprising defining a first service object request broker, capable of execution on substantially any one of said second plurality of computers, connectable to and in communication with said first service object for relaying communications to and from said first service object.
41. The method of claim 40 of executing an application program further comprising defining a means for asynchronously passing a message from one of said second or third service objects to said first service object by sending a message to said first service object request broker, storing said message, then forwarding said message to said first service object.
42. A method of using a computer to execute an application program on at least two interconnected computers, selected from at least two classes of computers, said method comprising selecting a first class of computers comprising a first plurality of computers, each of distinct types, selecting a second class of computers comprising a second plurality of computers, each of distinct types, any one of said second plurality of computers interconnectable with any one of said first plurality of computers, and selecting a first service object, selecting a second service object, and selecting a third service object, where each of said first, second and third service objects can communicate with at least one of the other said service objects, said first service object capable of execution on substantially any one of said first plurality of computers, said second service object capable of execution on substantially any one of said second plurality of computers, said third service object capable of execution on substantially any one of said first plurality of computers and also capable of execution on substantially any one of said second plurality of computers, providing a heterogeneous environment comprising a first computer selected from said first class of computers and a second computer selected from said second class of computers, said second computer interconnected with said first computer, said second computer of a different type than said first computer, selecting said heterogeneous environment, loading said first service object on said first computer, loading said second service object on said second computer, and selectively loading said third service object on one of either said first computer or said second computer, then executing each of said first, second and third service objects to execute said application program.
43. The method of claim 42 of executing an application program further comprising moving said third service object from said first computer to said second computer.
44. The method of claim 42 of executing an application program further comprising replicating said third service object on said second computer.
45. The method of claim 42 of executing an application program further comprising loading said third service object on said first computer.
46. The method of claim 42 of executing an application program wherein said first class of computers comprises one or more computers selected from the group consisting of a workstation, a personal computer, a laptop computer, a palmtop computer and a personal digital assistant.
47. The method of claim 42 of executing an application program wherein said second class of computers comprises one or more computers selected from the group consisting of a mainframe, a minicomputer, a superminicomputer, a workstation and a personal computer.
48. The method of claim 42 of executing an application program wherein said first computer is a client and said second computer is a server.
49. The method of claim 42 of executing an application program further comprising defining a first means for message transfer for passing a message to transfer information between said first service object and said second service object.
50. The method of claim 49 of executing an application program further comprising defining a first service object request broker, capable of execution on substantially any one of said second plurality of computers, connectable to and in communication with said first service object far relaying communications to and from said first service object.
51. The method of claim 50 of executing an application program further comprising defining a means for asynchronously passing a message from one of said second or third service objects to said first service object by sending a message to said first service object request broker, storing said message, then forwarding said message to said first service object.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10141193A | 1993-08-03 | 1993-08-03 | |
US08/101,411 | 1993-08-03 | ||
PCT/US1994/008785 WO1995004968A1 (en) | 1993-08-03 | 1994-08-03 | Flexible multi-platform partitioning for computer applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2168762A1 CA2168762A1 (en) | 1995-02-16 |
CA2168762C true CA2168762C (en) | 2000-06-27 |
Family
ID=22284511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002168762A Expired - Fee Related CA2168762C (en) | 1993-08-03 | 1994-08-03 | Flexible multi-platform partitioning for computer applications |
Country Status (7)
Country | Link |
---|---|
US (1) | US5457797A (en) |
EP (1) | EP0746816B1 (en) |
JP (1) | JP3541039B2 (en) |
AU (1) | AU681433B2 (en) |
CA (1) | CA2168762C (en) |
DE (1) | DE69428809D1 (en) |
WO (1) | WO1995004968A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877640B2 (en) | 2016-10-20 | 2020-12-29 | Advanced New Technologies Co., Ltd. | Application interface management method and apparatus |
Families Citing this family (273)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586260A (en) * | 1993-02-12 | 1996-12-17 | Digital Equipment Corporation | Method and apparatus for authenticating a client to a server in computer systems which support different security mechanisms |
JPH0798669A (en) * | 1993-08-05 | 1995-04-11 | Hitachi Ltd | Distributed data base management system |
FR2714746B1 (en) * | 1993-12-31 | 1996-02-02 | Bull Sa | Method for simulating a "server" architecture from a "client" architecture. |
US5832219A (en) | 1994-02-08 | 1998-11-03 | Object Technology Licensing Corp. | Distributed object networking service |
JPH07225707A (en) * | 1994-02-10 | 1995-08-22 | Fujitsu Ltd | Test method for application and test supporting device for the same |
US6510465B1 (en) | 1994-04-19 | 2003-01-21 | Ibm | Dual communication services interface for distributed transaction processing |
EP0684553B1 (en) * | 1994-05-26 | 2004-06-16 | Sun Microsystems, Inc. | Method and apparatus for generating and using short operation identifiers in object oriented systems |
WO1995033235A1 (en) * | 1994-05-31 | 1995-12-07 | Fujitsu Limited | System and method for executing job between different operating systems |
US5712987A (en) * | 1994-06-03 | 1998-01-27 | Ncr Corporation | Interface and associated bank customer database |
US5826241A (en) | 1994-09-16 | 1998-10-20 | First Virtual Holdings Incorporated | Computerized system for making payments and authenticating transactions over the internet |
AU3415595A (en) * | 1994-10-04 | 1996-04-26 | Banctec, Inc. | An object-oriented computer environment and related method |
US5680549A (en) * | 1994-12-30 | 1997-10-21 | Compuserve Incorporated | System for transferring network connections from first to second program where the first enters an inactive state and resumes control of connections when second terminates |
US5710889A (en) * | 1995-02-22 | 1998-01-20 | Citibank, N.A. | Interface device for electronically integrating global financial services |
JPH08235098A (en) * | 1995-02-22 | 1996-09-13 | Mitsubishi Electric Corp | Distributed application commuinication system |
US5897635A (en) * | 1995-06-07 | 1999-04-27 | International Business Machines Corp. | Single access to common user/application information |
US5682507A (en) * | 1995-06-07 | 1997-10-28 | Tandem Computers, Incorporated | Plurality of servers having identical customer information control procedure functions using temporary storage file of a predetermined server for centrally storing temporary data records |
US5826085A (en) * | 1995-07-12 | 1998-10-20 | Oracle Corporation | Object oriented computer interface supporting interactive networked applications |
US5732261A (en) | 1995-07-19 | 1998-03-24 | Ricoh Company, Ltd. | Method of using an object-oriented communication system with support for multiple remote machine types |
US5918051A (en) * | 1995-07-19 | 1999-06-29 | Ricoh Company, Ltd. | Object-oriented communication system with support for multiple remote machine types |
US5832264A (en) | 1995-07-19 | 1998-11-03 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
US5734828A (en) * | 1995-08-30 | 1998-03-31 | Intel Corporation | System for accessing/delivering on-line/information services via individualized environments using streamlined application sharing host and client services |
US5815793A (en) * | 1995-10-05 | 1998-09-29 | Microsoft Corporation | Parallel computer |
WO1997014108A1 (en) * | 1995-10-11 | 1997-04-17 | Block Financial Corporation | Financial information access system |
US6684259B1 (en) * | 1995-10-11 | 2004-01-27 | Citrix Systems, Inc. | Method for providing user global object name space in a multi-user operating system |
US5754841A (en) * | 1995-10-20 | 1998-05-19 | Ncr Corporation | Method and apparatus for parallel execution of user-defined functions in an object-relational database management system |
US5930786A (en) | 1995-10-20 | 1999-07-27 | Ncr Corporation | Method and apparatus for providing shared data to a requesting client |
US6088515A (en) | 1995-11-13 | 2000-07-11 | Citrix Systems Inc | Method and apparatus for making a hypermedium interactive |
US7555529B2 (en) * | 1995-11-13 | 2009-06-30 | Citrix Systems, Inc. | Interacting with software applications displayed in a web page |
US6437803B1 (en) | 1998-05-29 | 2002-08-20 | Citrix Systems, Inc. | System and method for combining local and remote windows into a single desktop environment |
US6950991B2 (en) | 1995-11-13 | 2005-09-27 | Citrix Systems, Inc. | Interacting with software applications displayed in a web page |
US5960410A (en) * | 1995-12-08 | 1999-09-28 | Halpern; Mordechai | Device and method for object-based development of business applications software |
US5706442A (en) * | 1995-12-20 | 1998-01-06 | Block Financial Corporation | System for on-line financial services using distributed objects |
CA2165893C (en) * | 1995-12-21 | 2001-03-13 | Richard Denison Mcdonald | Visual application partitioning for creating distributed object oriented applications |
US7100069B1 (en) * | 1996-02-16 | 2006-08-29 | G&H Nevada-Tek | Method and apparatus for controlling a computer over a wide area network |
US9094384B2 (en) * | 1996-02-16 | 2015-07-28 | Reference Ltd., Limited Liability Company | TCP/IP protocol network with satellite nodes |
US6173332B1 (en) | 1996-03-06 | 2001-01-09 | Paul L. Hickman | Method and apparatus for computing over a wide area network |
US6189030B1 (en) | 1996-02-21 | 2001-02-13 | Infoseek Corporation | Method and apparatus for redirection of server external hyper-link references |
US5726979A (en) | 1996-02-22 | 1998-03-10 | Mci Corporation | Network management system |
US7080127B1 (en) * | 1996-03-06 | 2006-07-18 | Hickman Paul L | Method and apparatus for computing within a wide area network |
US5706502A (en) * | 1996-03-25 | 1998-01-06 | Sun Microsystems, Inc. | Internet-enabled portfolio manager system and method |
US5960200A (en) * | 1996-05-03 | 1999-09-28 | I-Cube | System to transition an enterprise to a distributed infrastructure |
US5878225A (en) * | 1996-06-03 | 1999-03-02 | International Business Machines Corporation | Dual communication services interface for distributed transaction processing |
US5854896A (en) * | 1996-06-17 | 1998-12-29 | International Business Machines Corporation | System for preserving logical partitions of distributed parallel processing system after re-booting by mapping nodes to their respective sub-environments |
US5941943A (en) * | 1996-06-17 | 1999-08-24 | International Business Machines Corporation | Apparatus and a method for creating isolated sub-environments using host names and aliases |
US5881227A (en) * | 1996-06-17 | 1999-03-09 | International Business Machines Corporation | Use of daemons in a partitioned massively parallel processing system environment |
US5799149A (en) * | 1996-06-17 | 1998-08-25 | International Business Machines Corporation | System partitioning for massively parallel processors |
US5845062A (en) * | 1996-06-25 | 1998-12-01 | Mci Communications Corporation | System and method for monitoring network elements organized in data communication channel groups with craft interface ports |
US5727145A (en) * | 1996-06-26 | 1998-03-10 | Sun Microsystems, Inc. | Mechanism for locating objects in a secure fashion |
US6832380B1 (en) * | 1996-06-28 | 2004-12-14 | Tarantella, Inc. | Client-server application partitioning with metering technique for distributed computing |
US6434598B1 (en) * | 1996-07-01 | 2002-08-13 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system |
US6173327B1 (en) | 1996-07-11 | 2001-01-09 | Jeroen De Borst | Object-oriented method and apparatus for information delivery |
US5860072A (en) * | 1996-07-11 | 1999-01-12 | Tandem Computers Incorporated | Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems |
US6263485B1 (en) | 1996-07-11 | 2001-07-17 | Andrew Schofield | Method and apparatus for describing an interface definition language-defined interface, operation, and data type |
US5790789A (en) * | 1996-08-02 | 1998-08-04 | Suarez; Larry | Method and architecture for the creation, control and deployment of services within a distributed computer environment |
US6163797A (en) * | 1996-08-06 | 2000-12-19 | Hewlett-Packard Company | Application dispatcher for seamless, server application support for network terminals and non-network terminals |
EP0825506B1 (en) | 1996-08-20 | 2013-03-06 | Invensys Systems, Inc. | Methods and apparatus for remote process control |
US5867651A (en) * | 1996-08-27 | 1999-02-02 | International Business Machines Corporation | System for providing custom functionality to client systems by redirecting of messages through a user configurable filter network having a plurality of partially interconnected filters |
US5914713A (en) * | 1996-09-23 | 1999-06-22 | Fmr Corp. | Accessing data fields from a non-terminal client |
US6757729B1 (en) * | 1996-10-07 | 2004-06-29 | International Business Machines Corporation | Virtual environment manager for network computers |
US5867153A (en) | 1996-10-30 | 1999-02-02 | Transaction Technology, Inc. | Method and system for automatically harmonizing access to a software application program via different access devices |
US7249344B1 (en) | 1996-10-31 | 2007-07-24 | Citicorp Development Center, Inc. | Delivery of financial services to remote devices |
US7035906B1 (en) | 1996-11-29 | 2006-04-25 | Ellis Iii Frampton E | Global network computers |
US7926097B2 (en) | 1996-11-29 | 2011-04-12 | Ellis Iii Frampton E | Computer or microchip protected from the internet by internal hardware |
US6167428A (en) * | 1996-11-29 | 2000-12-26 | Ellis; Frampton E. | Personal computer microprocessor firewalls for internet distributed processing |
US6732141B2 (en) | 1996-11-29 | 2004-05-04 | Frampton Erroll Ellis | Commercial distributed processing by personal computers over the internet |
US7634529B2 (en) | 1996-11-29 | 2009-12-15 | Ellis Iii Frampton E | Personal and server computers having microchips with multiple processing units and internal firewalls |
US6725250B1 (en) | 1996-11-29 | 2004-04-20 | Ellis, Iii Frampton E. | Global network computers |
US7024449B1 (en) | 1996-11-29 | 2006-04-04 | Ellis Iii Frampton E | Global network computers |
US20050180095A1 (en) | 1996-11-29 | 2005-08-18 | Ellis Frampton E. | Global network computers |
US7506020B2 (en) | 1996-11-29 | 2009-03-17 | Frampton E Ellis | Global network computers |
US6334158B1 (en) * | 1996-11-29 | 2001-12-25 | Agilent Technologies, Inc. | User-interactive system and method for integrating applications |
US8225003B2 (en) | 1996-11-29 | 2012-07-17 | Ellis Iii Frampton E | Computers and microchips with a portion protected by an internal hardware firewall |
US7805756B2 (en) | 1996-11-29 | 2010-09-28 | Frampton E Ellis | Microchips with inner firewalls, faraday cages, and/or photovoltaic cells |
US8312529B2 (en) | 1996-11-29 | 2012-11-13 | Ellis Frampton E | Global network computers |
US5996012A (en) * | 1996-12-10 | 1999-11-30 | International Business Machines Corporation | Application development process for use in a distributed computer enterprise environment |
GB2321540A (en) * | 1997-01-25 | 1998-07-29 | Ibm | Automatic transactional locking using object request broker |
US6026404A (en) * | 1997-02-03 | 2000-02-15 | Oracle Corporation | Method and system for executing and operation in a distributed environment |
US6710786B1 (en) | 1997-02-03 | 2004-03-23 | Oracle International Corporation | Method and apparatus for incorporating state information into a URL |
US6247056B1 (en) | 1997-02-03 | 2001-06-12 | Oracle Corporation | Method and apparatus for handling client request with a distributed web application server |
US6845505B1 (en) | 1997-02-03 | 2005-01-18 | Oracle International Corporation | Web request broker controlling multiple processes |
US6225995B1 (en) | 1997-10-31 | 2001-05-01 | Oracle Corporaton | Method and apparatus for incorporating state information into a URL |
US6687761B1 (en) | 1997-02-20 | 2004-02-03 | Invensys Systems, Inc. | Process control methods and apparatus with distributed object management |
EP0860773B1 (en) * | 1997-02-21 | 2004-04-14 | Alcatel | Method of generating a software application |
US6126328A (en) * | 1997-02-28 | 2000-10-03 | Oracle Corporation | Controlled execution of partitioned code |
US6032188A (en) * | 1997-03-12 | 2000-02-29 | Microsoft Corporation | Method and system for controlling data flow |
JPH10254689A (en) * | 1997-03-14 | 1998-09-25 | Hitachi Ltd | Application constitution design supporting system for client/server system |
US5953525A (en) * | 1997-03-31 | 1999-09-14 | International Business Machines Corporation | Multi-tier view project window |
US6061517A (en) | 1997-03-31 | 2000-05-09 | International Business Machines Corporation | Multi-tier debugging |
US6020973A (en) * | 1997-04-15 | 2000-02-01 | Xerox Corporation | Centralized print server for interfacing one or more network clients with a plurality of printing devices |
US6023721A (en) * | 1997-05-14 | 2000-02-08 | Citrix Systems, Inc. | Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility |
US6158044A (en) * | 1997-05-21 | 2000-12-05 | Epropose, Inc. | Proposal based architecture system |
US6473893B1 (en) | 1997-05-30 | 2002-10-29 | International Business Machines Corporation | Information objects system, method, and computer program organization |
US6125383A (en) * | 1997-06-11 | 2000-09-26 | Netgenics Corp. | Research system using multi-platform object oriented program language for providing objects at runtime for creating and manipulating biological or chemical data |
CA2294430C (en) * | 1997-06-26 | 2016-02-02 | Charles Schwab & Co., Inc. | System and method for automatically providing financial services to a user using speech signals |
JPH1131082A (en) * | 1997-07-11 | 1999-02-02 | Teijin Seiki Co Ltd | Operating system and medium recording the system |
US6230185B1 (en) | 1997-07-15 | 2001-05-08 | Eroom Technology, Inc. | Method and apparatus for facilitating communication between collaborators in a networked environment |
US6314408B1 (en) | 1997-07-15 | 2001-11-06 | Eroom Technology, Inc. | Method and apparatus for controlling access to a product |
US6233600B1 (en) * | 1997-07-15 | 2001-05-15 | Eroom Technology, Inc. | Method and system for providing a networked collaborative work environment |
CA2210755C (en) | 1997-07-17 | 2003-12-23 | Ibm Canada Limited - Ibm Canada Limitee | Creating proxies for distribution of beans and event objects |
DE19732011A1 (en) * | 1997-07-25 | 1999-01-28 | Abb Patent Gmbh | Process for the location-transparent exchange of process data |
US7546346B2 (en) * | 1997-07-28 | 2009-06-09 | Juniper Networks, Inc. | Workflow systems and methods for project management and information management |
US5978836A (en) | 1997-07-28 | 1999-11-02 | Solectron Corporation | Workflow systems and methods |
US5960411A (en) | 1997-09-12 | 1999-09-28 | Amazon.Com, Inc. | Method and system for placing a purchase order via a communications network |
US7222087B1 (en) | 1997-09-12 | 2007-05-22 | Amazon.Com, Inc. | Method and system for placing a purchase order via a communications network |
US6567861B1 (en) * | 1997-09-17 | 2003-05-20 | International Business Machines Corporation | Method and apparatus for remotely running objects using data streams and/or complex parameters |
JP3597356B2 (en) * | 1997-10-20 | 2004-12-08 | 富士通株式会社 | Communication cooperation information generation device, three-layer client / server system, and medium recording communication cooperation information generation program |
US6334114B1 (en) | 1997-10-31 | 2001-12-25 | Oracle Corporation | Method and apparatus for performing transactions in a stateless web environment which supports a declarative paradigm |
US6047318A (en) * | 1997-11-19 | 2000-04-04 | International Business Machines Corporation | Method of downloading java bean files in a network |
US6272492B1 (en) | 1997-11-21 | 2001-08-07 | Ibm Corporation | Front-end proxy for transparently increasing web server functionality |
US6272673B1 (en) | 1997-11-25 | 2001-08-07 | Alphablox Corporation | Mechanism for automatically establishing connections between executable components of a hypertext-based application |
US6049664A (en) * | 1997-11-25 | 2000-04-11 | Alphablox Corporation | Tier-neutral development mechanism for hypertext based applications |
US6448981B1 (en) | 1997-12-09 | 2002-09-10 | International Business Machines Corporation | Intermediate user-interface definition method and system |
FR2773241B1 (en) * | 1997-12-30 | 2001-09-07 | Bull Sa | METHOD FOR ASSISTING THE ADMINISTRATION OF A DISTRIBUTED APPLICATION BASED ON A BINARY CONFIGURATION FILE IN A COMPUTER SYSTEM |
US6125363A (en) * | 1998-03-30 | 2000-09-26 | Buzzeo; Eugene | Distributed, multi-user, multi-threaded application development method |
US6269375B1 (en) | 1998-04-01 | 2001-07-31 | International Business Machines Corporation | Rebalancing partitioned data |
US6125370A (en) * | 1998-04-01 | 2000-09-26 | International Business Machines Corporation | Repartitioning data |
CZ148199A3 (en) * | 1998-05-08 | 1999-11-17 | International Business Machines Corporation | Use of inquiry technology in databases for log in attendance at news in systems for processing news |
US6691183B1 (en) | 1998-05-20 | 2004-02-10 | Invensys Systems, Inc. | Second transfer logic causing a first transfer logic to check a data ready bit prior to each of multibit transfer of a continous transfer operation |
US6199109B1 (en) | 1998-05-28 | 2001-03-06 | International Business Machines Corporation | Transparent proxying of event forwarding discriminators |
JP3558887B2 (en) | 1998-08-28 | 2004-08-25 | 株式会社東芝 | Distributed system, control method thereof, and storage medium |
US6473748B1 (en) * | 1998-08-31 | 2002-10-29 | Worldcom, Inc. | System for implementing rules |
US5966123A (en) * | 1998-09-30 | 1999-10-12 | Harris Corporation | Meta model editor controlling topic display application |
WO2000019304A1 (en) * | 1998-09-30 | 2000-04-06 | Harris Corporation | Service creation environment (meta model editor) |
US6757745B1 (en) | 1998-10-19 | 2004-06-29 | Siemens Aktiengesellschaft | Distributed operating system for controlling network element in a data or telecomunication network |
US6353846B1 (en) | 1998-11-02 | 2002-03-05 | Harris Corporation | Property based resource manager system |
US20050004864A1 (en) * | 2000-06-15 | 2005-01-06 | Nextcard Inc. | Implementing a counter offer for an on line credit card application |
US8010422B1 (en) | 1998-11-03 | 2011-08-30 | Nextcard, Llc | On-line balance transfers |
US6446028B1 (en) * | 1998-11-25 | 2002-09-03 | Keynote Systems, Inc. | Method and apparatus for measuring the performance of a network based application program |
WO2000036506A1 (en) * | 1998-12-16 | 2000-06-22 | Kent Ridge Digital Labs | Process oriented computing environment |
US6928469B1 (en) | 1998-12-29 | 2005-08-09 | Citrix Systems, Inc. | Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques |
US6772131B1 (en) * | 1999-02-01 | 2004-08-03 | American Management Systems, Inc. | Distributed, object oriented global trade finance system with imbedded imaging and work flow and reference data |
US6611822B1 (en) * | 1999-05-05 | 2003-08-26 | Ac Properties B.V. | System method and article of manufacture for creating collaborative application sharing |
CA2271828A1 (en) | 1999-05-11 | 2000-11-11 | Infointeractive Inc. | Internet based telephone line |
US7408919B1 (en) * | 2000-05-09 | 2008-08-05 | Infointeractive | Internet based telephone line |
US7089530B1 (en) | 1999-05-17 | 2006-08-08 | Invensys Systems, Inc. | Process control configuration system with connection validation and configuration |
AU5273100A (en) | 1999-05-17 | 2000-12-05 | Foxboro Company, The | Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects |
US6754885B1 (en) | 1999-05-17 | 2004-06-22 | Invensys Systems, Inc. | Methods and apparatus for controlling object appearance in a process control configuration system |
US6501995B1 (en) | 1999-06-30 | 2002-12-31 | The Foxboro Company | Process control system and method with improved distribution, installation and validation of components |
US6788980B1 (en) | 1999-06-11 | 2004-09-07 | Invensys Systems, Inc. | Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network |
US6510352B1 (en) | 1999-07-29 | 2003-01-21 | The Foxboro Company | Methods and apparatus for object-based process control |
US6381556B1 (en) * | 1999-08-02 | 2002-04-30 | Ciena Corporation | Data analyzer system and method for manufacturing control environment |
US6640238B1 (en) | 1999-08-31 | 2003-10-28 | Accenture Llp | Activity component in a presentation services patterns environment |
US6636242B2 (en) | 1999-08-31 | 2003-10-21 | Accenture Llp | View configurer in a presentation services patterns environment |
US6601234B1 (en) | 1999-08-31 | 2003-07-29 | Accenture Llp | Attribute dictionary in a business logic services environment |
US6640244B1 (en) | 1999-08-31 | 2003-10-28 | Accenture Llp | Request batcher in a transaction services patterns environment |
US6578068B1 (en) | 1999-08-31 | 2003-06-10 | Accenture Llp | Load balancer in environment services patterns |
US6842906B1 (en) | 1999-08-31 | 2005-01-11 | Accenture Llp | System and method for a refreshable proxy pool in a communication services patterns environment |
US6640249B1 (en) | 1999-08-31 | 2003-10-28 | Accenture Llp | Presentation services patterns in a netcentric environment |
US6615253B1 (en) | 1999-08-31 | 2003-09-02 | Accenture Llp | Efficient server side data retrieval for execution of client side applications |
US6742015B1 (en) | 1999-08-31 | 2004-05-25 | Accenture Llp | Base services patterns in a netcentric environment |
US6549949B1 (en) | 1999-08-31 | 2003-04-15 | Accenture Llp | Fixed format stream in a communication services patterns environment |
US7289964B1 (en) | 1999-08-31 | 2007-10-30 | Accenture Llp | System and method for transaction services patterns in a netcentric environment |
US6954220B1 (en) | 1999-08-31 | 2005-10-11 | Accenture Llp | User context component in environment services patterns |
US6601192B1 (en) | 1999-08-31 | 2003-07-29 | Accenture Llp | Assertion component in environment services patterns |
US6571282B1 (en) | 1999-08-31 | 2003-05-27 | Accenture Llp | Block-based communication in a communication services patterns environment |
US6715145B1 (en) | 1999-08-31 | 2004-03-30 | Accenture Llp | Processing pipeline in a base services pattern environment |
US6332163B1 (en) * | 1999-09-01 | 2001-12-18 | Accenture, Llp | Method for providing communication services over a computer network system |
US6598058B2 (en) | 1999-09-22 | 2003-07-22 | International Business Machines Corporation | Method and apparatus for cross-node sharing of cached dynamic SQL in a multiple relational database management system environment |
US6785884B1 (en) * | 1999-09-29 | 2004-08-31 | Unisys Corporation | Symbolic debug interface for register transfer simulator debugger |
US6473660B1 (en) | 1999-12-03 | 2002-10-29 | The Foxboro Company | Process control system and method with automatic fault avoidance |
US6931621B2 (en) * | 1999-12-29 | 2005-08-16 | Baker Hughes Incorporated | Method and system and article of manufacture for an N-tier software component architecture oilfield model |
US6854107B2 (en) * | 1999-12-29 | 2005-02-08 | Baker Hughes Incorporated | Method of and system for designing an N-tier software architecture for use in generating software components |
US6779128B1 (en) | 2000-02-18 | 2004-08-17 | Invensys Systems, Inc. | Fault-tolerant data transfer |
US8706618B2 (en) | 2005-09-29 | 2014-04-22 | Ebay Inc. | Release of funds based on criteria |
US7499875B1 (en) | 2000-03-17 | 2009-03-03 | Ebay Inc. | Method and apparatus for facilitating online payment transactions in a network-based transaction facility using multiple payment instruments |
GB2377059A (en) | 2000-03-17 | 2002-12-31 | Ebay Inc | Method and apparatus for facilitating online payment transactions in a network based transaction facility using multiple payment instruments |
US7127745B1 (en) * | 2000-03-24 | 2006-10-24 | Lucent Technologies Inc. | Method of controlling access for software development via a virtual common desktop with plural viewers |
US6687735B1 (en) | 2000-05-30 | 2004-02-03 | Tranceive Technologies, Inc. | Method and apparatus for balancing distributed applications |
AU2001253610A1 (en) | 2000-04-18 | 2001-10-30 | Icplanet Acquisition Corporation | Method, system, and computer program product for propagating remotely configurable posters of host site content |
US6578022B1 (en) | 2000-04-18 | 2003-06-10 | Icplanet Corporation | Interactive intelligent searching with executable suggestions |
US7469405B2 (en) * | 2000-04-25 | 2008-12-23 | Kforce Inc. | System and method for scheduling execution of cross-platform computer processes |
US6789112B1 (en) | 2000-05-08 | 2004-09-07 | Citrix Systems, Inc. | Method and apparatus for administering a server having a subsystem in communication with an event channel |
US6785713B1 (en) | 2000-05-08 | 2004-08-31 | Citrix Systems, Inc. | Method and apparatus for communicating among a network of servers utilizing a transport mechanism |
US6785726B1 (en) | 2000-05-08 | 2004-08-31 | Citrix Systems, Inc. | Method and apparatus for delivering local and remote server events in a similar fashion |
US6922724B1 (en) | 2000-05-08 | 2005-07-26 | Citrix Systems, Inc. | Method and apparatus for managing server load |
US7037886B2 (en) * | 2000-06-01 | 2006-05-02 | Ecolab Inc. | Method for manufacturing a molded detergent composition |
US20070038523A1 (en) * | 2000-06-19 | 2007-02-15 | E4X Inc. | System and method for transactional hedging |
US6892184B1 (en) | 2000-06-19 | 2005-05-10 | E4X Inc. | System and method for multiple currency transactions |
DE10038402A1 (en) * | 2000-08-07 | 2002-02-28 | Software For People Ag | Method and device for controlling a technical arrangement, arrangement, computer-readable storage medium, computer program element |
US20020063714A1 (en) * | 2000-10-04 | 2002-05-30 | Michael Haas | Interactive, multimedia advertising systems and methods |
US6950850B1 (en) * | 2000-10-31 | 2005-09-27 | International Business Machines Corporation | System and method for dynamic runtime partitioning of model-view-controller applications |
US7383355B1 (en) * | 2000-11-01 | 2008-06-03 | Sun Microsystems, Inc. | Systems and methods for providing centralized management of heterogeneous distributed enterprise application integration objects |
US20020069163A1 (en) * | 2000-12-01 | 2002-06-06 | Gilbert Michael H. | Method and system for vertical messaging, billing and payment services |
US7080159B2 (en) * | 2000-12-15 | 2006-07-18 | Ntt Docomo, Inc. | Method and system for effecting migration of application among heterogeneous devices |
US8065219B2 (en) * | 2001-06-13 | 2011-11-22 | Sungard Energy Systems Inc. | System architecture and method for energy industry trading and transaction management |
US20030009411A1 (en) * | 2001-07-03 | 2003-01-09 | Pranil Ram | Interactive grid-based graphical trading system for real time security trading |
US7107578B1 (en) | 2001-09-24 | 2006-09-12 | Oracle International Corporation | Techniques for debugging computer programs involving multiple programming languages |
US7350194B1 (en) | 2001-09-24 | 2008-03-25 | Oracle Corporation | Techniques for debugging computer programs involving multiple computing machines |
EP1456752A1 (en) * | 2001-11-14 | 2004-09-15 | Exegesys, Inc. | Method and system for software application development and customizable runtime environment |
US6763423B2 (en) * | 2001-11-30 | 2004-07-13 | International Business Machines Corporation | Storage area network methods and apparatus for logical-to-physical block address mapping |
WO2003048961A1 (en) * | 2001-12-04 | 2003-06-12 | Powerllel Corporation | Parallel computing system, method and architecture |
US8135843B2 (en) * | 2002-03-22 | 2012-03-13 | Citrix Systems, Inc. | Methods and systems for providing access to an application |
US20040002950A1 (en) | 2002-04-15 | 2004-01-01 | Brennan Sean F. | Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system using hierarchically enumerated data set |
US7010521B2 (en) * | 2002-05-13 | 2006-03-07 | Netezza Corporation | Optimized database appliance |
US7529752B2 (en) * | 2002-09-18 | 2009-05-05 | Netezza Corporation | Asymmetric streaming record data processor method and apparatus |
US20040064804A1 (en) * | 2002-09-26 | 2004-04-01 | Daniels Bruce K. | Generation of partitioned enterprise application using a high-level specification |
US7945581B2 (en) * | 2002-11-14 | 2011-05-17 | Lexisnexis Risk Data Management, Inc. | Global-results processing matrix for processing queries |
US7657540B1 (en) | 2003-02-04 | 2010-02-02 | Seisint, Inc. | Method and system for linking and delinking data records |
US7124134B2 (en) | 2003-05-08 | 2006-10-17 | Eugene Buzzeo | Distributed, multi-user, multi-threaded application development system and method |
US20040237042A1 (en) * | 2003-05-23 | 2004-11-25 | Hewlett-Packard Development Company, L.P. | System and method for collectively managing information technology resources |
US20050028133A1 (en) * | 2003-08-02 | 2005-02-03 | Viswanath Ananth | System and method for rapid design, prototyping, and implementation of distributed scalable architecture for task control and automation |
US7295660B1 (en) | 2003-10-23 | 2007-11-13 | Aol Llc | Telemarketer screening |
US7761514B2 (en) * | 2003-11-26 | 2010-07-20 | International Business Machines Corporation | Method and apparatus for providing dynamic group management for distributed interactive applications |
US7890996B1 (en) | 2004-02-18 | 2011-02-15 | Teros, Inc. | Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways |
US7774834B1 (en) | 2004-02-18 | 2010-08-10 | Citrix Systems, Inc. | Rule generalization for web application entry point modeling |
EP1566940A1 (en) * | 2004-02-20 | 2005-08-24 | Alcatel Alsthom Compagnie Generale D'electricite | A method, a service system, and a computer software product of self-organizing distributing services in a computing network |
US7761923B2 (en) | 2004-03-01 | 2010-07-20 | Invensys Systems, Inc. | Process control methods and apparatus for intrusion detection, protection and network hardening |
US7636922B2 (en) * | 2004-05-03 | 2009-12-22 | Microsoft Corporation | Generic user interface command architecture |
US8423950B2 (en) * | 2004-06-25 | 2013-04-16 | International Business Machines Corporation | Method and apparatus for optimizing performance and network traffic in distributed workflow processing |
US20140067771A2 (en) * | 2004-07-09 | 2014-03-06 | International Business Machines Corporation | Management of a Scalable Computer System |
US7634755B2 (en) * | 2004-07-13 | 2009-12-15 | International Business Machines Corporation | Application splitting for network edge computing |
US8427667B2 (en) * | 2004-07-22 | 2013-04-23 | Ca, Inc. | System and method for filtering jobs |
US7886296B2 (en) | 2004-07-22 | 2011-02-08 | Computer Associates Think, Inc. | System and method for providing alerts for heterogeneous jobs |
US8028285B2 (en) * | 2004-07-22 | 2011-09-27 | Computer Associates Think, Inc. | Heterogeneous job dashboard |
US9600216B2 (en) * | 2004-07-22 | 2017-03-21 | Ca, Inc. | System and method for managing jobs in heterogeneous environments |
US7984443B2 (en) | 2004-07-22 | 2011-07-19 | Computer Associates Think, Inc. | System and method for normalizing job properties |
US20060059118A1 (en) * | 2004-08-10 | 2006-03-16 | Byrd Stephen A | Apparatus, system, and method for associating resources using a behavior based algorithm |
US7546601B2 (en) * | 2004-08-10 | 2009-06-09 | International Business Machines Corporation | Apparatus, system, and method for automatically discovering and grouping resources used by a business process |
US20060036579A1 (en) * | 2004-08-10 | 2006-02-16 | Byrd Stephen A | Apparatus, system, and method for associating resources using a time based algorithm |
US7630955B2 (en) * | 2004-08-10 | 2009-12-08 | International Business Machines Corporation | Apparatus, system, and method for analyzing the association of a resource to a business process |
US7661135B2 (en) * | 2004-08-10 | 2010-02-09 | International Business Machines Corporation | Apparatus, system, and method for gathering trace data indicative of resource activity |
US7240182B2 (en) * | 2004-09-16 | 2007-07-03 | International Business Machines Corporation | System and method for providing a persistent function server |
US8094800B1 (en) | 2004-12-21 | 2012-01-10 | Aol Inc. | Call treatment based on user association with one or more user groups |
US7509244B1 (en) | 2004-12-22 | 2009-03-24 | The Mathworks, Inc. | Distributed model compilation |
US8286157B2 (en) | 2005-02-28 | 2012-10-09 | International Business Machines Corporation | Method, system and program product for managing applications in a shared computer infrastructure |
US20060230098A1 (en) * | 2005-03-30 | 2006-10-12 | International Business Machines Corporation | Routing requests to destination application server partitions via universal partition contexts |
US7813984B2 (en) * | 2005-07-20 | 2010-10-12 | Korzinin Vladimir A | Method and system for determining modulated volume information for a tradeable financial element |
US20110016060A1 (en) * | 2005-07-20 | 2011-01-20 | Korzinin Vladimir A | Method and system for evaluating modulated volume information for a tradable element |
US8117562B2 (en) * | 2005-10-26 | 2012-02-14 | Microsoft Corporation | Runtime modification of data presented in a graphical element |
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US7904547B2 (en) | 2006-02-21 | 2011-03-08 | International Business Machines Corporation | Method, system, and program product for optimizing monitoring and discovery services for a grid computing environment |
US8117611B2 (en) | 2006-03-01 | 2012-02-14 | International Business Machines Corporation | Method, system, and program product for deploying a platform dependent application in a grid environment |
WO2007123753A2 (en) | 2006-03-30 | 2007-11-01 | Invensys Systems, Inc. | Digital data processing apparatus and methods for improving plant performance |
US20080015965A1 (en) * | 2006-06-15 | 2008-01-17 | Kai Huang | method and system for trading tangible and intangible goods |
DE102006033863A1 (en) * | 2006-07-21 | 2008-01-24 | Siemens Ag | Two layered software application production method, involves interconnecting flexible interface of application interface, which makes necessary communication profiles available between totally enclosed layers |
US8116207B2 (en) | 2006-08-21 | 2012-02-14 | Citrix Systems, Inc. | Systems and methods for weighted monitoring of network services |
US8037453B1 (en) * | 2006-09-13 | 2011-10-11 | Urbancode, Inc. | System and method for continuous software configuration, test and build management |
US8499276B2 (en) * | 2006-12-28 | 2013-07-30 | Ca, Inc. | Multi-platform graphical user interface |
US8141032B2 (en) * | 2007-02-02 | 2012-03-20 | Microsoft Corporation | N-tiered applications support via common interface |
US8701010B2 (en) | 2007-03-12 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods of using the refresh button to determine freshness policy |
US8037126B2 (en) | 2007-03-12 | 2011-10-11 | Citrix Systems, Inc. | Systems and methods of dynamically checking freshness of cached objects based on link status |
US7584294B2 (en) | 2007-03-12 | 2009-09-01 | Citrix Systems, Inc. | Systems and methods for prefetching objects for caching using QOS |
US7720936B2 (en) | 2007-03-12 | 2010-05-18 | Citrix Systems, Inc. | Systems and methods of freshening and prefreshening a DNS cache |
US8504775B2 (en) | 2007-03-12 | 2013-08-06 | Citrix Systems, Inc | Systems and methods of prefreshening cached objects based on user's current web page |
US8103783B2 (en) | 2007-03-12 | 2012-01-24 | Citrix Systems, Inc. | Systems and methods of providing security and reliability to proxy caches |
US7783757B2 (en) | 2007-03-12 | 2010-08-24 | Citrix Systems, Inc. | Systems and methods of revalidating cached objects in parallel with request for object |
US7925491B2 (en) * | 2007-06-29 | 2011-04-12 | International Business Machines Corporation | Simulation of installation and configuration of distributed software |
US8023434B2 (en) * | 2007-09-18 | 2011-09-20 | International Business Machines Corporation | Arrangements for auto-merging and auto-partitioning processing components |
US8161393B2 (en) * | 2007-09-18 | 2012-04-17 | International Business Machines Corporation | Arrangements for managing processing components using a graphical user interface |
US20090125880A1 (en) * | 2007-11-12 | 2009-05-14 | Microsoft Corporation | Polymorphic software architecture |
US8125796B2 (en) | 2007-11-21 | 2012-02-28 | Frampton E. Ellis | Devices with faraday cages and internal flexibility sipes |
WO2009089914A1 (en) * | 2008-01-18 | 2009-07-23 | Abb Technology Ab | A control system for controlling an industrial robot |
US20090199159A1 (en) * | 2008-01-31 | 2009-08-06 | Microsoft Corporation | Declarative execution context splitting |
US7814054B2 (en) * | 2008-04-03 | 2010-10-12 | Laurion James E | System and method for providing common operators across multiple applications |
US8266168B2 (en) | 2008-04-24 | 2012-09-11 | Lexisnexis Risk & Information Analytics Group Inc. | Database systems and methods for linking records and entity representations with sufficiently high confidence |
CN104407518B (en) | 2008-06-20 | 2017-05-31 | 因文西斯系统公司 | The system and method interacted to the reality and Simulation Facility for process control |
US8285725B2 (en) | 2008-07-02 | 2012-10-09 | Lexisnexis Risk & Information Analytics Group Inc. | System and method for identifying entity representations based on a search query using field match templates |
CN101870072A (en) * | 2009-04-21 | 2010-10-27 | 鸿富锦精密工业(深圳)有限公司 | Drilling machine compiler |
US8463964B2 (en) | 2009-05-29 | 2013-06-11 | Invensys Systems, Inc. | Methods and apparatus for control configuration with enhanced change-tracking |
US8127060B2 (en) | 2009-05-29 | 2012-02-28 | Invensys Systems, Inc | Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware |
US9411859B2 (en) | 2009-12-14 | 2016-08-09 | Lexisnexis Risk Solutions Fl Inc | External linking based on hierarchical level weightings |
US8429735B2 (en) | 2010-01-26 | 2013-04-23 | Frampton E. Ellis | Method of using one or more secure private networks to actively configure the hardware of a computer or microchip |
US20110307904A1 (en) * | 2010-06-14 | 2011-12-15 | James Malnati | Method and apparatus for automation language extension |
US8935317B2 (en) * | 2010-06-23 | 2015-01-13 | Microsoft Corporation | Dynamic partitioning of applications between clients and servers |
US9189505B2 (en) | 2010-08-09 | 2015-11-17 | Lexisnexis Risk Data Management, Inc. | System of and method for entity representation splitting without the need for human interaction |
US9002946B2 (en) * | 2010-08-25 | 2015-04-07 | Autodesk, Inc. | Dual modeling environment in which commands are executed concurrently and independently on both a light weight version of a proxy module on a client and a precise version of the proxy module on a server |
US9772835B1 (en) * | 2013-03-13 | 2017-09-26 | Amazon Technologies, Inc. | Modification of program code for execution in a multi-tenant or distributed computing environment |
US9380040B1 (en) * | 2013-07-11 | 2016-06-28 | Parallels IP Holdings GmbH | Method for downloading preauthorized applications to desktop computer using secure connection |
US9602629B2 (en) | 2013-10-15 | 2017-03-21 | Red Hat, Inc. | System and method for collaborative processing of service requests |
US10996945B1 (en) * | 2014-09-17 | 2021-05-04 | Amazon Technologies, Inc. | Splitting programs into distributed parts |
WO2020102218A1 (en) | 2018-11-13 | 2020-05-22 | Vantiq, Inc. | Mesh-based event broker for distributed computing |
WO2020112349A1 (en) | 2018-11-29 | 2020-06-04 | Vantiq, Inc. | Rule-based assignment of event-driven application |
US11625806B2 (en) * | 2019-01-23 | 2023-04-11 | Qualcomm Incorporated | Methods and apparatus for standardized APIs for split rendering |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4742467A (en) * | 1984-05-04 | 1988-05-03 | Analysts International Corporation | Automated programming system for machine creation of applications program source code from non-procedural terminal input |
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
US4951192A (en) * | 1987-06-04 | 1990-08-21 | Apollo Computer, Inc. | Device for managing software configurations in parallel in a network |
DE58909756D1 (en) * | 1988-06-17 | 1997-02-06 | Siemens Ag | Method and arrangement for executing a program in a heterogeneous multi-computer system |
US5056000A (en) * | 1988-06-21 | 1991-10-08 | International Parallel Machines, Inc. | Synchronized parallel processing with shared memory |
US5261095A (en) * | 1989-10-11 | 1993-11-09 | Texas Instruments Incorporated | Partitioning software in a multiprocessor system |
WO1991008543A1 (en) * | 1989-11-30 | 1991-06-13 | Seer Technologies, Inc. | Computer-aided software engineering facility |
GB2242293A (en) * | 1990-01-05 | 1991-09-25 | Apple Computer | Apparatus and method for dynamic linking of computer software components |
IL93239A (en) * | 1990-02-01 | 1993-03-15 | Technion Res & Dev Foundation | High flow-rate synchronizer/schedular apparatus for multiprocessors |
US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
CA2046723C (en) * | 1990-07-11 | 1998-11-24 | Robert Charles Pike | Distributed computing system |
EP0501613A3 (en) * | 1991-02-28 | 1993-09-01 | Hewlett-Packard Company | Heterogeneous software configuration management apparatus |
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
-
1994
- 1994-08-03 WO PCT/US1994/008785 patent/WO1995004968A1/en active IP Right Grant
- 1994-08-03 DE DE69428809T patent/DE69428809D1/en not_active Expired - Lifetime
- 1994-08-03 EP EP94924570A patent/EP0746816B1/en not_active Expired - Lifetime
- 1994-08-03 AU AU74804/94A patent/AU681433B2/en not_active Ceased
- 1994-08-03 JP JP50650595A patent/JP3541039B2/en not_active Expired - Lifetime
- 1994-08-03 CA CA002168762A patent/CA2168762C/en not_active Expired - Fee Related
-
1995
- 1995-03-22 US US08/407,340 patent/US5457797A/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877640B2 (en) | 2016-10-20 | 2020-12-29 | Advanced New Technologies Co., Ltd. | Application interface management method and apparatus |
US11150790B2 (en) | 2016-10-20 | 2021-10-19 | Advanced New Technologies Co., Ltd. | Application interface management method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
JPH09501783A (en) | 1997-02-18 |
JP3541039B2 (en) | 2004-07-07 |
EP0746816A4 (en) | 1999-12-01 |
AU7480494A (en) | 1995-02-28 |
CA2168762A1 (en) | 1995-02-16 |
AU681433B2 (en) | 1997-08-28 |
EP0746816A1 (en) | 1996-12-11 |
EP0746816B1 (en) | 2001-10-24 |
WO1995004968A1 (en) | 1995-02-16 |
US5457797A (en) | 1995-10-10 |
DE69428809D1 (en) | 2001-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2168762C (en) | Flexible multi-platform partitioning for computer applications | |
US8510183B2 (en) | System and method for distributed and integrated asset management | |
US6373585B1 (en) | Load balancing for processing a queue of print jobs | |
US11561825B2 (en) | Methods and systems of scheduling computer processes or tasks in a distributed system | |
Lehman et al. | Hitting the distributed computing sweet spot with TSpaces | |
US7092985B2 (en) | Method of managing workloads and associated distributed processing system | |
US8671392B2 (en) | Integrating software applications | |
US20050149532A1 (en) | Customer services and advertising based upon device attributes and associated distributed processing system | |
US20120297375A1 (en) | Methods and systems for providing software updates using a cloud administration system | |
Zimmermann et al. | Second generation web services-oriented architecture in production in the finance industry | |
US20080018924A1 (en) | Printing device driver | |
US20120159423A1 (en) | Tenant independent add-on software packages for an enterprise platform as a service product | |
CN106453646A (en) | Resource scheduling method and device for security service platform | |
CN101971135A (en) | Distributed processing of print jobs | |
CN104699429A (en) | Function expansion method using print data and function expansion device | |
CN104205036A (en) | Printing system and printer | |
US11308429B2 (en) | Enterprise data mining systems | |
JP2021124791A5 (en) | ||
CN105159625A (en) | Function expansion method using print data, and function expansion device | |
CN107800779A (en) | Optimize the method and system of load balancing | |
KR102092458B1 (en) | Method and System for supporting virtualized GPU resource in Serverless computing environment | |
US8593676B2 (en) | Method and system for managing print device information using a cloud administration system | |
CN113434311A (en) | Service data interaction method, device, equipment and storage medium | |
US7894084B2 (en) | Shared library in a printing system | |
US8630008B2 (en) | Method and system for managing print device information using a cloud administration system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKLA | Lapsed |