">
Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
 

Be Jeweled
Category:
Travel  

Netting Women Meeting the Perfect Girl Online
Category:
Self Help  

Affiliate Marketing Why it Works
Category:
Business  

More Than a Needle in the Hay Stack Good SEO
Category:
Computers  

You Can Save Money On Health Insurance
Category:
Business  

Why advertisers should use Google AdWords and Adsense
Category:
Marketing  

How to cure your incurable nasal allergy
Category:
Health / Fitness  

How dental insurance plans can benefit employees
Category:
Health / Fitness  

RSS And Multi Media Content Delivery
Category:
Marketing  

How Do Male Enhancement Pills Work
Category:
Health / Fitness  

Energy Healing 101 Pranic Tantric and Reiki
Category:
Health / Fitness  

The Secrets Of No Money Down Real Estate Investing
Category:
Real Estate  

Take Advantage of Outsourcing through Elance com
Category:
Business  

The Four Rules of Home Computer Security
Category:
Computers  

Creating Ocean Art with Pastels
Category:
Entertainment / Television  

The Rise of Corporate Chair Massages
Category:
Home And Family  

Swimming With Dolphins
Category:
Travel  

Dental Implant
Category:
Health / Fitness  

Interracial Dating For You Check It Out
Category:
Home And Family  

The Four Most Important Factors For Building Muscle Fast
Category:
Health / Fitness  

Generic Cialis Branded Solution For Your Problem
Category:
Health / Fitness  

IQ Lights allows for unique creative way to light one s home
Category:
Home And Family  

7 Simple Tips For Building Trust
Category:
Business  

SEO India Search Marketing Agency India Mumbai Delhi
Category:
Computers  

Google AdSense Tips
Category:
Marketing  

Tips You Can Use To Based Crm Software Web
Category:
Business  

Flower care 101
Category:
Business  

Blog Your Way To Riches
Category:
Business  

The Keys to Obtaining and Refinancing Your College Loan
Category:
Business  

How to Buy a Cheap Unlocked Cell Phone
Category:
Computers  

Home Hair Care Tips for Dry Hair
Category:
Health / Fitness  

Get on the Vintage Computer Bus System
Category:
Computers  

Broadband Just The Facts
Category:
Computers  

Debt Management Credit Card Curse
Category:
Business  

The Truth About Red Wine and Heart Disease
Category:
Health / Fitness  

What do you need to know about stem cells
Category:
Health / Fitness  

A Vital Leadership Question What Does Our Organization REALLY Re...
Category:
Self Help  

Reassuring Reasons Why Hypnosis is your Friend
Category:
Self Help  

Why a good mattress in important for your health
Category:
Health / Fitness  

Easy Way to Fight Depression
Category:
Health / Fitness  

Who was St Patrick and Why Do We Celebrate His Life
Category:
Home And Family  

An Effective And Free Internet Marketing Method
Category:
Marketing  

Yahoo Small Business Why is Yahoo the Number 1 Small Business We...
Category:
Computers  

Types of Self Defeating Communication
Category:
Self Help  

Stop Look and Listen
Category:
Self Help  

ERP Accounting Selection Microsoft Dynamics Oracle SAP expansion...
Category:
Computers  

Golf Equipment
Category:
Sports  

What Is A Second Mortgage
Category:
Business  

Who Else Wants To Make 500 Per Day Thats Right 500 A Day
Category:
Business  

International Adoption and Guatemala
Category:
Home And Family  

6 Top Fashion Tips To Cultivate Your Charisma
Category:
Business  

Becoming Successful in Life
Category:
Self Help  

Spirituality of Youth Violence
Category:
Self Help  

Inadequate FDI Confine Japanese Food Processing Sector
Category:
Food / Drink  

Job Interviews Give Them What They Want to Hear
Category:
Business  

Rayon Thread
Category:
Hobbies / Pastimes  

All You Need To Know About Motorcycle Spark Plugs
Category:
Business  

A Great Way To Generate All The Motivation You Need To Get Fit
Category:
Health / Fitness  

You Deserve More Money
Category:
Business  

Home Loans for Credit Challenged Borrowers
Category:
Finance / Investment  

Understanding The Real Estate Inflation Game
Category:
Business  

Do You Know Your Dog
Category:
Pets  

Ways In Which You Can Lose Weight And Eat as Much As You Want
Category:
Health / Fitness  

2 Doggy Drooling Dog Treat Recipes
Category:
Pets  

Why Should You Get A Humidifier Today
Category:
Home And Family  

Intrusion detection guide
Category:
Computers  

Subcontracting your SEO and Web development
Category:
Marketing  

If You Want To Make Real Money Working At Home Then Follow Me
Category:
Business  

Craft Ideas For Grandparents Day
Category:
Education  

Three Reasons For Becoming A Foster Parent
Category:
Home And Family  

Home Equity Theft Through Contractors Still a Problem
Category:
Finance / Investment  

Article Writing for the Nervous
Category:
Marketing  

Petals For Your Tea
Category:
Health / Fitness  

Facts to Know Before Going for Weight Loss Surgery
Category:
Health / Fitness  

Mac Parts A great inventory on Apple Parts
Category:
Computers

Method and apparatus for linking data in a distributed data processing system Number:6,973,656 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: Method and apparatus for linking data in a distributed data processing system

Abstract: An apparatus for implementing "links" between objects or content items in applications or documents in a distributed system such that changes to the source objects or items are reflected in changes to the target objects or content items. The apparatus includes mechanisms for allowing users to establish links, to break individual links, to copy documents or content including links, and to determine locations and/or descriptions of the source of a given target or any or all of the multiple targets of a given source.Advantageously, the apparatus of this invention uses remote message passing for communication, thereby permitting links to be established even when the source and target applications execute on different platforms and even when they share no common file system.The apparatus includes an availability server which can serve as a surrogate for applications which are currently not running. This permits targets of links to query the state of a link source, to register/unregister with the link source in order to receive notification of updates, create new links linked to the same link source, and to break their link to the link source, even though the application containing the link source is unavailable.The apparatus of the availability server can be generalized to support the ability to support transparent access from one application to objects of a second application in the face of unavailability of the second application.

Patent Number: 6,973,656 Issued on 12/06/2005 to Huynh,   et al.


Inventors: Huynh; Tien (Yorktown Heights, NY); Strom; Robert Evan (Ridgefield, CT); Ukelson; Michal Z. (Hartsdale, NY); Yellin; Daniel M. (Suffern, NY)
Assignee: International Business Machines Corporation (Armonk, NY)
Appl. No.: 515778
Filed: August 16, 1995

Current U.S. Class: 719/315; 719/332
Intern'l Class: G06F 009/44
Field of Search: 395/683 709/315,316,107,108 719/315,316,332,331,310 718/107,108 717/165,164,162 715/500


References Cited [Referenced By]

U.S. Patent Documents
5175848Dec., 1992Dysart et al.
5185885Feb., 1993Dysart et al.
5303379Apr., 1994Khoyi et al.
5404525Apr., 1995Endicott et al.
5446842Aug., 1995Schaeffer et al.
5608909Mar., 1997Atkinson et al.
5664186Sep., 1997Bennett et al.
5758351May., 1998Gibson et al.
5802367Sep., 1998Held et al.
5896533Apr., 1999Ramos et al.
5913033Jun., 1999Grout.
6104963Aug., 2000Cebasek et al.
6223344Apr., 2001Gerard et al.


Other References

"A Close-Up of OpenDoc", K. Piersol, BYTE, Mar. 1994, McGraw-Hill, Inc., N.Y,N.Y.

Primary Examiner: Lao; Sue
Attorney, Agent or Firm: Buchenhorner; Michael J., August; Casey P.

Claims



1. In a network comprising a first node, a second node and an computer implemented server located at a node separate from the first and second nodes, an availability server method for communicating information between a linking application in the first node and an object of a linked application in the second node, wherein the linked application is in one of an executing state and a non-executing state, wherein state data indicate the object is in one of a loaded state and an unloaded state, the computer implemented method comprising the steps of:

receiving a message from the linking application addressed to the object;

in response to receiving the message, determining whether the linked application is in the executing or non-executing state;

upon determining that the linked application is in the executing state, forwarding the message to the object for processing the message and responding to the linking application accordingly;

upon determining that the linked application is in the non-executing state, accessing a surrogate object, and forwarding the message to the surrogate object, wherein the surrogate object comprises first data and second data and wherein the first data defines the state of the object that cannot be changed when the linked application is in the non-executing state and the second data defines the state of the object which can be changed when the linked application is in the non-executing;

wherein the object is initialized utilizing the updated first data by: determining whether the surrogate object associated with the object is in one of the loaded state and the unloaded state; if the surrogate object is in the unloaded state, transferring the first and second data to the linked application; and if the surrogate object cannot be unloaded, transferring only the first data to the linked application.

2. The method of claim 1, further comprising:

determining whether the surrogate object is in a loaded or unloaded state;

upon determining that the linked application is in the non-executing state and the surrogate object is in the loaded state, forwarding the message to the surrogate object for processing the message and responding to the linking application accordingly;

upon determining that the linked application is in the non-executing state and the surrogate object is in the unloaded state, loading the surrogate object and forwarding the message to the surrogate object for processing the message and responding to the linking application accordingly.

3. The method of claim 1, further comprising the steps of:

upon determining that the linked application is in the executing state and the object is in the unloaded state, controlling the linked application to load and initialize the object and forwarding the message to the object; and

wherein the object, upon receiving the message, processes the message and responds to the linking application accordingly.

4. The method of claim 1, further comprising updating the second data accordingly upon request from the linked application.

5. The method of claim 1, further comprising:

upon detecting that the linked application is changing from the executing state to the non-executing state, supplying to the availability server the first and second data

associated with the object in the linked application, wherein the availability server stores the first and second data; and

upon detecting that the linked application is changing from the non-executing state to the executing state, communicating the updated first data to the object.

6. The method of claim 1, wherein the object initialization further comprising:

updating the state data to indicate the object is in a loaded state, when the object changes from the unloaded state to the loaded state;

upon determining that the surrogate object is in the loaded state, determining whether the surrogate object can be unloaded.

7. The method of claim 1, further comprising the steps of:

when the object changes from the unloaded state to the loaded state, updating the state data to indicate the object is in a loaded state;

determining whether the surrogate object associated with the object is in one of the loaded and the unloaded state;

upon determining that the surrogate object is in the loaded state, determining whether the surrogate object can be unloaded;

if the surrogate object can be unloaded, unloading the surrogate object and updating the state data to indicate that the surrogate object is in the unloaded state;

if the surrogate object cannot be unloaded, updating the state 11 data to indicate that the surrogate object is in the loaded state.

8. The method of claim 1, further comprising the steps of:

when the linked application is executing and the surrogate object is in a loaded state, monitoring messages intended for the object until detecting that the surrogate object can be unloaded; and

upon detecting that the surrogate object can be unloaded, transferring the second data state of the surrogate object to the linked application and unloading the surrogate object and destroying the surrogate object.

9. The method of claim 1, wherein the linking application comprises a document containing a link target object and the linked application comprises a document, wherein the object is a link source object that is associated with a content object for storing content, and wherein the message is sent from the link target object to the availability server and intended for the link source object.

10. The method of claim 9, wherein the message is one of the following:

i] a request that the link source object supply a change identifier that is updated when the content stored in the content object is updated;

ii] a request for a lock on the content object associated with the link source object;

iii] a request that the link source object supply a pointer to the content object;

iv] a request to unlock the content object associated with the link source object;

v] a request to register with the link source object such that the link target object is notified if the content stored in the content object is updated;

vi] a request to un-register with the link source object such that the link target object is no longer notified if the content stored in the content object is updated; and

vii] a request that the link source object send to the link target object information related to the link source object.

11. The method of claim 9, wherein the link target object utilizes a link identifier that uniquely identifies the link source object within a set of link source objects, and wherein the availability server routes the message to one of:

the link source object within the set of link source objects as determined by the link identifier, and

the surrogate object corresponding to the link source object within the set of link source objects as determined by the link identifier.

12. In a network comprising a first node, a second node and an application server located at a node separate from the first and second nodes, a computer-readable medium comprising computer implemented instructions for communicating information between a linking application in the first node and an object in a linked application in the second node, wherein the linked application is in one of an executing state and a non-executing state, wherein state data indicate the object is in one of a loaded state and an unloaded state, the computer implemented instructions comprising:

receiving a message from the linking application addressed to the object;

in response to receiving the message, determining whether the linked application is in the executing or non-executing state;

upon determining that the linked application is in the executing state, forwarding the message to the object for processing the message and responding to the linking application accordingly;

upon determining that the linked application is in the non-executing state, accessing a surrogate object, and forwarding the message to the surrogate object, wherein the surrogate object comprises first data and second data and wherein the first data defines the state of the object that cannot be changed when the linked application is in the non-executing state and the second data defines the state of the object which can be changed when the linked application is in the non-executing state;

wherein the object is initialized utilizing the updated first data by: determining whether the surrogate object associated with the object is in one of the loaded state and the unloaded state; if the surrogate object is in the unloaded state, transferring the first and second data to the linked application; and if the surrogate object cannot be unloaded, transferring only the first data to the linked application.

13. The computer-readable medium of claim 12 further comprising:

determining whether the surrogate object is in a loaded or unloaded state;

upon determining that the linked application is in the non-executing state and the surrogate object is in the loaded state, forwarding the message to the surrogate object for processing the message and responding to the linking application accordingly;

determining whether the surrogate object is in a loaded or unloaded state; and

upon determining that the linked application is in the non-executing state and the surrogate object is in the unloaded state, loading the surrogate object and forwarding the message to the surrogate object for processing the message and responding to the linking application accordingly.

14. The computer-readable medium of claim 12 further comprising:

upon determining that the linked application is in the executing state and the object is in the unloaded state, controlling the linked application to load and initialize the object and forwarding the message to the object; and

wherein the object, upon receiving the message, processes the message and responds to the linking application accordingly.

15. The computer-readable medium of claim 12, wherein the object initialization further comprising:

updating the state data to indicate the object is in a loaded state, when the object changes from the unloaded state to the loaded state;

upon determining that the surrogate object is in the loaded state, determining whether the surrogate object can be unloaded.
Description



BACKGROUND OF THE INVENTION

1. Technical Field

This invention relates generally to a distributed data processing system and, more particularly, to the linking of data in a distributed data processing system.

2. Description of the Related Art

Linking is technology that has roots in various PC technologies, most notably Dynamic Data Exchange (DDE). In its current form, it is best known in Microsoft's OLE (Object Linking and Embedding) system. In short, it allows an end-user to select some portion of a document A, commonly called the source document, and link it to another document B, commonly called the target document. This can be done by either copying the selected portion of document A to the clipboard and then pasting it AS A LINK to document B, or dragging and dropping the selected content from A to B, specifying that this drag and drop should be treated AS A LINK. After this is done, the target document B will display the same content copied from the source document A. Additionally, whenever the end-user modifies the linked portion of the source document A, the changes to the linked portion will be updated in the target document B.

The current implementations of linking assume that both the source of the link and the target of the link are part of a shared file system. The shared file system is the way that the information is communicated between the source document and the target document (at least when the source document is not open, and in some implementations when it is open as well). This means that if the two documents are not part of a shared file system, the link cannot be established and/or maintained. For instance, if a document at location X is linked to some other document at location X, and then one of the documents is transferred to a system at location Y (for example, by e-mail), the link would not be maintained unless the new location Y was part of the same shared file system as the location X. Moreover, if a link is to be established over a network, the current implementations require that the linked documents shared the same file system. Hence, the current implementations cannot be used to provide links over the Internet, for instance.

Moreover, because the current implementations require that the source and target documents share the same file system, such links can only be established/maintained between documents that reside on the same operating system platform. For example, one cannot establish/maintain links between one or more documents created under the Microsoft's Windows operating system platform and one or more documents created under IBM's OS/2 operating system platform, or between one or more documents created under the Apple's System 7 operating system platform and one or more documents created under Microsoft's Windows operating system platform.

In addition, in most linking implementations, the link targets usually track the source of each link. Hence the end-user can request the target document to describe the source of a particular link. However, this is not true for source documents; thus an end-user cannot find out which target documents are linked to a particular link source. Similarly the end-user cannot request to selectively break a particular link target.

Furthermore, in some implementations, the target document is not updated in certain instances. For example, consider the following scenario. First, a target document is opened and registers with a source document, requesting a link with the source document. Both the source and target documents are then closed. Subsequently, the target document is opened. Sometime later, the source document is opened and the linked content updated. In some implementations the target document may not be notified of the change. In a separate example, consider the following. A source document and a target document are opened. The target document registers with the source document, requesting to be notified when the link content changes. The source document is then closed without saving. Subsequently, the source document is reopened and the linked content of the source document updated. Again, in some implementations, the target document may not be notified of the change.

SUMMARY OF THE INVENTION

The above-stated problems and related problems of the prior art are solved with the principles of the present invention, method and apparatus for communicating information in a distributed data processing system. The system uses a standard messaging protocol for objects and processes to communicate, thereby alleviating the need for a shared file system. The system includes a first application and an object in a second application. The second application may be in one of an executing state and a non-executing state. The object may be in one of a loaded state and an unloaded state. The apparatus of the present invention includes an availability server that, in response to a message-intended for the object that is sent from the first application to the availability server, when the second application is in the non-executing state and a surrogate object associated with the object is in a non-loaded state, loads and initializes the surrogate object, and forwards the message to the surrogate object. The surrogate object, upon receiving the message from said availability server, processes the message and responds to the first application accordingly.

Advantageously, the availability server of the present invention provides the first application with access to the object within the second application, regardless of whether the second application is executing or not and regardless of whether the object is loaded or unloaded, such that the first application can communicate with the object, for example, to read information stored in the object or to change the state of the object. The availability server also provides a mechanism for storing auxiliary data associated with the object that may be updated by the first application when the second application is not executing.

In another aspect of the present invention, a tracking mechanism is provided that identifies the sources and targets of each link, thus providing end-users with the ability to break existing links and/or providing end-users with information about the link sources and link targets in a particular document and/or in a particular part of a document.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a pictorial representation of distributed data communication system;

FIG. 2(A) is a functional block diagram of a computer processing system of FIG. 1; FIG. 2(B) is a pictorial representation of the layers of software that may be executed on the computer processing system of FIG. 2;

FIG. 3 is a pictorial representation of an OpenDoc document A including a part X, a part Y, a LinkSpec object, and a LinkService object according to the present invention;

FIG. 4 is a pictorial representation of information stored by the LinkSource object and the LinkService object according to the present invention;

FIG. 5 is a pictorial representation of information stored by the Availability Server according to the present invention;

FIG. 6 is a pictorial representation of the operation of the LinkService object and the Availability Server of the present invention when a document is created;

FIG. 7 is a pictorial representation of the operation of the source part in creating and externalizing the LinkSpec object of the present invention;

FIG. 8 is a pictorial representation of the operation of the target part in copying the externalized LinkSpec object according to the present invention;

FIG. 9 is a pictorial representation of the operation of the target part in establishing a link with the source content identified by the copied LinkSpec object according to the present invention;

FIG. 10 is a pictorial representation of the operation of the source part in creating a LinkSource object, registering the newly created LinkSource object with the Availability Server, and returning the relevant information to the target part;

FIG. 11 is a pictorial representation of the operation of the source part and the LinkSource object in updating linked content (steps 1 and 2), and notifying the target part of the update(steps 3 and 4); FIG. 11 (steps 5 and 6) represents operation of the target part and LinkTarget object in forwarding messages from the LinkTarget object to the LinkSource object (or a LinkSourceSurrogate object) via the Availability Server according to the present invention;

FIG. 12 is a pictorial representation of the operation of the Availability Server in routing messages from the LinkTarget object to the LinkSource object or the LinkSourceSurrogate object according to the present invention;

FIG. 13 is a pictorial representation of the operation of the Linktarget object, the Availability Server and the LinkSource object (or the LinkSourceSurrogate object) when a target part registers to be notified of changes to particular link content within a part of a document according to the present invention;

FIGS. 14-17 are pictorial representations of the operation of the LinkService object and the Availability Server when an existing document is opened according to the present invention.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

A distributed data processing system includes at least two computer systems and means for communicating data between the two computer systems. Distributed data processing systems can be local area networks (LANs), which provide direct communication among the computer systems on the user's local premises, or wide area networks (WANS), which provide communication services to a geographic area larger than that served by a LAN. Typically, WANs operate at a slower speed than LANs. Moreover, at the physical level, distributed data processing systems can run over various network interfaces, such as Token Ring, Ethernet, PC Network, Fiber Distribution Data Interface (FDDI), X.25, and Integrated Services Digital Network (ISDN).

An example of a distributed data processing system is shown in FIG. 1, wherein three computer systems A1,B1, and C1 are networked to a server system S1 in a token-ring configuration. The physical communication links between the computer systems A1, B1, C1 and between the computer systems A1,C1 and the server S1 may be a T1 link, a telephone line, a fiber optic link or other suitable means. In addition, the system includes three computer systems A2,B2,C2 that are networked to a server system S2 in a star configuration. The physical communication links between the computer systems A2,B2,C2 and the server S2 may be a T1 link, a telephone line, a fiber optic link or other suitable means. In addition, the server S1 communicates with the server S2 over a communication link. The communication link may be a T1 link, a telephone line, a fiber-optic link, a microwave link, an Internet connection, or other suitable means for communicating data between the servers S1 and S2. The servers S1 and S2 are typically more robust in terms of processing power, data storage capacity, and memory than the associated computer systems, and may be used to share application software and data among the computer systems. Moreover, the servers S1 and S2 typically provide security to control access to the associated computer systems.

In a distributed processing system, the computer systems communicate data with one another via a communication protocol. Some of the common communication protocols used today include Open Systems Interconnect (OSI), Transmission Control Protocol/Internet Protocol (TCP/IP) and System Network Protocol (SNA). When utilizing TCP/IP for example, the computer systems communicate packets of data to one another over communication links as described above. Each packet includes a source identifier that identifies the source of the data and a target identifier that identifies the target of the data. For example, if the computer system B1 is to send one or more data packets to computer system C2, each data packet includes a source identifier that identifies the source of the data as computer system B1 and a target identifier that identifies the target of the data as computer system C2. The data packets are routed throughout the system according to the target identifier. Upon receiving the data packet, the target system, in this case C2, typically sends a reply to the source utilizing the source identifier encoded in the received data packet. The reply includes a source identifier that identifies the source of the data as computer system C2 and a target identifier that identifies the target of the data as computer system B1. The reply is routed throughout the system according to the target identifier. A more detailed description of TCP/IP may be found in D. Corner, "Internetworking with TCP/IP: principles, protocols, and architecture", Prentice-Hall, 1988, herein incorporated by reference in its entirety. A more detailed description of OSI may be found in Marchall T. Rose, "The Open Book: A Practical Perspective on OSI", Prentice-Hall, 1990, herein incorporated by reference in its entirety. And a more detailed description of SNA may be found in James Martin, "SNA: IBM's Networking Solution", Prentice-Hall, 1987, herein incorporated by reference in its entirety.

The software that programs the computer systems to communicate with one another preferably is designed and implemented as a set of smaller pieces. One technique to decompose the software into the set of smaller pieces that has gained substantial popularity is the object-oriented programming technique wherein the software is partitioned into a set of logical objects that interact with one another to achieve the required system functionality. Each logical object is self-contained and provides a well-defined interface that permits the orderly interaction between the object and any other objects in the system. A programming language that supports the object-oriented programming techniques is C++. A more detailed description of the C++ language may be found in Stanley B. Lippman, "C++ Primer", Addison-Wesley, 1991 (2nd Edition) and in M. A. Ellis et al., "The Annotated C++ Reference Manual", Addison-Wesley, 1990, herein incorporated by reference in their entirety. Environments suitable for programming in C++ include for example IBM's Visual Age C++ and Microsoft's Visual C++. These environments typically are designed to build software that is compatible with a specific operating system platform, such as IBM's OS/2, Microsoft's Windows, or a UNIX-based operating system platform such as Microsoft's Windows NT.

In addition, to alleviate the complexity of object-oriented programming in distributed environments, computer scientists have designed architectures that make the distribution of the objects of system transparent to the programmer. Such an architecture provides the programmer with the capability of making location-transparent distributed method calls, meaning that an object reference can be either to a local object in the source process, or to a remote object in another process. An example of such an object architecture is the Common Object Request Broker Architecture (CORBA), described in detail in "The Common Object Request Broker: Architecture and Specification", by Digital Equipment Corp. et. al, OMG Document No. 91.12.1, Rev. 1.1, 1992, herein incorporated by reference in its entirety. An implementation of such an object architecture is available in IBM's System Object Model (SOM), which complies with the specifications of the CORBA architecture. Support for SOM is included in IBM's Visual Age C++ product. A description of SOM may be found in "SOMobjects Developer Toolkit User's Guide", Version 2.1, October 1994.

A conventional computer system as shown in FIG. 2(A) embodies the present invention. The computer system includes a processor 10 coupled to memory 12 via a high-speed processor bus 14 and memory interface 16. The memory 212 may include system dynamic memory, cache memory, and/or non-volatile memory. The memory interface 16 performs functions such as address decoding and bus control such that the processor 10 can read instructions and data from the memory 12 and write data to the memory 12. The memory interface 16 may also perform functions such as dynamic memory refresh. A local bus interface 18 bridges the processor bus 14 to a second bus 20. The local bus interface 18 converts data transmitted over the processor bus 14 to the format of the second bus 20 and converts data transmitted over the second bus 20 to the format of the processor bus 14.

In addition, the computer system includes a display interface 22 for driving a display 24. The display interface 22 typically includes a graphics controller and associated memory. The computer system also includes an I/O interface 26 that provides an interface to one or more data storage devices and an input device 28 such as a keyboard or a pointing device. The data storage devices may include a fixed hard disk drive 30, a CD-ROM drive 32, a floppy drive 34, a tape back-up drive (not shown), an optical drive (not shown), or other suitable devices.

The computer system also includes a communication adapter 36 that provides a physical interface to the network. The communication adapter 36 can implement various network interfaces such as Token Ring, Ethernet, PC Network, Fiber Distribution Data Interface (FDDI), X.25, and Integrated Services Digital Network (ISDN).

As shown in FIG. 2(B), the software 40 that controls each of the computer systems in a distributed system to communicate with one another preferably includes an operating system layer 42, a low-level communication protocol layer 44, a high-level object communication protocol layer 46, and an object-oriented-application layer 48. Each of the layers 42,44,46,48 can be stored on one or more floppy disks or CD-ROMs and transferred to the fixed disk drive via the floppy disk drive 34 or CD-ROM drive 32, respectively. Moreover, two or more of the layers 42,44,46,48 may be integrated into a common software package that is stored on one or more floppy disks or CD-ROMS. In this case, the software package is transferred to the disk drive via the floppy disk drive 34 or CD-ROM drive 32, respectively. The software 40 is preferably read from the fixed disk drive 30 (in the alternative, from the CD-ROM drive 32 or from the floppy disk drive 34) into memory for execution by the processor 10.

The operating system layer 42, when executed by the processor 10, provides a direct interface to the hardware devices of the computer system, and more specifically to the communication adapter 36, thus managing the flow of data between the computer system and other computer systems and providing for user interaction. The object-oriented-application layer 48 includes a plurality of objects that, when executed by the processor 10, send and receive data from other objects or applications (which may be executing on a remote computer processing system). The high-level object communication protocol layer 46, for example IBM's SOM, and the low-level communication protocol layer 44, for example a TCP/IP layer such as IBM's TCP/IP version 2.0, formats the data to be sent from one object to another object and routes the data over the network guaranteeing that the data is properly delivered to the appropriate object and that the correct method of that object is invoked.

To illustrate the functions performed by the various layers of the software 40 in a distributed environment, consider the operation of two remote computer systems A and B when data generated by a client object that is part of an object-oriented-application layer 48 executing on computer system A is sent to a server object which is part of an object-oriented-application layer 48 that is executing on a computer system B. First, the high-level object communication protocol layer 46 executing on computer system A determines the location of the server object, and then sends a message to the low-level communication protocol layer 44 to send the data generated by the client object to the server object. The high-level object communication protocol layer 46 marshals the data into a transmission format that identifies the object that is to receive the data and that identifies the method to be invoked by the object to receive the data. The low-level communication layer protocol layer further formats the data such that is complies with a standard protocol, for example TCP/IP, and delivers the formatted data to the communication adapter 36 of the computer system A. The communication adapter 36 of the computer system A then transfers the formatted data to the communication adapter 36 of the computer system B over the network. This transfer may be direct, or indirect via intermediate nodes within the network.

Upon receipt, the communication adapter 36 of the computer system B delivers the received data to the low-level communication protocol layer 44 of the computer system B. The low-level communication protocol layer 44 executing on computer system B reformats the received data by stripping away, for instance, any routing information and delivers the reformatted data to the high-level object communication protocol layer 46 executing on computer system B. The high-level object communication protocol layer 46 de-marshalls the data and determines which object and which object method executing on computer system B is the intended recipient of the data, and reformats the data into a format expected by that object. The high level object communication protocol layer 46 then invokes the appropriate method, passing it the reformatted data. This mechanism can also be used to implement a peer-to-peer environment by making each application operate independently as both as client and a server.

In addition, it has become apparent that objects work efficiently together when objects share a common interface architecture. Moreover, such a common interface architecture allows the objects to interact with one another independent of the operating system platform for which the objects were designed. OpenDoc, which is currently being developed by IBM, Apple and Wordperfect, is an example of such a common interface architecture. OpenDoc is an architectural framework for applications for preparing, editing, and viewing compound documents. In OpenDoc, a compound document consists of one or more parts. The parts may contain data as diverse as navigable movies, sounds, animation, and data bases information, as well as traditional spreadsheets, graphics, and text. In general, users manipulate and display the parts using application components called part editors, part viewers and services. A more detailed description of OpenDoc parts and features may be found in the "OpenDoc Programmer's Guide", Apple Computer Corp., Preliminary Draft, November 1994, and K. Piersol, "A Close-Up of OpenDoc", AIXpert, June 1994, available at http://www.austin.ibm.com/developer/aix/library/aixpert/june94/aixpertjune94closeup.html, herein incorporated by reference in their entirety.

In a distributed environment, the OpenDoc framework may be viewed as a portion of the object-oriented application layer 48 that is executed on the computer systems as illustrated in FIG. 2(B). Importantly, the parts that make up the documents in OpenDoc are represented by objects within the object-oriented application layer 48. For simplicity, the present invention as described below is embodied as part of an OpenDoc application layer that includes one or more parts, wherein communication among the computer systems occurs between objects that comply with the CORBA standards mentioned above. Preferably, the objects of the present invention are created in a C++/CORBA environment, for example IBM's Visual Age C++(with SOM support). Moreover, the software controlling the computer systems of the present invention preferably include a CORBA compliant high-level object communication protocol layer 46, for example IBM's SOM, and a TCP/IP compliant low-level communication protocol layer 44, for example IBM's TCP/IP Version 2.0.

Each OpenDoc part contains content elements. Depending on the type of part and by the selections made by an end-user, the content elements may be characters, spreadsheet cells, drawing elements, etc., or aggregates, such as paragraphs, one or more rows of spreadsheet cells, figures, etc.

According to the present invention, a LinkSpec object, a LinkSource object, a LinkTarget object, a LinkService object and an Availability Server are used to link data between a source part and one or more target parts. Any part can potentially play the role of a source part and a target part, and contain both LinkSource objects and Linktarget objects. The source part and the target part may be components of an OpenDoc document executing on a single computer system, may be components of multiple OpenDoc documents executing on a single computer system, or may be components of multiple OpenDoc documents executing on separate computer systems.

The LinkSpec object is created by the source part. It represents the capability of establishing a link to some particular content element in the source part. The source part provides the Linkspec object with a content specifier that identifies the linked content element. The content specifier will be used later by the source part to locate the content element for which a link is requested. As illustrated in FIG. 3, the Linkspec object 100 contains:
    • i) a pointer to the source part, labeled "Part Ref";
    • ii) a pointer to the LinkService object associated with the source document, labeled "Document Ref"; and
    • iii) the content specifier, labeled "Cont. Specifier".


  • The LinkSource object is created by a source part when a target asks the source to create a link to the content element identified by a particular LinkSpec object. The LinkSource object resides in the source part. There is potentially more than one LinkSource object in the source part. As shown in FIG. 4, each LinkSource object 200 contains:
    • (i) a Content object 210, which stores a copy of the content element being linked;
    • (ii) a linkID unique to the particular LinkSource object;
    • (iii) a pointer to the Content object 210;
    • (iv) a table of targets including entries for each registered and tracked target; each entry corresponding to a registered target or an open tracked target includes a pointer to the LinkTarget object, a connection ID (as described below in more detail), and a description of the target; the description includes the host name and document file name of the target and information related to the target, for example, a description of how the target is using the linked content;
    • (v) a changeID that uniquely identifies a particular version of the content object 210; and
    • (vi) a description of the link content in the source document; the description includes the host name and document file name of the source document and information related to the source content.
      Whenever the source part wants to update the linked content, the source part first asks the LinkSource object for a lock on the Content object. Once the source part obtains this lock, the source part then updates the Content object. Once the source part is done updating the Content object, the source part provides a new ChangeId to the LinkSource object, which then stores the ChangeID and frees the lock on Content object. The source part can break all links by destroying the LinkSource object. Individual links can also be broken as explained below.


  • The LinkTarget object is created when a target part requests a link to the content element specified by a particular LinkSpec object. The LinkTarget object resides in the target document. There is potentially more than one LinkTarget object in the target part. The target part can register with one or more LinkTarget objects. If it is registered, the target part will receive an update message whenever the content element of the particular link associated with a registered LinkTarget object is updated. This message will be generated after the source part has updated the Content object at the source of the link and released the lock on that object. A target part can ask the LinkTarget for the most recent ChangeId associated with this link, and can request a lock on the Content object. If it obtains the lock, it can read the content element of the link. When it is finished reading the content element, it must release the lock. If it is registered, the target part can ask to unregister.

    As shown in FIG. 10, the Linktarget object 300 contains:
    • i) the name of the Availability Server serving the LinkSource object, for example myhostAS as shown; and
    • ii) the LinkID, for example 10 as shown;
    • iii) a description of the target part (not shown); the description includes the host name and document file name of the target and information related to the target.
      The name of the Availability Server can be used to locate the Availability Server with a CORBA compliant naming service. The located Availability Server and the LinkID can be used to locate and access the LinkSource object whether the source document is open or not.


  • The LinkService object is used to help establish links across documents, and to keep track of the LinkSource objects and LinkTarget objects within a document. There is one LinkService object for each document. As shown in FIG. 4, the information retained in the LinkService object 400 includes:
    • i) the file location of the document, for example "myhost:e:DOCS\A" as shown;
    • ii) the DocumentId (obtained from the Availability Server when the document was created as discussed below), for example 23 as shown;
    • iii) the name of the Availability Server this document is registered with, for example "myhostAS" as shown; the LinkService object 400 and LinkTarget object 300 can use this name to locate the Availability Server using a naming service such as described in the SOMobjects Developer Toolkit User's Guide, Version 2.1, October 1994, incorporated by reference above; and
    • iv) a table of LinkSource objects 410 contained within the document including, for each LinkSource object, a LinkID, a pointer to the LinkSource object (if it is open), a storage unit identifier that identifies where the external representation of the LinkSource object can be found; the information in the table of LinkSource objects 410 preferably also includes an externalized reference to the part in which each particular LinkSource object resides; and
    • v) a table of Linktarget objects 420 contained within the document including, for each LinkTarget object, a pointer to the LinkTarget object (if it is open), a storage unit identifier that identifies where the external representation of the LinkTarget object can be found; the information in the table of LinkTarget objects 420 preferably also includes an externalized reference to the part in which each particular LinkTarget object resides.


  • The Availability Server is used to provide access to the LinkSource object 200, and the content element therein, when the document in which the LinkSource object 200 resides is not open. The Availability Server does this by creating a LinkSourceSurrogate object that is initialized from the persistent state of the LinkSource object that resides in the document, and from the auxiliary state of the LinkSource object that resides in the Availability Server. Preferably, there is one Availability Server per machine running OpenDoc. Thus, file sharing across the network is not necessary for the Availability Server to read this persistent state. Usually a LinkSourceSurrogate will only exist if a document in which the LinkSource resides is closed. However a LinkSource object in the document and a LinkSourceSurrogate in the Availability Server may briefly coexist for the reasons described below.

    As shown in FIG. 5, the Availability Server maintains the following information:
    • i) a table of documents 510 registered with the Availability Server 500 including, for each document, the location of the document and the LinkIds of LinkSource objects in that document (not shown); preferably, the location of the document is specified by the host machine name and an absolute path name; additionally, if the document is currently open, the Availability Server maintains a pointer to the document's LinkService object;
    • ii) a table of LinkSource objects 520 registered with the Availability Server 500 including, for each LinkSource object, the DocumentId of the document in which this LinkSource object resides, the LinkID, the status of the LinkSource object, a pointer to the LinkSource object if the LinkSource object is currently open, a pointer to the LinkSourceSurrogate object associated with the LinkSource object if the LinkSourceSurrogate object is open, and a content lock flag (not shown) that indicates whether the Content object of the LinkSource object is locked or not; the status of the LinkSource object is preferably broken down into four categories: InDoc (meaning that the document is open and the link source object is also open), InAS (meaning that the document is closed, and a LinkSourceSurrogate for this link has been created in the Availability Server), InBoth (meaning that a LinkSource object for this link exists in the document and a LinkSourceSurrogate exists in the Availability Server), and Unloaded (meaning that neither a Linksource object nor the LinkSourceSurrogate object exist in the document).
    • iii) a table of auxiliary state (not shown) for each LinkSource object registered with the Availability Server; the auxiliary state lists all of the remote LinkTarget objects that are registered with or tracked by the LinkSource object; the auxiliary state of the LinkSource object represents that part of the state of the LinkSource object which can be changed even while the document is closed; the remaining state of the LinkSource object cannot be changed when the document is closed.


  • In addition, additional interfaces are provided by which the source part can:
    • (i) request that the LinkSource object provide a description pertaining to each target to which the LinkSource object is linked; each target description includes the host name and document name in which the target resides; each target description also preferably includes a description of the target part (supplied by the target part);
    • (ii) request that the LinkSource object disconnect a particular target from being linked to this content element (break a particular link, not all links); and
    • (iii) set the source part description; this description will be given to target parts of the link if they request information about the source part.


  • In addition, additional interfaces are provided by which the target part can:
    • (i) request that the source part provide a description of the source part; this description includes the host name and document name in which the source resides; this description also preferably includes a description of the source part; and
    • (ii) set the target part description; this description will be given to the source part if it requests information about this target part of the link.


  • Additionally, an interface can be provided wherein any part can request the LinkService object to:
    • (i) list all LinkSource objects and/or LinkTarget objects in the document; and
    • (ii) list all the LinkSource objects and/or LinkTarget objects in a particular part that resides in the document.


  • An OpenDoc document can be either open or closed. When a document is open, the parts of the document and the associated content element may be loaded into memory and the parts executed as one or more processes by the processor. When a document is closed the parts of the document are not executing and the content elements of the parts are stored in a file (the document file) in non-volatile memory, for example, on the hard disk drive associated with the computer system.

    When a document A is created on a computer system running an OpenDoc application, a LinkService object 400 associated with the document A is created within the document. The Linkservice object 400 registers with the Availability Server 500 that preferably resides on the same computer system. In the alternative, the Availability Server 500 may be a process that is executing on a remote computer system. The Availability Server 500 generates a unique documentID for document A, for example the number 23 as shown in FIG. 6, and generates a new entry in the table of documents 510 for document A. As shown in FIG. 6, the entry includes the documentID, the location of the document file, and a pointer to the LinkService object. The pointer may be set to "empty" to indicate that the document is closed. The Availability Server 500 then returns the documentID to the Linkservice object 400. The LinkService object 400 preferably stores the documentID and a pointer to the Availability Server 500.

    Links are established between content elements in different parts. FIGS. 7-10 illustrate the operation of the LinkSpec object 100, the LinkSource object 200, the LinkTarget object 300, the LinkService object 400 and the Availability Server 500 in establishing a link between a source part X of a document A and a target part XX of a document B.

    As shown in FIG. 7, the first step in establishing the link is to create a LinkSpec object 100 that identifies the content element of the source part X of the document A that will be the source of the link. The LinkSpec object 100 may be created, for example, by the source part X when source part X receives a request to copy selected content element of the part X to the clipboard or to the drag-and-drop. In FIG. 7 for example, the user has selected a cell C2 of a spreadsheet as the content to be linked. The Linkspec object 100 contains a content specifier that identifies the particular content element of the link. The LinkSpec object 100 also contains the pointer to the part, as well as a pointer to source document's LinkService object 400 as shown.

    After the Linkspec object 100 has been created, the source part X calls a WriteLinkSpec method of the LinkSpec object 100. The WriteLinkSpec method converts the Linkspec object to a platform independent form and copies it to storage that is made accessible to other documents. The platform independent form may utilize, for example, a Bento storage unit and CORBA compliant externalized pointers, such as the externalized reference to a proxy to a stringID discussed in section 6-24 of the SOMobjects Developer Toolkit User's Guide, Version 2.1, October 1994, incorporated by reference above. As shown in FIG. 7, the storage is a clipboard. In the alternative, the storage may be a drag-and-drop buffer, a shared memory region, or a distributed repository.

    After the Linkspec object 100 is converted and copied to storage, the linking operation turns to the target part XX of a document B as illustrated in FIG. 8. When the target part XX receives a request to establish a link with the content element specified by the externalized Linkspec object 100-1, which may be a user command such as a PASTE AS LINK or a drag and drop, the target part XX creates an in-memory LinkSpec object 100-2 and calls the ReadLinkSpec method, passing it a pointer to the externalized storage. The ReadLinkSpec method initializes the state of the in-memory LinkSpec object 100-2 to the state of the externalized LinkSpec object 100-1, thereby replicating the original LinkSpec object 100 in the target document B.

    As shown in FIG. 9, the target part XX then requests that a link be created to the source content element specified by the LinkSpec object 100-2 by calling method "AcquireLink" on the LinkService object 400 in the target document B, passing a pointer to the LinkSpec object 100-2. In response to this request, a LinkTarget object 300 is created and initialized in the target document B. The pointer to the source document's LinkService object is then retrieved from the LinkSpec object 100-2, and the method "EstablishLink" is invoked on the LinkService object 400 of the source document A asking that a link be created. This message has several parameters, including the pointer to the source part X, a pointer to the target part YY, and the content specifier identifying the content element of the link.

    When the Linkservice object 400 of the source document A receives this message, the LinkService object 400 responds by invoking the method "CreateLink" on the source part X asking that it create a link for content element specified by the given content specifier, for example C2 as shown in FIG. 10. If a LinkSource object already exists for the given content specifier (not shown), the source part X returns a pointer to it. If a LinkSource object does not exist for the given content specifier (as shown), the source part X responds by creating a LinkSource object 200, and then returns a pointer to this object.

    In the case where the source part X creates a new LinkSource object 200, the LinkService object 400 of the source document A invokes the "RegisterLink" method on the Availability Server 500, passing a pointer to the new LinkSource object and the documentID for the document, for example 23 as shown in FIG. 10, to thereby register the new Linksource object 200. The "RegisterLink" method generates a new LinkID (unique to the Availability Server), for example 10 as shown, and associates the new LinkID with the given documentID. The pair <Availability Server Name, LinkID> henceforth serves as a persistent reference to the LinkSource object. The RegisterLink method then writes the DocumentID, the LinkID, and the pointer to the new Linksource object 200 as an entry in the Table of Linksource objects stored in the Availability Server 500, and sets the status field of the entry as "INDOC". The Availability Server 500 then returns the newly generated LinkID to the LinkService object 400 of the document A. The LinkService object 400, in turn, adds a ne


    Free Web Sudoku Puzzles.
    Solve with your browser.
      8 3   5   7 2  
            8   3    
              7      
      4 5            
      2   7   5   1  
                6 7  
          4          
        8   9        
      7 6   1   4 8  
    What is it?



    Add Your Site · Terms Of Service · Privacy Policy


    DISCLAIMER
    Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

    For More Specific Information VIEW OUR TERMS OF SERVICE.

    Thank you and Enjoy!