WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types    
United States Patent5226161   
Link to this pagehttp://www.wikipatents.com/5226161.html
Inventor(s)Khoyi; Dana (Dracut, MA); Soucie; Marc S. (Tyngsboro, MA); Surpenant; Carolyn E. (Dracut, MA); Stern; Laura O. (Woburn, MA); Pham; Ly-Houng T. (Chelmsford, MA)
AbstractAn object based data processing system including an extensible set of object types and a corresponding set of "object managers" wherein each object manager is a program for operating with the data stored in a corresponding type of object. The object managers in general support at least a standard set of operations. Any program can effect performance of these standard operations on objects of any type by making an "invocation" request. In response to an invocation request, object management services (which are available to all object managers) identifies and invokes an object manager that is suitable for performing the requested operation on the specified type of data. A mechanism is provided for linking data from one object into another object. A object catalog includes both information about objects and about links between objects. Data interchange services are provided for communicating data between objects of different types, using a set of standard data interchange formats. A matchmaker facility permits two processes that are to cooperate in a data interchange operation identify each other and to identify data formats they have in common. A facility is provided for managing shared data "resources". Customized versions of resources can be created and co-exist with standard resources. A resource retrieval function determines whether a customized or a standard resource is to be returned in response to each request for a resource.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5226161
Integration of data between typed data structures by mutual direct

     invocation between data managers corresponding to data types - US Patent 5226161 Drawing
Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types
Inventor     Khoyi; Dana (Dracut, MA); Soucie; Marc S. (Tyngsboro, MA); Surpenant; Carolyn E. (Dracut, MA); Stern; Laura O. (Woburn, MA); Pham; Ly-Houng T. (Chelmsford, MA)
Owner/Assignee     Wang Laboratories, Inc. (Lowell, MA)
Patent assignment
All assignments
Publication Date     * July 6, 1993
Application Number     07/938,928
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     August 31, 1992
US Classification     719/316
Int'l Classification     G06F 015/82
Examiner     Lee; Thomas C.
Assistant Examiner     Ellis; Richard L.
Attorney/Law Firm     Milik; Kenneth L.
Address
Parent Case     CROSS REFERENCE TO RELATED APPLICATIONS The present patent application is a continuation patent application of co-pending U.S. patent application Ser. No. 07/681,435 for Data Integration by Object Management by Dana Khoyi et al., filed Apr. 3, 1991, now U.S. Pat. No. 5,206,951 which was a continuation of patent application of co-pending United States patent application Ser. No. 07/088,622 for Data Integration by Object Management by Dana Khoyi et al., filed Aug. 21, 1987 and since abandoned. The present patent application is related to a U.S. Patent application Ser. No. 07/088,176 to Marc San Soucie, et al., titled CUSTOMIZATION BY AUTOMATED RESOURCE SUBSTITUTION, filed Aug. 21, 1987, now abandoned in favor of continuing application Ser. No. 07/915,775, filed Jul. 18, 1992.
Priority Data    
USPTO Field of Search     395/650 395/375 395/800
Patent Tags     integration data between typed data structures mutual direct invocation between data managers corresponding data types
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4815029
Barker
715/516
Mar,1989

[0 after 0 votes]
4787034
Szoke
719/331
Nov,1988

[0 after 0 votes]
4723211
Barker

Feb,1988

[0 after 0 votes]
4387427
Cox
718/102
Jun,1983

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed as new and desired to be secured by Letters Patent of the United States is

1. A data processing system having processing means for performing operations with respect to a multiplicity of different types of data and wherein the data is contained in data structures, the system comprising:

(A) a plurality of programs, executed by said processing means, for performing operations with respect to the different types of data, each program including

(a) a means for performing at least one operation with respect to at least one corresponding type of data,

the means for performing at least one operation being responsive to a request to perform an operation of the at least one operation with respect to identified data of the corresponding type for performing the requested operation with respect to the identified data,

(b) means for identifying a reference to a second type of data in a data structure containing a first type of data,

(c) means responsive to the identification of a reference to a second type of data for generating a request for an operation with respect to the second type of data,

each request including an identification of the second type of data and at least one operation to perform with respect to the second type of data,

(B) means for receiving from a requesting program an identification of a second type of data,

(C) means for using the received identification of the second type of data to identify a program that includes a means for performing the least one operation upon the identified second type of data, and

(D) means for invoking the identified program and communicating to the identified program the identification of the second type of data,

wherein a program can both request invocation of other programs and can itself be invoked by other programs.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

The present invention relates to an object based data processing system and, in particular, to apparatus and methods for managing and integrating objects and programs for operating on objects.

BACKGROUND OF THE INVENTION

There are a number of major, general problem areas which recur in data processing systems and these problem areas are growing increasingly demanding in contemporary systems as the range of types of data and information processing applications and numbers and types of users grow. These areas include, in particular, the integration of applications and data in a uniform system and environment, the ability to add new applications and data types to an existing system in a manner to integrate the new applications and data types with existing applications and data types; the ability to update applications and, in particular, the ability to translate programs and data from one language to another as business interests and data applications become international in scope; the ability of different users to share data, and in particular data in a timely form so that each user has the most recent version of a particular body of data; and the ability to transfer or exchange data from one form or data structure to another.

A user may want to include a graph in a document. One existing way to provide the ability for the user to edit the graph from within the context of the document is to augment a document editor with graph editing capabilities. This approach has the disadvantage that in order to integrate a further new type of data (e.g., a voice annotation) into documents, it is necessary to again modify the document editor. In fact, each editor must be separately extended to handle each new type of data.

While certain systems of the prior art have attempted to solve these problems, for example, by constructing object based systems wherein all data types reside in standardized data structures referred to as "objects", the systems of the prior art have generally failed to adequately solve these problems. In particular, the systems of the prior art have generally fallen into one of two classes. In the first and older class of system,, there has been little constraint upon data types and applications programs with the result that, while it is easy to add new applications and data types, it is difficult to provide an integrated system and user environment and very difficult to communicate data between users and data types. In the second and more recent class of system, such as the object based systems, there has been an attempt to provide a defined system environment. This approach provides an integrated system and user environment which facilitates the ability to communicate between users and data types. A recurring problem with this class of system, however, is that the system definition itself, and the operating system type programs necessary to manage defined and object based systems inhibits the ability to add new applications and data types if they do not fit within the applications and data types initially envisioned and defined.

SUMMARY OF THE INVENTION

The present invention provides for a highly integrate, yet extensible system by means of typed objects, object managers, and a generalized invocation mechanism that invokes an appropriate object manager to perform an operation on an object.

The system of the present invention does not utilize a central, operating system type object management system but provides a group of object management data structures and a plurality of "packs" of generic routines for performing operating system type tasks and many generalized applications program type tasks. The routine "packs" include a pack of generic object management routines, which are accessible and usable by all object managers, for operating upon the object management data structures, so that the object managers perform the object management functions. By this approach, new object types and new object managers, or applications programs, may be easily added to an existing system by simply installing an object manager and, using that object manager, generating the appropriate entries in the object management data structures.

Among the object management related data structures are an object catalog, used in the management of individual objects and links between objects, an object manager table used to relate objects and operations to be performed on objects to corresponding object managers, and an object prototype table used in the creation of objects. The object catalog includes an object table of all objects residing in the system. The object catalog also includes a link table, which has a record for each link to or from any object in the object table.

The object manager table provides for a plurality of object managers to operate with any given object type, including a primary object manager for each object type. The particular object manager invoked to operate upon a particular object may depend upon the type of operation to be performed and certain object managers may operate with more than one type of object. The association between object type, operation to be performed, and corresponding object manager is performed through the object manager table. That is, when a user selects to perform an operation upon a given object, the object management routines read the corresponding entry for that object type and operation from the object manager table to determine the corresponding object manager to be invoked.

The object prototype table contains information used in the creation of new objects. The object prototype table provides a means for accessing stored prototype copies of each type of object installed in the system. New objects of any given type may be created at will by making copies of the prototype copy of the object, the copy of the prototype object then becoming a new object which may be modified or operated upon at will by the user. A profile editor may be used to create a corresponding new profile for the new object and to modify the copy of the basic profile as necessary to reflect the modified characteristics of the object.

The system of the present invention also provides a means for linking or connecting data structures, such as objects, or portions of data structures. Linking also allows the dynamic copying of data or information from one data structure to another so that the destination data structure may be provided with the most recent version of the linked data residing in the source data structure.

A link may be regarded as a means by which one object, referred to as a "child" object, is "connected" to another object, referred to as the "parent" object. In addition to linking a child object to a parent object, a link may also be used to link a portion of a child object's data into a parent object. This linking of data from a child object to a parent object is distinct from the copying of data from one object to another in that the data which is linked remains a part of the child object rather than becoming an integral part of the parent object. Linked data may be edited only within the child object and only by an object manager designated for the child object type.

Data may be linked dynamically or statically. In the case of dynamic linking, the current version of the data is read from the child object and provided to the parent object each time the link is "updated". As will be described, a dynamic link may be updated, for example, each time the parent object is operated upon, that is, opened, displayed, edited or printed. Updating of a link may also be initiated at regular intervals, or keyed to operations upon the child object so that an update occurs whenever the child is modified or operated upon in some manner.

The system of the present invention provides an improved system for the exchange of data between data structures of different types. In a first aspect, the data exchange mechanism provides for a plurality of data exchange formats wherein each object manager for a given data structure may use one or more different exchange formats, depending upon the type of data structure with which the data is being exchanged. In the present implementation, the system provides for three classes of exchange formats. The first class includes generic formats used for data exchanges between structures of different types and different internal formats. The second class includes category specific formats used for data exchanges between data structures of the same type but different internal data formats, and the third class includes private formats for data exchanges between data structures of the same type and same internal format.

In a second aspect, the data exchange mechanism of the present invention provides a matchmaker mechanism whereby the object managers of two data structures may communicate regarding available exchange formats and which arbitrates a choice of a format for a data exchange.

An object of the present invention is to provide an open-ended framework for the integration of different applications programs. In this context "open-ended" means that new applications should be integrated with existing applications without requiring modification of the existing applications.

A further object is to provide a system in which applications can remain essentially independent and yet still be able to effectively communicate and cooperate with each other.

Other features, objects and advantages of the present invention will be understood by those of ordinary skill in the art after reading the following descriptions of a present implementation of the present invention, and after examining the drawing, wherein:

BRIEF DESCRIPTION OF THE DRAWING

FIGS. 1A, 1B, and 1C are diagrammic representations of information processing systems which may incorporate the present invention;

FIG. 2 is a diagrammic representation of a system database of the present invention;

FIG. 3 diagrammic representation of an object manager table of the present invention;

FIG. 4 is a diagrammic representation of an object prototype table of the present invention;

FIG. 5 is a diagrammic representation of an object catalog of the present invention;

FIG. 6 is a diagrammic representation of an object table of the present invention;

FIG. 7 is a diagrammic representation of a link table of the present invention;

FIG. 8 is a diagrammic representation of a various data structures involved in links of the present invention;

FIG. 9 is a diagrammic representation of a data exchange of the present invention, including a matchmaker of the present invention; and

FIGS. 10A and 10B are diagrammic representations of a resource and a resource editor of the present invention.

DETAILED DESCRIPTION

The following description presents the structure and operation of a computer system incorporating a presently preferred embodiment of the present invention.

OUTLINE OF DETAILED DESCRIPTION

1 Concepts

1.1 Objects and Object Managers

1.1.1 An Object Type: Folder

1.2 Links

1.3 Profiles

1.4 Resources

1.5 Operating System and Routine Packs

2 Architectural Overview

3 Objects and Files

4 Data Integration

4.1 Appearance to User in Destination Object

4.2 An Example Illustrating Certain Data Integration Concepts

5 Links

5.1 Link Updating

5.1.1 When Do Updates Occur?

5.1.2 A Link Update Operation May Require Recursion

5.2 Copying Data Having Embedded Links

5.3 Link Markers

5.4 Link Specifications

5.5 Freezing Objects and Links

6 Physical Organization (FIGS. 1A, 1B, and 1C)

7 Some Elements of an Illustrative System

8 System Data Structures

8.1 System Database

8.1.1 Object Type Table

8.1.2 Object Manager Table

8.1.3 Object Prototype Table

8.1.4 Customization Table

8.1.5 Library Table

8.1.6 Volume Table

8.1.7 System Configuration Table

8.2 Object Catalog

8.2.1 Object Table

8.2.2 Link Table

8.2.3 File List Table

8.2.4 Folder Table

8.2.5 Field WIT File

8.2.6 Object WIT File

8.2.7 Deleted Objects Table

8.3 Link Parallel Files

9 Object Manager Invocation

9.1 Invocation by Direct use of the Kernel

9.2 Startup Requests

9.3 Invocation by APPACK

10 Object Manager Table (FIG. 3)

11 Object Prototype Table (FIG. 4)

12 Object Catalog (FIGS. 5, 6, and 7)

12.1 Catalog Server Process

13 Links and Link Parallel Files (FIG. 8)

14 Copy, Move and Share

15 The Matchmaker

15.1 Matchmaker Purpose and General Operation

15.2 Matchmaker Protocols

15.2.1 Source Protocol

15.2.2 Place Protocol

15.2.3 Processing UNDO after an Interobject MOVE Operation

16 Data Interchange (FIG. 9)

17 Resources

17.1 Resource Files

17.2 Resources (FIG. 10A)

17.3 Resource Editor (FIG. 10B)

18 Resource Customization

18.1 General Customization by Means of Customized Resources

18.2 Customization IDs

19 APPACK Function Calls

19.1 Invocation Services

19.1.1 APrqstart()--Issue A Start Request

19.1.2 APrqedit()--Issue An Edit Request

19.1.3 APrqread()--Issue A Read Request 1

19.1.4 Aprqrun()--Issue A Run Request

19.1.5 APrqcreate()--Issue A Create Request

19.1.6 APrqchangelink()--Issue A Change Link Request

19.1.7 APrqprint()--Issue A Print Request

19.1.8 APrqupdate()--Issue A Link Update Request

19.1.9 APrqcopy()--Copy An Object

19.1.10 APrqdeletelink()--Delete A Link

19.1.11 APrqrelocate()--Relocate An Object

19.1.12 APrqimport()--Import A Foreign Object

19.1.13 APinvoke()--Invoke An Application

19.2 Operation Support

19.2.1 APinit()--Initialize Application Request Processing

19.2.2 APreply()--Reply To A Request

19.2.3 APevinit()--Initialize APPACK Event Specification

19.2.4 APevaction()--Set Action Code For APPACK Events

19.2.5 APevremove()--Remove APPACK Event Specification

19.2.6 APmgtest()--Test An APPACK Message Event

19.2.7 APrioinit()--Get A RIOID For An Active Operation

19.2.8 APmsgwait() Wait For An APPACK Message

19.2.9 APoprequest()--Send An Operation Request

19.2.10 APmsgrequest()--Interpret A Request Message

19.2.11 APopfinish()--Terminate An Operation

19.3 Matchmaker Operations

19.3.1 APmmreserve()--Reserve The Matchmaker For An Operation

19.3.2 APmmpost()--Post An Operation On The Matchmaker

19.3.3 APmmconnect()--Connect To Matched Application

19.4 Link Interchange

19.4.1 LNXpinit()--Start Building Link Stream

19.4.2 LNXprestart()--Reset Stream To Link

19.4.3 LNXplink()--Put A Link Into The Stream

19.4.4 LNKpnewlink()--Put A New Link Into The Stream

19.4.5 LNXpfinish()--Finish Building Link Stream

19.4.6 LNXginit()--Start Reading Link Stream

19.4.7 LNXgrestart()--Reset Stream To Link

19.4.8 LNXglink()--Get The Next Link In The Stream

19.4.9 LNXgpeek()--Look At The Next Link In The Stream

19.4.10 LNXgskip()--Skip The Next Link In The Stream

19.4.11 LNXgfinish()--Finish Reading Link Stream

19.5 Text Interchange

19.5.1 TXXpinit()--Start Building Text Stream

19.5.2 TXXprestart()--Reset Stream To Text

19.5.3 TXXpstring()--Put Text String Into The Stream

19.5.4 TXXpchar()--Put Single Character Into The Stream

19.5.5 TXXpfont()--Current Change Font

19.5.6 TXXpattrs()--Set Text Attributes

19.5.7 TXXpdiacritic()--Insert Diacritic Mark

19.5.8 TXXpstrikethru()--Set Strike-Thru Character

19.5.9 TXXpscript()--Set Script Offset

19.5.10 TXXpvertical()--Put Vertical Move Down Command

19.5.11 TXXphorizontal()--Put Horizontal Move Command

19.5.12 TXXpspacing()--Put Interline Spacing Command

19.5.13 TXXplanguage()--Put Change Language Command

19.5.14 TXXplink()--Put A Link Into The Stream

19.5.15 TXXpfinish()--Finish Building Text Stream

19.5.16 TXXginit()--Start Reading Text Stream

19.5.17 TXXgrestart()--Reset Stream To Vanilla Text

19.5.18 TXXgnext()--Get Next Type Of Data In Input Stream

19.5.19 TXXgstringsize()--Get Next String Length

19.5.20 TXXgstring()--Get Text String From The Stream

19.5.21 TXXgchar()--Get Character From The Stream

19.5.22 TXXgfont()--Get The Current Font

19.5.23 TXXgattrs()--Get Text Attributes

19.5.24 TXXdiacritic()--Get Diacritic Mark

19.5.25 TXXstrikethru()--Get Strike-Thru Character

19.5.26 TXXgscript()--Get The Script Offset

19.5.27 TXXgvertical()--Get Vertical Move Down

19.5.28 TXXghorizontal()--Get horizontal move 19.5.29 TXXgspacing()--Get Interline Spacing

19.5.30 TXXlanguage()--Get Change Language Command From The Stream

19.5.31 TXXgfinish()--Finish Reading Text Stream

19.6 Record Interchange

19.6.1 REXpinit()--Start Building Vanilla Record Stream

19.6.2 REXprestart()--Reset Stream to Vanilla Record

19.6.3 REXpheader()--Build a Header Record

19.6.4 REXprinit()--Start Record Descriptor

19.6.5 REXpfdesc()--Build Field Descriptor

19.6.6 REXprfini()--End Record Descriptor

19.6.7 REXpdinit()--Start Data Record

19.6.8 REXpdata()--Build Data Field

19.6.9 REXpdfini()--End Data Record

19.6.10 REXpfinish()--Finish Building Vanilla Record Stream

19.6.11 REXginit()--Start Reading Vanilla Record Stream

19.6.12 REXgrestart()--Reset Stream to Vanilla Record

19.6.13 REXgtype()--Get Next Record Type

19.6.14 REXgheader()--Get Header Record Information

19.6.15 REXgfdesc()--Get Next Field Descriptor

19.6.16 REXgdata()--Get Next Data Field

19.6.17 REXgnext()--Skip to Next Record Type

19.6.18 REXgfinish()--Finish Reading Vanilla Record Stream

20 RESPACK Function Calls

20.1 Resource File Access Functions

20.1.1 RESfopen()--Open a Resource File

20.1.2 RESfinit()--Open a List of Resource Files

20.1.3 RESfclose()--Close a Resource File

20.2 Resource Access Functions

20.2.1 RESget()--Get A Resource

20.2.2 RESmget()--Get Multiple Resources

20.2.3 RESpoint()--Get a Pointer to a Resource

20.2.4 RESrelease()--Release a Resource

20.2.5 RESread()--Read a Resource

20.2.6 RESlookup()--Find Resource with Given Name

20.2.7 RESgtinfo()--Get Information About Resource

20.3 Resource File Management Functions

20.3.1 RESfcreate()--Create a Resource File

20.3.2 RESfedit()--Modify a Resource File

20.3.3 RESfview()--Peruse a Resource File

20.3.4 RESfcommit()--Commit Modifications to File

20.3.5 RESgtinfo()--Get Information About File

20.3.6 RESptinfo()--Put Information About File

20.3.7 RESavail()--Get Unused Resource ID

20.3.8 RESgtnext()--Get Next Resource Information

20.3.9 RESgtprev()--Get Previous Resource Information

20.3.10 REScheckpt()--Checkpoint Resource File Updates

20.3.11 RESrevert()--Revert to Last Checkpoint

20.3.12 RESfreeze()--Freeze a Resource File Version

20.3.13 RESgtfver()--Get Resource File Version Number

20.3.14 RESptfver()--Put Resource File Version Number

20.4 Resource Editing Functions

20.4.1 RESrdcur()--Read Current Version of Resource

20.4.2 RESgtcur()--Get Current Resource Information

20.4.3 REScreate()--Create a Resource

20.4.4 RESwrite()--Write a Resource

20.4.5 RESrewrite()--Overwrite a Resource

20.4.6 RESptinfo()--Put Information About Resource

20.4.7 RESmove()--Move Resource to New Location

20.4.8 RESptnum()--Renumber a Resource

20.4.9 RESmerge()--Merge a Resource List into a File

20.4.10 RESdelete()--Delete a Resource

20.5 Resource Index Functions

20.5.1 RESinxinit()--Start Building a Resource Index

20.5.2 REsixprep()--Begin Modifying an Existing Index

20.5.3 RESixadd()--Add a Resource Index Entry

20.5.4 RESixdelete()--Delete a Resource Index Entry

20.5.5 RESixfini()--Finish Building a Resource Index

20.5.6 RESixlookup()--Look up a Resource Index Entry

20.5.7 REsixulookup()--Look up a USHORT Entry

20.5.8 RESixllookup()--Look up a ULONG Entry

20.5.9 RESixslookup()--Look up a String Entry

20.5.10 RESixufind()--Find a USHORT Entry

20.5.11 RESixlfind()--Find a ULONG Entry

20.5.12 RESixsfind()--Find a String Entry

20.5.13 RESixget()--Get an Entry in a Resource Index

20.5.14 RESixindex()--Get an Entry in a Resource Index

20.5.15 RESixinfo()--Get Info on a Resource Index

20.6 Batch Style Resource Creation Functions

20.6.1 RESccreate()--Create a Batch Style Resource File

20.6.2 REScadd()--Add a Resource to a Resource File

20.6.3 REScclose()--Finish Resource File Building

20.7 User Profile Support Functions

20.7.1 RESptcustid()--Set Customization ID

20.7.2 RESsupedit()--Edit Resources in a Profile

1 CONCEPTS

1.1 Objects and Object Managers

The system of the present invention is a member of the general class of systems described as "object based". That is, information is stored in structures referred to as "objects". In the implementation of the present preferred embodiment most objects each correspond to one or more files of a conventional computer file system.

Further with regard to objects, the system of the present invention allows the use of an essentially unlimited variety of object "types", including the type previously described as a folder, wherein there may be a type of object for each form of data or information or operation to be performed by the system. That is, the system of the present invention defines only the minimal interface between an object and the system and does not define the internal structure or form of any object. As such, an object within the system of the present invention may be regarded as a general purpose container for data, programs or other information, with the internal structure or form of a particular object being defined by the requirements of the operation to be performed or the type of data or information to be stored therein.

Programs for operating upon objects are known as "object managers" or are sometimes referred to as "editors", "applications programs", or "applications". The term "application" is also used to refer to a collection of object managers that operate on a single object type. Each type of object has associated with it at least one object manager that is designed or intended as the primary means for operating upon the data or information stored in that type of object. For example, the system may support a "document type" object for word processing and there will be a word processing object manager associated with that object type. Similarly, a "data base type" object will have associated with it a data base object manager, which is the primary means for operating upon or with the data stored in the data base type object.

It should be noted, however, that the object managers for operating with a particular type of object are not limited to the primary object manager for that object type. Moreover, the particular object manager invoked to operate upon a particular object may depend upon the type of operation to be performed. The system of the present invention provides for a plurality of object managers to operate with any given object type and certain object managers, for example, certain utilities, may operate with more than one type of object. The primary object manager is simply the object manager which is invoked by default for operations upon a particular object type if the user does not select a different program.

Although typically an object manager will operate on the data of a single type of object, in certain cases it may be desirable to arrange a program to be an object manager for more than one object type. Further, there are various utility programs that perform operations that do not interpret object data (e.g. file copy) and that therefore can be used with various types of objects.

1.1.1 An Object Type: Folder

Folders are used as an organizational tool. Folder type objects are used primarily for the links they contain. For example, group of objects can be logically associated together by all being linked to a single folder object. Like any object, a folder can itself be linked into a folder. Associated with each folder is a file, which can contain information such as a user's comments about the purpose of the folder, instructions on what to do with the objects in the folder, etc. Often there will be no such data, as a typical folder's significance is only the list of objects linked to it; in this case, essentially all there is to the folder is its entries in the object catalog, primarily the entries in the Link Table.

Folders need no link markers because the links are not embedded in any data. Order among the links in a folder is determined not by the sequence in which link markers are embedded, but by the values of the Link IDs stored in the Link Table.

A Folder does not link any data from the objects to which it has links (i.e., a folder needs no link parallel file). Folders just use links to represent relationships among whole objects.

Each user of the system has a primary folder. This is the primary means by which a user gains access to resources of the system. There is a primary system folder, which is typically linked into each user s primary folder, giving each user access to certain common system resources. Further, all of the user primary folders are linked into the system folder.

1.2 Links

While information in the system is primarily contained within objects, objects, in turn, are related to one another through a mechanism referred to as "links". A link may be conceptually viewed as a means by which one object, referred to as a "child" object, is "connected" to another object, referred to as the "parent" object. Each object is, in some sense, a child object in that each object always has at least one link to it and is connected through that link to at least one parent object. In this regard, and as will be described in the following, each user has at least one primary parent object to which all other objects associated with that user are directly or indirectly linked. The terms "parent" and "child" refer to the direction of a link, are not meant to imply any hierarchy among linked objects.

It should be noted that, as described in the following descriptions, a link may also be used to link a portion of a child object to a parent object, as well as an entire child object. In addition, any number of objects, or portions of objects, may be chained together through links, and the sequence and direction of links is no hierarchically limited.

1.3 Profiles

A profile is user-visible information about something, such as a system, object, or link. The information included in an object profile depends on the object type. For a document-type object, the object profile includes some of the information stored in the Object Table along with information stored in the object itself, such as a font list, global format information, and printing parameters.

1.4 Resources

A "resource" is data that is used by a program but which is not stored as a part of the program's executable code. Examples of such data include icons language dependent text, messages, text fonts, forms, date and time and presentation formats. A resource is therefore a means for storing such program data separately and independently from the program with which it is associated.

The placing of program data in resources allows the information therein to be customized or changed without affecting the program's executable code. English, French and German language versions of word processing, data base and spreadsheet programs, for example, may be generated by simply providing English, French and German language versions of the corresponding resources. In each version of the programs only the program data residing in the associated resource is changed, the executable code of the programs remain unchanged. In addition, the use of resources allows object managers and other programs to share common program data, thereby reducing the sizes and memory requirements of the individual object managers and other programs.

Storing data in resources also makes possible easy customization for individual users of the appearance and operation of programs. A user-specific customized version of a resource can be stored in the user's user profile. A mechanism is provided by which any customized resources present in a user profile are automatically substituted for their standard counterparts automatically (and invisibly to the program using the resource) when needed by a program.

1.5 Operating System and Routine Packs

Computer systems typically include a group of programs which are referred to as an operating system. An operating system may be viewed as a collection of programs which control and facilitate the overall operation of a system and which provide selected, fundamental, general services and operations for users of the system. Examples of such operating system services and operations include process management, event management, memory management, input/output operations, logical to physical address translations, graphics/text and display operations, file access and management operations, and mathematical operations.

In the traditional view of operating systems, all functions and operations which are not specific, particular or unique to a particular application program are to be performed by the operating system. In addition, the traditional view regards the operating system as a tightly integrated and mutually dependent group of programs and the operating system is generally designed as a unitary structure of programs in which the designer attempts to anticipate all functions which may be desired, presently and in the future, by the applications programmers. Because of the relatively monolithic nature and complexity of an operating system and the resulting interrelationships of the programs comprising an operating system, it is therefore relatively difficult to modify, change, update or add features to an operating system.

The operating system of the present invention differs from the traditional operating system in that, firstly, the actual functions and services performed by the operating system are reduced to the minimum. As will be described in the following, the operating system of the present system essentially performs only the process, event and memory management functions and logical to physical address translations.

Secondly, other functions and services which would normally be performed by an operating system, together with many functions and operations which would normally be performed by the application programs themselves, are performed by libraries of routines. These libraries of routines, referred to herein as "packs", exist independently of both the operating system and the application programs. As will be described in the following descriptions, the routines contained within the packs are comprised of short, generic, single purpose routines designed to be of wide general applicability and usefulness for both operating systems services and application program support functions. Examples of services and functions performed by pack routines include, but are not limited to, input/output operations, graphics/text and display operations, file access and management operations, and mathematical operations.

As will also be described, each pack contains a set of routines or functions which are related by the type of operation they perform or the type of object they operate upon. In addition, all routines of a given pack are provided with a uniform interface, or calling and return sequences, and the packs are required to conform to a uniform format, in particular with regard to pack header files and control blocks, that is, blocks of information regarding the objects controlled by the packs.

The use of packs of routines for many operating system type services and functions and for many operations normally provided within application programs greatly enhances the flexibility of the system architecture and configuration. Functions and services may be added or altered easily and quickly and without disturbing or otherwise impacting other functions of the system. In addition, the use of packs reduces the size and complexity of application programs in that many operations or functions normally incorporated into each individual application program may now be shared by many application programs. Also, the use of routine packs with standardized interfaces facilitates integration of different applications in that many operations and interfaces to the system, the user, and other application programs are defined by and conform to the defined, standardized routine pack interfaces.

In the preferred embodiment, these routines are stored in a shared subroutine library are dynamically linked as needed at runtime. In some cases, it may be desirable to include copies of routines from pack libraries in the executable code of a program; however, this approach increases the physical size of application programs.

When reference is made in the following discussion to a routine performing some function, it should be understood that the routine may accomplish this directly itself, or by making a system call, or by a series of interprocess communications with another process. For example, the APPACK routine APinvoke() accomplishes the invocation of an object manager by communicating with the application manager process which ultimately makes a system call that results in invocation of an object manager.

2 ARCHITECTURAL OVERVIEW

The present invention involves the manipulation of typed objects. Different objects are designed to represent different forms of information, such as the following. Document objects represent text and associated formatting information. Spreadsheet objects represent mathematical modeling information. Voice objects represent sound. Image objects represent photograph-type pictures.

For each type of object there is one or more "object manager" that can operate on objects of that type. Object managers roughly correspond to applications programs. For example, there may be spreadsheet program: this can be understood to be an "application", as distinguished from operating system program; it can also be understood to be a "manager" or "editor" of objects of type "spreadsheet".

Because it is an object's object manager(s) that define its structure and interpretation, the collection of object types is open-ended; existing types of information can be integrated with future types of information with the same each with which the existing types are integrated with each other. A new object type can be added to the system by adding a program (i.e., an object manager) that can manipulate objects of the new type. The ability to manipulate the new type of object need only be implemented once. Having added the new object manager, objects of the new type can be linked into, exchange data with, and otherwise appear integrated with objects of pre-existing types without modification to pre-existing object managers.

A convention that facilitates the open ended integration is that for each object type there shall be an object manager that will support all of a standard set of requests. Further, these requests are communicated between object managers by a single standard protocol that is application independent. Absolute adherence to this convention is not required. However, as the number of exceptions increases, the benefit obtained from this approach to data integration decreases.

If cases arise where the standard requests and protocols do not provide an adequate degree of integration, private requests and protocols can be defined to coexist with the standard set. Thus, this open ended approach defines only the minimum level of integration, without precluding tighter coupling where appropriate. An example of a case where private protocols may be appropriate is communication between a spreadsheet application and a graphing application.

There is a set of Application Integration Services that are available to all the object managers. These services do not embody any "knowledge" of any particular types of objects. Rather, the service are used by the object managers to coordinate their manipulation of the various types of objects. In particular, these services facilitate bringing to bear an object manager embodying the appropriate object type specific "knowledge".

Application Integration Services are so named because they are a mechanism by which an individual application (i.e., object manager) can appear to a user to integrate its operation and manipulation of data with that of other applications. To a user, the display of a page of a newsletter having both text and a picture indicates that the picture and text are integrated together in a single entity known to the user as a document. According to the present invention, this effect is accomplished by operation of two different object managers as coordinated by use of the Application Integration Services. The newsletter is stored in an object of type document, which is a type of object designed to store text and associated formatting information. The particular document object of this example includes a link to a separate object of type "image", an object designed to store photograph type pictures. The display of the page is accomplished by a document object manager retrieving and displaying the text and an image object manager retrieving and displaying the picture. The information describing the link to the picture and the operation required (display) is communicated from the document object manager to the image object manager with the assistance of the Application Integration Services.

The computer system of the present illustrative embodiment includes the ability to run a plurality of programs effectively concurrently. This is known as multitasking or multiprocessing, and each of the concurrently executing programs is known as a task or process

In the present system there is an Application Manager process. The Application Manager spawns the object manager processes. Thus, in general, the object managers are peers with each other and are children of