US20020049786A1 - Collaboration framework - Google Patents

Collaboration framework Download PDF

Info

Publication number
US20020049786A1
US20020049786A1 US09/982,224 US98222401A US2002049786A1 US 20020049786 A1 US20020049786 A1 US 20020049786A1 US 98222401 A US98222401 A US 98222401A US 2002049786 A1 US2002049786 A1 US 2002049786A1
Authority
US
United States
Prior art keywords
command
server
collaborators
drawing document
collaboration session
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US09/982,224
Inventor
Jacobo Bibliowicz
Kreisel Carolyn
Robert Lipari
Ryan Rogers
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Autodesk Inc
Original Assignee
Autodesk Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Autodesk Inc filed Critical Autodesk Inc
Priority to US09/982,224 priority Critical patent/US20020049786A1/en
Assigned to AUTODESK, INC. reassignment AUTODESK, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BIBLIOWICZ, JACOBO, KREISEL, CAROLYN E., LIPARI, ROBERT, ROGERS, RYAN P.
Publication of US20020049786A1 publication Critical patent/US20020049786A1/en
Priority to US11/923,548 priority patent/US8024661B2/en
Priority to US14/742,278 priority patent/US9942286B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/13Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/12Symbolic schematics

Definitions

  • Patent Cooperation Treaty Patent Application Serial No. PCT/US01 /02310 entitled “METHOD AND APPARATUS FOR PROVIDING ACCESS TO AND WORKING WITH ARCHITECTURAL DRAWINGS ON THE INTERNET”, by Douglas G. Look, et. al., Attorney Docket No. 30566.101-WO-U1, filed on Jan. 24, 2001, which application claims priority to United States Provisional Patent Application Serial No. 60/177,988, entitled “METHOD AND APPARATUS FOR PROVIDING ACCESS TO AND WORKING WITH ARCHITECTURAL DRAWINGS ON THE INTERNET,” filed on Jan. 25, 2000, by Douglas G. Look, et. al., attorney's docket number 30566.101USP1.
  • the present invention relates generally to computer-implemented drawing programs, and in particular, to a method, apparatus, and article of manufacture for multiple collaborators to simultaneously work on a drawing.
  • CAD application programs are often expensive, complex, and difficult to learn how to use. Additionally, architects, contractors, engineers, owners, and other patties involved with a project (referred to as project participants or collaborators) are often mobile or at different locations. With new technology and the increased use of the Internet, project participants often have computers, Internet access, and personal digital assistants (PDAs). Further, the coordination and exchange of information between project participants can be increasingly complex.
  • PDAs personal digital assistants
  • prior art applications allow a user to download a drawing, edit the drawing, and upload the drawing after completing the edits.
  • prior art applications/features may allow the creation of a two-dimensional in-memory document where graphic information is transmitted from one client to another client during a session.
  • the document must be saved locally by a client and then uploaded later.
  • only a primitive set of two-dimensional graphic manipulation tools is often provided.
  • One or more embodiments of the invention provide a method, apparatus, and article of manufacture for a collaboration framework that permits multiple users to simultaneously modify a document/workspace that is stored on a server across a network.
  • Collaboration applications on multiple clients/collaborators communicate with a server application on a server.
  • the collaboration application provides a full set of three-dimensional drawing tools to manipulate a drawing and transmit such manipulations to the server application.
  • the server application maintains a history of the manipulations and the collaborators in a session. Once a manipulation command is received by the server application from one collaborator, the server distributes the command to the remaining collaborators. Thereafter, the collaboration applications modify the local version of the drawing space in accordance with the command.
  • the history maintained by the server may then be used by any one of the collaborators to rollback a modification (e.g., a modification made by another collaborator or themselves) or to rebuild a drawing space in the event of a network failure.
  • FIG. 1 schematically illustrates a hardware and software environment in accordance with one or more embodiments of the invention
  • FIG. 2 illustrates a collaboration palette displayed in accordance with one or more embodiments of the invention
  • FIG. 3 illustrates a dialog window and collaboration palette in accordance with one or more embodiments of the invention.
  • FIG. 4 is a flow chart illustrating the use of the collaboration framework in accordance with one or more embodiments of the invention.
  • a collaboration framework provides the ability for multiple users to simultaneously modify a document across a network using a full set of tools.
  • Client based applications generate specific messages (e.g., XML messages) which are communicated across a network to a server (e.g., via TCP/IP [transmission control protocol/internet protocol]).
  • a server e.g., via TCP/IP [transmission control protocol/internet protocol].
  • the server manages the collaboration session by storing document changes and distributing the command to other collaborators.
  • the server maintains a history of document changes so these can be recommunicated in the event of a network failure or temporary Internet outage.
  • the server may manage a record of the collaboration session including the name, number and status of collaborators, and similar information for the workspace being collaborated on.
  • FIG. 1 schematically illustrates a hardware and software environment in accordance with one or mote embodiments of the invention, and more particularly, illustrates a typical distributed computer system 100 using a network 102 to connect client computers/collaborators 104 to server computers 106 .
  • a typical combination of resources may include a network 102 comprising the Internet, LANs (local area networks), WANs (wide area networks), or the like, clients/collaborators 104 that are personal computers, personal digital assistants (PDAs), or workstations, and servers 106 that are personal computers, workstations, minicomputers, or mainframes.
  • LANs local area networks
  • WANs wide area networks
  • clients/collaborators 104 that are personal computers
  • PDAs personal digital assistants
  • servers 106 that are personal computers, workstations, minicomputers, or mainframes.
  • the network 102 connects collaborators 104 executing a collaboration application 108 to server computers 106 executing server applications 110 .
  • the collaboration application 108 enables collaborators 104 to communicate with other collaborators 104 and work on a document stored on/by server 106 .
  • the server application 110 may be a server 106 collaboration application that provides for storage of a commonly used document and enables the ability for multiple collaborators 104 to simultaneously work on the same document.
  • Server application 110 may also be configured to manipulate data (e.g., a document) in database 114 through a database management system (OBMS) 112 .
  • OBMS database management system
  • these components 108 , 110 , 112 , and 114 all comprise logic and/or data that is embodied in or retrievable from device, medium, signal, or carrier, e.g., a data storage device, a data communications device, a remote computer or device coupled to the computer across a network or via another data communications device, etc.
  • this logic and/or data when read, executed, and/or interpreted, results in the steps necessary to implement and/or use the present invention being performed.
  • embodiments of the invention may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof.
  • article of manufacture (or alternatively, “computer program product”) as used herein is intended to encompass logic and/or data accessible from any computer-readable device, carrier, or media.
  • the collaboration framework provides the ability for all collaborators 104 to modify a document at the same time, with no need for permission to modify to be passed around among the collaborators 104 .
  • the collaborator 104 is likely on equal footing with all other collaborators 104 .
  • anyone may join a collaboration session and begin collaborating with others that may already be working in the session.
  • another collaborator 104 may not have write access and may only have read capability to watch the modifications of other collaborators 104 .
  • a collaboration palette may be displayed on the computer 104 by collaboration application 108 .
  • the palette may be placed in the lower-right corner of the window representing collaboration application 108 .
  • the palette may roll-up or be hidden from the user.
  • the collaboration palette provides information on the current collaborators/users 104 in the collaboration session.
  • the user's name is added to the collaboration palette.
  • an access level may be assigned to the user. For example, a user's access level may default to “write-access”. Beyond this general information, the palette may not open or show any additional feedback when the initial user opens a workspace.
  • FIG. 2 illustrates a collaboration palette displayed in accordance with one or more embodiments of the invention.
  • elements of the collaboration palette 200 may include a user image/icon 202 .
  • the icon 202 used for the user may be a standard 32 ⁇ 32 GIF (graphic image format) for all users.
  • the top line 204 of a data area of palette 200 may contain the user's name.
  • the second line 206 of the data area may contain the user's status.
  • Each status type 206 may have an associated color.
  • the status types 206 and colors a user may have are joining (green), write-access (black), accidental disconnect (red), intentional disconnect (yellow), and working offline (blue).
  • all of the status labels, except “joining,” may blink then disappear after a short duration. The joining status may remain until the user either connects or cannot connect to the workspace.
  • a user's status 206 may also reflect a controlled environment wherein a single user may be a moderator that has the ability to grant or deny access to new and existing users.
  • FIG. 3 illustrates a dialog window in such a controlled environment.
  • the status field 206 may identify the first user as a moderator.
  • the status field 206 may display a message such as “request write” to indicate that a user is requesting write access.
  • a dialog window 302 may be presented to the moderator that allows the moderator to grant or deny the new user permission to join the workspace as a collaborator 104 .
  • Advanced options may also be available such as allowing a user to join the session but with read-only capability.
  • a scroll bar may be activated on the palette if necessary to display additional information.
  • a palette titlebar 208 includes the title of the palette 200 and may flash for a short duration when the status of any collaborator 104 changes. The color the titlebar 208 flashes may depend on the new status of the collaborator.
  • the workspace opens as usual on the user's computer 104 , along with opening the collaboration palette 200 to signal the beginning of a collaboration session.
  • the collaboration palette 200 automatically indicates that another user has the workspace open already.
  • the palette 200 also provides a mechanism for displaying the status 206 of the second user's connection to the workspace.
  • the second user's status 206 When initially opened, the second user's status 206 likely reads “joining.” When the second user successfully joins the collaboration session, the status line 206 changes to “write-access.” Thereafter, if current users of the workspace have closed the collaboration palette 200 , the titlebar 208 may flash to signify the addition of a user to the workspace.
  • a “glass plane” may be placed over the workspace, palettes 200 , and menu. Further, in some embodiments, a user may not be able to cancel the open, or start to open another workspace until the current one is fully opened. As illustrated in FIG. 2, the palette 200 indicates that a first user (i.e., “Joe User”) has write-access and a second user (i.e., “User #2”) is joining the session.
  • a first user i.e., “Joe User”
  • User #2 i.e., “User #2”
  • each user's collaboration palette 200 indicates the addition of a user, with a status 206 of “joining.”
  • the user's status 206 e.g., “left workspace”
  • the user's status 206 may be shown in a specific color (e.g., yellow), and after some amount of time, the user's name 204 will be removed from the palette 200 .
  • the user's status 206 e.g., “disconnected” may be shown in a different color (e.g., red), and after some amount of time, the user's name 204 will be removed from the palette 200 .
  • modifications to the drawing may be seen by any users in the session. For example, a pan or zoom operation performed on the workspace by a user will be reflected in other users' view of the workspace. Accordingly, the pan and zoom state of the workspace may be stored with the document. Thereafter, the next time the workspace is opened, the view will be the same as when it was last closed. Similarly, if the view of a 3D model is changed by a user, the other users' view of the model will be changed. Additionally, any action that causes data to be saved to the workspace will be seen by all of the users in the collaboration session. For example, creating new documents, moving documents, minimizing documents, and using tools on documents, are all actions that will be seen by everyone.
  • collaboration framework may provide communication capabilities such as chat and instant messaging to collaborators 104 in the session.
  • a user's palette 200 may not be part of the collaboration session.
  • the collaborators 104 will not see a change in their view of the workspace.
  • any object selected by a collaborator 104 may not be seen in the other collaborator's 104 view of the workspace.
  • any action done to the object that changes its data e.g., color or size change
  • the activation of documents may not be seen by collaboration users.
  • the loss of a network 102 connection by a user affects the way the user continues.
  • a single user of a workspace i.e., no other collaborators 104 are members of the session
  • the user may be automatically switched to an offline mode during which the user may keep write-access while offline, and the server 106 marks the workspace as offline so it may not be edited by online users.
  • the remaining users will be notified that the user has timed-out with the disconnected status in the data field 106 of the palette.
  • the disconnected user may also receive a dialog notice that the connection to the workspace has been lost, and the user has therefore been switched to read-only mode.
  • collaborators 104 participating in a session may all modify a drawing document that is stored in the server 106 wherein the drawing modifications are then reflected in the other collaborators' 104 views.
  • the collaboration framework provides for the transmission of commands to the client 104 and server 106 sides of the framework.
  • the description below provides information regarding some of the commands that may be used including background information, implementation information, and formatting information, It should be noted that while the formatting information is described in terms of extensible markup language (XML), any acceptable format or formatting language may be used and the invention is not intended to be limited to XML formatted messages.
  • XML extensible markup language
  • Synchronous commands are sent from the client 104 to the server 106 , and processed immediately.
  • the server's 106 response is a command response containing the processing results.
  • Asynchronous commands ate sent from the client 104 to the server 106 , but are not necessarily processed immediately.
  • the server 106 response to the client 104 may contain multiple command responses to earlier client 104 requests, collaboration state changes, collaboration user information, and other data waiting in the client's 104 outgoing message queue.
  • a command referred to herein as “heartbeat” is an example of such an asynchronous command.
  • Commands While strictly speaking, there may only be a single command type, there are three distinct types of command messages: Commands, Responses, and Heartbeats.
  • Commands initiate a request or an action.
  • Commands may typically contain one or more ⁇ param ⁇ > sub-nodes.
  • commands are a request from the client 104 to the server 106 to initiate an action or request data.
  • Responses are commands containing processing results and return data from previously issued commands. There is typically a one to one correspondence for a response to a specific command. For example, a “Version” command likely has a corresponding “Version” response command which is returned to the client 104 and contains data pertaining to the current version of the framework. Responses typically contain a ⁇ success ⁇ > sub-node, a ⁇ rspMsg ⁇ > sub-node, and one or more ⁇ return ⁇ > sub-nodes.
  • Heartbeats are asynchronous commands that can contain other commands, responses, or collaboration data.
  • messages may be implemented in any format.
  • messages are simple XML structures.
  • a message tag may be required to contain the following attributes in Table 1.
  • Client 104 generated numeric identifier of the message.
  • the server 106 echoes the msgID number it is responding to. This pairs the client 104 request and server 106 response message with the same ID.
  • SessID A valid session ID. the sessionID.
  • ResID A valid resource ID. the resourceID.
  • Retry A positive integer, or zero. number of times client has sent this message.
  • the first and only sub-node, ⁇ cmd ⁇ >, contains a single command.
  • This single command may be a heartbeat command, which itself may contain sub-commands.
  • the command node may contain multiple attributes including a name that specifies a unique command name for the command being sent.
  • each ⁇ cmd ⁇ > node may contain one or more of the sub nodes described in Table 2, depending on it's type: TABLE 2 Sub Node Name Contains Attributes Param A parameter for the Name - the parameter name. command. Val - the parameter's value. Filedata An XML file of a non- NONE. specific type. Currently used for user data, workspace files and Workspace Trees. Success Found only in response Val - return value.
  • RESPONSE_RESOURCE_NOT_FOUND 0 ⁇ 3
  • RESPONSE_BAD_TOKEN 0 ⁇ 6
  • RESPONSE_UNKNOWN_FILETYPE 0 ⁇ 7
  • RESPONSE_SYSTEM_FAILURE 0 ⁇ 80
  • RspMsg Found only in response Val - the text of the response message. commands, this contains text corresponding to the result. It may be used for providing error description text to be displayed to the user, for example.
  • the command name is specified along with optional parameters.
  • the client 104 request command name is “Version” and various parameters are specified.
  • the server 106 specifies the command name along with information described in Table 2 (i.e., a success with a value of 1, a response message with a value of “a resp message”, a return name with a value of “VersionResp”, and various parameters with values).
  • synchronous commands may be processed in the framework 100 of the invention.
  • the synchronous commands described below are commands sent by a client 104 and processed by a server 106 .
  • the “version” command results in a return of the current version number of the framework.
  • the syntax for the command is: version( localmajor, localminor, localrevision : major, minor, revision, upgradeFlag, ChangesXML : success, message )
  • the “version” command is sent by the client 104 at startup, before attempting a login or displaying the main application window. Even if the client 104 has a stored session id, it should issue this command first.
  • the upgradeFlag indicates the result of the version check and can be VersionsIdentical ( 0 ), ServerUpgraded ( 1 ), ClientUpgradeAvailable ( 2 ), ClientUpgradeRequired ( 4 ). If the upgradeFlag has a VersionsIdentical value, no code in the framework 100 has been updated since the last time the client 104 collaboration application 108 was run. If the upgradeFlag has a ServerUpgraded value, the server 106 has new code that may affect the clients 104 perception of how the framework 100 works (faster save times, fixes, etc.), but there are no client 104 binary changes.
  • a value of ClientUpgradeAvailable means that there is a newer version of the client 104 available, but the client 104 is not required to get the newer version in order to work with the current version of the server 106 (i.e. no file formats or interfaces have changed).
  • a value of ClientUpgradeRequited means that significant changes have occurred in the client 104 and file formats or interfaces with the server 106 have changed. Accordingly, the client 104 must upgrade before the client 104 can go online. Note that this does not necessarily mean the client 104 is forced to upgrade immediately. Instead, the client 104 may be able to work offline using the local cache until the user is ready to upgrade. However, if the client 104 desires to obtain data from the site/server 106 , the client 104 must upgrade.
  • any new features and/or noteworthy fixes that have been implemented since the version of the client 104 passed in will be returned in the ChangesXML parameters, and these changes can be displayed in the client 104 . It may be possible to have some updates and not require an upgrade. For example, there may have been server-only changes that would be nice to let the user know about (e.g., a bug fix or improved performance).
  • the ChangesXML may be useful to users when the value of upgradeFlag is ClientUpgradeAvailable, since the ChangesXML content is what provides the basis upon which the client 104 decides if the upgrade should be made (new features and fixes vs. risk assessment). Further, the ChangesXML value does not need to be overly verbose.
  • the ChangesXML value may comprise a short bulleted list containing only changes that the average user would care about, or possibly a hyperlink pointing to a page on a web site that may be accessed for more detailed information.
  • an object is returned with the current version numbers that may be read from a local versions XML file.
  • a data cache product may be used such that the version numbers are stored in a database 114 and read from the cache.
  • collaboration application stores the returned major/minor/revision numbers and ensures that the returned numbers are used in the next version command.
  • the versions XML file may contain all changes over time (occasionally pruned manually) and will be read by the application server 110 at start time and stored globally into an efficiently searched data structure that may be keyed by major.minor.revision.
  • Each one of the database 114 entries may have an upgradeFlag that will be set to one of the levels defined above.
  • the upgradeFlag's values may be binary to ease in the use of a bitwise OR operation.
  • Each entry may also contain any number of new feature/fix nodes, and each node might specify an attribute classifying the type (new feature vs. enhancement vs. fix, etc).
  • the upgradeFlag is determined by a simple bitwise OR operation of all upgradeFlags of the versions greater than the version passed in.
  • the ChangesXML is built in a similar way, by combining all of the change nodes for the versions greater than the one passed in. If the provided version is not found, then the version has been pruned, and the earliest version in the data structure is used to determine the upgradeFlag and the ChangesXML.
  • the version command likely executes quickly and efficiently and avoids a Denial of Service attack, since no login is required. Accordingly, the version command does not perform any database 114 read operations, database 114 write operations, and only performs a single remote method invocation (RMI) call.
  • RMI remote method invocation
  • the login command is executed by the client 104 at startup to logon to a session.
  • the login command is used when the user does not have a session id, or when the user determines that the sessionid that the user has is invalid.
  • Such a login may be required in when the server 106 requires the client 104 to logon (e.g., during the processing of a loginrequired command from the server 106 [see below]).
  • the syntax for the login command is: login( username, password : success, message, sessionID, userID, imageURL )
  • the server 106 In response to a login command, the server 106 returns a new sessionID and the userlD to the client 104 . The same user can be logged on multiple times and have multiple active sessionID's.
  • the client 104 will next transmit the Open User Data command. More particularly, if the client 104 has a cached sessionID from a previous instance, the client 104 will first try this sessionID. If the prior sessionID fails, the client 104 will receive a loginrequired command from the server 106 in response. The subsequent login (i.e., using the login command) provides a sessionid to be used with the Open User Data command. The Open User Data command opens specified user data for the client 104 .
  • This command is used by a client 104 whenever the user selects an option to create a new workspace/document.
  • the newworkspace command is executed before the closeworkspace command of an open workspace (if there is one open) is executed. If the newworkspace command is successful, the resourcelD of the new workspace is returned, and the workspace should be considered to be in a SoloPending state for the specified user.
  • the copy workspace command is issued by the client 104 whenever the user selects an option to copy a workspace.
  • the delete workspace command is issued by the client 104 whenever the user tries to delete a workspace that the user has opened.
  • the delete workspace command is executed before the closing an open workspace. If successful, the deleted workspace will be gone and the user will have to select a workspace to work on or create a new workspace.
  • the use of the delete workspace command may be restricted. For example, the delete workspace command may not execute if the workspace is in CollabPending or Collab state. Accordingly, in order to delete a workspace, the user must be the only person in the workspace.
  • the syntax for the delete workspace command is:
  • the server 106 may ensure that the workspace is either open by nobody, or open by exactly the user trying to delete it. The user must also have the appropriate permissions. If all of these conditions have been complied with, then the delete workspace command will delete the workspace and remove the workspace from a ResourceSession. Once deleted, the workspace cannot be opened at a later time.
  • the open workspace command is the backbone of collaboration, and occurs whenever the client 104 opens a new workspace.
  • the command is issued by the client 104 before the closeworkspace command when switching workspaces. If the workspace is already open by two or more users (i.e., the workspace is in Collab state), then this user joins the collaboration session. If the workspace is open by only one person (i.e., the workspace is in Solo state), then a collaboration session is started (CollabPending state) and both clients 104 are synchronized. Once synchronized, the state changes to Collab. If the workspace is not open, the user (that is in SoloPending state) marks the workspace as open.
  • a workspace session and user's workspace session may be in one of the following states: 0-Solo Pending; 1-Solo; 2-Collab Pending; 3-Collab; or 4-Disconnected.
  • a workspace is not open, the workspace has no state.
  • the workspace transitions into Solo Pending, as does the workspace's user.
  • the state is transitioned from Solo Pending to Solo. If another user opens the document, the state is transitioned to Collab Pending. Once the original client 104 confirms synchronization of the document, the state is transitioned to Collab. If another user joins, the workspace remains in Collab state, but the user is in Collab Pending until the first heartbeat is received, at which time the client 104 is transitioned into full Collab.
  • the state is transitioned into Solo Pending for that user and the workspace. Once this client 104 confirms synchronization of the document and started creating deltas, the state is transitioned into Solo for the workspace and the user. If at anytime a user is determined to have gone link dead, the user's state is changed to Disconnected. If at any time all users left in a workspace session are Disconnected, then the state of the document is changed to Disconnected. Once users have been disconnected for a sufficient time without returning, the disconnected users are removed from the session. If all users are removed from a session, the session is closed.
  • the close workspace command is executed when a user closes a workspace. If the user is closing the workspace due to opening an existing or creating a new workspace, then the open or create commands are executed first, and the close executing after their success. If the user closes the application, closeworkspace is sent after the final save.
  • a collabuserinfo command may be placed in the CommandOut queues of the remaining workspace session users. If there is only one other workspace session user, then the state of the workspace session may be changed from Collab to Solo Pending.
  • the Get Object IDs command is issued by a client 104 to obtain a range of unique Object IDs the client 104 can use when creating application objects.
  • a GetObjectIDs command with no parameters is requesting a default number of IDs. The default should be sufficient for typical online work, yet large enough to allow for sufficient IDs in the case of subsequent connection failures so the client 104 can keep working.
  • a “quantity” parameter may be specified to request a specific quantity of Object ID's. Clients 104 can use numeric constants for typical quantities or simply specify a number for the quantity.
  • the syntax for the Get Object IDs command is: getObjectIDs( userID : success, message, Object ID start, Object ID end )
  • the server 106 In response to the command, the server 106 returns a range of object IDs that can be used by the client 104 . In other words, a first/start object ID and a last/end object ID are returned by the server 106 for use by the client 104 .
  • the GetObjectIDs command may or may not be utilized depending on the implementation. For example, if the GetObjectIDs command is not utilized, the server 106 may map object IDs as using a Mapped Objects command described in detail below.
  • the commands described below are synchronous commands/responses that are transmitted by a server 106 and processed by a client 104 .
  • the server 106 generates the login required command whenever processing a message or command and it is determined that the specified sessionID is missing or invalid (timed out). Upon receipt and execution, the client 104 sends a login command to the server 106 (see above).
  • the server 106 generates the system failure response/command whenever an internal system failure occurs processing a message or command.
  • the client 104 Upon receipt of the system failure command, the client 104 takes appropriate measures to retry the command it received the system failure response message for.
  • Heartbeat messages are different from other commands, as they may contain sub commands and collaboration data.
  • the heartbeat message uses two sub-nodes to contain the different types of data. These are the ⁇ transientcmd ⁇ > node, which contains zero or more commands and responses, and the ⁇ persistentcmd ⁇ > node, which contains actual collaboration data, i.e., the actions performed in the client 104 by the collaborators 104 .
  • a heartbeat command demonstrating the full structure is shown below, although any individual heartbeat command may or may not have all the components shown below the ⁇ cmd ⁇ > node.
  • the heartbeat ⁇ /cmd> node may be required to contain the attributes identified in Table 3. TABLE 3 Attribute Name Values Meaning DeltaLevel The current delta level. In solo See text. mode, this value is determined by the client 104 and echoed by the server 106 in the response. In collaboration mode, these are temporary IDs when sent from the client 104, and actual IDs when sent from the server 106.
  • Beat BEAT_TYPE_COLLAB 1 A collaboration or solo beat.
  • the heartbeat command is executed by the client 104 with a delay between heartbeats of N seconds, where N varies depending if the client 104 is collaborating or not. Tentatively heartbeats may beat execute every 10 seconds when solo and every 2 seconds when collaborating. Occasionally heartbeats will be strong. A strong heartbeat signifies that even if no data modification commands (referred to as delta commands) are sent in the heartbeat, the users' workspace session should be marked as active so that it does not timeout. For example, if a client 104 does not perform any modifications or is away from the keyboard for 20 minutes while in a collaborative session, the client 104 won't be generating any data but the strong heartbeats will keep the client's 104 workspace session alive.
  • delta commands no data modification commands
  • heartbeat ( userID, resourceID, deltaLevel, strongflag : transientcmds, persistentcmds [ deltalevel ] )
  • the heartbeat may contain either transient commands, persistent commands (i.e., delta commands), or both.
  • Transient commands are executed immediately and persistent commands are stored for asynchronous processing by a separate server-side process.
  • the heartbeat comes from a solo user of the workspace, then the DeltaID's will already be present, and the specified DeltaLevel will represent the new DeltaLevel of the workspace. If the heartbeat comes from a collaborator 104 , then none of the delta commands will have a DeltaID, and the server 106 is responsible for numbering them. In either case, the DeltaLevel of the workspace session needs to be updated. If the heartbeat comes from a collaborator 104 , then the heartbeat response will contain any delta commands that the server 106 has received that are higher than the clients 104 specified DeltaLevel, and this will include new delta commands that the client 104 just sent. Accordingly, the heartbeat command enables the client 104 to receive the work done by another client 104 during a session.
  • any new ObjectID's specified in the delta commands will be temporary and will be marked as such.
  • Temporary ObjectIDs are mapped to real server-generated ObjectID's, and a persistent map is maintained for each user mapping the user's temporary ObjectID to the real ObjectID.
  • the response to a user's heartbeat command will contain the same persistent commands that came up in the command, but with DeltaID's and real ObjectID's set in them, so that the client 104 can update itself.
  • the response message may contain not only the updated DeltaID's that this client 104 generated, but it may also contain those DeltaIDs specified by other clients 104 , all in the correct DeltaID order.
  • the heartbeat processing may utilize a beat flag for the status of a particular client 104 .
  • the beat flag is utilized to maintain the appropriate state between clients 104 and to facilitate the collaboration between clients 104 .
  • Such heartbeat processing utilizing a beat flag is described in detail below.
  • the heartbeat processing may result in the generation of several different collaboration transient commands that are sent to the client 104 . If the client's 104 state is Solo but the sessions state is Collab Pending, then the client 104 may receive a collabstart command. If the client's 104 state is Collab but the sessions state is Solo Pending, then the client 104 may receive a collabstop command. If the client's 104 state is Joining but the sessions state is Collab, then the client 104 may receive a collabjoined command.
  • the user may also have other transient commands that have been queued up in a queue of outgoing commands for a particular user (referred to as a user's CommandOut queue) waiting for this heartbeat (for example, somebody may have joined the collaborative session, left the collaborative session, etc).
  • These transient commands in the CommandOut queue ate sent from the server 106 to the client 104 in the response message, and marked in a record of the session as having been sent in this particular message ID.
  • a retry count for each message may also be maintained. During heartbeat processing, the retry count of the message may be checked. When the message is not a retry, message responses to all previous messages have been received and processed by the client. Therefore, if there are any transient commands in the CommandOut queue which are marked as sent in a previous message, such transient commands can be removed from the queue.
  • transient heartbeat commands are transmitted by a client 104 and processed by the server 106 .
  • the save user data command is executed by the client 104 when a session is closed and optionally during sessions as user preferences/options change.
  • the save user data command may execute based on an interval and a dirty flag. If the time interval has passed and the flag/preferences are dirty, then the preferences are saved.
  • the save user data command uses a user ID, filename, and file data as parameters.
  • the filename should be a valid system file type, otherwise the operation to store/save the data may fail. If a failure occurs, a saveuserdatafailed command will likely be generated and returned in the response message.
  • the save workspace command is generated by any client 104 that has a non-read-only workspace open.
  • the client 104 is responsible for sending up all delta commands in the persistent section of a heartbeat command that will update the server 106 from the previous delta level to the new delta level specified. If any of the delta commands are missing, the save will fail.
  • the detaLevel is the latest server-approved delta level of the workspace that the client 104 is aware of. Therefore, the client 104 does not need to transmit persistent commands to update the workspace, since the server already has the delta levels. All clients 104 in a collaboration session may issue the saveworkspace command. Further, saves may occur at a regular interval (e.g., every 1 minute). Accordingly, solo saveworkspace commands come up pursuant to regular heartbeat intervals (e.g., 6 heartbeats), and when collaborating saveworkspace commands are likely issued at greater heartbeat intervals (e.g., every 30 heartbeats).
  • regular heartbeat intervals e.g. 6 heartbeats
  • collaborating saveworkspace commands are likely issued at greater heartbeat intervals (e.g., every 30 heartbeats).
  • the collaboration start confirmation command may be generated by a client 104 upon receiving and executing a collabstart command.
  • the command occurs only when going from the solo to collaborative mode (i.e., from 1 document viewer to 2).
  • the server 106 receives this command, the client 104 is signaling that the client 104 has stopped generating delta commands that have DeltaID's, and that it is now the servers 106 responsibility to generate the delta commands.
  • the collaboration start confirmation command typically arrives in the same message as the clients 104 final solo saveworkspace. Subsequent to execution, heartbeats contain delta commands without DeltaID's, and all new ObjectID's are temporary.
  • the server 106 receives the start collaboration confirmation command, the user or users that are in the Joining state can be migrated to the Joined state (they are issued collabjoined commands), as well as placing collabuserinfo commands into the CommandOut queues of all users in the workspace session for all of the users that just Joined.
  • the workspace session state may also be updated from CollabPending to Collab.
  • the collaboration stop confirmation command is generated by a client 104 upon receiving and executing a collabstop command from the server 106 .
  • This command is only executed when going from the collaborative mode to the solo mode (i.e., from 2 or more document viewers to 1).
  • the server 106 receives this command, the client 104 is signaling that the client 104 has started generating delta commands that have DeltaID's, and that it is no longer the servers' 106 responsibility to generate delta commands.
  • heartbeats executed by the client 104 contain delta commands with client 104 generated DeltaID's, and all new ObjectID's are real and not temporary.
  • the server 106 may receive the collaboration stop confirmation command, the user or user may be migrated from the Pending Solo state to the Solo state. Additionally, the workspace session state may be updated from SoloPending to Solo.
  • the collaboration joined formation command (referred to as collabjoinedconfirm) is generated by a client 104 upon receiving and executing a collabjoined command.
  • a collabjoined command is only received when the user's state transitions from the collaborative pending state to the collaborative mode state.
  • the server 106 receives the collaboration joined formation command, the client 104 is signaling that the client 104 has received the collabjoined command and is now generating delta commands (unnumbered).
  • a mapped objects command may or may not be provided.
  • the Mapped Objects command may not be utilized.
  • the GetObjectIDs provides the client 104 with a pool of valid IDs which are guaranteed unique. Accordingly, there is no need for the server 106 to map the objects to IDs. However, without the GetObjectIDs command, such mapping may be necessary.
  • the purpose of the mapped objects command is so that the server 106 can truncate the real-to-temp ObjectID maps for each client's 104 workspace session once the client 104 has acknowledged that the real ID's have been received. Accordingly, the mapped objects command may only be used when in a collaborative mode. Further, the command is originally server 106 generated and simply forwarded back up to the server 106 by the client 104 . By making a trip through the clients' 104 queues, once received by the server 106 , any temporary ObjectID's in the command are no longer in use by the client 104 . Accordingly, temporary ObjectIDs may be removed from a state map of the server 106 .
  • the execution of the mapped objects command may contain a series of elements, with a tempID and realID attribute/value pair.
  • the elements are parsed and the tempID's are placed into a string.
  • the string may then be transmitted to a single server 106 processor (along with the userlD and resourceID) that can efficiently delete all of the temporary objects efficiently.
  • transient commands sent by a client 104 and processed by a server 106 are transmitted by the server 106 and processed by a client 104 .
  • the server 106 generates the collaboration start command while processing a heartbeat if the heartbeat originated from a solo client 104 and the state of the workspace session has been changed to Pending Collab.
  • the collaboration start command signals that a collaborative session is beginning so that the client 104 can begin the transition from the solo state to the pending collaboration state. Once the client 104 has finished this transition, die client 104 will issue a collabstartconfirm command to the server 106 as described above.
  • the server 106 generates the collaboration user information command in response to every heartbeat for a user in a collaborative session.
  • This command contains all of the data regarding users currently in the session including disconnected (link dead) users. It is the client's 104 responsibility to compare the data structure to previously received data structures to figure out what users are new, what users are gone, what users had state changes, what users had icon changes, etc., and then render appropriately.
  • the server 106 generates the collaboration joined command while processing a heartbeat command. If the heartbeat comes from a joining client 104 and the state of the workspace session is Collaborating, then this command is generated and returned on the heartbeat.
  • the server 106 generates the collaboration stop command while processing a heartbeat command if the specified userID is the only user left in the workspace session.
  • the command signals that the collaborative mode should stop, and that the client 104 should enter the pending solo mode and signal to the server 106 that the client 104 has sent up all of the client's 104 un-numbered delta commands.
  • the various transient collaboration commands described above may not be utilized in one or more embodiments of the invention. Instead, a flag may be used in the Heartbeat command that maintains state information for clients 104 .
  • the client 104 Upon executing an open workspace command, the client 104 is placed in one of two states: solo pending or collab pending.
  • the heartbeat command always echoes this state to the server 106 .
  • the server 106 will update the value of this flag after examining the state of the workspace and the state of the users in the session.
  • the values in each row are the final values after successful execution of each command indicated.
  • the first user in a workspace session must confirm (e.g., by issuing a heartbeat command with a collab pending flag) to synchronize all deltas and start a collaboration session.
  • the client 104 always checks the flag returned from the server to determine whether it should change its current state or not.
  • Step 3 (Client 2 executes open workspace) is the equivalent of the collab joined command (sent by the server 106 ).
  • Step 4 (Client 1 heartbeats) is the equivalent of the collab start command (set by the server 106 ).
  • Step 6 (Client 1 heartbeats) is the equivalent of the collab start confirm command (sent by client 104 ).
  • Step 7 (Client 2 heartbeats) is the equivalent of the collab joined confirm command (sent by client 104 ).
  • Step 12 (Client 1 heartbeats) is the equivalent of the collab stop command (sent by server 106 ).
  • Step 13 (Client 1 heartbeats) is the equivalent of the collab stop confirm command (sent by client 104 ).
  • the beat flag By using the beat flag in this manner, transient collaboration commands are not needed between a client 104 and a server 106 . Further, the beat flag provides a mechanism to maintain state information for each client 104 in a collaboration session without the use of extraneous communications between the client 104 and server 106 .
  • the server 106 generates the save user data failed command when the processing of a saveuserdata command fails for reasons other than system failure (system failures are handled separately and consistently for all commands/messages). For example, some causes for the saveuserdata command failing may include invalid filename specified or invalid userlD specified.
  • the server 106 generates the save workspace command when the processing of a saveworkspace command fails for reasons other than system failure. Failed commands due to system failures are handled separately and consistently for all commands/messages. For example, some of the causes for the failure of the saveworkspace command may include: invalid userlD specified, invalid resourcelD specified, no access, and possibly workspace not open.
  • collaboration application 108 and server application 110 enable the use of a full set of three-dimensional tools to modify a drawing while in a collaboration session.
  • the server 106 also maintains a history of all modifications to the document. Using the history, a client 104 may undo any client's 104 modification to a drawing document/workspace. Further, in the event of a network or system failure, the history can be used to rebuild/regenerate a document including all modifications on any client 104 by recommunicating commands received from a client 104 to collaborators 104 in a session. To provide such functionality, in addition to the history, the server 106 may maintain a record of the collaboration session including the name, numbers, and statuses of collaborators 104 in the session.
  • FIG. 4 is a flow chart illustrating the use of the collaboration framework in accordance with one or more embodiments of the invention.
  • a document/workspace is stored on a server 106 .
  • a collaboration session is established.
  • the server 106 permits two or more collaborators 104 on a network 102 to work simultaneously across the network on the drawing document stored on the server 106 (e.g., all of the collaborators 104 have write-access for the drawing document during the session).
  • a collaboration palette may be displayed to collaborators 104 in the session that provides information relating to the collaborators 104 in the session (e.g., the name of each collaborator 104 , status of each collaborator 104 , an icon for each collaborator 104 , etc.).
  • the server 106 receives a command (e.g., an XML formatted command) to modify the drawing document from a collaborator 104 in the session.
  • a command e.g., an XML formatted command
  • Such a command may be invoked pursuant to the collaborator's 104 use of a tool selected from a full set of drawing modification tools.
  • the command may identify an object in the drawing document that the collaborator 104 has modified.
  • the server 106 distributes the command to modify the drawing document to the other collaborators 104 in the session. Such a distribution may be pursuant to regularly transmitted commands (e.g., heartbeat commands as described above) received from collaborators 104 in the session. Further, as part of the command's distribution, an identifier may be assigned to the command and distributed with the command to the collaborators 104 . The client 104 then uses the identifier to determine whether the command has already been reflected in its display or not.
  • regularly transmitted commands e.g., heartbeat commands as described above
  • an identifier may be assigned to the command and distributed with the command to the collaborators 104 . The client 104 then uses the identifier to determine whether the command has already been reflected in its display or not.

Abstract

One or more embodiments of the invention provide a collaboration framework for collaborating access to a drawing document on a network. A drawing document is stored on a server. Thereafter, a collaboration session comprised of two or more collaborators on a network is established. During the collaboration session, the server permits the two or more collaborators to work simultaneously across the network on the drawing document stored on the server. A command to modify the drawing document from a first collaborator is received by the server. The server then distributes the command to modify the drawing document to other collaborators in the session.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is related to the following co-pending and commonly-assigned patent applications, which applications ate incorporated by reference herein: [0001]
  • Patent Cooperation Treaty Patent Application Serial No. PCT/US01 /02310, entitled “METHOD AND APPARATUS FOR PROVIDING ACCESS TO AND WORKING WITH ARCHITECTURAL DRAWINGS ON THE INTERNET”, by Douglas G. Look, et. al., Attorney Docket No. 30566.101-WO-U1, filed on Jan. 24, 2001, which application claims priority to United States Provisional Patent Application Serial No. 60/177,988, entitled “METHOD AND APPARATUS FOR PROVIDING ACCESS TO AND WORKING WITH ARCHITECTURAL DRAWINGS ON THE INTERNET,” filed on Jan. 25, 2000, by Douglas G. Look, et. al., attorney's docket number 30566.101USP1.[0002]
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention [0003]
  • The present invention relates generally to computer-implemented drawing programs, and in particular, to a method, apparatus, and article of manufacture for multiple collaborators to simultaneously work on a drawing. [0004]
  • 2. Description of the Related Art [0005]
  • The use of Computer Aided Design (CAD) application programs is well known in the art. CAD application programs are often expensive, complex, and difficult to learn how to use. Additionally, architects, contractors, engineers, owners, and other patties involved with a project (referred to as project participants or collaborators) are often mobile or at different locations. With new technology and the increased use of the Internet, project participants often have computers, Internet access, and personal digital assistants (PDAs). Further, the coordination and exchange of information between project participants can be increasingly complex. [0006]
  • Existing prior art applications allow a user to download a drawing, edit the drawing, and upload the drawing after completing the edits. Alternatively, prior art applications/features may allow the creation of a two-dimensional in-memory document where graphic information is transmitted from one client to another client during a session. However, in such prior art applications, to refer to a document in the future (i.e., to store the document), the document must be saved locally by a client and then uploaded later. Further, since only an in-memory document is used, there is no capability to undo a modification or to restore the document in the event of a network or computer failure. Further, only a primitive set of two-dimensional graphic manipulation tools is often provided. [0007]
  • Accordingly, existing prior art applications do not provide the ability for multiple users to collaborate on an actual stored document with a full set of modeling tools (in two and three dimensions). [0008]
  • SUMMARY OF THE INVENTION
  • One or more embodiments of the invention provide a method, apparatus, and article of manufacture for a collaboration framework that permits multiple users to simultaneously modify a document/workspace that is stored on a server across a network. Collaboration applications on multiple clients/collaborators communicate with a server application on a server. [0009]
  • The collaboration application provides a full set of three-dimensional drawing tools to manipulate a drawing and transmit such manipulations to the server application. The server application maintains a history of the manipulations and the collaborators in a session. Once a manipulation command is received by the server application from one collaborator, the server distributes the command to the remaining collaborators. Thereafter, the collaboration applications modify the local version of the drawing space in accordance with the command. The history maintained by the server may then be used by any one of the collaborators to rollback a modification (e.g., a modification made by another collaborator or themselves) or to rebuild a drawing space in the event of a network failure.[0010]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Referring now to the drawings in which like reference numbers represent corresponding parts throughout: [0011]
  • FIG. 1 schematically illustrates a hardware and software environment in accordance with one or more embodiments of the invention; [0012]
  • FIG. 2 illustrates a collaboration palette displayed in accordance with one or more embodiments of the invention; [0013]
  • FIG. 3 illustrates a dialog window and collaboration palette in accordance with one or more embodiments of the invention; and [0014]
  • FIG. 4 is a flow chart illustrating the use of the collaboration framework in accordance with one or more embodiments of the invention.[0015]
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • In the following description, reference is made to the accompanying drawings which form a part hereof, and which is shown, by way of illustration, several embodiments of the present invention. It is understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention. [0016]
  • Overview [0017]
  • A collaboration framework provides the ability for multiple users to simultaneously modify a document across a network using a full set of tools. Client based applications generate specific messages (e.g., XML messages) which are communicated across a network to a server (e.g., via TCP/IP [transmission control protocol/internet protocol]). Once received by the server, the server manages the collaboration session by storing document changes and distributing the command to other collaborators. The server maintains a history of document changes so these can be recommunicated in the event of a network failure or temporary Internet outage. Additionally, the server may manage a record of the collaboration session including the name, number and status of collaborators, and similar information for the workspace being collaborated on. [0018]
  • Hardware Environment [0019]
  • FIG. 1 schematically illustrates a hardware and software environment in accordance with one or mote embodiments of the invention, and more particularly, illustrates a typical [0020] distributed computer system 100 using a network 102 to connect client computers/collaborators 104 to server computers 106. A typical combination of resources may include a network 102 comprising the Internet, LANs (local area networks), WANs (wide area networks), or the like, clients/collaborators 104 that are personal computers, personal digital assistants (PDAs), or workstations, and servers 106 that are personal computers, workstations, minicomputers, or mainframes.
  • In accordance with one or more embodiments of the invention, the [0021] network 102 connects collaborators 104 executing a collaboration application 108 to server computers 106 executing server applications 110. The collaboration application 108 enables collaborators 104 to communicate with other collaborators 104 and work on a document stored on/by server 106. The server application 110 may be a server 106 collaboration application that provides for storage of a commonly used document and enables the ability for multiple collaborators 104 to simultaneously work on the same document. Server application 110 may also be configured to manipulate data (e.g., a document) in database 114 through a database management system (OBMS) 112.
  • Generally, these [0022] components 108, 110, 112, and 114 all comprise logic and/or data that is embodied in or retrievable from device, medium, signal, or carrier, e.g., a data storage device, a data communications device, a remote computer or device coupled to the computer across a network or via another data communications device, etc. Moreover, this logic and/or data, when read, executed, and/or interpreted, results in the steps necessary to implement and/or use the present invention being performed.
  • Thus, embodiments of the invention may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” (or alternatively, “computer program product”) as used herein is intended to encompass logic and/or data accessible from any computer-readable device, carrier, or media. [0023]
  • Those skilled in the art will recognize many modifications may be made to this exemplary environment without departing from the scope of the present invention. For example, those skilled in the art will recognize that any combination of the above components, or any number of different components, including different logic, data, different peripherals, and different devices, may be used to implement the present invention, so long as similar functions are performed thereby. [0024]
  • Collaboration Framework [0025]
  • [0026] Collaboration application 108 and server application 110 executing on client 104 and server 106 respectively, provide a collaboration framework that enables modifications to drawings to be shared in real time among a set of collaborators 104 (i.e., two or more users working simultaneously on the same document from different computers or other network 102 devices).
  • The collaboration framework provides the ability for all [0027] collaborators 104 to modify a document at the same time, with no need for permission to modify to be passed around among the collaborators 104. Once a collaborator 104 has joined a session, the collaborator 104 is likely on equal footing with all other collaborators 104. Thus, by default, anyone may join a collaboration session and begin collaborating with others that may already be working in the session. Alternatively, while multiple collaborators 104 may edit the document, another collaborator 104 may not have write access and may only have read capability to watch the modifications of other collaborators 104.
  • Collaboration Process [0028]
  • The initial user in a collaboration session opens a workspace or document to work on. Once opened, a collaboration palette may be displayed on the [0029] computer 104 by collaboration application 108. For example, the palette may be placed in the lower-right corner of the window representing collaboration application 108. Alternatively, when not in use, the palette may roll-up or be hidden from the user.
  • The collaboration palette provides information on the current collaborators/[0030] users 104 in the collaboration session. Thus, when a document is opened by a user, the user's name is added to the collaboration palette. Further, an access level may be assigned to the user. For example, a user's access level may default to “write-access”. Beyond this general information, the palette may not open or show any additional feedback when the initial user opens a workspace.
  • FIG. 2 illustrates a collaboration palette displayed in accordance with one or more embodiments of the invention. As illustrated, elements of the [0031] collaboration palette 200 may include a user image/icon 202. The icon 202 used for the user may be a standard 32×32 GIF (graphic image format) for all users.
  • In addition, the [0032] top line 204 of a data area of palette 200 may contain the user's name. Further, the second line 206 of the data area may contain the user's status. Each status type 206 may have an associated color. For example, the status types 206 and colors a user may have are joining (green), write-access (black), accidental disconnect (red), intentional disconnect (yellow), and working offline (blue). In order to show a status change, all of the status labels, except “joining,” may blink then disappear after a short duration. The joining status may remain until the user either connects or cannot connect to the workspace.
  • A user's [0033] status 206 may also reflect a controlled environment wherein a single user may be a moderator that has the ability to grant or deny access to new and existing users. FIG. 3 illustrates a dialog window in such a controlled environment. As illustrated, the status field 206 may identify the first user as a moderator. Further, when a new user attempts to join a session, the status field 206 may display a message such as “request write” to indicate that a user is requesting write access. Additionally, a dialog window 302 may be presented to the moderator that allows the moderator to grant or deny the new user permission to join the workspace as a collaborator 104. Advanced options may also be available such as allowing a user to join the session but with read-only capability.
  • A scroll bar may be activated on the palette if necessary to display additional information. Further, a [0034] palette titlebar 208 includes the title of the palette 200 and may flash for a short duration when the status of any collaborator 104 changes. The color the titlebar 208 flashes may depend on the new status of the collaborator.
  • When a second user opens a document or workspace, the workspace opens as usual on the user's [0035] computer 104, along with opening the collaboration palette 200 to signal the beginning of a collaboration session. However, the collaboration palette 200 automatically indicates that another user has the workspace open already.
  • The [0036] palette 200 also provides a mechanism for displaying the status 206 of the second user's connection to the workspace. When initially opened, the second user's status 206 likely reads “joining.” When the second user successfully joins the collaboration session, the status line 206 changes to “write-access.” Thereafter, if current users of the workspace have closed the collaboration palette 200, the titlebar 208 may flash to signify the addition of a user to the workspace.
  • As the workspace is being opened for a second user, a “glass plane” may be placed over the workspace, [0037] palettes 200, and menu. Further, in some embodiments, a user may not be able to cancel the open, or start to open another workspace until the current one is fully opened. As illustrated in FIG. 2, the palette 200 indicates that a first user (i.e., “Joe User”) has write-access and a second user (i.e., “User #2”) is joining the session.
  • Accordingly, as users join the session, each user's [0038] collaboration palette 200 indicates the addition of a user, with a status 206 of “joining.” When a user leaves the workspace on purpose, the user's status 206 (e.g., “left workspace”) may be shown in a specific color (e.g., yellow), and after some amount of time, the user's name 204 will be removed from the palette 200. Similarly, if a user leaves the workspace accidentally, the user's status 206 (e.g., “disconnected”) may be shown in a different color (e.g., red), and after some amount of time, the user's name 204 will be removed from the palette 200.
  • Once a session has begun, modifications to the drawing may be seen by any users in the session. For example, a pan or zoom operation performed on the workspace by a user will be reflected in other users' view of the workspace. Accordingly, the pan and zoom state of the workspace may be stored with the document. Thereafter, the next time the workspace is opened, the view will be the same as when it was last closed. Similarly, if the view of a 3D model is changed by a user, the other users' view of the model will be changed. Additionally, any action that causes data to be saved to the workspace will be seen by all of the users in the collaboration session. For example, creating new documents, moving documents, minimizing documents, and using tools on documents, are all actions that will be seen by everyone. [0039]
  • Additionally, the collaboration framework may provide communication capabilities such as chat and instant messaging to [0040] collaborators 104 in the session.
  • However, to preserve individual user's preferences, certain actions performed by a user may not be seen by other users in the session. For example, a user's [0041] palette 200 may not be part of the collaboration session. Thus, if a user moves his or her palette 200 or drawing tools from the upper left to the lower right, the collaborators 104 will not see a change in their view of the workspace. Further, any object selected by a collaborator 104 may not be seen in the other collaborator's 104 view of the workspace. However, any action done to the object that changes its data (e.g., color or size change) will be seen by the other users. Additionally, the activation of documents may not be seen by collaboration users. For example, if a user has “Drawing 1” active, and is actively placing strokes into it (which is seen by the other users), he or she will not see that another user may have a model document active. However, if the second user begins to rotate the model in the document, the result will be seen by all of the collaborators 104.
  • The loss of a [0042] network 102 connection by a user affects the way the user continues. When a single user of a workspace (i.e., no other collaborators 104 are members of the session) loses his or her network 102 connection, the user may be automatically switched to an offline mode during which the user may keep write-access while offline, and the server 106 marks the workspace as offline so it may not be edited by online users. When a user in a collaborative environment loses a connection, the remaining users will be notified that the user has timed-out with the disconnected status in the data field 106 of the palette. The disconnected user may also receive a dialog notice that the connection to the workspace has been lost, and the user has therefore been switched to read-only mode.
  • Colaboration Details [0043]
  • As described above, [0044] collaborators 104 participating in a session may all modify a drawing document that is stored in the server 106 wherein the drawing modifications are then reflected in the other collaborators' 104 views. To enable such capabilities, the collaboration framework provides for the transmission of commands to the client 104 and server 106 sides of the framework. The description below provides information regarding some of the commands that may be used including background information, implementation information, and formatting information, It should be noted that while the formatting information is described in terms of extensible markup language (XML), any acceptable format or formatting language may be used and the invention is not intended to be limited to XML formatted messages.
  • There are two types of command communication between [0045] clients 104 and server 106 in the framework 100: synchronous and asynchronous.
  • Synchronous commands are sent from the [0046] client 104 to the server 106, and processed immediately. The server's 106 response is a command response containing the processing results.
  • Asynchronous commands ate sent from the [0047] client 104 to the server 106, but are not necessarily processed immediately. The server 106 response to the client 104 may contain multiple command responses to earlier client 104 requests, collaboration state changes, collaboration user information, and other data waiting in the client's 104 outgoing message queue. As described below, a command referred to herein as “heartbeat” is an example of such an asynchronous command.
  • While strictly speaking, there may only be a single command type, there are three distinct types of command messages: Commands, Responses, and Heartbeats. [0048]
  • Commands initiate a request or an action. Commands may typically contain one or more <param\> sub-nodes. Usually, commands are a request from the [0049] client 104 to the server 106 to initiate an action or request data.
  • Responses are commands containing processing results and return data from previously issued commands. There is typically a one to one correspondence for a response to a specific command. For example, a “Version” command likely has a corresponding “Version” response command which is returned to the [0050] client 104 and contains data pertaining to the current version of the framework. Responses typically contain a <success\> sub-node, a <rspMsg\> sub-node, and one or more <return\> sub-nodes.
  • Heartbeats are asynchronous commands that can contain other commands, responses, or collaboration data. [0051]
  • As described above, messages may be implemented in any format. In one or more embodiments of the invention, messages are simple XML structures. Using a login command message from the [0052] client 104 as an example, the basic structure is shown below:
    <msg msgID=“1” sessID=“1” resID=“23058” retry=“0”>
    <cmd name=“Login”>
    <param name=“username” val=“joe smith” />
    <param name=“password” val=“JoesPswd” />
    </cmd>
    </msg>
  • The outermost node, <msg\>, wraps the entire message. A message tag may be required to contain the following attributes in Table 1. [0053]
    TABLE 1
    Attribute Name Values Meaning
    MsgID Any positive integer. Client 104 generated numeric identifier of the
    message. When the message is sent from the server
    106 to the client 104, the server 106 echoes the
    msgID number it is responding to. This pairs the
    client 104 request and server 106 response message
    with the same ID.
    SessID A valid session ID. the sessionID.
    ResID A valid resource ID. the resourceID.
    Retry A positive integer, or zero. number of times client has sent this message.
  • The first and only sub-node, <cmd\>, contains a single command. This single command may be a heartbeat command, which itself may contain sub-commands. The command node may contain multiple attributes including a name that specifies a unique command name for the command being sent. [0054]
  • Additionally, each <cmd\> node may contain one or more of the sub nodes described in Table 2, depending on it's type: [0055]
    TABLE 2
    Sub Node
    Name Contains Attributes
    Param A parameter for the Name - the parameter name.
    command. Val - the parameter's value.
    Filedata An XML file of a non- NONE.
    specific type. Currently used
    for user data, workspace files
    and Workspace Trees.
    Success Found only in response Val - return value. The constant names and values:
    commands, this contains a RESPONSE_SUCCESS = 0 × 0
    flag indicating whether the RESPONSE_LOGIN_REQUIRED = 0 × 1
    command was executed RESPONSE_FAILURE = 0 × 2
    successfully. If it was not, RESPONSE_RESOURCE_NOT_FOUND = 0 × 3
    the attribute contains a RESPONSE_INSUFFICIENT_PERMISSION = 0 × 4
    constant indicating the nature RESPONSE_DUPLICATE_NAME = 0 × 5
    of the failure. RESPONSE_BAD_TOKEN = 0 × 6
    RESPONSE_UNKNOWN_FILETYPE = 0 × 7
    RESPONSE_SYSTEM_FAILURE = 0 × 80
    Return Found only in response Name - the return parameter's name.
    commands, this contains Val - the value of the return parameter.
    return values for the previous
    commands. There may be
    more than one return node
    per response message.
    RspMsg Found only in response Val - the text of the response message.
    commands, this contains text
    corresponding to the result.
    It may be used for providing
    error description text to be
    displayed to the user, for
    example.
  • Accordingly, for each command, whether issued by a [0056] client 104 or a server 106, the command name is specified along with optional parameters. The following XML illustrates an example of a version command in accordance with one or more embodiments of the invention:
    <!-- Client request command -->
    <cmd name=“Version”>
    <param name=“major” val=“1” />
    <param name=“minor” val=“1” />
    <param name=“revision” val=“2” />
    </cmd>
    <!-- Server response command -->
    <cmd name=“VersionResp”>
    <success val=“1” />
    <rspMsg val=“a resp mesage” />
    <return name=“VersionResp”>
    <param name=“major” val=“1” />
    <param name=“minor” val=“1” />
    <param name=“revision” val=“1” />
    </return>
    </cmd>
  • As illustrated, the [0057] client 104 request command name is “Version” and various parameters are specified. In response, the server 106 specifies the command name along with information described in Table 2 (i.e., a success with a value of 1, a response message with a value of “a resp message”, a return name with a value of “VersionResp”, and various parameters with values).
  • Synchronous Commands: Client Sent, Server Processed [0058]
  • Various synchronous commands may be processed in the [0059] framework 100 of the invention. The synchronous commands described below are commands sent by a client 104 and processed by a server 106.
  • Version Command [0060]
  • The “version” command results in a return of the current version number of the framework. The syntax for the command is: [0061]
    version( localmajor, localminor, localrevision : major,
       minor, revision, upgradeFlag, ChangesXML : success,
       message )
  • The “version” command is sent by the [0062] client 104 at startup, before attempting a login or displaying the main application window. Even if the client 104 has a stored session id, it should issue this command first.
  • The upgradeFlag indicates the result of the version check and can be VersionsIdentical ([0063] 0), ServerUpgraded (1), ClientUpgradeAvailable (2), ClientUpgradeRequired (4). If the upgradeFlag has a VersionsIdentical value, no code in the framework 100 has been updated since the last time the client 104 collaboration application 108 was run. If the upgradeFlag has a ServerUpgraded value, the server 106 has new code that may affect the clients 104 perception of how the framework 100 works (faster save times, fixes, etc.), but there are no client 104 binary changes.
  • A value of ClientUpgradeAvailable means that there is a newer version of the [0064] client 104 available, but the client 104 is not required to get the newer version in order to work with the current version of the server 106 (i.e. no file formats or interfaces have changed). A value of ClientUpgradeRequited means that significant changes have occurred in the client 104 and file formats or interfaces with the server 106 have changed. Accordingly, the client 104 must upgrade before the client 104 can go online. Note that this does not necessarily mean the client 104 is forced to upgrade immediately. Instead, the client 104 may be able to work offline using the local cache until the user is ready to upgrade. However, if the client 104 desires to obtain data from the site/server 106, the client 104 must upgrade.
  • Also, any new features and/or noteworthy fixes that have been implemented since the version of the [0065] client 104 passed in will be returned in the ChangesXML parameters, and these changes can be displayed in the client 104. It may be possible to have some updates and not require an upgrade. For example, there may have been server-only changes that would be nice to let the user know about (e.g., a bug fix or improved performance). The ChangesXML may be useful to users when the value of upgradeFlag is ClientUpgradeAvailable, since the ChangesXML content is what provides the basis upon which the client 104 decides if the upgrade should be made (new features and fixes vs. risk assessment). Further, the ChangesXML value does not need to be overly verbose. For example, the ChangesXML value may comprise a short bulleted list containing only changes that the average user would care about, or possibly a hyperlink pointing to a page on a web site that may be accessed for more detailed information.
  • In response to the version command, an object is returned with the current version numbers that may be read from a local versions XML file. Alternatively, a data cache product may be used such that the version numbers are stored in a [0066] database 114 and read from the cache. Thereafter, collaboration application stores the returned major/minor/revision numbers and ensures that the returned numbers are used in the next version command.
  • The versions XML file may contain all changes over time (occasionally pruned manually) and will be read by the [0067] application server 110 at start time and stored globally into an efficiently searched data structure that may be keyed by major.minor.revision. Each one of the database 114 entries may have an upgradeFlag that will be set to one of the levels defined above. The upgradeFlag's values may be binary to ease in the use of a bitwise OR operation. Each entry may also contain any number of new feature/fix nodes, and each node might specify an attribute classifying the type (new feature vs. enhancement vs. fix, etc). When processing a version command, if the major/minor/revision passed in is lower than the current maximum parsed from the file, then an update has occurred and an upgrade may be required.
  • The upgradeFlag is determined by a simple bitwise OR operation of all upgradeFlags of the versions greater than the version passed in. The ChangesXML is built in a similar way, by combining all of the change nodes for the versions greater than the one passed in. If the provided version is not found, then the version has been pruned, and the earliest version in the data structure is used to determine the upgradeFlag and the ChangesXML. [0068]
  • The version command likely executes quickly and efficiently and avoids a Denial of Service attack, since no login is required. Accordingly, the version command does not perform any [0069] database 114 read operations, database 114 write operations, and only performs a single remote method invocation (RMI) call.
  • Login Command [0070]
  • The login command is executed by the [0071] client 104 at startup to logon to a session. In one or more embodiments, the login command is used when the user does not have a session id, or when the user determines that the sessionid that the user has is invalid. Such a login may be required in when the server 106 requires the client 104 to logon (e.g., during the processing of a loginrequired command from the server 106 [see below]). The syntax for the login command is:
    login( username, password : success, message, sessionID,
     userID, imageURL )
  • In response to a login command, the [0072] server 106 returns a new sessionID and the userlD to the client 104. The same user can be logged on multiple times and have multiple active sessionID's.
  • Open User Data Command [0073]
  • Once logged in pursuant to the login command, the [0074] client 104 will next transmit the Open User Data command. More particularly, if the client 104 has a cached sessionID from a previous instance, the client 104 will first try this sessionID. If the prior sessionID fails, the client 104 will receive a loginrequired command from the server 106 in response. The subsequent login (i.e., using the login command) provides a sessionid to be used with the Open User Data command. The Open User Data command opens specified user data for the client 104.
  • New Workspace Command [0075]
  • This command is used by a [0076] client 104 whenever the user selects an option to create a new workspace/document. The newworkspace command is executed before the closeworkspace command of an open workspace (if there is one open) is executed. If the newworkspace command is successful, the resourcelD of the new workspace is returned, and the workspace should be considered to be in a SoloPending state for the specified user.
  • Copy Workspace Command [0077]
  • The copy workspace command is issued by the [0078] client 104 whenever the user selects an option to copy a workspace.
  • Delete Workspace Command [0079]
  • The delete workspace command is issued by the [0080] client 104 whenever the user tries to delete a workspace that the user has opened. The delete workspace command is executed before the closing an open workspace. If successful, the deleted workspace will be gone and the user will have to select a workspace to work on or create a new workspace. The use of the delete workspace command may be restricted. For example, the delete workspace command may not execute if the workspace is in CollabPending or Collab state. Accordingly, in order to delete a workspace, the user must be the only person in the workspace. The syntax for the delete workspace command is:
  • deleteworkspace(userID, resourceID:success, message)
  • To enable the delete workspace command, the [0081] server 106 may ensure that the workspace is either open by nobody, or open by exactly the user trying to delete it. The user must also have the appropriate permissions. If all of these conditions have been complied with, then the delete workspace command will delete the workspace and remove the workspace from a ResourceSession. Once deleted, the workspace cannot be opened at a later time.
  • Open Workspace Command [0082]
  • The open workspace command is the backbone of collaboration, and occurs whenever the [0083] client 104 opens a new workspace. The command is issued by the client 104 before the closeworkspace command when switching workspaces. If the workspace is already open by two or more users (i.e., the workspace is in Collab state), then this user joins the collaboration session. If the workspace is open by only one person (i.e., the workspace is in Solo state), then a collaboration session is started (CollabPending state) and both clients 104 are synchronized. Once synchronized, the state changes to Collab. If the workspace is not open, the user (that is in SoloPending state) marks the workspace as open.
  • A workspace session and user's workspace session may be in one of the following states: 0-Solo Pending; 1-Solo; 2-Collab Pending; 3-Collab; or 4-Disconnected. When a workspace is not open, the workspace has no state. When the workspace is opened, the workspace transitions into Solo Pending, as does the workspace's user. [0084]
  • Upon the new user's/client's [0085] 104 heartbeat, the state is transitioned from Solo Pending to Solo. If another user opens the document, the state is transitioned to Collab Pending. Once the original client 104 confirms synchronization of the document, the state is transitioned to Collab. If another user joins, the workspace remains in Collab state, but the user is in Collab Pending until the first heartbeat is received, at which time the client 104 is transitioned into full Collab.
  • If at any point enough users close the workspace such that there is only one [0086] client 104 left, the state is transitioned into Solo Pending for that user and the workspace. Once this client 104 confirms synchronization of the document and started creating deltas, the state is transitioned into Solo for the workspace and the user. If at anytime a user is determined to have gone link dead, the user's state is changed to Disconnected. If at any time all users left in a workspace session are Disconnected, then the state of the document is changed to Disconnected. Once users have been disconnected for a sufficient time without returning, the disconnected users are removed from the session. If all users are removed from a session, the session is closed.
  • Close Workspace Command [0087]
  • The close workspace command is executed when a user closes a workspace. If the user is closing the workspace due to opening an existing or creating a new workspace, then the open or create commands are executed first, and the close executing after their success. If the user closes the application, closeworkspace is sent after the final save. [0088]
  • While processing this command, if the state is Collab then a collabuserinfo command may be placed in the CommandOut queues of the remaining workspace session users. If there is only one other workspace session user, then the state of the workspace session may be changed from Collab to Solo Pending. [0089]
  • Get Object IDs Command [0090]
  • The Get Object IDs command is issued by a [0091] client 104 to obtain a range of unique Object IDs the client 104 can use when creating application objects. A GetObjectIDs command with no parameters is requesting a default number of IDs. The default should be sufficient for typical online work, yet large enough to allow for sufficient IDs in the case of subsequent connection failures so the client 104 can keep working. A “quantity” parameter may be specified to request a specific quantity of Object ID's. Clients 104 can use numeric constants for typical quantities or simply specify a number for the quantity. The syntax for the Get Object IDs command is:
    getObjectIDs( userID : success, message, Object ID
       start, Object ID end )
  • In response to the command, the [0092] server 106 returns a range of object IDs that can be used by the client 104. In other words, a first/start object ID and a last/end object ID are returned by the server 106 for use by the client 104.
  • The GetObjectIDs command may or may not be utilized depending on the implementation. For example, if the GetObjectIDs command is not utilized, the [0093] server 106 may map object IDs as using a Mapped Objects command described in detail below.
  • Synchronous Responses Server Sent, Client Processed [0094]
  • The commands described below are synchronous commands/responses that are transmitted by a [0095] server 106 and processed by a client 104.
  • Login Required Response [0096]
  • The [0097] server 106 generates the login required command whenever processing a message or command and it is determined that the specified sessionID is missing or invalid (timed out). Upon receipt and execution, the client 104 sends a login command to the server 106 (see above).
  • System Failure Response [0098]
  • The [0099] server 106 generates the system failure response/command whenever an internal system failure occurs processing a message or command. Upon receipt of the system failure command, the client 104 takes appropriate measures to retry the command it received the system failure response message for.
  • Heartbeat Commands [0100]
  • Heartbeat messages are different from other commands, as they may contain sub commands and collaboration data. The heartbeat message uses two sub-nodes to contain the different types of data. These are the <transientcmd\> node, which contains zero or more commands and responses, and the <persistentcmd\> node, which contains actual collaboration data, i.e., the actions performed in the [0101] client 104 by the collaborators 104.
  • As an example, a heartbeat command demonstrating the full structure is shown below, although any individual heartbeat command may or may not have all the components shown below the <cmd\> node. The example shows a heartbeat command with a single SaveUserData sub-command, and a comment in the <persistentcmds\> section where a real message would have one or [0102] more client 104 collaboration commands:
    <cmd name=“Heartbeat” deltalevel=“45” beat=“1”
     strong=“0”>
    <transientcmds>
    <cmd name=“SaveUserData”>
    <param name=“file”
     val=“woof_tools.xml”>
    <filedata>
    <!-- user data file xml -->
    <filedata>
    </param>
    </cmd>
    </transientcmds>
    <persistentcmds deltalevel=“45>
    <!-- client collaboration commands -->
    </persistentcmds>
    </cmd>
  • The heartbeat </cmd> node may be required to contain the attributes identified in Table 3. [0103]
    TABLE 3
    Attribute Name Values Meaning
    DeltaLevel The current delta level. In solo See text.
    mode, this value is determined
    by the client 104 and echoed by
    the server 106 in the response.
    In collaboration mode, these
    are temporary IDs when sent
    from the client 104, and actual
    IDs when sent from the server
    106.
    Beat BEAT_TYPE_COLLAB = 1 A collaboration or solo beat.
    BEAT_TYPE_SOLO = 2
    Strong BEAT_STRONG = 1 The server 106 updates the client 104 last contacted
    BEAT_WEAK = 0 time on Strong beats, whether or not any other data
    is sent.
  • The heartbeat command is executed by the [0104] client 104 with a delay between heartbeats of N seconds, where N varies depending if the client 104 is collaborating or not. Tentatively heartbeats may beat execute every 10 seconds when solo and every 2 seconds when collaborating. Occasionally heartbeats will be strong. A strong heartbeat signifies that even if no data modification commands (referred to as delta commands) are sent in the heartbeat, the users' workspace session should be marked as active so that it does not timeout. For example, if a client 104 does not perform any modifications or is away from the keyboard for 20 minutes while in a collaborative session, the client 104 won't be generating any data but the strong heartbeats will keep the client's 104 workspace session alive.
  • The syntax for the heartbeat command is: [0105]
    heartbeat( userID, resourceID, deltaLevel, strongflag :
       transientcmds, persistentcmds [ deltalevel ] )
  • The heartbeat may contain either transient commands, persistent commands (i.e., delta commands), or both. Transient commands are executed immediately and persistent commands are stored for asynchronous processing by a separate server-side process. Some transient heartbeat commands are described below. [0106]
  • If the heartbeat comes from a solo user of the workspace, then the DeltaID's will already be present, and the specified DeltaLevel will represent the new DeltaLevel of the workspace. If the heartbeat comes from a [0107] collaborator 104, then none of the delta commands will have a DeltaID, and the server 106 is responsible for numbering them. In either case, the DeltaLevel of the workspace session needs to be updated. If the heartbeat comes from a collaborator 104, then the heartbeat response will contain any delta commands that the server 106 has received that are higher than the clients 104 specified DeltaLevel, and this will include new delta commands that the client 104 just sent. Accordingly, the heartbeat command enables the client 104 to receive the work done by another client 104 during a session.
  • If the [0108] client 104 is collaborating, then any new ObjectID's specified in the delta commands will be temporary and will be marked as such. Temporary ObjectIDs are mapped to real server-generated ObjectID's, and a persistent map is maintained for each user mapping the user's temporary ObjectID to the real ObjectID. When collaborating, the response to a user's heartbeat command will contain the same persistent commands that came up in the command, but with DeltaID's and real ObjectID's set in them, so that the client 104 can update itself.
  • Part of the persistent commands node is the delta level that the [0109] client 104 is currently at. In the collaborative case, there may be delta commands that a client 104 has received from other users that have been given DeltaID's that this client 104 may not yet have. Therefore, the response message may contain not only the updated DeltaID's that this client 104 generated, but it may also contain those DeltaIDs specified by other clients 104, all in the correct DeltaID order.
  • Depending on the implementation, the heartbeat processing may utilize a beat flag for the status of a [0110] particular client 104. The beat flag is utilized to maintain the appropriate state between clients 104 and to facilitate the collaboration between clients 104. Such heartbeat processing utilizing a beat flag is described in detail below.
  • Alternatively, instead of using a flag to maintain the state of a [0111] client 104, the heartbeat processing may result in the generation of several different collaboration transient commands that are sent to the client 104. If the client's 104 state is Solo but the sessions state is Collab Pending, then the client 104 may receive a collabstart command. If the client's 104 state is Collab but the sessions state is Solo Pending, then the client 104 may receive a collabstop command. If the client's 104 state is Joining but the sessions state is Collab, then the client 104 may receive a collabjoined command.
  • The user may also have other transient commands that have been queued up in a queue of outgoing commands for a particular user (referred to as a user's CommandOut queue) waiting for this heartbeat (for example, somebody may have joined the collaborative session, left the collaborative session, etc). These transient commands in the CommandOut queue ate sent from the [0112] server 106 to the client 104 in the response message, and marked in a record of the session as having been sent in this particular message ID.
  • A retry count for each message may also be maintained. During heartbeat processing, the retry count of the message may be checked. When the message is not a retry, message responses to all previous messages have been received and processed by the client. Therefore, if there are any transient commands in the CommandOut queue which are marked as sent in a previous message, such transient commands can be removed from the queue. [0113]
  • The following transient heartbeat commands are transmitted by a [0114] client 104 and processed by the server 106.
  • Save User Data [0115]
  • The save user data command is executed by the [0116] client 104 when a session is closed and optionally during sessions as user preferences/options change. The save user data command may execute based on an interval and a dirty flag. If the time interval has passed and the flag/preferences are dirty, then the preferences are saved.
  • The save user data command uses a user ID, filename, and file data as parameters. The filename should be a valid system file type, otherwise the operation to store/save the data may fail. If a failure occurs, a saveuserdatafailed command will likely be generated and returned in the response message. [0117]
  • Save Workspace Command [0118]
  • The save workspace command is generated by any [0119] client 104 that has a non-read-only workspace open. When solo, the client 104 is responsible for sending up all delta commands in the persistent section of a heartbeat command that will update the server 106 from the previous delta level to the new delta level specified. If any of the delta commands are missing, the save will fail.
  • In collaborative mode, the detaLevel is the latest server-approved delta level of the workspace that the [0120] client 104 is aware of. Therefore, the client 104 does not need to transmit persistent commands to update the workspace, since the server already has the delta levels. All clients 104 in a collaboration session may issue the saveworkspace command. Further, saves may occur at a regular interval (e.g., every 1 minute). Accordingly, solo saveworkspace commands come up pursuant to regular heartbeat intervals (e.g., 6 heartbeats), and when collaborating saveworkspace commands are likely issued at greater heartbeat intervals (e.g., every 30 heartbeats).
  • Collaboration Start Confirmation Command [0121]
  • As described above, various transient collaboration commands may or may not be utilized depending on the implementation. The collaboration start confirmation command may be generated by a [0122] client 104 upon receiving and executing a collabstart command. The command occurs only when going from the solo to collaborative mode (i.e., from 1 document viewer to 2). When the server 106 receives this command, the client 104 is signaling that the client 104 has stopped generating delta commands that have DeltaID's, and that it is now the servers 106 responsibility to generate the delta commands. The collaboration start confirmation command typically arrives in the same message as the clients 104 final solo saveworkspace. Subsequent to execution, heartbeats contain delta commands without DeltaID's, and all new ObjectID's are temporary.
  • Once the [0123] server 106 receives the start collaboration confirmation command, the user or users that are in the Joining state can be migrated to the Joined state (they are issued collabjoined commands), as well as placing collabuserinfo commands into the CommandOut queues of all users in the workspace session for all of the users that just Joined. The workspace session state may also be updated from CollabPending to Collab.
  • Collaboration Stop Confirmation Command [0124]
  • The collaboration stop confirmation command is generated by a [0125] client 104 upon receiving and executing a collabstop command from the server 106. This command is only executed when going from the collaborative mode to the solo mode (i.e., from 2 or more document viewers to 1). When the server 106 receives this command, the client 104 is signaling that the client 104 has started generating delta commands that have DeltaID's, and that it is no longer the servers' 106 responsibility to generate delta commands. Subsequently, heartbeats executed by the client 104 contain delta commands with client 104 generated DeltaID's, and all new ObjectID's are real and not temporary.
  • Once the [0126] server 106 receives the collaboration stop confirmation command, the user or user may be migrated from the Pending Solo state to the Solo state. Additionally, the workspace session state may be updated from SoloPending to Solo.
  • Collaboration Joined Formation Command [0127]
  • The collaboration joined formation command (referred to as collabjoinedconfirm) is generated by a [0128] client 104 upon receiving and executing a collabjoined command. A collabjoined command is only received when the user's state transitions from the collaborative pending state to the collaborative mode state. When the server 106 receives the collaboration joined formation command, the client 104 is signaling that the client 104 has received the collabjoined command and is now generating delta commands (unnumbered).
  • Once the [0129] server 106 receives the collaboration joined formation command, the user is likely migrated from the Pending Collab state to the Collab state.
  • Mopped Objects Command [0130]
  • Depending on the implementation, a mapped objects command may or may not be provided. For example, if a Get Object IDs command (as described above) are implemented, the Mapped Objects Command may not be utilized. As described above, the GetObjectIDs provides the [0131] client 104 with a pool of valid IDs which are guaranteed unique. Accordingly, there is no need for the server 106 to map the objects to IDs. However, without the GetObjectIDs command, such mapping may be necessary.
  • The purpose of the mapped objects command is so that the [0132] server 106 can truncate the real-to-temp ObjectID maps for each client's 104 workspace session once the client 104 has acknowledged that the real ID's have been received. Accordingly, the mapped objects command may only be used when in a collaborative mode. Further, the command is originally server 106 generated and simply forwarded back up to the server 106 by the client 104. By making a trip through the clients' 104 queues, once received by the server 106, any temporary ObjectID's in the command are no longer in use by the client 104. Accordingly, temporary ObjectIDs may be removed from a state map of the server 106.
  • The removal of a temporary ObjectIDs causes object mapping to run considerably faster when processing commands from [0133] active clients 104 who are generating numerous delta commands. Without the mapped objects command, the mapping table may continue to grow unchecked.
  • The execution of the mapped objects command may contain a series of elements, with a tempID and realID attribute/value pair. The elements are parsed and the tempID's are placed into a string. The string may then be transmitted to a [0134] single server 106 processor (along with the userlD and resourceID) that can efficiently delete all of the temporary objects efficiently.
  • In addition to transient commands sent by a [0135] client 104 and processed by a server 106, the following transient commands are transmitted by the server 106 and processed by a client 104.
  • Collaboration Start Command [0136]
  • The [0137] server 106 generates the collaboration start command while processing a heartbeat if the heartbeat originated from a solo client 104 and the state of the workspace session has been changed to Pending Collab. The collaboration start command signals that a collaborative session is beginning so that the client 104 can begin the transition from the solo state to the pending collaboration state. Once the client 104 has finished this transition, die client 104 will issue a collabstartconfirm command to the server 106 as described above.
  • Collaboration User Information Command [0138]
  • The [0139] server 106 generates the collaboration user information command in response to every heartbeat for a user in a collaborative session. This command contains all of the data regarding users currently in the session including disconnected (link dead) users. It is the client's 104 responsibility to compare the data structure to previously received data structures to figure out what users are new, what users are gone, what users had state changes, what users had icon changes, etc., and then render appropriately.
  • Collaboration Joined Command [0140]
  • The [0141] server 106 generates the collaboration joined command while processing a heartbeat command. If the heartbeat comes from a joining client 104 and the state of the workspace session is Collaborating, then this command is generated and returned on the heartbeat.
  • Collaboration Stop Command [0142]
  • The [0143] server 106 generates the collaboration stop command while processing a heartbeat command if the specified userID is the only user left in the workspace session. The command signals that the collaborative mode should stop, and that the client 104 should enter the pending solo mode and signal to the server 106 that the client 104 has sent up all of the client's 104 un-numbered delta commands.
  • Beat Flag [0144]
  • The various transient collaboration commands described above (e.g., Collaboration Start Confirmation Command, Collaboration Stop Confirmation Command, Collaboration joined Formation Command, Collaboration Start Command, Collaboration User Information Command, Collaboration joined Command, and Collaboration Stop Command) may not be utilized in one or more embodiments of the invention. Instead, a flag may be used in the Heartbeat command that maintains state information for [0145] clients 104.
  • At the [0146] server 106 level, the state of the workspace itself as well as the state of the client 104 may be considered. However, each client 104 only needs to keep track of their own state. The state may be described using the following values: 0=closed, 1=disconnected, 2=solo pending, 3=solo, 4=collab pending, and 5=collab.
  • Upon executing an open workspace command, the [0147] client 104 is placed in one of two states: solo pending or collab pending. The heartbeat command always echoes this state to the server 106. In turn, the server 106 will update the value of this flag after examining the state of the workspace and the state of the users in the session.
  • An example of three clients collaborating using the various flags are illustrated in Table 4. [0148]
    TABLE 4
    Server
    Work-
    Command Client1 Client2 Client3 space C1 C2 C3
    1. Client1 exe- 2 2 2
    cutes open work-
    space
    2. Client1 3 3 3
    heartbeats
    3. Client2 3 4 4 3 4
    executes open
    workspace
    4. Client1 4 4 4 4 4
    heartbeats
    5. Client2 4 (no 4 4 4
    heartbeats changes)
    4
    6. Client1 5 4 5 5 4
    heartbeats
    7. Client2 5 5 5 5 5
    heartbeats
    8. Client3 5 5 4 5 5 5 4
    executes open
    workspace
    9. Client3 5 5 5 5 5 5 5
    heartbeats
    10. Client2 5 0 5 5 5 0 5
    executes
    close workspace
    11. Client3 5 0 0 2 5 0 0
    executes
    close workspace
    12. Client1 2 0 0 2 2 0 0
    heartbeats
    13. Client1 3 0 0 3 3 0 0
    heartbeats
  • As illustrated in Table 4, the values in each row are the final values after successful execution of each command indicated. The first user in a workspace session must confirm (e.g., by issuing a heartbeat command with a collab pending flag) to synchronize all deltas and start a collaboration session. The [0149] client 104 always checks the flag returned from the server to determine whether it should change its current state or not.
  • The command executed in Table 4 and the actions taken may resemble the transient collaboration commands described above in the following manner: [0150]
  • Step 3 (Client[0151] 2 executes open workspace) is the equivalent of the collab joined command (sent by the server 106).
  • Step 4 (Client[0152] 1 heartbeats) is the equivalent of the collab start command (set by the server 106).
  • Step 6 (Client [0153] 1 heartbeats) is the equivalent of the collab start confirm command (sent by client 104).
  • Step 7 (Client[0154] 2 heartbeats) is the equivalent of the collab joined confirm command (sent by client 104).
  • Step 12 (Client[0155] 1 heartbeats) is the equivalent of the collab stop command (sent by server 106).
  • Step 13 (Client[0156] 1 heartbeats) is the equivalent of the collab stop confirm command (sent by client 104).
  • By using the beat flag in this manner, transient collaboration commands are not needed between a [0157] client 104 and a server 106. Further, the beat flag provides a mechanism to maintain state information for each client 104 in a collaboration session without the use of extraneous communications between the client 104 and server 106.
  • Save User Data Failed Command [0158]
  • The [0159] server 106 generates the save user data failed command when the processing of a saveuserdata command fails for reasons other than system failure (system failures are handled separately and consistently for all commands/messages). For example, some causes for the saveuserdata command failing may include invalid filename specified or invalid userlD specified.
  • Save Workspace Failed Command [0160]
  • The [0161] server 106 generates the save workspace command when the processing of a saveworkspace command fails for reasons other than system failure. Failed commands due to system failures are handled separately and consistently for all commands/messages. For example, some of the causes for the failure of the saveworkspace command may include: invalid userlD specified, invalid resourcelD specified, no access, and possibly workspace not open.
  • Collaboration Flow [0162]
  • As described above, numerous commands may be used as part of the collaboration framework to enable multiple users to simultaneously access and modify an actual document that is stored on a [0163] server 106. Further, the collaboration application 108 and server application 110 enable the use of a full set of three-dimensional tools to modify a drawing while in a collaboration session.
  • The [0164] server 106 also maintains a history of all modifications to the document. Using the history, a client 104 may undo any client's 104 modification to a drawing document/workspace. Further, in the event of a network or system failure, the history can be used to rebuild/regenerate a document including all modifications on any client 104 by recommunicating commands received from a client 104 to collaborators 104 in a session. To provide such functionality, in addition to the history, the server 106 may maintain a record of the collaboration session including the name, numbers, and statuses of collaborators 104 in the session.
  • FIG. 4 is a flow chart illustrating the use of the collaboration framework in accordance with one or more embodiments of the invention. At [0165] step 402, a document/workspace is stored on a server 106. At step 404, a collaboration session is established. During a session, the server 106 permits two or more collaborators 104 on a network 102 to work simultaneously across the network on the drawing document stored on the server 106 (e.g., all of the collaborators 104 have write-access for the drawing document during the session). A collaboration palette may be displayed to collaborators 104 in the session that provides information relating to the collaborators 104 in the session (e.g., the name of each collaborator 104, status of each collaborator 104, an icon for each collaborator 104, etc.).
  • At [0166] step 406, the server 106 receives a command (e.g., an XML formatted command) to modify the drawing document from a collaborator 104 in the session. Such a command may be invoked pursuant to the collaborator's 104 use of a tool selected from a full set of drawing modification tools. The command may identify an object in the drawing document that the collaborator 104 has modified.
  • At [0167] step 408, the server 106 distributes the command to modify the drawing document to the other collaborators 104 in the session. Such a distribution may be pursuant to regularly transmitted commands (e.g., heartbeat commands as described above) received from collaborators 104 in the session. Further, as part of the command's distribution, an identifier may be assigned to the command and distributed with the command to the collaborators 104. The client 104 then uses the identifier to determine whether the command has already been reflected in its display or not.
  • Conclusion [0168]
  • This concludes the description of the preferred embodiment of the invention. The following describes some alternative embodiments for accomplishing the present invention. For example, any type of computer, such as a mainframe, minicomputer, or personal computer, or computer configuration, such as a timesharing mainframe, local area network, or standalone personal computer, could be used with the present invention. [0169]
  • The foregoing description of one or more embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. [0170]

Claims (57)

What is claimed is:
1. A method for collaborating access to a drawing document on a network, comprising:
storing a drawing document on a server;
receiving, in the server, a request to open the drawing document;
in response to the request, the server establishing a collaboration session, wherein during the collaboration session, the server permits two or more collaborators to work simultaneously across the network on the drawing document stored on the server;
receiving, in the server, a command to modify the drawing document from a first one of the collaborators in the collaboration session; and
the server distributing the command to modify the drawing document to other ones of the collaborators in the collaboration session.
2. The method of claim 1, further comprising the server maintaining a history of modifications to the drawing document.
3. The method of claim 2, wherein the history is used to support an undo command.
4. The method of claim 2, wherein the history is used to recommunicate modifications to the two or mote collaborators.
5. The method of claim 1, further comprising the server maintaining a record of the collaboration session including name, numbers, and statuses of the two or more collaborators.
6. The method of claim 1, wherein the command comprises an extensible markup language (XML) command.
7. The method of claim 1, wherein the two or more collaborators all have write-access for the drawing document during the collaboration session.
8. The method of claim 1, wherein the command is received in the server from a first collaborator pursuant to a regularly transmitted command.
9. The method of claim 1, further comprising:
generating an identifier for the command;
distributing the identifier with the command to the other collaborators in the collaboration session.
10. The method of claim 1, wherein the command specifies an object identifier for an object in the drawing document that is modified.
11. The method of claim 1, wherein an extensible set of three dimensional modeling tools for modifying the drawing document is supported.
12. A method for accessing a drawing document on a network, comprising:
joining an existing collaboration session comprised of a collaborator on a network, wherein during the collaboration session, collaborators in the collaboration session can work simultaneously across the network on a drawing document stored on a server; and
transmitting, to the server, a first command to modify the drawing document.
13. The method of claim 12, further comprising receiving a second command to modify the document from the server wherein the command was originally transmitted from another collaborator.
14. The method of claim 12, wherein the command comprises an undo command.
15. The method of claim 12, wherein the command comprises an extensible markup language (XML) command.
16. The method of claim 12, further comprising displaying a collaboration palette that provides information relating to the collaborators in the collaboration session.
17. The method of claim 12, wherein the command is transmitted pursuant to a regularly transmitted command.
18. The method of claim 12, wherein the command specifies an object identifier for an object in the drawing document that is modified.
19. The method of claim 12, wherein an extensible set of three dimensional modeling tools for modifying the drawing document is supported.
20. An system for collaborating access to a drawing document on a network comprising:
(a) a server connected to a network and having a memory and a data storage device coupled thereto;
(b) a drawing document stored on the server; and
(c) a computer program, performed by the server, the computer program configured to:
(i) receive a request to open the drawing document;
(ii) in response to the request, establishing a collaboration session, wherein during the collaboration session, the computer program permits two or more collaborators to work simultaneously across the network on the drawing document;
(iii) receive a command to modify the drawing document from a first one of the collaborators in the collaboration session; and
(iv) distribute the command to modify the drawing document to other ones of the collaborators in the collaboration session.
21. The system of claim 20, wherein the computer program is further configured to maintain a history of modifications to the drawing document.
22. The system of claim 21, wherein the history is used to support an undo command.
23. The system of claim 21, wherein the history is used to recommunicate modifications to the two or more collaborators.
24. The system of claim 20, wherein the computer program is further configured to maintain a record of the collaboration session including name, numbers, and statuses of the two or more collaborators.
25. The system of claim 20, wherein the command comprises an extensible markup language (XML) command.
26. The system of claim 20, wherein the two or more collaborators all have write-access for the drawing document during the collaboration session.
27. The system of claim 20, wherein the command is received in the server from a first collaborator pursuant to a regularly transmitted command.
28. The system of claim 20, wherein the computer program is further configured to:
generate an identifier for the command;
distribute the identifier with the command to the other collaborators in the collaboration session.
29. The system of claim 20, wherein the command specifies an object identifier for an object in the drawing document that is modified.
30. The system of claim 20, wherein the computer program supports an extensible set of three dimensional modeling tools for modifying the drawing document.
31. A system for accessing a drawing document on a network, comprising:
(a) a collaborator connected to a network and having a memory and a data storage device coupled thereto; and
(b) a computer program, performed by the collaborator, the computer program configured to:
(i) join an existing collaboration session comprised of a collaborator on a network, wherein during the collaboration session, collaborators in the collaboration session work simultaneously across the network on a drawing document stored on a server; and
(ii) transmit, to the server, a first command to modify the drawing document.
32. The system of claim 31, the computer program further configured to receive a second command to modify the document from the server wherein the command was originally transmitted from another collaborator.
33. The system of claim 31, wherein the command comprises an undo command.
34. The system of claim 31, wherein the command comprises an extensible markup language (XML) command.
35. The system of claim 31, further, wherein the computer program is further configured to display a collaboration palette that provides information relating to the collaborators in the collaboration session.
36. The system of claim 31, wherein the command is transmitted pursuant to a regularly transmitted command.
37. The system of claim 31, wherein the command specifies an object identifier for an object in the drawing document that is modified.
38. The system of claim 31, wherein the computer program supports an extensible set of three dimensional modeling tools for modifying the drawing document.
39. An article of manufacture comprising a program storage medium readable by a computer and embodying one or more instructions executable by the computer to perform a method for collaborating access to a drawing document on a network, the method comprising:
storing a drawing document on a server;
receiving, in the server, a request to open the drawing document;
in response to the request, the server establishing a collaboration session, wherein during the collaboration session, the server permits two or more collaborators to work simultaneously across the network on the drawing document stored on the server;
receiving, in the server, a command to modify the drawing document from a first one of the collaborators in the collaboration session; and
the server distributing the command to modify the drawing document to other ones of the collaborators in the collaboration session.
40. The article of manufacture of claim 39, wherein the method further comprises the server maintaining a history of modifications to the drawing document.
41. The article of manufacture of claim 40, wherein the history is used to support an undo command.
42. The article of manufacture of claim 40, wherein the history is used to recommunicate modifications to the two or more collaborators.
43. The article of manufacture of claim 39, wherein the method further comprises the server maintaining a record of the collaboration session including name, numbers, and statuses of the two or more collaborators.
44. The article of manufacture of claim 39, wherein the command comprises an extensible markup language (XML) command.
45. The article of manufacture of claim 39, wherein the two or more collaborators all have write-access for the drawing document during the collaboration session.
46. The article of manufacture of claim 39, wherein the command is received in the server from a first collaborator pursuant to a regularly transmitted command.
47. The article of manufacture of claim 39, wherein the method further comprises:
generating an identifier for the command;
distributing the identifier with the command to the other collaborators in the collaboration session.
48. The article of manufacture of claim 39, wherein the command specifies an object identifier for an object in the drawing document that is modified.
49. The article of manufacture of claim 39, wherein the method further comprises providing an extensible set of three dimensional modeling tools for modifying the drawing document.
50. An article of manufacture comprising a program storage medium readable by a computer and embodying one or more instructions executable by the computer to perform a method for accessing a drawing document on a network, the method comprising:
joining an existing collaboration session comprised of a collaborator on a network, wherein during the collaboration session, collaborators in the collaboration session work simultaneously across the network on a drawing document stored on a server; and
transmitting, to the server, a first command to modify the drawing document.
51. The article of manufacture of claim 50, wherein the method further comprises receiving a second command to modify the document from the server wherein the command was originally transmitted from another collaborator.
52. The article of manufacture of claim 50, wherein the command comprises an undo command.
53. The article of manufacture of claim 50, wherein the command comprises an extensible markup language (XML) command.
54. The article of manufacture of claim 50, wherein the method further comprises displaying a collaboration palette that provides information relating to the collaborators in the collaboration session.
55. The article of manufacture of claim 50, wherein the command is transmitted pursuant to a regularly transmitted command.
56. The article of manufacture of claim 50, wherein the command specifies an object identifier for an object in the drawing document that is modified.
57. The article of manufacture of claim 50, wherein the method further comprises providing an extensible set of three dimensional modeling tools for modifying the drawing document.
US09/982,224 2000-01-25 2001-10-18 Collaboration framework Abandoned US20020049786A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US09/982,224 US20020049786A1 (en) 2000-01-25 2001-10-18 Collaboration framework
US11/923,548 US8024661B2 (en) 2001-10-18 2007-10-24 Collaboration framework
US14/742,278 US9942286B2 (en) 2000-01-25 2015-06-17 Collaboration platform

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17798800P 2000-01-25 2000-01-25
US09/982,224 US20020049786A1 (en) 2000-01-25 2001-10-18 Collaboration framework

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/923,548 Continuation US8024661B2 (en) 2000-01-25 2007-10-24 Collaboration framework

Publications (1)

Publication Number Publication Date
US20020049786A1 true US20020049786A1 (en) 2002-04-25

Family

ID=22650728

Family Applications (4)

Application Number Title Priority Date Filing Date
US10/479,909 Expired - Lifetime US7484183B2 (en) 2000-01-25 2001-01-24 Method and apparatus for providing access to and working with architectural drawings on the internet
US09/982,224 Abandoned US20020049786A1 (en) 2000-01-25 2001-10-18 Collaboration framework
US12/336,392 Expired - Lifetime US8402392B2 (en) 2000-01-25 2008-12-16 Method and apparatus for providing access to and working with architectural drawings on the internet
US13/768,293 Expired - Lifetime US9053080B2 (en) 2000-01-25 2013-02-15 Method and apparatus for providing access to and working with architectural drawings on a personal digital assistant

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/479,909 Expired - Lifetime US7484183B2 (en) 2000-01-25 2001-01-24 Method and apparatus for providing access to and working with architectural drawings on the internet

Family Applications After (2)

Application Number Title Priority Date Filing Date
US12/336,392 Expired - Lifetime US8402392B2 (en) 2000-01-25 2008-12-16 Method and apparatus for providing access to and working with architectural drawings on the internet
US13/768,293 Expired - Lifetime US9053080B2 (en) 2000-01-25 2013-02-15 Method and apparatus for providing access to and working with architectural drawings on a personal digital assistant

Country Status (6)

Country Link
US (4) US7484183B2 (en)
EP (1) EP1256051A4 (en)
JP (1) JP2003521061A (en)
AU (1) AU2001234541A1 (en)
CA (1) CA2397762A1 (en)
WO (1) WO2001055831A1 (en)

Cited By (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030145056A1 (en) * 2001-12-25 2003-07-31 Sony Corporation Apparatus and method for sharing information between terminals on a network
US20030225926A1 (en) * 2002-05-30 2003-12-04 Sensemaking Technologies Corp. Collaboration envelopes: a method to improve collaborative sensemaking
US20040039995A1 (en) * 2002-03-08 2004-02-26 Katie Kuwata Method and system for implementing a clipboard
US20040088647A1 (en) * 2002-11-06 2004-05-06 Miller Adrian S. Web-based XML document processing system
US20040085354A1 (en) * 2002-10-31 2004-05-06 Deepak Massand Collaborative document development and review system
US20040230560A1 (en) * 2003-05-16 2004-11-18 Dethe Elza Methods and systems for enabling collaborative authoring of hierarchical documents
US20040239494A1 (en) * 2003-05-14 2004-12-02 Kennedy John F. Systems and methods for automatic energy analysis of buildings
US6917950B2 (en) * 2001-01-10 2005-07-12 Intel Corporation Modifying a shared resource
US20060077445A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for providing remote, descriptor-related data to an imaging device
US20060077440A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for receiving localized display elements at an imaging device
US20060077411A1 (en) * 2004-10-08 2006-04-13 Rono Mathieson Methods and systems for imaging device document translation
US20060077429A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential management and authentication
US20060080123A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device job configuration management
US20060080731A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential acceptance
US20060077453A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device related event notification
US20060077442A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display element localization
US20060077449A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for administering imaging device notification access control
US20060077434A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential submission and consolidation
US20060080184A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for authorizing imaging device concurrent account use
US20060077423A1 (en) * 2004-10-08 2006-04-13 Rono Mathieson Methods and systems for imaging device remote application interaction
US20060077437A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential authentication and communication
US20060077427A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for local configuration-based imaging device accounting
US20060090128A1 (en) * 2004-10-08 2006-04-27 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access to an imaging device
US20060103588A1 (en) * 2004-10-08 2006-05-18 Sharp Laboratories Of America, Inc. Methods and systems for imaging device dynamic document creation and organization
US20060198653A1 (en) * 2005-03-04 2006-09-07 Sharp Laboratories Of America, Inc. Methods and systems for peripheral accounting
US20060265496A1 (en) * 2000-08-25 2006-11-23 Stefan Freitag CAD system
US20060279475A1 (en) * 2004-10-08 2006-12-14 Lum Joey P Methods and Systems for Integrating Imaging Device Display Content
US20060282548A1 (en) * 2005-05-30 2006-12-14 Canon Kabushiki Kaisha Collaboration support system and control method thereof
US20070005707A1 (en) * 2005-06-20 2007-01-04 Microsoft Corporation Instant messaging with data sharing
US20070005752A1 (en) * 2005-06-29 2007-01-04 Jitendra Chawla Methods and apparatuses for monitoring attention of a user during a collaboration session
US20070005694A1 (en) * 2005-06-30 2007-01-04 Pando Networks, Inc. System and method for distributed multi-media production, sharing and low-cost mass publication
US20070091010A1 (en) * 2004-10-08 2007-04-26 Richardson Tanna M Methods and Systems for User Interface Customization
US20070146823A1 (en) * 2004-10-08 2007-06-28 Borchers Gregory E Methods and Systems for Document Manipulation
WO2007079587A1 (en) * 2006-01-13 2007-07-19 Diginiche Inc. System and method for collaborative information display and markup
US20070208587A1 (en) * 2005-12-08 2007-09-06 Arun Sitaraman Systems, software, and methods for communication-based business process messaging
US20080005244A1 (en) * 2003-02-10 2008-01-03 Todd Vernon Method and apparatus for providing egalitarian control in a multimedia collaboration session
US20080028341A1 (en) * 2006-07-31 2008-01-31 Microsoft Corporation Applications of three-dimensional environments constructed from images
US20080025646A1 (en) * 2006-07-31 2008-01-31 Microsoft Corporation User interface for navigating through images
US20080027985A1 (en) * 2006-07-31 2008-01-31 Microsoft Corporation Generating spatial multimedia indices for multimedia corpuses
US20080072225A1 (en) * 2006-09-19 2008-03-20 Tetsuro Nagatsuka Information processing apparatus, information processing method, program, and recording medium
US20080070198A1 (en) * 2006-08-17 2008-03-20 Chameleon Technologies Corporation Computerized method, system and machine-readable medium to enable a user to remotely perform a decorating session on an electronic image
US20080256188A1 (en) * 2007-01-29 2008-10-16 Deepak Massand Method of removing metadata from email attachments
US20080301193A1 (en) * 2006-01-29 2008-12-04 Deepak Massand Method of compound document comparison
US20090164285A1 (en) * 2007-12-20 2009-06-25 International Business Machines Corporation Auto-cascading clear to build engine for multiple enterprise order level parts management
US20090293003A1 (en) * 2004-05-04 2009-11-26 Paul Nykamp Methods for Interactively Displaying Product Information and for Collaborative Product Design
US20100174678A1 (en) * 2009-01-07 2010-07-08 Deepak Massand System and method for comparing digital data in spreadsheets or database tables
US20100241943A1 (en) * 2009-03-17 2010-09-23 Litera Technology Llc. System and method for the comparison of content within tables separate from form and structure
US20100325558A1 (en) * 2000-02-11 2010-12-23 Eric Edwards Online story collaboration
US7870185B2 (en) 2004-10-08 2011-01-11 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification administration
US7873718B2 (en) 2004-10-08 2011-01-18 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server recovery
US20110078589A1 (en) * 2009-09-16 2011-03-31 Sungkyunkwan University Foundation For Corporate Collaboration Method of networking multiple clients
US7941743B2 (en) 2004-10-08 2011-05-10 Sharp Laboratories Of America, Inc. Methods and systems for imaging device form field management
US7945619B1 (en) * 2004-09-20 2011-05-17 Jitendra Chawla Methods and apparatuses for reporting based on attention of a user during a collaboration session
US20110126127A1 (en) * 2009-11-23 2011-05-26 Foresight Imaging LLC System and method for collaboratively communicating on images and saving those communications and images in a standard known format
US7966396B2 (en) 2004-10-08 2011-06-21 Sharp Laboratories Of America, Inc. Methods and systems for administrating imaging device event notification
US7970813B2 (en) 2004-10-08 2011-06-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification administration and subscription
US8001587B2 (en) 2004-10-08 2011-08-16 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential management
US20110209052A1 (en) * 2007-06-29 2011-08-25 Microsoft Corporation Integrated collaborative user interface for a document editor program
US8023130B2 (en) 2004-10-08 2011-09-20 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data maintenance
US8024792B2 (en) 2004-10-08 2011-09-20 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential submission
US8032608B2 (en) 2004-10-08 2011-10-04 Sharp Laboratories Of America, Inc. Methods and systems for imaging device notification access control
US8032579B2 (en) 2004-10-08 2011-10-04 Sharp Laboratories Of America, Inc. Methods and systems for obtaining imaging device notification access control
US8035831B2 (en) * 2004-10-08 2011-10-11 Sharp Laboratories Of America, Inc. Methods and systems for imaging device remote form management
US8051125B2 (en) 2004-10-08 2011-11-01 Sharp Laboratories Of America, Inc. Methods and systems for obtaining imaging device event notification subscription
US8051140B2 (en) 2004-10-08 2011-11-01 Sharp Laboratories Of America, Inc. Methods and systems for imaging device control
US8060930B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential receipt and authentication
US8065384B2 (en) 2004-10-08 2011-11-22 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification subscription
US8069117B1 (en) 2004-05-28 2011-11-29 Adobe Systems Incorporated Ad hoc access rights in restricted-access electronic space
US20110302237A1 (en) * 2010-06-04 2011-12-08 Microsoft Corporation Client-Server Interaction Frequency Control
US8115946B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and sytems for imaging device job definition
US8120793B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for displaying content on an imaging device
US8120798B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for providing access to remote, descriptor-related data at an imaging device
US8120797B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for transmitting content to an imaging device
US8120799B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for accessing remote, descriptor-related data at an imaging device
US8125666B2 (en) 2004-10-08 2012-02-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device document management
WO2012033608A2 (en) * 2010-09-09 2012-03-15 Microsoft Corporation Concurrent editing of online drawings
US20120158853A1 (en) * 2010-12-15 2012-06-21 International Business Machines Corporation Sending a chat context to a recipient
US8213034B2 (en) 2004-10-08 2012-07-03 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access on an imaging device
US8230328B2 (en) 2004-10-08 2012-07-24 Sharp Laboratories Of America, Inc. Methods and systems for distributing localized display elements to an imaging device
US8237946B2 (en) 2004-10-08 2012-08-07 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server redundancy
US20120290951A1 (en) * 2011-05-12 2012-11-15 Shingo Utsuki Content sharing system
US8345272B2 (en) 2006-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for third-party control of remote imaging jobs
US8384925B2 (en) 2004-10-08 2013-02-26 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data management
US20130100159A1 (en) * 2011-10-13 2013-04-25 Autodesk, Inc. Computer-implemented tutorial for visual manipulation software
US20140013235A1 (en) * 2012-07-03 2014-01-09 Intemational Business Machines Corporation Representing a graphical user interface using a topic tree structure
US20140208235A1 (en) * 2000-10-10 2014-07-24 Addnclick, Inc. Dynamic information management system and method for content delivery and sharing in content-, metadata- & viewer-based, live social networking among users concurrently engaged in the same and/or similar content
US20140267105A1 (en) * 2013-03-12 2014-09-18 Sharp Kabushiki Kaisha Drawing device, display method, and recording medium
US8938679B1 (en) * 2013-11-18 2015-01-20 Axure Software Solutions, Inc. Comment system for interactive graphical designs
US20150082196A1 (en) * 2013-09-13 2015-03-19 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US20150113639A1 (en) * 2013-10-21 2015-04-23 Motorola Mobility Llc Delivery of contextual data to a computing device while preserving data privacy
US9154552B2 (en) 2007-09-06 2015-10-06 Microsoft Technology Licensing, Llc Method and apparatus for cooperative file distribution with receiver determined quality of services
US20160226719A1 (en) * 2015-01-30 2016-08-04 AppDynamics Inc. Network based virtual collaborative problem solving space
US9483451B2 (en) 2013-03-14 2016-11-01 Scribestar Ltd. System and method for handling user editing history based on spawning, merging data structures of directed acyclic graph
US20170024100A1 (en) * 2015-07-24 2017-01-26 Coscreen, Inc. Frictionless Interface for Virtual Collaboration, Communication and Cloud Computing
US20170039170A1 (en) * 2015-08-04 2017-02-09 Google Inc. Systems and methods for interactively presenting a visible portion of a rendering surface on a user device
US9756002B2 (en) 2014-03-21 2017-09-05 Litera Technologies, LLC Systems and methods for email attachments management
US20170359444A1 (en) * 2016-06-10 2017-12-14 Apple Inc. Change propagation for realtime collaboration
US10025782B2 (en) 2013-06-18 2018-07-17 Litera Corporation Systems and methods for multiple document version collaboration and management
US10044773B2 (en) 2013-09-13 2018-08-07 Box, Inc. System and method of a multi-functional managing user interface for accessing a cloud-based platform via mobile devices
US20190155471A1 (en) * 2015-03-02 2019-05-23 Dropbox, Inc. Native Application Collaboration
US10356139B2 (en) * 2012-08-14 2019-07-16 Samsung Electronics Co., Ltd. Method and electronic device for editing content
US10389770B2 (en) * 2016-03-24 2019-08-20 Intel Corporation Concurrent network based collaboration sessions
US10474477B2 (en) * 2008-10-10 2019-11-12 Adobe Inc. Collaborative and non-collaborative workspace application container with application persistence
US10536408B2 (en) 2015-09-16 2020-01-14 Litéra Corporation Systems and methods for detecting, reporting and cleaning metadata from inbound attachments
US10572558B2 (en) * 2016-03-07 2020-02-25 At&T Intellectual Property I, L.P. Method and system for providing expertise collaboration
CN111585878A (en) * 2020-04-23 2020-08-25 腾讯科技(深圳)有限公司 Intelligent control method, intelligent gateway and system
US10791186B2 (en) 2014-04-08 2020-09-29 Dropbox, Inc. Displaying presence in an application accessing shared and synchronized content
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US10887388B2 (en) 2014-04-08 2021-01-05 Dropbox, Inc. Managing presence among devices accessing shared and synchronized content
US10929088B2 (en) * 2019-03-19 2021-02-23 Cisco Technology, Inc. Active area of interest tracking in a multiuser digital whiteboard session
US10965746B2 (en) 2014-04-08 2021-03-30 Dropbox, Inc. Determining presence in an application accessing shared and synchronized content
US11016647B2 (en) * 2014-09-04 2021-05-25 Cadonix Ltd Web-based client-server geometric design methods
US11036924B2 (en) * 2010-11-02 2021-06-15 Google Llc Realtime synchronized document editing by multiple users for blogging
US11128675B2 (en) 2017-03-20 2021-09-21 At&T Intellectual Property I, L.P. Automatic ad-hoc multimedia conference generator
US11170345B2 (en) 2015-12-29 2021-11-09 Dropbox Inc. Content item activity feed for presenting events associated with content items
US11172038B2 (en) 2014-04-08 2021-11-09 Dropbox, Inc. Browser display of native application presence and interaction data
US20220027559A1 (en) * 2020-07-27 2022-01-27 Bytedance Inc. Categorizing conversations for a messaging service
US11256854B2 (en) 2012-03-19 2022-02-22 Litera Corporation Methods and systems for integrating multiple document versions
US11290409B2 (en) 2020-07-27 2022-03-29 Bytedance Inc. User device messaging application for interacting with a messaging service
US11343114B2 (en) 2020-07-27 2022-05-24 Bytedance Inc. Group management in a messaging service
US11349800B2 (en) 2020-07-27 2022-05-31 Bytedance Inc. Integration of an email, service and a messaging service
US11425175B2 (en) 2016-04-04 2022-08-23 Dropbox, Inc. Change comments for synchronized content items
US11455345B2 (en) * 2019-10-30 2022-09-27 Apple Inc. Collaboration environments that support offline edits of shared documents
US20220405412A1 (en) * 2021-06-21 2022-12-22 Microsoft Technology Licensing, Llc Configuration of default sensitivity labels for network file storage locations
US11539648B2 (en) 2020-07-27 2022-12-27 Bytedance Inc. Data model of a messaging service
US11568365B2 (en) * 2004-11-08 2023-01-31 Open Text Corporation Systems and methods for management of networked collaboration
US11675471B2 (en) * 2010-12-15 2023-06-13 Microsoft Technology Licensing, Llc Optimized joint document review
US11875028B2 (en) 2015-12-30 2024-01-16 Dropbox, Inc. Native application collaboration
US11922345B2 (en) 2020-07-27 2024-03-05 Bytedance Inc. Task management via a messaging service

Families Citing this family (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003521061A (en) 2000-01-25 2003-07-08 オートデスク,インコーポレイテッド Method and apparatus for providing and processing access to architectural drawings on the internet
US20020163547A1 (en) 2001-04-30 2002-11-07 Michael Abramson Interactive electronically presented map
WO2003025775A1 (en) * 2001-09-20 2003-03-27 Wellogix Inc. Process and system for managing field documentation data in a complex project workflow system
US7602991B2 (en) * 2001-10-24 2009-10-13 Nik Software, Inc. User definable image reference regions
JP2005527880A (en) * 2001-10-24 2005-09-15 ニック マルチメディア インク User definable image reference points
CN1306444C (en) * 2001-11-07 2007-03-21 鹿岛建设株式会社 Building production information integration system
JP3733322B2 (en) * 2001-11-21 2006-01-11 キヤノン株式会社 Multimodal document receiving apparatus, multimodal document transmitting apparatus, multimodal document transmitting / receiving system, control method therefor, and program
US7260257B2 (en) * 2002-06-19 2007-08-21 Microsoft Corp. System and method for whiteboard and audio capture
US20050257161A1 (en) * 2002-07-26 2005-11-17 Luc Martin Method and system for accessing online applications using a web browser
US7966569B2 (en) * 2002-08-16 2011-06-21 Schlumberger Technology Corporation Method and system and program storage device for storing oilfield related data in a computer database and displaying a field data handbook on a computer display screen
US6983280B2 (en) * 2002-09-13 2006-01-03 Overture Services Inc. Automated processing of appropriateness determination of content for search listings in wide area network searches
WO2004027668A1 (en) * 2002-09-20 2004-04-01 Need Inc. Estate group purchasing matching system
US20040080533A1 (en) * 2002-10-23 2004-04-29 Sun Microsystems, Inc. Accessing rendered graphics over the internet
US20040100498A1 (en) * 2002-11-21 2004-05-27 International Business Machines Corporation Annotating received world wide web/internet document pages without changing the hypertext markup language content of the pages
US7337151B2 (en) 2003-01-17 2008-02-26 California Distribution Center, Inc. Automated pricing system
US8266005B2 (en) 2003-01-17 2012-09-11 Uniloc Luxembourg Automated pricing system
US7769595B2 (en) 2003-01-17 2010-08-03 California Distribution Center, Inc. Automated pricing and/or “Green” indicating method and system
US7783523B2 (en) 2003-01-17 2010-08-24 California Distribution Center, Inc. Automated pricing system
US8260628B2 (en) 2003-01-17 2012-09-04 Uniloc Luxembourg S. A. Automated pricing and/or “green” indicating method and system
US8706760B2 (en) * 2003-02-28 2014-04-22 Microsoft Corporation Method to delay locking of server files on edit
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7240292B2 (en) * 2003-04-17 2007-07-03 Microsoft Corporation Virtual address bar user interface control
US7823077B2 (en) * 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7421438B2 (en) * 2004-04-29 2008-09-02 Microsoft Corporation Metadata editing control
US7925682B2 (en) * 2003-03-27 2011-04-12 Microsoft Corporation System and method utilizing virtual folders
US20040201615A1 (en) * 2003-04-10 2004-10-14 International Business Machines Corporation Eliminating extraneous displayable data from documents and e-mail received from the world wide web and like networks
US20040201602A1 (en) * 2003-04-14 2004-10-14 Invensys Systems, Inc. Tablet computer system for industrial process design, supervisory control, and data management
US7299417B1 (en) * 2003-07-30 2007-11-20 Barris Joel M System or method for interacting with a representation of physical space
US8370167B2 (en) * 2003-10-20 2013-02-05 Bryant Consultants, Inc. System and method of performing an engineering-based site development and risk assessment process
US8024335B2 (en) 2004-05-03 2011-09-20 Microsoft Corporation System and method for dynamically generating a selectable search extension
US20050125717A1 (en) * 2003-10-29 2005-06-09 Tsakhi Segal System and method for off-line synchronized capturing and reviewing notes and presentations
US8826171B2 (en) 2003-12-31 2014-09-02 Trimble Navigation Limited System and method for entry and display of blueprint data
US7353458B2 (en) * 2004-02-09 2008-04-01 Portalis, Lc Computer presentation and command integration method
US7511697B2 (en) * 2004-03-19 2009-03-31 Omegavue, Inc. Facility reference system and method
US8707209B2 (en) 2004-04-29 2014-04-22 Microsoft Corporation Save preview representation of files being created
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US7441201B1 (en) * 2004-10-19 2008-10-21 Sun Microsystems, Inc. Method for placing graphical user interface components in three dimensions
US8745512B2 (en) * 2004-11-17 2014-06-03 Microsoft Corporation Method and computer-readable medium for interacting with a portion of an electronic document
JP4648017B2 (en) * 2005-02-01 2011-03-09 株式会社リコー Drawing management method and drawing management program
US20060185275A1 (en) * 2005-02-07 2006-08-24 Yatt Barry D Method and system for building, designing with and managing elements of construction
US20060200489A1 (en) * 2005-03-03 2006-09-07 Microsoft Corporation Company modeling
US7900152B2 (en) * 2005-03-03 2011-03-01 Microsoft Corporation Adaptable user interface for business software
US7917555B2 (en) * 2005-03-03 2011-03-29 Microsoft Corporation Creating, storing and viewing process models
US9274765B2 (en) * 2005-05-12 2016-03-01 Drawing Management, Inc. Spatial graphical user interface and method for using the same
US20060263133A1 (en) * 2005-05-17 2006-11-23 Engle Jesse C Network based method and apparatus for collaborative design
US20060262105A1 (en) * 2005-05-18 2006-11-23 Microsoft Corporation Pen-centric polyline drawing tool
US8635094B2 (en) * 2005-06-03 2014-01-21 International Business Machines Corporation System and method for dynamically configuring user interface components of a collaborative space based on mapping rules and user roles
US20090037834A1 (en) * 2005-06-29 2009-02-05 William Parrish Site plan tool
US20070008566A1 (en) * 2005-07-07 2007-01-11 Xerox Corporation 3-D view and edit method and apparatus for document make-ready preparation for book production
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US20070198588A1 (en) * 2005-10-17 2007-08-23 Siemens Corporate Research Inc Automatic Qualification of Plant Equipment
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US7600193B2 (en) * 2005-11-23 2009-10-06 Bluebeam Software, Inc. Method of tracking dual mode data objects using related thumbnails and tool icons in a palette window
US20070179757A1 (en) * 2006-01-13 2007-08-02 Chief Architect, Inc. Architectural structure design methods, architectural structure design apparatuses and articles of manufacture
US7705861B2 (en) * 2006-01-19 2010-04-27 Microsoft Corporation Snap to element analytical tool
US7797339B2 (en) * 2006-05-26 2010-09-14 Autodesk, Inc. Security architecture for content management systems
US20090309893A1 (en) * 2006-06-29 2009-12-17 Aftercad Software Inc. Method and system for displaying and communicating complex graphics file information
US20080015947A1 (en) * 2006-07-12 2008-01-17 Swift Lawrence W Online ordering of architectural models
US20080111822A1 (en) * 2006-09-22 2008-05-15 Yahoo, Inc.! Method and system for presenting video
JP4806338B2 (en) * 2006-12-05 2011-11-02 富士通株式会社 CAD apparatus and CAD program
CN101601084B (en) * 2007-01-29 2011-09-07 三菱电机株式会社 Image display device and image display method
US8380880B2 (en) * 2007-02-02 2013-02-19 The Mathworks, Inc. Scalable architecture
US8190400B1 (en) * 2007-03-16 2012-05-29 The Mathworks, Inc. Thin client graphical presentation and manipulation application
US20080281573A1 (en) * 2007-05-11 2008-11-13 Paul Eric Seletsky Digital design ecosystem
US20080320418A1 (en) * 2007-06-21 2008-12-25 Cadexterity, Inc. Graphical User Friendly Interface Keypad System For CAD
US20080316206A1 (en) * 2007-06-22 2008-12-25 Jerry Jaynes Drawing standards management and quality control
US20080316205A1 (en) * 2007-06-22 2008-12-25 Jaynes Jerry A Drawing standards management and quality control
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US7889210B2 (en) * 2007-07-31 2011-02-15 International Business Machines Corporation Visual integration hub
US10657314B2 (en) 2007-09-11 2020-05-19 E-Plan, Inc. System and method for dynamic linking between graphic documents and comment data bases
CA2607537A1 (en) * 2007-10-22 2009-04-22 Ibm Canada Limited - Ibm Canada Limitee Software engineering system and method for self-adaptive dynamic software components
US20090194216A1 (en) * 2008-02-04 2009-08-06 Solidimension Ltd Depicting interior details in a three-dimensional object
US20100288436A1 (en) * 2008-02-04 2010-11-18 Solido 3D, Ltd. Depicting interior details in a three-dimensional object
US8525838B2 (en) 2008-02-08 2013-09-03 Autodesk, Inc. Associative fillet
US8280117B2 (en) 2008-03-18 2012-10-02 Certusview Technologies, Llc Virtual white lines for indicating planned excavation sites on electronic images
US8396907B2 (en) * 2008-02-13 2013-03-12 Sung Guk Park Data processing system and method of grouping computer files
US8126878B2 (en) * 2008-06-24 2012-02-28 Krasnow Arthur Z Academic study tool utilizing e-book technology
US20110154243A1 (en) * 2008-08-27 2011-06-23 Husky Injection Molding Systems Ltd. Method for displaying a virtual model of a molding system, and part information for a selected entity model, on a display of a human-machine interface of a molding system computer
US9092110B2 (en) * 2008-12-16 2015-07-28 Cadence Design Systems, Inc. Method and system for implementing a user interface with ghosting
US20100201690A1 (en) * 2009-02-11 2010-08-12 Certusview Technologies, Llc Virtual white lines (vwl) application for indicating a planned excavation or locate path
FR2943819B1 (en) 2009-03-27 2015-03-13 Squareclock METHOD AND SYSTEM FOR ASSISTING THE DESIGN OF COMPUTER MODULAR ARRANGEMENTS
CA2760158C (en) 2009-04-26 2016-08-02 Nike International Ltd. Gps features and functionality in an athletic watch system
US9141087B2 (en) 2009-04-26 2015-09-22 Nike, Inc. Athletic watch
US9269102B2 (en) 2009-05-21 2016-02-23 Nike, Inc. Collaborative activities in on-line commerce
GB0913125D0 (en) * 2009-07-28 2009-09-02 Modacity Ltd Processing data representing a property
EP2480957B1 (en) 2009-09-22 2017-08-09 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US9310907B2 (en) 2009-09-25 2016-04-12 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US9092115B2 (en) * 2009-09-23 2015-07-28 Microsoft Technology Licensing, Llc Computing system with visual clipboard
US8832585B2 (en) 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
US8766928B2 (en) 2009-09-25 2014-07-01 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US8799826B2 (en) 2009-09-25 2014-08-05 Apple Inc. Device, method, and graphical user interface for moving a calendar entry in a calendar application
CN102598031A (en) * 2009-11-12 2012-07-18 株式会社东芝 Construction process creation system and construction process creation method
US20110126160A1 (en) * 2009-11-23 2011-05-26 Samsung Electronics Co., Ltd. Method of providing 3d image and 3d display apparatus using the same
US8539385B2 (en) 2010-01-26 2013-09-17 Apple Inc. Device, method, and graphical user interface for precise positioning of objects
US8677268B2 (en) 2010-01-26 2014-03-18 Apple Inc. Device, method, and graphical user interface for resizing objects
US8539386B2 (en) 2010-01-26 2013-09-17 Apple Inc. Device, method, and graphical user interface for selecting and moving objects
US8683363B2 (en) * 2010-01-26 2014-03-25 Apple Inc. Device, method, and graphical user interface for managing user interface content and user interface elements
US20110246875A1 (en) * 2010-04-02 2011-10-06 Symantec Corporation Digital whiteboard implementation
US20110307831A1 (en) * 2010-06-10 2011-12-15 Microsoft Corporation User-Controlled Application Access to Resources
EP2592564A1 (en) * 2010-07-05 2013-05-15 Nec Corporation Service provision device for electronic documents, service provision method for electronic documents, and service provision terminal for electronic documents
US9081494B2 (en) 2010-07-30 2015-07-14 Apple Inc. Device, method, and graphical user interface for copying formatting attributes
US8972879B2 (en) 2010-07-30 2015-03-03 Apple Inc. Device, method, and graphical user interface for reordering the front-to-back positions of objects
JP5523973B2 (en) * 2010-07-30 2014-06-18 シャープ株式会社 Network system and communication method
US9098182B2 (en) 2010-07-30 2015-08-04 Apple Inc. Device, method, and graphical user interface for copying user interface objects between content regions
US9747270B2 (en) 2011-01-07 2017-08-29 Microsoft Technology Licensing, Llc Natural input for spreadsheet actions
US8902219B1 (en) * 2010-09-22 2014-12-02 Trimble Navigation Limited Maintaining connection to embedded content using graphical elements
US8669976B1 (en) 2010-10-12 2014-03-11 Google Inc. Selecting and verifying textures in image-based three-dimensional modeling, and applications thereof
US20120151366A1 (en) * 2010-12-13 2012-06-14 Chen-Yu Sheu Object sharing and scoring system
US8314790B1 (en) * 2011-03-29 2012-11-20 Google Inc. Layer opacity adjustment for a three-dimensional object
WO2012154914A1 (en) * 2011-05-11 2012-11-15 The Cleveland Clinic Foundation Generating patient specific instruments for use as surgical aids
US20120290573A1 (en) * 2011-05-12 2012-11-15 Alexander Kachkovsky Information capturing methods and components
US8352508B2 (en) 2011-05-13 2013-01-08 Motorola Mobility Llc Impact-based arrangement of images on an electronic display
US8843352B2 (en) 2011-08-16 2014-09-23 Google Inc. System and methods facilitating interfacing with a structure design and development process
WO2012162105A1 (en) * 2011-05-20 2012-11-29 Google Inc. Quantification of structure fitness enabling evaluation and comparison of structure designs
US8516572B2 (en) 2011-09-20 2013-08-20 Google Inc. User certification in a structure design, analysis, and implementation system
US8954297B2 (en) 2012-01-02 2015-02-10 Flux Factory, Inc. Automated and intelligent structure design generation and exploration
US9329766B2 (en) * 2011-06-02 2016-05-03 Lenovo (Singapore) Pte. Ltd. Homepage re-assignment
US9411901B2 (en) 2011-06-29 2016-08-09 Trimble Navigation Limited Managing satellite and aerial image data in a composite document
US9076244B2 (en) * 2011-06-29 2015-07-07 Trimble Navigation Limited Managing web page data in a composite document
US8468705B2 (en) 2011-07-08 2013-06-25 John Schneider Electronic scaling ruler
ES2398887B1 (en) * 2011-08-04 2014-01-30 Meztura Servicios Premium S.L. METHOD FOR THE SUPERPOSITION OF CONTENTS OF WEB RENDERING ENGINES ON VIDEO SIGNAL
US8756500B2 (en) * 2011-09-20 2014-06-17 Microsoft Corporation Dynamic content feed filtering
US9230243B2 (en) * 2011-10-13 2016-01-05 Dassault Systemes Collaborative design using duplicated workspaces
US9053083B2 (en) 2011-11-04 2015-06-09 Microsoft Technology Licensing, Llc Interaction between web gadgets and spreadsheets
US8818935B2 (en) * 2011-11-21 2014-08-26 Fluor Technologies Corporation Collaborative data management system for engineering design and construction projects
WO2013093910A1 (en) * 2011-12-18 2013-06-27 Nahum Emanuel A tendering system for the organization of the extension of a residence
US9454835B2 (en) 2012-02-29 2016-09-27 Milliken & Company System and method for displaying and manipulating a floor layout display on a computer
JP5981175B2 (en) * 2012-03-16 2016-08-31 株式会社Okiデータ・インフォテック Drawing display device and drawing display program
EP2862144A4 (en) 2012-06-18 2016-02-17 Viewpoint Inc A system and method linking building information modeling and enterprise resource planning
US9135602B2 (en) 2012-07-25 2015-09-15 E-Plan, Inc. Management of building plan documents utilizing comments and a correction list
KR101608869B1 (en) 2012-09-07 2016-04-04 삼성전자주식회사 Method for indicating a virtual ruler on separated image or medical image of object, medical image obtaining apparatus, and apparatus and method for displaying separated image or medical image with a virtual ruler
WO2014146067A1 (en) 2013-03-15 2014-09-18 Bushel Stop, Inc. Method and system for designing goods
US9710444B2 (en) * 2013-05-22 2017-07-18 Microsoft Technology Licensing, Llc Organizing unstructured research within a document
US10664652B2 (en) * 2013-06-15 2020-05-26 Microsoft Technology Licensing, Llc Seamless grid and canvas integration in a spreadsheet application
US20140380191A1 (en) * 2013-06-24 2014-12-25 Autodesk, Inc. Method and apparatus for design review collaboration across multiple platforms
EP2894594A1 (en) * 2014-01-09 2015-07-15 Thomson Licensing Method and device for providing access to a task
US20150081760A1 (en) * 2013-09-19 2015-03-19 Thomson Licensing Method and device for providing access to a task
NO3021696T3 (en) 2013-09-20 2018-10-20
US9817987B2 (en) 2013-12-23 2017-11-14 Dropbox, Inc. Restricting access to content
US11410224B1 (en) * 2014-03-28 2022-08-09 Desprez, Llc Methods and software for requesting a pricing in an electronic marketplace using a user-modifiable spectrum interface
US9827714B1 (en) 2014-05-16 2017-11-28 Google Llc Method and system for 3-D printing of 3-D object models in interactive content items
US10949067B2 (en) * 2014-05-29 2021-03-16 Hexagon Technology Center Gmbh Apparatus and method of displaying objects in configurable window groups
US9576184B2 (en) 2014-08-28 2017-02-21 Textura Planswift Corporation Detection of a perimeter of a region of interest in a floor plan document
US9972000B2 (en) * 2014-11-25 2018-05-15 International Business Machines Corporation Remote document generation
US9736137B2 (en) * 2014-12-18 2017-08-15 Smart Technologies Ulc System and method for managing multiuser tools
JP2016139273A (en) 2015-01-27 2016-08-04 富士通株式会社 Cooperation system, cooperation program, and cooperation method
US10082941B2 (en) 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
US10897490B2 (en) 2015-08-17 2021-01-19 E-Plan, Inc. Systems and methods for augmenting electronic content
US9792024B2 (en) * 2015-08-17 2017-10-17 E-Plan, Inc. Systems and methods for management and processing of electronic documents using video annotations
GB201523166D0 (en) 2015-12-31 2016-02-17 Jones Maria F Direct integration system
US10074214B2 (en) 2015-12-31 2018-09-11 Autodesk, Inc. Systems and methods for generating 3D scenes with time element for display
US10564829B2 (en) * 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
US10529145B2 (en) * 2016-03-29 2020-01-07 Mental Canvas LLC Touch gestures for navigation and interacting with content in a three-dimensional space
US11037253B2 (en) * 2016-04-04 2021-06-15 Hexagon Technology Center Gmbh Apparatus and method of managing 2D documents for large-scale capital projects
CN105975699B (en) * 2016-05-10 2019-04-19 曹屹 A kind of house type modeling method based on basic unit splicing
US10155596B2 (en) * 2016-06-06 2018-12-18 The Boeing Company Three-dimensional aircraft inspection system for layout of passenger accommodations
EP3510474B1 (en) 2016-10-21 2021-12-01 Hewlett-Packard Development Company, L.P. Virtual reality input
US10871880B2 (en) * 2016-11-04 2020-12-22 Microsoft Technology Licensing, Llc Action-enabled inking tools
US10739988B2 (en) * 2016-11-04 2020-08-11 Microsoft Technology Licensing, Llc Personalized persistent collection of customized inking tools
CN107045526B (en) * 2016-12-30 2020-04-14 许昌学院 Pattern recognition method for electronic building construction drawing
US20180293392A1 (en) * 2017-04-05 2018-10-11 Iswind Digital Engineering Inc. Method and system for selecting a communication interface
WO2019049073A1 (en) * 2017-09-07 2019-03-14 Zudomanzi (Pty) Ltd Virtual desktop management method and system
US11270366B2 (en) 2018-02-26 2022-03-08 Oldcastle Buildingenvelope, Inc. Graphical user interface for creating building product literature
US20200042160A1 (en) * 2018-06-18 2020-02-06 Alessandro Gabbi System and Method for Providing Virtual-Reality Based Interactive Archives for Therapeutic Interventions, Interactions and Support
US11144309B2 (en) 2018-10-12 2021-10-12 Bentley Systems, Incorporated Changeset conflict rebasing
US10789780B1 (en) * 2019-03-29 2020-09-29 Konica Minolta Laboratory U.S.A., Inc. Eliminating a projected augmented reality display from an image
US10990240B1 (en) * 2019-06-07 2021-04-27 Facebook Technologies, Llc Artificial reality system having movable application content items in containers
US20220270006A1 (en) * 2019-10-01 2022-08-25 Jgc Corporation Work management apparatus, work management method, and recording medium
US10908593B1 (en) 2020-06-08 2021-02-02 Factory Os, Inc. Systems and methods for fabrication of a volumetric module
US20220405999A1 (en) * 2021-06-21 2022-12-22 International Business Machines Corporation Uv map using weight painting

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938724A (en) * 1993-03-19 1999-08-17 Ncr Corporation Remote collaboration system that stores annotations to the image at a separate location from the image
US6057854A (en) * 1997-03-07 2000-05-02 Micrografx, Inc. System and method of providing interactive vector graphics over a network
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6195751B1 (en) * 1998-01-20 2001-02-27 Sun Microsystems, Inc. Efficient, secure multicasting with minimal knowledge
US6342906B1 (en) * 1999-02-02 2002-01-29 International Business Machines Corporation Annotation layer for synchronous collaboration
US6608628B1 (en) * 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414801A (en) * 1991-06-11 1995-05-09 Virtus Corporation Computerized method and apparatus using containment relationships to represent objects in a three-dimensional space, and for moving therethrough
US5526520A (en) * 1993-09-21 1996-06-11 Krause; Gary M. Method to organize and manipulate blueprint documents using hypermedia links from a primary document to recall related secondary documents
US5625827A (en) * 1993-09-21 1997-04-29 Gary M. Krause Method and system of blueprint document manipulation
US5552995A (en) * 1993-11-24 1996-09-03 The Trustees Of The Stevens Institute Of Technology Concurrent engineering design tool and method
US5729588A (en) * 1994-12-28 1998-03-17 Lucent Technologies Inc. Enhanced recording verification system
US5761328A (en) * 1995-05-22 1998-06-02 Solberg Creations, Inc. Computer automated system and method for converting source-documents bearing alphanumeric text relating to survey measurements
US5815154A (en) * 1995-12-20 1998-09-29 Solidworks Corporation Graphical browser system for displaying and manipulating a computer model
US6275976B1 (en) * 1996-03-15 2001-08-14 Joseph M. Scandura Automated method for building and maintaining software including methods for verifying that systems are internally consistent and correct relative to their specifications
US6006227A (en) * 1996-06-28 1999-12-21 Yale University Document stream operating system
US6054990A (en) * 1996-07-05 2000-04-25 Tran; Bao Q. Computer system with handwriting annotation
US7904333B1 (en) * 1996-10-25 2011-03-08 Ipf, Inc. Web-based electronic commerce (EC) enabled shopping network configured to allow members of a consumer product management team and authorized parties to communicate directly with consumers shopping at EC-enabled websites along the world wide web (WWW), using multi-mode virtual kiosks (MMVKS) driven by server-side components and managed by product team members
US5913065A (en) * 1997-01-31 1999-06-15 Sun Microsystems, Inc. System, method and article of manufacture for creating hierarchical folder components for use in a java application or applet
US6983226B2 (en) * 1997-02-25 2006-01-03 Kennefick Christine M Microstructure containing entities rotating under an applied load to enhance toughening against fracture
US5950206A (en) * 1997-04-23 1999-09-07 Krause; Gary Matthew Method and apparatus for searching and tracking construction projects in a document information database
US7574649B1 (en) * 1997-08-14 2009-08-11 Keeboo Sarl Book metaphor for modifying and enforcing sequential navigation of documents
US6097887A (en) * 1997-10-27 2000-08-01 Kla-Tencor Corporation Software system and method for graphically building customized recipe flowcharts
US6058395A (en) * 1998-01-29 2000-05-02 Buzaglo; Jacques Computerized communication system for managing multi-disciplinary engineering virtual community
US6518988B1 (en) * 1998-04-01 2003-02-11 Behrouz B. Aghevli Virtual manipulatives
US6912293B1 (en) * 1998-06-26 2005-06-28 Carl P. Korobkin Photogrammetry engine for model construction
US6342901B1 (en) * 1998-12-22 2002-01-29 Xerox Corporation Interactive device for displaying information from multiple sources
US6457065B1 (en) * 1999-01-05 2002-09-24 International Business Machines Corporation Transaction-scoped replication for distributed object systems
US6564246B1 (en) * 1999-02-02 2003-05-13 International Business Machines Corporation Shared and independent views of shared workspace for real-time collaboration
US6570590B1 (en) * 1999-03-02 2003-05-27 Microsoft Corporation Application sharing in a frame
US6765567B1 (en) * 1999-04-06 2004-07-20 Microsoft Corporation Method and apparatus for providing and accessing hidden tool spaces
US6912707B1 (en) * 1999-04-21 2005-06-28 Autodesk, Inc. Method for determining object equality
US6862528B2 (en) * 1999-04-27 2005-03-01 Usengineering Solutions Corporation Monitoring system and process for structural instabilities due to environmental processes
US6965855B1 (en) * 1999-05-17 2005-11-15 General Electric Company Methods and apparatus for system and device design and control
US7089203B1 (en) * 1999-06-04 2006-08-08 Crookshanks Rex J Building construction bid and contract management system, internet-based method and computer program therefor
CN1402856A (en) * 1999-06-04 2003-03-12 雷克斯·J·克鲁克香克斯 Building construction bid and contract management system, Internet-based method and computer program therefor
US6959268B1 (en) * 1999-09-21 2005-10-25 Lockheed Martin Corporation Product catalog for use in a collaborative engineering environment and method for using same
US6563529B1 (en) * 1999-10-08 2003-05-13 Jerry Jongerius Interactive system for displaying detailed view and direction in panoramic images
US7142196B1 (en) * 1999-10-12 2006-11-28 Autodesk, Inc. Geographical data markup on a personal digital assistant (PDA)
US8527872B1 (en) * 2000-01-18 2013-09-03 Autodesk, Inc. Multiple output device association
JP2003521061A (en) * 2000-01-25 2003-07-08 オートデスク,インコーポレイテッド Method and apparatus for providing and processing access to architectural drawings on the internet
US7243299B1 (en) * 2000-04-21 2007-07-10 Microsoft Corporation Methods and apparatus for displaying multiple contexts in electronic documents
US6980175B1 (en) * 2000-06-30 2005-12-27 International Business Machines Corporation Personal smart pointing device
US20020165894A1 (en) * 2000-07-28 2002-11-07 Mehdi Kashani Information processing apparatus and method
US7576752B1 (en) * 2000-10-04 2009-08-18 Shutterfly Inc. System and method for manipulating digital images
US20020099552A1 (en) * 2001-01-25 2002-07-25 Darryl Rubin Annotating electronic information with audio clips

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938724A (en) * 1993-03-19 1999-08-17 Ncr Corporation Remote collaboration system that stores annotations to the image at a separate location from the image
US6057854A (en) * 1997-03-07 2000-05-02 Micrografx, Inc. System and method of providing interactive vector graphics over a network
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6195751B1 (en) * 1998-01-20 2001-02-27 Sun Microsystems, Inc. Efficient, secure multicasting with minimal knowledge
US6608628B1 (en) * 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users
US6342906B1 (en) * 1999-02-02 2002-01-29 International Business Machines Corporation Annotation layer for synchronous collaboration

Cited By (225)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694896B2 (en) * 2000-02-11 2014-04-08 Sony Corporation Online story collaboration
US20100325558A1 (en) * 2000-02-11 2010-12-23 Eric Edwards Online story collaboration
US20060265496A1 (en) * 2000-08-25 2006-11-23 Stefan Freitag CAD system
US8214423B2 (en) * 2000-08-25 2012-07-03 Hewlett-Packard Company CAD system
US20140208235A1 (en) * 2000-10-10 2014-07-24 Addnclick, Inc. Dynamic information management system and method for content delivery and sharing in content-, metadata- & viewer-based, live social networking among users concurrently engaged in the same and/or similar content
US6917950B2 (en) * 2001-01-10 2005-07-12 Intel Corporation Modifying a shared resource
US7185056B2 (en) * 2001-12-25 2007-02-27 Sony Corporation Apparatus and method for sharing information between terminals on a network
US20030145056A1 (en) * 2001-12-25 2003-07-31 Sony Corporation Apparatus and method for sharing information between terminals on a network
US7509577B2 (en) * 2002-03-08 2009-03-24 Toshiba Corp Oration Method and system for implementing a clipboard
US20040039995A1 (en) * 2002-03-08 2004-02-26 Katie Kuwata Method and system for implementing a clipboard
US20030225926A1 (en) * 2002-05-30 2003-12-04 Sensemaking Technologies Corp. Collaboration envelopes: a method to improve collaborative sensemaking
US11263389B2 (en) 2002-10-31 2022-03-01 Litera Corporation Collaborative hierarchical document development and review system
US20100235763A1 (en) * 2002-10-31 2010-09-16 Litera Technology Llc. Collaborative hierarchical document development and review system
US9105007B2 (en) 2002-10-31 2015-08-11 Litéra Technologies, LLC Collaborative hierarchical document development and review system
US20040085354A1 (en) * 2002-10-31 2004-05-06 Deepak Massand Collaborative document development and review system
US7818678B2 (en) 2002-10-31 2010-10-19 Litera Technology Llc Collaborative document development and review system
US20040088647A1 (en) * 2002-11-06 2004-05-06 Miller Adrian S. Web-based XML document processing system
US20080005244A1 (en) * 2003-02-10 2008-01-03 Todd Vernon Method and apparatus for providing egalitarian control in a multimedia collaboration session
US8819136B1 (en) * 2003-02-10 2014-08-26 Open Invention Network, Llc Method and apparatus for providing egalitarian control in a multimedia collaboration session
US8204935B2 (en) * 2003-02-10 2012-06-19 West Corporation Method and apparatus for providing egalitarian control in a multimedia collaboration session
US20040239494A1 (en) * 2003-05-14 2004-12-02 Kennedy John F. Systems and methods for automatic energy analysis of buildings
US20040230560A1 (en) * 2003-05-16 2004-11-18 Dethe Elza Methods and systems for enabling collaborative authoring of hierarchical documents
US7424671B2 (en) * 2003-05-16 2008-09-09 Justsystems Canada Inc. Methods and systems for enabling collaborative authoring of hierarchical documents
US20100146404A1 (en) * 2004-05-04 2010-06-10 Paul Nykamp Methods for interactive and synchronous display session
US7908178B2 (en) 2004-05-04 2011-03-15 Paul Nykamp Methods for interactive and synchronous displaying session
US20090293003A1 (en) * 2004-05-04 2009-11-26 Paul Nykamp Methods for Interactively Displaying Product Information and for Collaborative Product Design
US8311894B2 (en) 2004-05-04 2012-11-13 Reliable Tack Acquisitions Llc Method and apparatus for interactive and synchronous display session
US8069087B2 (en) 2004-05-04 2011-11-29 Paul Nykamp Methods for interactive and synchronous display session
US20100191808A1 (en) * 2004-05-04 2010-07-29 Paul Nykamp Methods for interactive and synchronous display session
US20100205533A1 (en) * 2004-05-04 2010-08-12 Paul Nykamp Methods for interactive and synchronous display session
US8069117B1 (en) 2004-05-28 2011-11-29 Adobe Systems Incorporated Ad hoc access rights in restricted-access electronic space
US8516105B2 (en) 2004-09-20 2013-08-20 Cisco Technology, Inc. Methods and apparatuses for monitoring attention of a user during a conference
US20080034085A1 (en) * 2004-09-20 2008-02-07 Jitendra Chawla Methods and apparatuses for monitoring attention of a user during a conference
US20110196930A1 (en) * 2004-09-20 2011-08-11 Jitendra Chawla Methods and apparatuses for reporting based on attention of a user during a collaboration session
US7945619B1 (en) * 2004-09-20 2011-05-17 Jitendra Chawla Methods and apparatuses for reporting based on attention of a user during a collaboration session
US8006176B2 (en) 2004-10-08 2011-08-23 Sharp Laboratories Of America, Inc. Methods and systems for imaging-device-based form field management
US20060080731A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential acceptance
US8171404B2 (en) 2004-10-08 2012-05-01 Sharp Laboratories Of America, Inc. Methods and systems for disassembly and reassembly of examination documents
US8201077B2 (en) 2004-10-08 2012-06-12 Sharp Laboratories Of America, Inc. Methods and systems for imaging device form generation and form field data management
US20070091010A1 (en) * 2004-10-08 2007-04-26 Richardson Tanna M Methods and Systems for User Interface Customization
US8125666B2 (en) 2004-10-08 2012-02-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device document management
US8120799B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for accessing remote, descriptor-related data at an imaging device
US8120797B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for transmitting content to an imaging device
US8120798B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for providing access to remote, descriptor-related data at an imaging device
US8120793B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for displaying content on an imaging device
US8115946B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and sytems for imaging device job definition
US8115947B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for providing remote, descriptor-related data to an imaging device
US20060279474A1 (en) * 2004-10-08 2006-12-14 Lum Joey P Methods and Systems for Imaging Device Data Display
US8115944B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for local configuration-based imaging device accounting
US8115945B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for imaging device job configuration management
US8106922B2 (en) 2004-10-08 2012-01-31 Sharp Laboratories Of America, Inc. Methods and systems for imaging device data display
US20060077445A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for providing remote, descriptor-related data to an imaging device
US20060279475A1 (en) * 2004-10-08 2006-12-14 Lum Joey P Methods and Systems for Integrating Imaging Device Display Content
US20060077440A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for receiving localized display elements at an imaging device
US20060077411A1 (en) * 2004-10-08 2006-04-13 Rono Mathieson Methods and systems for imaging device document translation
US20060103588A1 (en) * 2004-10-08 2006-05-18 Sharp Laboratories Of America, Inc. Methods and systems for imaging device dynamic document creation and organization
US20060090128A1 (en) * 2004-10-08 2006-04-27 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access to an imaging device
US8065384B2 (en) 2004-10-08 2011-11-22 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification subscription
US20060077427A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for local configuration-based imaging device accounting
US20060077437A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential authentication and communication
US20060077423A1 (en) * 2004-10-08 2006-04-13 Rono Mathieson Methods and systems for imaging device remote application interaction
US20060080184A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for authorizing imaging device concurrent account use
US8060921B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential authentication and communication
US8060930B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential receipt and authentication
US20060077434A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential submission and consolidation
US7826081B2 (en) 2004-10-08 2010-11-02 Sharp Laboratories Of America, Inc. Methods and systems for receiving localized display elements at an imaging device
US8384925B2 (en) 2004-10-08 2013-02-26 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data management
US8213034B2 (en) 2004-10-08 2012-07-03 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access on an imaging device
US20060077449A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for administering imaging device notification access control
US7870185B2 (en) 2004-10-08 2011-01-11 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification administration
US7873718B2 (en) 2004-10-08 2011-01-18 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server recovery
US7873553B2 (en) 2004-10-08 2011-01-18 Sharp Laboratories Of America, Inc. Methods and systems for authorizing imaging device concurrent account use
US20060077442A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display element localization
US20060077453A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device related event notification
US8270003B2 (en) 2004-10-08 2012-09-18 Sharp Laboratories Of America, Inc. Methods and systems for integrating imaging device display content
US7920101B2 (en) 2004-10-08 2011-04-05 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display standardization
US7934217B2 (en) 2004-10-08 2011-04-26 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access to an imaging device
US7941743B2 (en) 2004-10-08 2011-05-10 Sharp Laboratories Of America, Inc. Methods and systems for imaging device form field management
US20070146823A1 (en) * 2004-10-08 2007-06-28 Borchers Gregory E Methods and Systems for Document Manipulation
US8237946B2 (en) 2004-10-08 2012-08-07 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server redundancy
US7966396B2 (en) 2004-10-08 2011-06-21 Sharp Laboratories Of America, Inc. Methods and systems for administrating imaging device event notification
US7969596B2 (en) 2004-10-08 2011-06-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device document translation
US7970813B2 (en) 2004-10-08 2011-06-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification administration and subscription
US7978618B2 (en) 2004-10-08 2011-07-12 Sharp Laboratories Of America, Inc. Methods and systems for user interface customization
US8230328B2 (en) 2004-10-08 2012-07-24 Sharp Laboratories Of America, Inc. Methods and systems for distributing localized display elements to an imaging device
US20060080123A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device job configuration management
US8001587B2 (en) 2004-10-08 2011-08-16 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential management
US8001586B2 (en) 2004-10-08 2011-08-16 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential management and authentication
US8001183B2 (en) 2004-10-08 2011-08-16 Sharp Laboratories Of America, Inc. Methods and systems for imaging device related event notification
US8006293B2 (en) 2004-10-08 2011-08-23 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential acceptance
US8156424B2 (en) 2004-10-08 2012-04-10 Sharp Laboratories Of America, Inc. Methods and systems for imaging device dynamic document creation and organization
US8006292B2 (en) 2004-10-08 2011-08-23 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential submission and consolidation
US20060077429A1 (en) * 2004-10-08 2006-04-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential management and authentication
US8015234B2 (en) 2004-10-08 2011-09-06 Sharp Laboratories Of America, Inc. Methods and systems for administering imaging device notification access control
US8051140B2 (en) 2004-10-08 2011-11-01 Sharp Laboratories Of America, Inc. Methods and systems for imaging device control
US8018610B2 (en) 2004-10-08 2011-09-13 Sharp Laboratories Of America, Inc. Methods and systems for imaging device remote application interaction
US8023130B2 (en) 2004-10-08 2011-09-20 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data maintenance
US8024792B2 (en) 2004-10-08 2011-09-20 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential submission
US8032608B2 (en) 2004-10-08 2011-10-04 Sharp Laboratories Of America, Inc. Methods and systems for imaging device notification access control
US8032579B2 (en) 2004-10-08 2011-10-04 Sharp Laboratories Of America, Inc. Methods and systems for obtaining imaging device notification access control
US8035831B2 (en) * 2004-10-08 2011-10-11 Sharp Laboratories Of America, Inc. Methods and systems for imaging device remote form management
US8051125B2 (en) 2004-10-08 2011-11-01 Sharp Laboratories Of America, Inc. Methods and systems for obtaining imaging device event notification subscription
US8049677B2 (en) 2004-10-08 2011-11-01 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display element localization
US11954646B2 (en) * 2004-11-08 2024-04-09 Open Text Corporation Systems and methods for management of networked collaboration
US11568365B2 (en) * 2004-11-08 2023-01-31 Open Text Corporation Systems and methods for management of networked collaboration
US8428484B2 (en) 2005-03-04 2013-04-23 Sharp Laboratories Of America, Inc. Methods and systems for peripheral accounting
US20060198653A1 (en) * 2005-03-04 2006-09-07 Sharp Laboratories Of America, Inc. Methods and systems for peripheral accounting
US8019817B2 (en) * 2005-05-30 2011-09-13 Canon Kabushiki Kaisha Collaboration support system and control method thereof
US20060282548A1 (en) * 2005-05-30 2006-12-14 Canon Kabushiki Kaisha Collaboration support system and control method thereof
US20070005707A1 (en) * 2005-06-20 2007-01-04 Microsoft Corporation Instant messaging with data sharing
US7693958B2 (en) * 2005-06-20 2010-04-06 Microsoft Corporation Instant messaging with data sharing
US20070005752A1 (en) * 2005-06-29 2007-01-04 Jitendra Chawla Methods and apparatuses for monitoring attention of a user during a collaboration session
WO2007005809A3 (en) * 2005-06-30 2007-04-05 Pando Networks Inc System and method for distributed multi-media production, sharing and low cost mass publication
US20070005694A1 (en) * 2005-06-30 2007-01-04 Pando Networks, Inc. System and method for distributed multi-media production, sharing and low-cost mass publication
WO2007005809A2 (en) * 2005-06-30 2007-01-11 Pando Networks, Inc. System and method for distributed multi-media production, sharing and low cost mass publication
US20070208587A1 (en) * 2005-12-08 2007-09-06 Arun Sitaraman Systems, software, and methods for communication-based business process messaging
US20080313546A1 (en) * 2006-01-13 2008-12-18 Paul Nykamp System and method for collaborative information display and markup
US8762856B2 (en) * 2006-01-13 2014-06-24 Reliable Tack Acquisitions Llc System and method for collaborative information display and markup
WO2007079587A1 (en) * 2006-01-13 2007-07-19 Diginiche Inc. System and method for collaborative information display and markup
US20080301193A1 (en) * 2006-01-29 2008-12-04 Deepak Massand Method of compound document comparison
US8527864B2 (en) 2006-01-29 2013-09-03 Litera Technologies, LLC Method of compound document comparison
US7818660B2 (en) 2006-01-29 2010-10-19 Litera Technology Llc Method of compound document comparison
US20100318530A1 (en) * 2006-01-29 2010-12-16 Litera Technology Llc. Method of Compound Document Comparison
US20100169838A1 (en) * 2006-07-31 2010-07-01 Microsoft Corporation Analysis of images located within three-dimensional environments
US7983489B2 (en) 2006-07-31 2011-07-19 Microsoft Corporation User interface for navigating through images
US20100278435A1 (en) * 2006-07-31 2010-11-04 Microsoft Corporation User interface for navigating through images
US9122368B2 (en) * 2006-07-31 2015-09-01 Microsoft Technology Licensing, Llc Analysis of images located within three-dimensional environments
US20080028341A1 (en) * 2006-07-31 2008-01-31 Microsoft Corporation Applications of three-dimensional environments constructed from images
US7764849B2 (en) 2006-07-31 2010-07-27 Microsoft Corporation User interface for navigating through images
US20080027985A1 (en) * 2006-07-31 2008-01-31 Microsoft Corporation Generating spatial multimedia indices for multimedia corpuses
US7712052B2 (en) * 2006-07-31 2010-05-04 Microsoft Corporation Applications of three-dimensional environments constructed from images
US20080025646A1 (en) * 2006-07-31 2008-01-31 Microsoft Corporation User interface for navigating through images
US20080070198A1 (en) * 2006-08-17 2008-03-20 Chameleon Technologies Corporation Computerized method, system and machine-readable medium to enable a user to remotely perform a decorating session on an electronic image
US20080072225A1 (en) * 2006-09-19 2008-03-20 Tetsuro Nagatsuka Information processing apparatus, information processing method, program, and recording medium
US8345272B2 (en) 2006-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for third-party control of remote imaging jobs
US8977697B2 (en) 2007-01-29 2015-03-10 Litera Technology Llc Methods and systems for removing metadata from an electronic document attached to a message sent from a mobile electronic device
US20080256188A1 (en) * 2007-01-29 2008-10-16 Deepak Massand Method of removing metadata from email attachments
US7895276B2 (en) 2007-01-29 2011-02-22 Litera Technology Llc Method of managing metadata in attachments to e-mails in a network environment
US8060575B2 (en) 2007-01-29 2011-11-15 Litera Technology Llc Methods and systems for managing metadata in email attachments in a network environment
US9807093B2 (en) 2007-01-29 2017-10-31 Litera Corporation Methods and systems for remotely removing metadata from electronic documents
US20110209052A1 (en) * 2007-06-29 2011-08-25 Microsoft Corporation Integrated collaborative user interface for a document editor program
US10015215B2 (en) 2007-06-29 2018-07-03 Microsoft Technology Licensing, Llc Integrated collaborative user interface for a document editor program
US8943417B2 (en) * 2007-06-29 2015-01-27 Microsoft Corporation Integrated collaborative user interface for a document editor program
US9154552B2 (en) 2007-09-06 2015-10-06 Microsoft Technology Licensing, Llc Method and apparatus for cooperative file distribution with receiver determined quality of services
US20090164285A1 (en) * 2007-12-20 2009-06-25 International Business Machines Corporation Auto-cascading clear to build engine for multiple enterprise order level parts management
US10474477B2 (en) * 2008-10-10 2019-11-12 Adobe Inc. Collaborative and non-collaborative workspace application container with application persistence
US11360790B2 (en) 2008-10-10 2022-06-14 Adobe Inc. Collaborative and non-collaborative workspace application container with application persistence
US20100174678A1 (en) * 2009-01-07 2010-07-08 Deepak Massand System and method for comparing digital data in spreadsheets or database tables
US10685177B2 (en) 2009-01-07 2020-06-16 Litera Corporation System and method for comparing digital data in spreadsheets or database tables
US20100241943A1 (en) * 2009-03-17 2010-09-23 Litera Technology Llc. System and method for the comparison of content within tables separate from form and structure
US8381092B2 (en) 2009-03-17 2013-02-19 Litera Technologies, LLC Comparing the content between corresponding cells of two tables separate from form and structure
US8136031B2 (en) 2009-03-17 2012-03-13 Litera Technologies, LLC Comparing the content of tables containing merged or split cells
US20110078589A1 (en) * 2009-09-16 2011-03-31 Sungkyunkwan University Foundation For Corporate Collaboration Method of networking multiple clients
US20110126127A1 (en) * 2009-11-23 2011-05-26 Foresight Imaging LLC System and method for collaboratively communicating on images and saving those communications and images in a standard known format
US8924864B2 (en) * 2009-11-23 2014-12-30 Foresight Imaging LLC System and method for collaboratively communicating on images and saving those communications and images in a standard known format
US8892632B2 (en) * 2010-06-04 2014-11-18 Microsoft Corporation Client-server interaction frequency control
US20110302237A1 (en) * 2010-06-04 2011-12-08 Microsoft Corporation Client-Server Interaction Frequency Control
AU2011299450B2 (en) * 2010-09-09 2014-11-13 Microsoft Technology Licensing, Llc Concurrent editing of online drawings
WO2012033608A2 (en) * 2010-09-09 2012-03-15 Microsoft Corporation Concurrent editing of online drawings
CN102508840A (en) * 2010-09-09 2012-06-20 微软公司 Concurrent editing of online drawings
WO2012033608A3 (en) * 2010-09-09 2012-05-03 Microsoft Corporation Concurrent editing of online drawings
US11036924B2 (en) * 2010-11-02 2021-06-15 Google Llc Realtime synchronized document editing by multiple users for blogging
US11675471B2 (en) * 2010-12-15 2023-06-13 Microsoft Technology Licensing, Llc Optimized joint document review
US8943147B2 (en) * 2010-12-15 2015-01-27 International Business Machines Corporation Sending a chat context to a recipient
US20120158853A1 (en) * 2010-12-15 2012-06-21 International Business Machines Corporation Sending a chat context to a recipient
US20120290951A1 (en) * 2011-05-12 2012-11-15 Shingo Utsuki Content sharing system
US9805482B2 (en) * 2011-10-13 2017-10-31 Autodesk, Inc. Computer-implemented tutorial for visual manipulation software
US20130100159A1 (en) * 2011-10-13 2013-04-25 Autodesk, Inc. Computer-implemented tutorial for visual manipulation software
US11256854B2 (en) 2012-03-19 2022-02-22 Litera Corporation Methods and systems for integrating multiple document versions
US20140013235A1 (en) * 2012-07-03 2014-01-09 Intemational Business Machines Corporation Representing a graphical user interface using a topic tree structure
US9046982B2 (en) * 2012-07-03 2015-06-02 International Business Machines Corporation Representing a graphical user interface using a topic tree structure
US9110554B2 (en) * 2012-07-03 2015-08-18 International Business Machines Corporation Representing a graphical user interface using a topic tree structure
US10356139B2 (en) * 2012-08-14 2019-07-16 Samsung Electronics Co., Ltd. Method and electronic device for editing content
US20140267105A1 (en) * 2013-03-12 2014-09-18 Sharp Kabushiki Kaisha Drawing device, display method, and recording medium
US9483451B2 (en) 2013-03-14 2016-11-01 Scribestar Ltd. System and method for handling user editing history based on spawning, merging data structures of directed acyclic graph
US10025782B2 (en) 2013-06-18 2018-07-17 Litera Corporation Systems and methods for multiple document version collaboration and management
US9519886B2 (en) * 2013-09-13 2016-12-13 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US20150082196A1 (en) * 2013-09-13 2015-03-19 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US10044773B2 (en) 2013-09-13 2018-08-07 Box, Inc. System and method of a multi-functional managing user interface for accessing a cloud-based platform via mobile devices
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US9311490B2 (en) * 2013-10-21 2016-04-12 Google Technology Holdings LLC Delivery of contextual data to a computing device while preserving data privacy
US20150113639A1 (en) * 2013-10-21 2015-04-23 Motorola Mobility Llc Delivery of contextual data to a computing device while preserving data privacy
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US9052812B1 (en) 2013-11-18 2015-06-09 Axure Software Solutions, Inc. System for exportable graphical designs with interactive linked comments between design and playback environments
US8938679B1 (en) * 2013-11-18 2015-01-20 Axure Software Solutions, Inc. Comment system for interactive graphical designs
US9756002B2 (en) 2014-03-21 2017-09-05 Litera Technologies, LLC Systems and methods for email attachments management
US11438286B2 (en) 2014-03-21 2022-09-06 Litera Corporation Systems and methods for email attachments management including changing attributes
US10791186B2 (en) 2014-04-08 2020-09-29 Dropbox, Inc. Displaying presence in an application accessing shared and synchronized content
US11683389B2 (en) 2014-04-08 2023-06-20 Dropbox, Inc. Browser display of native application presence and interaction data
US10887388B2 (en) 2014-04-08 2021-01-05 Dropbox, Inc. Managing presence among devices accessing shared and synchronized content
US11172038B2 (en) 2014-04-08 2021-11-09 Dropbox, Inc. Browser display of native application presence and interaction data
US10965746B2 (en) 2014-04-08 2021-03-30 Dropbox, Inc. Determining presence in an application accessing shared and synchronized content
US11016647B2 (en) * 2014-09-04 2021-05-25 Cadonix Ltd Web-based client-server geometric design methods
US9800473B2 (en) * 2015-01-30 2017-10-24 Appdynamics Llc Network based virtual collaborative problem solving space
US20160226719A1 (en) * 2015-01-30 2016-08-04 AppDynamics Inc. Network based virtual collaborative problem solving space
US20190155471A1 (en) * 2015-03-02 2019-05-23 Dropbox, Inc. Native Application Collaboration
US11526260B2 (en) 2015-03-02 2022-12-13 Dropbox, Inc. Native application collaboration
US11132107B2 (en) * 2015-03-02 2021-09-28 Dropbox, Inc. Native application collaboration
US20170024100A1 (en) * 2015-07-24 2017-01-26 Coscreen, Inc. Frictionless Interface for Virtual Collaboration, Communication and Cloud Computing
US10747418B2 (en) * 2015-07-24 2020-08-18 Coscreen, Inc. Frictionless interface for virtual collaboration, communication and cloud computing
US20170039170A1 (en) * 2015-08-04 2017-02-09 Google Inc. Systems and methods for interactively presenting a visible portion of a rendering surface on a user device
US10990258B2 (en) * 2015-08-04 2021-04-27 Google Llc Interactively presenting a visible portion of a rendering surface on a user device
US11537278B2 (en) * 2015-08-04 2022-12-27 Google Llc Interactively presenting a visible portion of a rendering surface on a user device
US10536408B2 (en) 2015-09-16 2020-01-14 Litéra Corporation Systems and methods for detecting, reporting and cleaning metadata from inbound attachments
US11170345B2 (en) 2015-12-29 2021-11-09 Dropbox Inc. Content item activity feed for presenting events associated with content items
US11875028B2 (en) 2015-12-30 2024-01-16 Dropbox, Inc. Native application collaboration
US10572558B2 (en) * 2016-03-07 2020-02-25 At&T Intellectual Property I, L.P. Method and system for providing expertise collaboration
US10389770B2 (en) * 2016-03-24 2019-08-20 Intel Corporation Concurrent network based collaboration sessions
US11943264B2 (en) 2016-04-04 2024-03-26 Dropbox, Inc. Change comments for synchronized content items
US11425175B2 (en) 2016-04-04 2022-08-23 Dropbox, Inc. Change comments for synchronized content items
US20170359444A1 (en) * 2016-06-10 2017-12-14 Apple Inc. Change propagation for realtime collaboration
US11128675B2 (en) 2017-03-20 2021-09-21 At&T Intellectual Property I, L.P. Automatic ad-hoc multimedia conference generator
US11442686B2 (en) * 2019-03-19 2022-09-13 Cisco Technology, Inc. Providing content from a collaboration whiteboard in a virtual meeting space environment
US10929088B2 (en) * 2019-03-19 2021-02-23 Cisco Technology, Inc. Active area of interest tracking in a multiuser digital whiteboard session
US11455345B2 (en) * 2019-10-30 2022-09-27 Apple Inc. Collaboration environments that support offline edits of shared documents
CN111585878A (en) * 2020-04-23 2020-08-25 腾讯科技(深圳)有限公司 Intelligent control method, intelligent gateway and system
US11539648B2 (en) 2020-07-27 2022-12-27 Bytedance Inc. Data model of a messaging service
US11349800B2 (en) 2020-07-27 2022-05-31 Bytedance Inc. Integration of an email, service and a messaging service
US11645466B2 (en) * 2020-07-27 2023-05-09 Bytedance Inc. Categorizing conversations for a messaging service
US11343114B2 (en) 2020-07-27 2022-05-24 Bytedance Inc. Group management in a messaging service
US11290409B2 (en) 2020-07-27 2022-03-29 Bytedance Inc. User device messaging application for interacting with a messaging service
US11922345B2 (en) 2020-07-27 2024-03-05 Bytedance Inc. Task management via a messaging service
US20220027559A1 (en) * 2020-07-27 2022-01-27 Bytedance Inc. Categorizing conversations for a messaging service
US20220405412A1 (en) * 2021-06-21 2022-12-22 Microsoft Technology Licensing, Llc Configuration of default sensitivity labels for network file storage locations
US11783073B2 (en) * 2021-06-21 2023-10-10 Microsoft Technology Licensing, Llc Configuration of default sensitivity labels for network file storage locations

Also Published As

Publication number Publication date
CA2397762A1 (en) 2001-08-02
AU2001234541A1 (en) 2001-08-07
US20090100368A1 (en) 2009-04-16
EP1256051A4 (en) 2004-09-29
US7484183B2 (en) 2009-01-27
US9053080B2 (en) 2015-06-09
EP1256051A1 (en) 2002-11-13
US8402392B2 (en) 2013-03-19
WO2001055831A1 (en) 2001-08-02
JP2003521061A (en) 2003-07-08
US20040225968A1 (en) 2004-11-11
US20130159833A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
US8024661B2 (en) Collaboration framework
US20020049786A1 (en) Collaboration framework
EP1589722B1 (en) Method, system, and apparatus for enabling near real time collaboration on an electronic document
US20030105816A1 (en) System and method for real-time multi-directional file-based data streaming editor
RU2379755C2 (en) System and method for sharing objects between computers over network
US7661101B2 (en) Synchronous and asynchronous collaboration between heterogeneous applications
Greenberg et al. Groupware toolkits for synchronous work
US7451186B2 (en) Method and system of integrating instant messaging with other computer programs
US7454465B2 (en) Real-time collaboration and communication in a peer-to-peer networking infrastructure
US7437275B2 (en) System for and method of multi-location test execution
KR100722355B1 (en) Method and apparatus for activity-based collaboration by a computer system equipped with a dynamics manager
US20210058406A1 (en) Method of achieving synchronization management of account information of WEB interface in multi-system DAS
CN106648903B (en) The method and apparatus for calling distributed file system
CA2644583A1 (en) Tracking and editing a resource in a real-time collaborative session
US20140090084A1 (en) Collaborative comic creation
CN105959179A (en) Reverse proxy nginx testing system and method
CN111831260A (en) Data synchronization method, system and related device based on web modeling
WO2015017482A1 (en) Messaging over http protocol for data exchange
CN100571146C (en) Can carry out the nearly mthods, systems and devices of cooperation in real time by a plurality of computer systems for electronic document
CN104509029B (en) The method and device of personal information is updated in a communications system
CN110442334B (en) Multi-user collaborative graph configuration method, electronic equipment and server
KR100433948B1 (en) Method for Real-Time Synchronization of Data/Event between CADApplications Program
CN113794619B (en) Group creation method, group personnel update method, device, equipment and medium
CN113342402B (en) Multi-player cooperative game editing method, system and device
CN117640659A (en) Unified message data processing method, device and storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: AUTODESK, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BIBLIOWICZ, JACOBO;KREISEL, CAROLYN E.;LIPARI, ROBERT;AND OTHERS;REEL/FRAME:012286/0596

Effective date: 20011018

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION