+

WO2001075591A2 - Systeme de traitement de donnees collaboratif avec architecture autonome repartie de traitement de l'information - Google Patents

Systeme de traitement de donnees collaboratif avec architecture autonome repartie de traitement de l'information Download PDF

Info

Publication number
WO2001075591A2
WO2001075591A2 PCT/US2001/010571 US0110571W WO0175591A2 WO 2001075591 A2 WO2001075591 A2 WO 2001075591A2 US 0110571 W US0110571 W US 0110571W WO 0175591 A2 WO0175591 A2 WO 0175591A2
Authority
WO
WIPO (PCT)
Prior art keywords
projector
collaborative
user
user system
server
Prior art date
Application number
PCT/US2001/010571
Other languages
English (en)
Other versions
WO2001075591A3 (fr
Inventor
Eric Arthur Jones
Lawrence Allen Brader
Roger Guy March
Original Assignee
Bulabay Corporation
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 Bulabay Corporation filed Critical Bulabay Corporation
Priority to AU2001253073A priority Critical patent/AU2001253073A1/en
Publication of WO2001075591A2 publication Critical patent/WO2001075591A2/fr
Publication of WO2001075591A3 publication Critical patent/WO2001075591A3/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Definitions

  • the present invention is directed to computer system architectures which implement collaborative information processing techniques. More particularly, the invention is directed to suc systems which are capable of processing a wide range of information types over a distributed processing architecture.
  • Entities within the individual Gate processing spaces may include ConnectionProjectors representative of clients, e.g., human users and projectors representative of computer-based entities such as voice services, white boards, collaborative user applications such as browsers and word processors, and the like. Such entities as well as information may be collected in LocaleProjectors.
  • ConnectionProjectors representative of clients, e.g., human users and projectors representative of computer-based entities such as voice services, white boards, collaborative user applications such as browsers and word processors, and the like.
  • Such entities as well as information may be collected in LocaleProjectors.
  • a client acts upon its copy of an entity
  • a version of the resultant entity is preferably passed to a server acting as a Collaborative Operating Environment for the clients and other entities, and the server passes it to other clients associated with the entity.
  • the Collaborative Operating Environment establishes social rules for interaction between . entities in the Gate spaces.
  • FIGURE 1 shows a distributed communication network according to a preferred embodiment of the present invention
  • FIGURE 2 shows server-user logon activity in the preferred embodiment
  • FIGURE 3 shows the structure of a ConnectionProjector according to the preferred embodiment
  • FIGURE 4 shows a typical distribution of users within the preferred embodiment
  • FIGURE 5 shows a sample arrangement of projectors within a server according to the preferred embodiment
  • FIGURE 6 shows a typical hierarchical tree structure defining tlie processing space in the preferred embodiment
  • FIGURE 7 shows a simplified trie data structure similar to those used in the preferred embodiment
  • FIGURE 8 shows a typical collaborative environment established between several users using the preferred embodiment.
  • FIGURE 9 is a flowchart showing the process of establishing and terminating a basic collaborative session between two users in the preferred embodiment.
  • a preferred embodiment of the present invention uses a server-client architecture as shown in FIG. 1.
  • one or more servers 100 are preferably connected to one or more user systems 200 via a communication network 300.
  • the communication network 300 may be a dedicated, hardwired network such as a LAN or a distributed network such as the Internet, In the preferred embodiment the Internet is used as the network 300, and the preferred embodiment will be explained in that context.
  • Processing hardware such as microprocessor-based server systems and personal computer systems may be used for the servers 100 and user machines 200, as is known in the art; preferably, the processing power of the servers 100 is at least as great as that of the user systems 200.
  • the system is preferably based in software and coded in an appropriate object-oriented programming language such as C++ or Java. Java is the preferred language because it is a well-formed object-oriented programming language with integral networking and thin client capabilities as well as cross-platform portability.
  • a user system 200 Upon startup, as shown in FIG. 2 a user system 200 preferably creates a GateConnection object 202 which takes an IP address on the network 300 and a socket port 302 that define the server 100 to which it will connect.
  • the user program also passes the GateConnection object 202 a user ID and password which are used by the user system 200 when connecting to the system.
  • the GateConnection object 202 then proceeds to attempt to log on to the system by sending a logon message 304 containing the user ID and password.
  • the server 100 preferably is connected to the socket ' 302 of the communication network 300 and on startup listens on a predetermined port or ports for messages directed to it.
  • the server 100 may clone the socket 302 (so that the socket 302 may be used for communication - • with the user 200 rather than simply for listening for user connections) and create a connection management object 102.
  • the connection management object 102 preferably starts two threads: an input thread 104 to manage network messages from the user 200 arriving at the socket ' 302, and an output thread 106 to manage messages sent by the server 100 over the network 300 to the user 200.
  • the first action of input thread 104 is to extract the user ID and password included in the logon message 304 and compare it to entries in a user database 108 as is known in the art. If the user ID and password pair are not found in the database 108, a message may be sent to the user system 200 advising it of the logon failure; then, the input thread 104 shuts down the cloned socket connection 302. If the user ID and password pair are found in the user database 1 8, the input thread 104 may send an acknowledgement message 306 to the user system 200 and proceeds to process subsequent messages from it as will be described in greater detail below.
  • the acknowledgement message 306 is a special case ' of a ConnectionProjector object, which will be described in greater detail below.
  • ConnectionProjector objects are preferably responsible for system management operations between the user system 200 and the server 100, and once the user 200 receives the acknowledgement message/ConnectionProjector 306 from the server 100, it can start interacting with the server 100.
  • the ConnectionProjector object sent to the user system 200 may include the user's unique User ID 306a (this may be, for example, an ID code chosen by the user 200 as is known in the art); a unique system ID or specifier 306b for the user 200, e.g., a serial number or identifier code automatically generated by the server 100; a specifier list 306c which specifies the location of the user 200 in the system's information space (the information space and specification of the user 200 will be described in greater detail below); a filter object 306d which defines which other users 200 are allowed (or not allowed) to find this particular user 200 during system queries; and a selector object 306e which is used to communicate a query expression from the user system 200 to the server 100 (the actions of these last two
  • the ConnectionProjector object 406 is itself preferably an instantiation of a general object class called the Projector class.
  • Projector class instantiation types include LocaleProjectors and CustomProjectors.
  • ConnectionProjectors may be thought of as representatives of users within the server 100; LocaleProjectors as establishing collaborative locales for entities within the system to interact, and CustomProjectors as functional resources for entities within the system.
  • the user system 200 may create its own input and output threads 204 and 206, respectively. These threads manage user message input and output, respectively, as will be described in greater detail below.
  • the preferred primary technique for interaction between user systems 200 and servers 100 in the preferred embodiment shown in FIG. 4 is through the modification of shared objects called Projectors 400.
  • Projectors 400 When a user system 200a modifies its copy of a Projector 402, it preferably modifies its copy 402a thereof and sends a message 308 advising the server 100 to update the Projector 402 accordingly,
  • the server 100 receives such a message 308, or modifies the Projector 402 on its own, it may send a similar update message 310 to all clients observing the Projector 402.
  • the server 100 and all of the clients receiving such update messages 308 and 310 can then modify their copies of the Projector 402 responsive thereto.
  • clients as used herein is meant to have a broader meaning separate from the usual meaning in the server-client context. Rather, herein “client” is not limited to the user systems 200 but is instead understood to represent user systems 200, Projectors 400 and other servers 100 observing a particular Projector 400. Even more broadly, the term may be understood to cover all such entities 100, 200 and 400 associated with the server 100.
  • the preferred embodiment of the present invention has no explicit mechanisms for differentiating a user system 200 associated with an actual human user from an independent computer process acting as a client, and all clients are accommodated in the same way in terms of system code and functionality from the viewpoint of the server 100, Should a client application wish to differentiate between human clients and computer clients, an appropriate code can be included in the specifier 306b of each client's ConnectionProjector. Then, the interested client can obtain ConnectionProjectors of other clients and extract their specifiers 306b a query of the server's address space,
  • the server 100 may send Projector update messages 310b to other user systems 200b observing the updated Projector 402 to cause them to update their copies 402b of the Projector 402; it may send Projector update messages to other Projectors 400 within the server 100 which are observing the updated Projector 402 to cause them to update copies 402c of the Projector 402 which they contain; or it may send Projector update messages 31 Od to other servers 1 OOd observing the updated Projector 402 to cause them to update their copies 402d of the Projector 402.
  • two types of Projectors 400 may be created by the server 100.
  • the server 100 creates in memory a ConnectionProjector 406 associated with that user system 200.
  • the server 100 organizes the ConnectionProjectors 406 using a hash table with the client's system ID as the key. nd its ConnectionProjector 406 as the value.
  • ConnectionProjector 406 is not stored in ObjectStore 404 with the other Projectors 400 because ConnectionProjectors 406 generally have no information relevant between sequential sessions for the same user; thus, there is generally no need to maintain persistence with these objects.
  • the Connection Projector 406 may effectively serve as a proxy for the user system 200 within the server 100 serving to represent it therein and uniquely identifies the user system 200. Although they may have other functions as described below, ConnectionProjectors 406 can be used by clients to request performance of actions on their behalf by the server 100. A number of such actions will be described below.
  • the second type of Projector object 400 is the LocaleProjector 408. These objects can help to organize other Projectors 400 within the object storage space of the • server 100 in a hierarchical, addressable manner and thereby create locales for collaborative processing. For example, in FIG. 5 the server 100 has a single LocaleProjector 408 separate from the ConnectionProjector 406.
  • the LocaleProjector 408 contains two projectors, a CustomProjector 41 and another Local Projector 412.
  • the LocaleProjector 412 in turn contains two CustomProjectors 414 and 416.
  • LocaleProjectors 408 are particularly useful because they permit clients to become observers of a collection of Projectors 400, as will be described in greater detail below. Thus, when a client becomes an observer of a particular LocaleProjector 408, the entire tree contained in the LocaleProjector 408 may be sent to the client via a recursive descent of the ObjectStore 404. When visited, each object within the LocaleProjector 408 can send its content object to the client.
  • clients may also create CustomProjectors as described above for performing various application-specific tasks. Specific instances of such custom projectors are in large part application-specific and will be readily apparent to those skilled in the art in a given context;
  • a client can become an observer of a LocaleProjector 408 by invoking a JomLocal method of their ConnectionProjector 406 and specifying the LocaleProjector - 408 they want to observe.
  • the server 100 preferably sends the client a copy of the LocaleProjector 408 and any Projectors 400 which it might contain.
  • the server 100 can then add that client to a list associated with each object transferred so that if any of them are modified by a client, a corresponding update is sent to that client.
  • a client may gain the right to add objects to the LocaleProjector 408. Additionally, a client may add object to a LocaleProjector 408 even if the client is not an observer of the
  • LocaleProjector 408 This occurs when a client has received a LocaleProjector 408 as the result of a server query operation as described in greater detail below.
  • the client may also modify the LocaleProjector provided it is not owned (as described below) by another client Locking is done by accessing the sendLockingDirecrive method of a
  • a projector may be unlocked by the client invoking its sendUnlockingDirective method.
  • the server 100 updates its stored copy of the projector with that received from the client, and provides that content to other observers of the projector. In this way, clients can make changes to projectors knowing that no other clients wiH ' interfere with them until they are unlocked. This mechanism provides a degree of transaction integrity in the system.
  • a concept associated with that of locking is ownership.
  • a client which creates a LocaleProjector 408 preferably becomes its owner by default, and is the only client allowed to make changes to the LocaleProjector 408.
  • other clients which are observers of a LocaleProjector 408 may add projectors, including LocaleProjectors, to the LocaleProjector 408, they cannot change the attributes of the LocaleProjector 408 itself.
  • the owner of the LocaleProjector 408 can transfer ownership of the LocaleProjector 408 to another client, or it may make the LocaleProjector 408 unowned.
  • any client may make changes to it or even assume ownership of it.
  • Deletion of a projector may be done by invoking the projector's Remove method. This method can take a single argument that specifies whether the removal is local or global (i.e., all instances of the projector should be deleted). Any client may remove a projector from its own local process space whether it is locked or unlocked. If the command is global, other instances may be removed only if the projector is unlocked or the command is issued by the client which locked the projector. For LocaleProjectors 408, other instances are removed only if the LocaleProjector 408 is unowned or the deletion command is issued by the owner of the LocaleProjector 408. Clients can preferably also invoke an Unjoi ⁇ Local method of their
  • the UnjoinLocal method removes the client from the list of observers for the LocaleProjector 408 specified as an argument to the command. This means that the client will no longer receive updates for that LocaleProjector 408 or any of its children.
  • the behavior on the client side after this command is invoked depends on the client application issuing the - command.
  • the server 100 preferably stores a Projector 400 in a condensed form as a Content object, which is not shared; rather, Content objects are exchanged between clients and servers 100, Content objects are preferably stored in the ObjectStore class 404,
  • the ObjectStore class 404 preferably supports a hierarchical, addressable forest of object trees as will be described in greater detail below.
  • a client modifies a Projector 400 preferably the modified Projector 400 itself is not actually sent to the server 100 and from there to other clients observing the Projector 400; rather, the objects stored and transported are Content objects.
  • Content objects may essentially contain information that allows the server 100 and clients to update the state of distributed data objects derived from the Projector class.
  • a client when a client modifies a Projector 400 it may pass a Content object indicating the change that has been made to the Update method of its ConnectionProjector 406 on the server 100 along with a Director object indicating information about the change as described in detail below, the Content and Director objects being contained within a container called an Impulse object.
  • the Update method is preferably responsible for processing requests for server-side actions by the ConnectionProjector 406.
  • the server 100 then may send similar Impulse objects to any other clients which are observing the modified Projector 400.
  • a Projector 400 are condensed by extracting the shared variables associated with that object as the Content object. This set of shared variables associated with the Projector 400 can then be included with a Director object in the Impulse object and sent to a user system 200. For an added degree of compression, rather than sending all variables associated with the Projector 400, including both those which have been changed and those which have not been changed, the system may maintain a record of which variables have been changed in the Projector 400 and extract only those which have changed. Once the amount of unchanged variables reaches a predetermined point, this technique can be useful to make efficient use of the system's I/O resources.
  • Director objects preferably contain three String objects.
  • the first indicates the function of the Director object; that is, the reason the LocaleProj ctor 408 with which the Director is associated is being modified; for example, as noted above the String may be "SetLock”, “ClearLock” or "Destroy".
  • the other two String objects are intended for the use of client applications using distributed objects to tell one another why they are modifying the state of a LocaleProjector 408.
  • a client may invoke one of the SendDirective methods defined by the Projector class. These methods enable the client to send an application-level Directive and some associated data along with this update in its Director object.
  • the associated data may be available for use of client applications and include the two strings in the Director object, ProjectorDirective and ProjectorDirectiveArg. These can be used by one client to communicate the reason for an update to another client observing the object being updated.
  • these mechanisms can allow client applications to implement not - just shared memory but also messaging and remote method invocation between clients.
  • the SendDirective method preferably causes an update of the projector's Content object. Contained in an Impulse object, the Content object and its associated Director object are placed in the client's output thread queue. A notice is then sent to the output thread 206, alerting it that it needs to process its queue.
  • the input thread 104 of a server 100 When the input thread 104 of a server 100 receives an Impulse object, it preferably extracts its Content and Director objects. The Content object is examined to determine what type of object it represents. If it represents a ConnectionProjector object 406, its ID is compared to the ID of this thread's ConnectionProjector 406. If the two IDs match, this thread's ConnectionProjector 406 is updated with the contents of the Content object and the Content and Director objects are passed to the inp ⁇ t thread's ConnectionProjector 406 update method for possible further processing.
  • the ProjeotorDirective may contain the string "JoinLocal” indicating the client wishes to join the LocaleProjector 408 whose ID is contained in ProjectorDirectiveArg; alternatively, it may contain the string "AddSpecifier” indicating that the client wishes to add a name/value pair to its specifier list.
  • Changes to the ConnectionProjector 406 that only involve changes to its internal shared data may be made directly by the client itself. Changes, that involve interaction with the server 100 may be carried out in the Server and be specified via the Pr jectorDirective.
  • the input thread 104 may retrieve the LocaleProjector 408 from the system represented by the Content object. More specifically, the input thread 104 preferably retrieves the LocaleProjector 408 from a hash table that the server 100 maintains of active LocaleProjectors 408. The input thread 104 gets tlie ID of the LocaleProjector 408 from its Content object. This is done so that the input thread 104 may determine who the owner is and if an update is allowed, the Content object and the Director object are passed to the update method of the LocaleProjector 408 for further processing.
  • the LocaleProjector 408 is unowned or owned by the input thread's ConnectionProjector 406
  • the LocaleProjector 408 is updated with the contents of the Content object and the Content and Director objects are passed to the LocaleProjector's Update method for possible further processing. For example, it may set the owner of the LocaleProjector 408 to the specified ConnectionProjector ID, or it may notify the LocaleProjector 408 that its filter expression has changed. The LocaleProjector 408 need not act on this notification when it is received. If the Content object represents neither a ConnectionProjector 406 nor a
  • the input thread 104 of the server 100 preferably first checks to see if its ObjectStore 404 contains a reference to the object represented by the Content object. If the reference exists, the input thread 104 preferably creates a synclock, s is known in the art based on the reference to the stored object. If the stored Content object is either not locked or its lock is owned by the input thread's ConnectionProjector 406, the input thread 104 continues processing the incoming update. If the new Content object represents a custom projector that has not been received by the server 100 before, the input thread 104 assigns a unique ID to the object and adds it to the ObjectStore 404. It then notifies the object's observers that there is a new object to send to their clients.
  • the above generally describes the functionality of the server's input thread 104.
  • the server's output thread 106 preferably writes Impulse objects to its socket's output stream.
  • the output thread's object implements the Observer interface similar to those implemented in, e.g., the Java programming language.
  • an Observable object such as a content object notifies the output thread 1 6 of a change in state
  • the update method places an Impulse object containing the observable object and its associated Director object into an output queue and notifies the waiting output thread 106 that it has something in its queue.
  • the output thread 106 then wakes up and writes all Impulse objects in its queue to the socket's output stream.
  • the client's input thread 204 processes such an Impulse object sent from the server 100, it preferably extracts the Content and Director objects therefrom and passes them to the client's update method. If the Content object represents a ConnectionProjector 406, the input thread 204 checks to see if it has received a prior ConnectionProjector 406. This is done to see if this particular client has ever received a ConnectionProjector before. Since the first projector a client ever receives is its own ConnectionProjector, if it has not previously received a ConnectionProjector then this must be the ConnectionProjector that represents its connection to the server 100. If the input thread 204 has not previously received a ConnectionProjector
  • this Content object represents its client's control interface to the server 100, so the input thread 204 preferably instantiates a ConnectionProjector 406 object and initializes it with the Content object. If a prior ConnectionProjector 406 has been received, the input thread 204 checks to see whether the ID of the object represented by the Content object matches the ID of the ConnectionProjector 406 it first received. If the IDs match, the - input thread 204 updates the state of its ConnectionProjector 406 with the Content object's data. If the IDs do not match, the projector is passed to the client's Update method since it is understood to be a response to a query of the server 100.
  • the input thread 204 preferably queries the ObjectStore 404 to find out if the distributed object represented by the Content object has already been received by this client. If it has, the input thread 204 updates the state of the object, if the object has not been previously received, the input thread 204 instantiates the distributed object represented by the Content object and adds it to the ObjectStore 404. If the object is a child of a runnable service projector, i.e., a projector that can be run in the client process space in its own thread to enable a client application to extend its processing space to other client machines of the server 100, it and its Director object are sent to the client's update ⁇ method. Objects that are children of runnable services are only sent to the client's update method if the client requests it. The input thread 204 then sends the distributed object and its Director to the client's update method.
  • a runnable service projector i.e., a projector that can be run in the client process space in its own thread to enable a client
  • Output from the client's output thread 206 generally proceeds in . correspondence with that of the server's output thread 106.
  • the Client since the Client may not be interested in receiving notifications for projectors 400 that have already been handled by a ran ⁇ ing service, it can preferably specify when it initially creates the GateConnection object 202 whether it is to receive those notifications.
  • the client's update method is preferably responsible for handling incoming projectors and any application-level Directives that may be contained in the Director object.
  • the ObjectStore class 404 may include in its branches Content objects corresponding to LocaleProjectors 408 and CustomProjectors. These objects may be stored only in semiconductor memory or other similar memory, i.e., transient; they may be stored on disk or other such storage, i.e., persistent; or hybrid, i.e., stored in memory and on disk, with a memory image maintained as lorig as server memory is available.
  • Users 200 also preferably have ObjectStore spaces 404'.
  • Objects received by the user's input thread 204 are stored in the ObjectStore 404' as transient objects, regardless of their state on the server 100.
  • Objects stored in the ObjectStore 404' by the user application may be stored as transient, persistent or hybrid as on the server 100,
  • the ObjectStore 404 preferably supports a hierarchical access system similar to that used for file systems such as Windows and UNIX. So, as shown in FIG. 6, the ObjectStore 404 may include a topmost LocaleProjector named "LPl " which contains another Local Projector "LP2", itself containing two CustomProjectors "CuPl" and "CuP2". These shared objects could then respectively be addressed by; LPl
  • LocaleProjectors 408 and ConnectionProjectors 406 may be addressable using a collection of (Name, Value) pairs.
  • the content of the (Name, Value) pairs can be determined by client applications through the use of client-to-server application level directives supported by - those Projectors 406 and 408.
  • the server 100 amends a trie data structure to include a node addressed by the Name parameter. Then, it associates the Value parameter and a reference to the Projector 400 containing that (Name, Value) pair with that node.
  • a trie data structure is a data structure that stores elements in a tree, where the path from the root to the leaf is described by the key. Such data structures are often used to store information using words or strings as keys. So, as shown in FIG. 7 the trie structure maintained by the server 100 may include nodes corresponding to the names "TO”, “THE”, “THEM”, etc.
  • a client may request that a server 100 search the Projectors 400 by setting a search expression in its ConnectionProjector 406. This is done via the ConnectionProjector' s setSelector method. This method preferably sets the
  • ConnectionProjector's selector data member (a string) to the value passed into the method. It then sends an update to the server 100 with a Director ProjectorDirective of , "SetSelector".
  • server's instance of the ConnectionProjector 406 receives the update, its update method performs a query of the trie data structure. Projectors that are returned via the search are then screened by comparing their filters against the querying client's specifier 306b which is available from the querying ConnectionProjector 406.
  • a query language and a parser therefor may be developed according to programming techniques well-known in the art.
  • a query language compiler tool such as the JavaCC parser generator developed by Sun Microsystems and distributed by Metamata Company of Fremont, California may be used to generate an appropriate parser based on the query language description, as is known in the art.
  • the projectors that allow themselves to be returned to the querying client are then sent to that client via the client's output thread.
  • These projectors' Director objects contain a Directive of "QueryReponse", the ProjectorDirective contains a string of the form "n/r ⁇ " where m is the total number of projectors being returned and n is the count of the current projector. If there are no projectors to be sent back to the querying client the ConnectionProjector sends itself back to the client with a ProjectorDirective containing the string "0/0", The ProjectorDirectiveArg contains the selector string that was used to initiate the search responsible for returning this projector to the client.
  • the search expression provided by the client is preferably implemented in a known expression language such as Perl 5 as a string of (Name, Value) pairs separated by logical operators.
  • the Name parameter in the search expression should exactly match a Name in the trie address space; alternatively, a regular expression matching scheme may be used.
  • the Value parameter may be a literal string, or it may be a regular expression in, say, Perl 5.
  • Logical operators may include AND, OR and NOT, and subexpressions within the search expression may be parenthesized to force evaluation order.
  • the server 100 searches the address space by looking up each Name in the trie structure. If a matching Name parameter is found, its Value fields are compared with the Value string in the search expression, with regular expressions in the search expression being evaluated for each Value parameter occurrence. If a match between the search expression and a Value field is found in this way, the matching (Name, Value) pair's associated addressable object field is added to a candidate list the server 100 assembles for that search.
  • the server 100 After completing the search and assembling a candidate list, if any candidates have been identified the server 100 preferably compares the address of the client requesting the search to a filter expression (this, too, is a list of literal expressions and/or regular expressions) associated with each addressable object identified in the candidate list. If the filter expression associated with a particular addressable object matches the address of the requesting client, that addressable object will be removed from the candidate list and will not be provided to the requesting client.
  • a filter expression this, too, is a list of literal expressions and/or regular expressions
  • each addressable object is assigned a priority, and addressable objects are allowed to filter out searches from clients having ConnectionProjectors 406 with priorities lower than their own.
  • a non- hierarchical system can be implemented in which each addressable object is assigned a category, and addressable objects of a particular class are allowed to filter out searches from clients according to the category of the clients' ConnectionProjectors 406. It will be readily apparent to those skilled in the art that the above architecture can be applied in a wide variety of practical applications. For example, FIG.
  • FIG. 8 shows a typical collaborative computing environment implementing the preferred embodiment of the present invention in which three users 200, including a system administrator Wanda, a live assistant Larry and a customer Guy, are connected to the system.
  • Each of these users 200 is represented within the server 100 as a ConnectionProjector 406.
  • CustomProjectors representative of a voice-over-IP service 418a (i.e., a chat room); a white board 418b where clients can collectively write information to be viewed by all observers of the white board 418b; a collaborative Internet browser 418c which can be used by clients to cooperatively navigate the World Wide Web; and a collaboratively operable version 418d of a word processor or the like.
  • the server 100 may additionally include LocaleProjectors representing a library or information repository 420a; a customer service center 420b; and a training portal 420c through which other computing environments 100' may be reached.
  • users 200 such as Larry, the live assistant, and Guy, the customer, can conduct a conversation using the voice service 418a by sending messages adding digitized voice information to it Via the server 100 so that the digitized voice information will then be relayed to all observers of the voice service 418a, or only to particular observers. They may similarly use the whiteboard service 418b by sending messages adding text to it, and the text messages will similarly be relayed to all observers of the whiteboard 418b or only particular observers as the user directs. Similar techniques may be used to access the collaborative Internet browser 418c and word processor 418d. Similarly, the users 200 can access information in the LocaleProjector
  • her ConnectionProjector 406 issues a query with a regular expression effectively asking for the best available assistant in the information processing space.
  • the server 100 finds an assistant with properties matching the customer's interest expression and establishes the customer's ConnectionProjector 406 as an observer of that assistant and vice-versa so that the two can communicate.
  • the customer then sees the assistant and asks him to participate in, e.g., collaborative browsing and voice/chat sessions in various LocalProjectors and CustomProjectors for assistance. Given the LocaleProjector and Observer mechanisms described above, the customer and assistant will be able to communicate while observing the same information.
  • Step 500 the server 100 initializes and during that process finds a CustomProjector providing, say, a chat function, and indexes it as described above. The server 100 then waits for subsequent activity.
  • a CustomProjector providing, say, a chat function, and indexes it as described above.
  • the server 100 then waits for subsequent activity.
  • a first user 200 starts its system in Step 502 and connects to the server 100.
  • the server 00 accepts the connection in Step 504 and generates a ConnectionProjector 406 responsive thereto, assigns it to the connection and creates an index entry for the ConnectionProjector 406.
  • Step 506 a second user 200 starts its system and connects to the server 100.
  • the server 100 accepts the connection in Step 508 and generates a ConnectionProjector 406 responsive thereto, assigns it to the connection and creates an index entry for the ConnectionProjector 406.
  • Step 510 the first user 200 creates a LqcaleProjector 408 and populates it with the chat CustomProjector.
  • the first user 200 then enters the LocaleProjector 408 in Step 512 by directing its ConnectionProjector 406 to join it and invites the second user 200 into it.
  • the second user 200 accepts the invitation in Step 514 and directs its ConnectionProjector 406 to join the LocaleProjector 408.
  • Step 516 the first and second users 200 then create content using the chat CustomProjector which is distributed to the other as described above, thereby establishing a collaborative session.
  • she terminates observation of the LocaleProjector 408 as described above.
  • the server 100 effectively acts as a Gate for controlling the flow and processing of information between clients in the system.
  • the information space encapsulated by the Gate forms node in the distributed information space, and the combination of nodes associated with all Gates defines the distributed processing space.
  • a computer system according to the present invention can form a distributed information processing space which integrates a wide variety of information from disparate sources and render it in a form which is easily usable by multiple users.
  • a space can be specified by a set of . geometric metrics.
  • metrics to define a three-dimensional Euclidean space might include x, y and z coordinates; position; and orientation.
  • a four- dimensionai, e.g., temporal, Newtonian information space might be defined by these metrics with the addition of metrics for direction and speed (note that the direction metrics is most appropriately a vector quantity rather than a scalar). From this, one can understand that such defined. geometries and bases can give forms intrinsic properties such as mass and other interesting properties by adding dimensions to the space or by changing the nature of the metric basis.
  • geometric encapsulation can be applied to any field, and a Manifold Operating Environment, i.e., the space defined by a mathematical manifold which permits the definition of many metrics to encapsulate a large information space, is formed by the manifold which describes the properties of the axioms forming each dimension.
  • a Manifold Operating Environment i.e., the space defined by a mathematical manifold which permits the definition of many metrics to encapsulate a large information space, is formed by the manifold which describes the properties of the axioms forming each dimension.
  • the information space also provides additional benefits such as active space, i.e., objects which exist have an information form which is responsive like the objects; setting simple rules within the information space makes them intrinsic to the nature of the object rather than explicit; and intrinsic information form control can be used to render information of a given dimensionality into a higher dimensionality.
  • the preferred embodiment of the present invention describes an information space as a list of metric names, and assigns values to these metrics as ⁇ ame, value> tuples. As noted above, these tuples are passed to clients in string form. Strings are useful in this respect because all objects can be converted to strings and from there to byte streams which can be used by the projectors. Additionally, all Java objects have an intrinsic method toStringQ. Thus, Java objects may implicitly be converted to strings.
  • the server 100 can be seen to implement a type of Collaborative Operating Environment which governs interactions between users of the system and interactions of the users with entities in the distributed information processin space. That is, as described in the architectural discussion and examples above, the server 100 acting as a Collaborative Operating Environment enforces rules within the distributed information space in terms of the interaction of multiple sources of . information, which entities within the distributed information space are allowed to create, alter and delete other entities, and enforces a set interaction paradigm which includes controls on identity, or who entities in the distributed information processing space are; visibility, including which entities a particular entity can "see”; and cloaking, which entities that entity can in turn see.
  • a Collaborative Operating Environment which governs interactions between users of the system and interactions of the users with entities in the distributed information processin space. That is, as described in the architectural discussion and examples above, the server 100 acting as a Collaborative Operating Environment enforces rules within the distributed information space in terms of the interaction of multiple sources of . information, which entities within the distributed information space are allowed to create, alter and delete other

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Cette invention concerne un système de traitement informatique définissant une architecture de traitement répartie composée d'un certain nombre d'espaces de porte pour traitement de l'information. Au sein des espaces de porte de traitement, des entités sont constituées par des extensions de connexion représentant des clients, par exemple des utilisateurs humains et des extensions présentant des entités à base informatique telles que des services vocaux, de tableaux blancs ou des applications utilisateur collaboratives de type navigateur, traitement de texte, etc. De telles entités ainsi que des informations peuvent être recueillies sur des extensions locales. Lorsqu'un client agit sur sa copie d'entité, une version de l'entité qui en résulte est transmise à un serveur faisant office d'environnement d'exploitation collaboratif pour les clients et autres entités, lequel le serveur transmet cette version à d'autres clients reliés é cette entité. De cette manière, notamment, l'environnement d'exploitation collaboratif établit des règles sociales régissant l'interaction entre les entités dans les espaces de porte.
PCT/US2001/010571 2000-04-01 2001-03-30 Systeme de traitement de donnees collaboratif avec architecture autonome repartie de traitement de l'information WO2001075591A2 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001253073A AU2001253073A1 (en) 2000-04-01 2001-03-30 Collaborative information processing system having distributed autonomous information processing architecture

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54131900A 2000-04-01 2000-04-01
US09/541,319 2000-04-01

Publications (2)

Publication Number Publication Date
WO2001075591A2 true WO2001075591A2 (fr) 2001-10-11
WO2001075591A3 WO2001075591A3 (fr) 2003-01-09

Family

ID=24159074

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/010571 WO2001075591A2 (fr) 2000-04-01 2001-03-30 Systeme de traitement de donnees collaboratif avec architecture autonome repartie de traitement de l'information

Country Status (2)

Country Link
AU (1) AU2001253073A1 (fr)
WO (1) WO2001075591A2 (fr)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721825A (en) * 1996-03-15 1998-02-24 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list

Also Published As

Publication number Publication date
WO2001075591A3 (fr) 2003-01-09
AU2001253073A1 (en) 2001-10-15

Similar Documents

Publication Publication Date Title
US11714665B2 (en) Method and apparatus for composite user interface creation
US11838358B2 (en) Network operating system
US6330560B1 (en) Multiple manager to multiple server IP locking mechanism in a directory-enabled network
US7475058B2 (en) Method and system for providing a distributed querying and filtering system
US9077724B2 (en) Systems and methods for analyzing application security policies
US5963947A (en) Technique of dynamically adding functionality from a client to manipulated data at a server
US7702725B2 (en) Digital object repositories, models, protocol, apparatus, methods and software and data structures, relating thereto
US6704803B2 (en) Method and system for distributing data events over an information bus
KR101109251B1 (ko) 웹 서비스 애플리케이션 프로토콜 및 soap 프로세싱모델
US8924470B2 (en) Methods and systems for providing web applications
US6965892B1 (en) Method, system and program products for concurrently accessing a global data repository by multithreaded clients
JP2003518683A (ja) ユーザにデータを提示する方法および装置
US7428756B2 (en) Access control over dynamic intellectual capital content
US8316051B1 (en) Techniques for adding multiple security policies to a database system
Lican et al. Virtual and dynamic hierarchical architecture for E-science grid
US6922729B1 (en) Multi-connection control system
WO2000058873A1 (fr) Moteur de conception du flux des travaux
US20030061398A1 (en) Method and system for retrieving data over an information bus
Archip et al. Restful web services–a question of standards
WO2001075591A2 (fr) Systeme de traitement de donnees collaboratif avec architecture autonome repartie de traitement de l'information
Antonopoulos et al. An active organisation system for customised, secure agent discovery
Kutvonen Overview of the DRYAD trading system implementation
US20040230603A1 (en) Registration and control of intellectual capital
Falchuk et al. AgentSys: A mobile agent system for digital media access and interaction on an internet
US7284264B1 (en) Discovery of an advertising service in e-speak

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WA Withdrawal of international application
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载