CA2168762C - Flexible multi-platform partitioning for computer applications - Google Patents

Flexible multi-platform partitioning for computer applications Download PDF

Info

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
Application number
CA002168762A
Other languages
French (fr)
Other versions
CA2168762A1 (en
Inventor
Paul Butterworth
Joseph Cortopassi
Sean Fitts
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CA2168762A1 publication Critical patent/CA2168762A1/en
Application granted granted Critical
Publication of CA2168762C publication Critical patent/CA2168762C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task 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
- 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
- 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
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
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.

Claims (51)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
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.
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.
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.
CA002168762A 1993-08-03 1994-08-03 Flexible multi-platform partitioning for computer applications Expired - Fee Related CA2168762C (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
DE19580738T1 (en) * 1994-05-31 1996-08-22 Fujitsu Ltd System and method for executing jobs 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
US6058378A (en) * 1995-02-22 2000-05-02 Citibank, N.A. Electronic delivery system and method for integrating global financial services
JPH08235098A (en) * 1995-02-22 1996-09-13 Mitsubishi Electric Corp Distributed application commuinication system
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
US5897635A (en) * 1995-06-07 1999-04-27 International Business Machines Corp. Single access to common user/application information
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
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
WO1997014108A1 (en) * 1995-10-11 1997-04-17 Block Financial Corporation Financial information access 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
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
US7555529B2 (en) * 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
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
US9094384B2 (en) * 1996-02-16 2015-07-28 Reference Ltd., Limited Liability Company TCP/IP protocol network with satellite nodes
US7100069B1 (en) * 1996-02-16 2006-08-29 G&H Nevada-Tek Method and apparatus for controlling a computer over a wide area network
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
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
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
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
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
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
US6173327B1 (en) 1996-07-11 2001-01-09 Jeroen De Borst Object-oriented method and apparatus for information delivery
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
US6334158B1 (en) * 1996-11-29 2001-12-25 Agilent Technologies, Inc. User-interactive system and method for integrating applications
US6725250B1 (en) 1996-11-29 2004-04-20 Ellis, Iii Frampton E. Global network computers
US8312529B2 (en) 1996-11-29 2012-11-13 Ellis Frampton E Global network computers
US7805756B2 (en) 1996-11-29 2010-09-28 Frampton E Ellis Microchips with inner firewalls, faraday cages, and/or photovoltaic cells
US20050180095A1 (en) 1996-11-29 2005-08-18 Ellis Frampton E. Global network computers
US7024449B1 (en) 1996-11-29 2006-04-04 Ellis Iii Frampton E Global network computers
US7506020B2 (en) 1996-11-29 2009-03-17 Frampton E Ellis Global network computers
US7035906B1 (en) 1996-11-29 2006-04-25 Ellis Iii Frampton E Global network computers
US8225003B2 (en) 1996-11-29 2012-07-17 Ellis Iii Frampton E Computers and microchips with a portion protected by an internal hardware firewall
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
US7926097B2 (en) 1996-11-29 2011-04-12 Ellis Iii Frampton E Computer or microchip protected from the internet by internal hardware
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
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
US6710786B1 (en) 1997-02-03 2004-03-23 Oracle International Corporation Method and apparatus for incorporating state information into a URL
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
ATE264519T1 (en) * 1997-02-21 2004-04-15 Cit Alcatel METHOD FOR GENERATING A COMPUTER PROGRAM
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
US6061517A (en) 1997-03-31 2000-05-09 International Business Machines Corporation Multi-tier debugging
US5953525A (en) * 1997-03-31 1999-09-14 International Business Machines Corporation Multi-tier view project window
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
AU8171998A (en) * 1997-06-26 1999-01-19 Charles Schwab & Co., Inc. System and method for automatically providing financial services to a user usingspeech signals
JPH1131082A (en) * 1997-07-11 1999-02-02 Teijin Seiki Co Ltd Operating system and medium recording the system
US6314408B1 (en) 1997-07-15 2001-11-06 Eroom Technology, Inc. Method and apparatus for controlling access to a product
US6230185B1 (en) 1997-07-15 2001-05-08 Eroom Technology, Inc. Method and apparatus for facilitating communication between collaborators in a networked environment
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
US6049664A (en) * 1997-11-25 2000-04-11 Alphablox Corporation Tier-neutral development mechanism for hypertext based applications
US6272673B1 (en) 1997-11-25 2001-08-07 Alphablox Corporation Mechanism for automatically establishing connections between executable components of a hypertext-based application
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
US6125370A (en) * 1998-04-01 2000-09-26 International Business Machines Corporation Repartitioning data
US6269375B1 (en) 1998-04-01 2001-07-31 International Business Machines Corporation Rebalancing partitioned 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
AU9672098A (en) * 1998-09-30 2000-04-17 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
US8010422B1 (en) 1998-11-03 2011-08-30 Nextcard, Llc On-line balance transfers
US20050004864A1 (en) * 2000-06-15 2005-01-06 Nextcard Inc. Implementing a counter offer for an on line credit card application
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
US6754885B1 (en) 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
WO2000070417A1 (en) 1999-05-17 2000-11-23 The Foxboro Company Process control configuration system with parameterized objects
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
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6954220B1 (en) 1999-08-31 2005-10-11 Accenture Llp User context component 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
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6601234B1 (en) 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services 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
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
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
US6779128B1 (en) 2000-02-18 2004-08-17 Invensys Systems, Inc. Fault-tolerant data transfer
AU2001245754A1 (en) 2000-03-17 2001-10-03 Ebay, Inc. Method and apparatus for facilitating online payment transactions in a network-based transaction facility using multiple payment instruments
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
US8706618B2 (en) 2005-09-29 2014-04-22 Ebay Inc. Release of funds based on criteria
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
US6578022B1 (en) 2000-04-18 2003-06-10 Icplanet Corporation Interactive intelligent searching with executable suggestions
WO2001080065A2 (en) 2000-04-18 2001-10-25 Icplanet Acquisition Corporation Method, system, and computer program product for propagating remotely configurable posters of host site content
AU2001255611A1 (en) * 2000-04-25 2001-11-07 Icplanet Acquisition Corporation 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
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
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
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
US20030093433A1 (en) * 2001-11-14 2003-05-15 Exegesys, Inc. Method and system for software application development and customizible 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
AU2003234106A1 (en) 2002-04-15 2003-11-03 Invensys Systems, Inc. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US7010521B2 (en) * 2002-05-13 2006-03-07 Netezza Corporation Optimized database appliance
AU2003273333A1 (en) * 2002-09-18 2004-04-08 Netezza Corporation Field oriented pipeline architecture for a programmable data streaming processor
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
US7774834B1 (en) 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
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
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
US8028285B2 (en) * 2004-07-22 2011-09-27 Computer Associates Think, Inc. Heterogeneous job dashboard
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
US7984443B2 (en) 2004-07-22 2011-07-19 Computer Associates Think, Inc. System and method for normalizing job properties
US9600216B2 (en) * 2004-07-22 2017-03-21 Ca, Inc. System and method for managing jobs in heterogeneous environments
US7661135B2 (en) * 2004-08-10 2010-02-09 International Business Machines Corporation Apparatus, system, and method for gathering trace data indicative of resource activity
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
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
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
US20110016060A1 (en) * 2005-07-20 2011-01-20 Korzinin Vladimir A Method and system for evaluating modulated volume information for a tradable element
US7813984B2 (en) * 2005-07-20 2010-10-12 Korzinin Vladimir A Method and system for determining modulated volume information for a tradeable financial 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
US7860857B2 (en) 2006-03-30 2010-12-28 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
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
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
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US7925491B2 (en) * 2007-06-29 2011-04-12 International Business Machines Corporation Simulation of installation and configuration of distributed software
US8161393B2 (en) * 2007-09-18 2012-04-17 International Business Machines Corporation Arrangements for managing processing components using a graphical user interface
US8023434B2 (en) * 2007-09-18 2011-09-20 International Business Machines Corporation Arrangements for auto-merging and auto-partitioning processing components
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
EP2304536A4 (en) 2008-06-20 2012-08-15 Invensys Sys Inc Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
CA2748625C (en) 2008-07-02 2015-10-27 Lexisnexis Risk Solutions Fl Inc. Entity representation identification based on a search query using field match templates
CN101870072A (en) * 2009-04-21 2010-10-27 鸿富锦精密工业(深圳)有限公司 Drilling machine compiler
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
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
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
JP2022510569A (en) 2018-11-13 2022-01-27 バンティック インコーポレイテッド 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)

* Cited by examiner, † Cited by third party
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
JPH0239262A (en) * 1988-06-17 1990-02-08 Siemens Ag Method and apparatus for executing program within hetero multiple 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
EP0502975B1 (en) * 1989-11-30 1997-07-16 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
AU649455B2 (en) * 1990-07-11 1994-05-26 American Telephone And Telegraph Company 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

Cited By (2)

* Cited by examiner, † Cited by third party
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
AU7480494A (en) 1995-02-28
DE69428809D1 (en) 2001-11-29
AU681433B2 (en) 1997-08-28
JPH09501783A (en) 1997-02-18
CA2168762A1 (en) 1995-02-16
EP0746816A1 (en) 1996-12-11
EP0746816B1 (en) 2001-10-24
EP0746816A4 (en) 1999-12-01
JP3541039B2 (en) 2004-07-07
US5457797A (en) 1995-10-10
WO1995004968A1 (en) 1995-02-16

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
Lehman et al. Hitting the distributed computing sweet spot with TSpaces
US10789097B2 (en) Methods and systems of scheduling computer processes or tasks in a distributed system
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
US8010703B2 (en) Data conversion services and associated distributed processing system
CN106453646A (en) Resource scheduling method and device for security service platform
CN101971135A (en) Distributed processing of print jobs
US11308429B2 (en) Enterprise data mining systems
CN102693596B (en) Employ method for developing functions and the function expanding device of printed data
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
US20130160029A1 (en) External device interface abstraction
US9323509B2 (en) Method and system for automated process distribution
WO2014025341A1 (en) Print service identifier
Wu et al. Geospatial data services within cloud computing environment

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed