|
Description  |
|
|
CROSS REFERENCE TO OTHER APPLICATIONS
The subject matter of the present invention is related to the subject
matter of concurrently filed, commonly assigned U.S. patent applications
having the following serial numbers and titles: Ser. No. 08/162,419, filed
Dec. 3, 1993, now U.S. Pat. No. 5,493,692, "SELECTIVE DELIVERY OF
ELECTRONIC MESSAGES IN A MULTIPLE COMPUTER SYSTEM BASED ON CONTEXT AND
ENVIRONMENT OF A USER," Ser. No. 08/161,730, filed on Dec. 3, 1993, now
abandoned, "SPECIFYING AND ESTABLISHING COMMUNICATION DATA PATHS BETWEEN
PARTICULAR MEDIA DEVICES IN MULTIPLE MEDIA DEVICE COMPUTING SYSTEMS BASED
ON CONTEXT OF A USER OR USERS," and Ser. No. 08/162,522, filed Dec. 3,
1993, now abandoned, "PERSONAL PRIVACY FOR MOBILE USERS IN DISTRIBUTED
COMPUTING ENVIRONMENTS THAT SUPPORT LOCATION SENSITIVE APPLICATIONS," each
of which are hereby incorporated by reference herein.
FIELD OF THE INVENTION
The present invention relates to control by a user of particular devices
and activities in a multiple computer system based upon the current
location and surrounding environment, including computing devices, of the
user.
More specifically, the invention relates to techniques for detecting,
selecting and interacting with computers and computer-controlled devices
in the proximity of a user, based on the location of the devices relative
to the user, the current context of the user, the location and context of
other nearby users and devices, and the current state of the devices.
The invention further relates to techniques for temporarily transferring
control, including exclusive control, of particular computers and computer
controlled devices to individual users based on the context and
environment in proximity to those computing devices.
BACKGROUND OF THE INVENTION
The introduction of computer networks and personal computing has forever
changed users' expectations of what computer systems can accomplish.
Individual users no longer expect to travel to a particular location to
have their processing needs met. Instead, individuals expect to have
sufficient computing power sitting on their desk to get the job done; or,
at least, to have their personal computers networked to sufficient
resources remote from their location to accomplish the task.
Attempts have been made to improve the "user-friendliness" of such personal
computers, including the development of "window" systems to give users the
illusion of working from their desktop electronically. This metaphor
suffers, however, from the size limitation of the usual monitor screen for
personal computers--no one would ever think of using an actual desktop
only nine inches high by eleven inches wide. Personal computers remain
static objects commanding the attention of users.
The notion of a computing environment in which computers themselves
disappear into the background was raised by Mark Weiser, "The Computer for
the 21st Century," Scientific American, September 1991. Two issues of
crucial importance to transmission and display of information in such a
"ubiquitous" computing environment are location and number of devices.
Weiser postulates a world in which there are many computing and
computer-controlled devices surrounding each user all the time. In one
example of such a system, he describes devices ranging from small
computational devices called "Tabs"--inch-scale computers which are
networked via wireless links--to yard-scale displays that may be used as
electronic blackboards called "Board," that may cover the entire wall of a
room.
Users may also wear "Active Badges," credit-card-sized devices that emit an
infrared identification signal that can be sensed by receivers placed in
each room of a building, thereby allowing detection of where each user is
currently located. Active Badges can also be attached to other moving
objects, such as portable printers and copiers.
Also discussed by Weiser at page 99 are "Pads," scrap-paper-like,
notebook-sized computers that have no individualized identity or
ownership. Weiser postulates that in the future there will be many Tabs
and Pads per person, just as today there are many paper notebooks and
stick-on notes per person. Consequently, users will interact with many
different devices, both serially and in parallel, during the course of
their daily lives.
"Guest" Tabs or Badges, and "scrap" Pads are devices not owned by any
particular user. Instead, they are available--perhaps at the entrance to a
building in the case of guest Badges, or in meeting rooms in the case of
Tabs and Pads--for use by whoever picks them up. Picking up an Active
Badge might involve checking it out from building security so that its
association with a particular user can be registered with the system.
In the environment described in Weiser, specific actions may be taken by
computers based on knowledge of location. For example, a Board may be
configured as a public information bulletin board, its display information
attuned to the people reading it. Room audio amplification or lighting may
be controlled according to the desires of the people using Tabs or Pads in
the room at that moment. Remote actions may be triggered by a user's
presence at a location, such as a login procedure started when a user
enters his or her office.
Jock Friedly, in "The Office of the 21st Century," Palo Alto Weekly, May 6,
1992, further describes a ubiquitous computing environment including Tabs
and Active Badges which broadcast signals that may be tracked throughout
the computing environment. Badges indicate where a person is so that phone
calls, for example, may be forwarded to a user's location.
In a ubiquitous computing environment such as described by Weiser, users
may further desire different automatic actions to be made by the system
based on the context surrounding them. Some actions should only take place
under controlled conditions. The environment or context of a user may
affect operations the user might wish nearby computing systems to perform.
For example, a user in a private meeting may not wish to have phone calls
forwarded to that location. A message that is private may be displayed on
a user's private Pad, but probably not on a public Board.
Similarly, a particular computing device may respond to users in different
ways depending on the environment and context. For example, if one user
walks into an unoccupied room, each computing device in that room may
temporarily assign some measure of ownership control of itself or its
resources to that user. When a second user enters the same room some, all,
or none of the computing devices may allow the second user ownership
rights, depending on the context and environment.
As described in Weiser, a user may be able to migrate any window that may
appear on a workstation screen onto a Tab, Pad or Board. This allows users
ongoing use of different I/O devices to interact with their electronic
data and applications. Which devices will be used will depend on the
circumstances of the user. In addition, more than one device might be used
to interact with the system at the same time. For example, a user might
keep several Pads on his or her desk, and migrate "secondary"
applications, such as system status monitors, from a workstation screen
onto those Pads. This would free up the workstation screen for use by
"primary" applications, such as word processors and spread sheets. Just as
today people spread out papers across their entire desks, so too might the
user of tomorrow spread out work onto multiple electronic screens, be they
Tabs, Pads, Boards, or workstations.
When a user goes to a meeting in another room, the user may take along one
of those screens, or may choose to migrate the contents of one or more
screens onto the I/O devices available in the meeting room, such as a
Board, or one of several scrap Pads in the room.
Such a ubiquitous environment should enable users to make better use of
their time and space. For example, some methods users employ to remind
themselves of events--notes, pagers, beeping wristwatches, electronic
calendars--cannot support automatic message delivery to a remote system,
and cannot issue special messages tailored to the physical location and
environment of the particular user.
Although there may be several ways to support a "ubiquitous computing"
environment to accommodate the entire range of mobility required for
ubiquitous computers, a preferred implementation is a network that allows
"wireless" communication with mobile devices. To date, many "wireless"
networks have already been designed--the most notable, perhaps, being the
cellular telephone network. Wireless network systems are generally
concerned with the physical layer of the network, and more specifically,
with methods of transferring the communication support for a mobile unit
from one base station to another. These issues may be classified as
problems in "communication continuity." Communication continuity is
concerned primarily with mechanisms for providing a continuous pathway for
data between two or more units, at least one such unit being mobile, and
for reestablishing a data pathway in the event of an unwanted disruption.
By contrast, "processing continuity" relates to maintaining a current and
proper processing context between two units.
A system for maintaining communication and processing continuity between a
mobile processing unit and remotely resident applications is described in
coassigned, copending patent application Ser. No. 08/100,655, entitled A
METHOD AND SYSTEM FOR MAINTAINING PROCESSING CONTINUITY TO MOBILE
COMPUTERS IN A WIRELESS NETWORK, filed Aug. 30, 1993 by Want et al., now
U.S. Pat. No. 5,564,070 incorporated herein by reference. The system
includes a network backbone, at least one stationary processor coupled to
the backbone, and at least one transceiver coupled to the backbone. The
transceivers are configured to communicate with the mobile unit through a
wireless medium. Mobile units intermittently communicate with
applications. The system employs a process that is dedicated to handling
all communications between its associated mobile unit and applications.
This process is responsible for the scheduling of communications sessions
with the mobile unit.
One aspect of the present invention is the ability to provide a system in
which actions of the system are initiated or triggered based on the
context (for example, the location of the user or other users, the time of
day) and the environment (for example, the user's location, nearby
computing devices available) in proximity to the user.
Another aspect of the present invention provides a system in which a
particular computing device assigns ownership rights based on the
environment in proximity to that computing device, including the user or
users in proximity to that computing device.
In order to carry out these and other related functions, the system may
have knowledge not only of users, machines, and computing devices, but of
the context and environment that the users and devices are operating in.
The system may know, for example, the physical location of a user, what
computing devices are available at that location, and what other users may
be in close proximity to the user. The system may further provide
processing continuity over a range of locations. For particular
operations, the system may be able to discern predefined control
variables, and may be sensitive to the context of certain actions.
SUMMARY OF THE INVENTION
The present invention provides a method for superimposing prespecified
locational, environmental, and contextual controls on user interactions,
including interactions of mobile users, with computational resources of a
distributed computer system and with equipment residing on processes
running on said system. The steps of the method include registering
interaction policies, including user specified interaction policies, on an
identifiable address path, registering user and equipment locations,
including dynamically updated indications of the locations of mobile
users, and registering interaction requests. The locational and contextual
attributes of each of the interaction requests is identified by reference
to contextual information including registered location. The system grants
interaction requests that have locational and contextual attributes that
are consistent with the specified interaction policies, and denies
interaction requests that have locational or contextual attributes that
are inconsistent with the specified interaction policies.devices in close
proximity to the identified user, and determines a display property for
said electronic message based on the contextual attributes, the user
profile properties, and the level of privacy and level of priority of the
electronic message.
The following description, the drawings and the claims further set forth
these and other objects, features and advantages of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows an office environment configured to support a "ubiquitous
computing" system.
FIG. 2 shows a high level diagram of the system architecture of the system
elements and communications paths between the system, users and devices
used to determine the context of the system.
FIG. 3 shows general aspects of a UserAgent.
FIG. 4 describes the operation of a UserAgent.
FIG. 5 shows general aspects of a DeviceAgent.
FIG. 6 shows general aspects of a specialized device agent, a
TerminalAgent.
FIG. 7 describes the operation of a DeviceAgent.
FIG. 8 shows general aspects of a Name Service.
FIG. 9 shows general aspects of a Location Service.
FIG. 10 describes the operation of a Location Service.
FIG. 11 describes the operation of an Active Badge Service.
FIG. 12 describes the operation of an Input Monitor Service.
FIG. 13 describes in general terms the use of context information in
decision-making.
FIG. 14 describes in general terms the retrieval of contextual information.
FIG. 15 describes a method for selectively activating a machine event,
based on the context of the machine and proximity of users.
FIG. 16 describes in general terms a method for selective electronic
message delivery.
FIG. 17 describes in more detail a method for selectively delivering
electronic messages to one or more users.
FIG. 18 describes the establishment of ownership over particular devices
based on context including environment and proximity.
FIG. 19 describes user authentication for establishment of ownership of
devices.
FIG. 20 describes automatic logout procedures for temporary owners of
devices.
FIG. 21 illustrates a general method of selectively establishing
communications paths between media devices based on the context of the
users.
FIG. 22 describes in more detail a method for connecting a user with other
users via media devices, especially when multiple devices are available.
DETAILED DESCRIPTION
A. General System Architecture
FIG. 1 shows an office environment 10 configured to support a "ubiquitous
computing" system. Components that might be found in such a system
comprise hardwired network backbone 12, radio and infrared transceivers 14
and 16 respectively, workstation 18, file server 20, printer 22 and
various mobile units 24, 26 and 28, and user 30.
Network backbone 12 provides high bandwidth communications between the
various communication and computing devices. In the present embodiment, a
10 Mbps Ethernet provides the basic infrastructure. It will be appreciated
that although any network architecture may suffice for the backbone, it is
desirable that the bandwidth be wide enough to provide suitable
performance to support a desired maximum number of devices.
Components of this system may be properly classified as either "stationary"
or "mobile." Stationary components are generally hardwired to network
backbone 12. Such components comprise workstation 18, file server 20 and
printers 22, and the like. It will be appreciated that other networkable
components may be connected to the infrastructure depending upon the needs
of the office.
Mobile communication and computer units connect to backbone 12 via radio
and infrared transceivers 14 and 16 respectively. One advantage of using
infrared as a medium is reuse of frequencies. Walls 13 are essentially
opaque to infrared transmission. Thus, infrared transmissions in one room
do not interfere with infrared transmissions in another. Individual rooms
11 are termed communication "cells" because of this effective
partitioning. This useful property allows the reuse of the infrared
bandwidth for each cell in the workplace. It will be appreciated that the
use of infrared as a medium for wireless communication is well known in
the art. Cell-based communication further allows determination of a
person's location to the granularity of the cell size. That is, because
the communication system must know how to route communications to the
correct cell for a particular person or device, it also must know that
person's or device's location, to the accuracy of the cell size.
A similar communications partitioning is possible with a single radio
frequency if the "near field" components produced by an antenna are used
to couple the mobile units to the network. The term "near field" describes
those field components of an energized antenna that do not give rise to
propagating waves. The use of near field communication is disclosed in
copending, coassigned U.S. patent application Ser. No. 07/984,821 entitled
WIRELESS COMMUNICATIONS USING NEAR FIELD COUPLING, filed Dec. 3, 1992 by
Richley et al., incorporated herein by reference.
Although only radio and infrared transmission are employed for wireless
communication in the presently preferred embodiment, it will be
appreciated that other types of electromagnetic and acoustic transmission
might be suitable. Additionally, it will be appreciated that multiple
frequencies may be employed to partition the communication space into
non-interfering cells.
Communications facilities for the system of the present invention may be
provided by other communications technologies. However, there must still
be a facility for locating moving users and devices. For example, if
people wear Active Badges which provide their location, then the Badge
system will be able to locate them. Cellular phones or wide-area radio
technologies may then be used to perform communications.
Each transceiver 14 or 16 in the described embodiment is connected to a
network 12 through a base station, or gateway computer 15 which performs
translation between the wireless communication from the transceiver and
the communication packets sent over the network 12.
Tabs 26 and Pads 24 are mobile units that connect with the network through
the wireless media. Boards 28 may also provide a means for computer system
communications. A user 30 may further have on an Active Badge 32. Tab 26
is a small stylus-based mobile computer. Tab 26 may be carried by a user
30 throughout the workplace, may be assigned to a particular user, and
further may identify that user to sensing devices. Functionally, Tab 26
may be a simple device. Speed and memory capacity requirements are very
modest, thus enabling these devices to be very small and consume little
power. As a result, Tabs 26 are very portable. Clearly, other devices,
including other mobile devices, with at least the ability to perform
simple communications with the system and to interact with the user and
display messages may be used to perform the techniques herein described,
as well. Pads, for example, may be used and, being more powerful, may
further provide additional applications capabilities to the user.
Tab 26 may also report events generated by its user in response to
information displayed on its screen. These events may be triggered by
pressing mechanical buttons on the Tab, or by pressing a stylus against a
pressure sensitive display, or by other suitable user interface
mechanisms.
As a user 30 with a Tab 26 may move from communication cell to
communication cell, Tab 26 may be periodically disconnected from the
network. Such disconnection may happen for a number of reasons, including
moving the Tab into a communication "dead zone" where no transceiver may
maintain contact, or by a failure of the Tab itself, such as the
discharging of its battery, or the user powering off the Tab, or the like.
When the cause of disconnection is removed, Tab 26 reconnects to the
network. Thus, as user 30 moves into communication proximity with another
sensor in a different cell (or with the original sensor at a different
time). Tab 26 reestablishes connection with the network through its
regular broadcasts or by a user triggered packet. It will be appreciated
that other schemes for maintaining regular contact with the network exist.
For example, the infrared transceiver could poll mobile units within its
cell.
FIG. 2 shows a high level diagram of the system architecture of the system
elements and communications paths between the system, users and devices
used to determine the context of the system. Note that FIG. 2 is meant to
be illustrative of the capabilities of the system, and not all possible
communications paths are shown among the processes shown in the figure.
The "context" includes the state of the system: positional information
about users and devices, the states of users and devices in the system,
interaction policies, and the status of applications, devices, and users
in the system. A "user," for the purposes of the discussion below, is a
human who interacts, implicitly or explicitly, with the resources of the
system. A "device" is any other entity with the ability to computationally
interact with the system, that is, to accept and respond to computational
commands. A device may include a computer workstation or a small portable
computing device as described above. Each device must present consistent
characterizing information in a format computationally recognizable to any
potential client of that device.
Communication between processes is described herein in terms of Remote
Procedure Calls (RPC). Techniques for implementing systems using RPCs are
well-known in the art. Although clearly other means of communication may
be available to implement the system herein described, interprocess
communication via RPC will be assumed for the purposes of generally
describing the preferred embodiment of the ubiquitous system.
The present system as described employs a distributed file system to store
persistent data of the system. Clearly other means of storing persistent
data may also be available in the system. Each agent must, however, employ
some file system for storing persistent data that is available to at least
that agent.
Name Service 80 provides a place where processes can register themselves to
be found by other interested parties, based on knowledge of a particular
name or of particular attribute information. All objects, either users or
devices, that wish to be identifiable by name register themselves in Name
Service 80. It is much like a telephone book in its intended purpose. In
the present embodiment, a registration contains two things: an RPC address
that can be used to contact the process for further interactions, and a
list of (key, value) pairs that describes the registered process to
greater or lesser degree. Keys and values are typically text strings,
although more complex data types may be used for values (e.g., multi-field
records). Keys are well-known text strings that can be used to
characterize the meaning of their associated value fields. One key value
that is commonly present in a registration is a "name" key, whose
associated value is typically a known unique name that a process can be
associated with. Using the analogy of a telephone book, the "name" key
corresponds to the name field in the telephone white pages and the RPC
address corresponds to the phone number. Other (key, value) attribute
information in a registration corresponds to the information commonly
found in the yellow pages of a phone book. For example, the key "type"
might characterize what kind of functionality the process associated with
a registration is willing to offer (e.g., UserAgent or TerminalAgent,
discussed below).
Each physical object--users, devices, or groups of devices (such as the
input and output devices that comprise a computer terminal)--is
represented in the system by a unique "agent." For example, each user is
represented in the system by a unique "UserAgent." A user's agent is under
control of the user, and interacts with the rest of the system as an
electronic proxy for that user. Personal information about a user is
primarily collected by, and primarily resides in, the user's agent. This
information may include: 1) relatively static information, such as
preferences and policies, 2) modestly dynamic information, such as
personal calendar or datebook information, and 3) very dynamic
information, such as current location and activity. A user's agent
controls access to the user's personal information, as prescribed by the
personal preferences and policies known to that agent, and as appropriate
to the current circumstances as known by that agent. Other system elements
have only such access as is granted by the user's agent.
Some devices are stationary objects that simply receive information and do
not otherwise interact with the objects around it. Other devices may
collect or send information, provide services, or in other ways interact
with users and devices in the system. Each electronic device or group of
devices that interacts with the "world" is represented in the system by a
unique "DeviceAgent." That agent collects and manages information about,
and exercises direct control over, the device. Other system elements do
not interact directly with the device, but indirectly through the device's
agent. Information that the agent may manage and collect includes things
like the capabilities of the device (e.g., if it has a display, and
whether or not that display is color), the current state of the device,
and possibly the ownership state of the device (i.e., who may request
operations on it).
In FIG. 2, User 60 is represented in the system by UserAgent.sub.A 70.
Likewise user 62 is represented by UserAgent.sub.B 72. Tab 64 is
represented by a specialized device agent TabAgent.sub.C 74, and
workstation 66 is represented by a device agent known as a terminal agent,
TerminalAgent 76. Agents may consist of several modules 78, some of which
perform system infrastructure functions, and some of which are responsible
for implementing the agent's responsibilities for specific applications or
performing specific operations. An object's "characterizing information,"
how it is described to the system, is maintained and controlled by that
object's agent. Both user agents and device agents will be discussed in
more detail below.
User agents, which will be discussed in more detail in relation to FIGS. 3
and 4, may employ various devices to interact with their associated users.
For example, UserAgent.sub.B 72 may send a display message to user.sub.B
60 by displaying it on Terminal 66 via TerminalAgent 76.
For example, a user's agent collects location information about its
associated user from various sources, and then synthesizes that
information into one opinion about where the user currently is. Location
information sources could include sighting information from the Active
Badges, from the Tab agents of the Tabs the user is currently carrying,
from monitoring the input activity on various computer terminals, and from
a variety of other sources. For example, the user might be carrying a
portable global positioning system whose output can be attached to a
portable computing/communication device so that the user's current
location can be sent directly to the user's agent via an RPC call between
the software running on the user's portable computing device and the
user's agent.
One source of location information, as mentioned above, is Tab agents. Tab
agents keep track of which cell their associated Tabs are currently in. A
Tab agent does this by remembering the last communication packet it
receives from its object; all communications packets contain the ID number
of the cell they originated in or are being sent to. Agents depend on
objects sending communications packets frequently enough so that each
agent will know where its associated object currently is, and if
appropriate the identity of the user using it. If the agent sends a packet
to the wrong cell (e.g., because the object has since moved), then it will
get no response back and will eventually try to resend the packet. In the
meantime, the mobile device should have generated a beacon or a regular
communications packet, including information of its new location.
When an application or agent needs to discover the location, or other
personal information, of a particular user, it can request that
information from that user's agent. When an application or agent needs to
determine coincidence of people or devices are at or near a particular
location, it uses the Location Service 82. Location-specific information
about users and devices is registered in the Location Service 82 by the
relevant agents. The Location Service will be discussed in more detail in
relation to FIGS. 9A and 9B. The Location Service also keeps track of
which applications and agents have expressed interest in being notified
about changes in the set of users or devices currently at specific
locations. When changes occur, the relevant set of interested clients are
notified.
Badge Service 84, which will be discussed in relation to FIG. 10, is used
to keep track of the locations of Active Badges, which are attached to
users. Badge Service 84 may also keep track of agents and applications who
care about movement of particular badges (and hence users).
Input Monitor Service 86 is similar to Badge Service 84, except that it
keeps track of individuals via the device or devices they use to make
inputs to the system. Thus, in an area not equipped with a Badge detection
system as previously described, a user may still be located by reference
to the last terminal where an input was made. The input monitor service
requires the ability to monitor activity on the various input devices of a
system. In the present embodiment, the Input Monitor monitors workstation
input by periodically polling each workstation in the system. Another way
to perform input monitoring is to periodically poll all the relevant
device agents in a system.
Applications 90, 92, and 94 communicate through agents with various parts
of the system to accomplish a variety of tasks.
B. System Components
FIGS. 3 and 4 describe aspects of the UserAgent. UserAgent 100, illustrated
in FIG. 3, manages information about a particular user, and acts as the
primary agent of customization of a user's applications with respect to
their "environment," the surroundings that affect or may be affected by
the user, including other users and devices and their states. As was
described in relation to FIG. 2, each user has a particular, unique
UserAgent. The UserAgent is a process that may be running on some trusted
computer or computers on the network, and may be identified publicly, if
it so desires, with a known address by registering with various services,
such as the Name Service or Location Service.
Persistent information about a user's preferences is stored in a user
profile 102. The UserAgent 100 may obtain information about the user from
user profile 102 at startup time. UserAgent 100 serves as a general policy
coordinator for both the user's privacy concerns as well as
context-sensitive customization concerns.
UserAgent 100 gathers and manages person specific information 104, such as
office number and affiliations, and personal policies and preferences 106
of the user from User Profile 102. Personal policies 106 may also be
specified by the user for specific instances. Information about the user's
context and environment, such as current location and a list of nearby
users and devices, is stored in current state 108. UserAgent 100
propagates various computed consequences to the applications the user is
running, and to the devices with which the user is interacting.
A user's preferences may be dynamically changed by either changing the
profile file and alerting the UserAgent some way, or by explicitly
executing a dialogue program that allows the user to directly specify
which changes are desired to the profile or preferences.
Personal scheduling information, such as calendar 112, may be kept and
distributed. At initialization, calendar content information 110 may be
retrieved from 112 and managed by UserAgent 100. The UserAgent may
understand the types of events in the user's calendar, such as "meeting"
and "seminar." The user's calendar may maintain a fairly detailed
description of the user's schedule, including things like indications of
which times the user considers to be "work" time and which is considered
"free" time. In general, there must be sufficient information in calendar
112 to distinguish whatever calendar-based rules the user desires to place
in the policies 108 customization database. Calendar information may be
correlated with particular contextual information to trigger certain
reactions by an agent or application.
The UserAgent process typically initializes itself and then waits for
various kinds of events to occur so that it can respond to each event in
some appropriate fashion. It is thus an event-driven process: the internal
state of the UserAgent process and the actions it performs are determined
by the sequence of events that are "presented" to it.
User Agent 100 starts up in the step in box 120 in FIG. 4 by locating and
reading the User Profile and user calendar information of the identified
user. The user's profile is stored in known place, such as the user's home
directory. The user's calendar information must also reside at a location
in a file system known to the UserAgent, and may include a wide variety of
user-specific information, including but not limited to meetings that are
scheduled, and reminder notes that the user wishes to have delivered under
various circumstances depending upon time, location, or context of the
user.
The step in box 122 exports the RPC interface for UserAgent 100 so that
would-be clients can find this UserAgent process and interact with it.
This involves, among other things, registering an RPC address under the
UserAgent's name with the Name Service. The step in box 124 registers the
UserAgent with the location service and registers callbacks with any
services which monitor state changes in which the user is interested. For
example, the UserAgent may want to register with the Badge Service to
receive active badge sightings for its user (if the system has deployed an
active badge system). At initialization--before the UserAgent has received
data regarding the user's location--the UserAgent may register in the
location service with an assumed physical address, say the user's office,
or may register as having an unknown location, depending upon the
implementation.
Once initialization is done, the UserAgent essentially waits for an event
to occur, and then performs the appropriate action in response to the
event. The descriptions of agents herein describe, for simplicity, an
essentially single-thread implementation. More sophisticated
implementations may allow overlapped processing of events in a
multi-thread setting. Although described in terms of a single-thread
implementation, it will be clear that the present system may be
implemented in a multi-thread s | | |