1. Field of the Invention
The field of the invention is data processing, or, more specifically, methods, apparatus, and products for administering feeds of presence information of one or more presentities.
2. Description of Related Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely complicated devices. Today's computers are much more sophisticated than early systems such as the EDVAC. Computer systems typically include a combination of hardware and software components, application programs, operating systems, processors, buses, memory, input/output devices, and so on. As advances in semiconductor processing and computer architecture push the performance of the computer higher and higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Current computer users often use one or more networked devices. The availability of a user to communicate through a network and any other contextual information about a user's activities while connected to the network is described by presence information. Such presence information may be made available to other users who may wish to communicate with the user currently present on the network. Current approaches of collecting, disseminating, and modifying presence information, however, are limited to either session initiation protocol (‘SIP’) style interactions or Simple Object Access Protocol (‘SOAP’) Web Services interactions whose interfaces are defined in a Web Service Description Language (‘WSDL’) document. Session initiation protocol (‘SIP’) style interactions require creation of a session which is often cumbersome in highly scalable Internet-based interactions. Web services interactions require a determination of an appropriate level of abstraction and standardization of interface techniques, which can also be cumbersome in larger networks with many disparate clients.
One particular method of disseminating presence information includes administering presence information in a web syndication feed, such as a Really Simple Syndication (‘RSS’) or Atom feed. Currently, however, administering such a feed of presence information is typically carried out through the cumbersome techniques described above, not through a loosely coupled network architecture style such as the Representational State Transfer (‘REST’) network architecture style.
Methods, apparatus, and products for administering feeds of presence information of one or more presentities are described that include creating a feed definition; adding to the feed definition one or more identifications of presentities; receiving a feed request; creating the feed, the feed including presence information for presentities identified in the feed definition; and sending a response to the feed request including the feed.
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular descriptions of exemplary embodiments of the invention as illustrated in the accompanying drawings wherein like reference numbers generally represent like parts of exemplary embodiments of the invention.
Exemplary methods, apparatus, and products for administering feeds of presence information of one or more presentities in accordance with the present invention are described with reference to the accompanying drawings, beginning with
A presentity (100) is described by presence information (118, 120) contained in a presence information document. Presence information, in computer and telecommunications networks, is a status indicator that conveys to a watcher the availability and willingness of a presentity to communicate with other network users. Presence information may, for example, indicate the status of a user of an instant messaging client as “away,” “busy,” or “idle.” Presence information may change from time to time when a presentity's availability to communicate to other network users through any device changes.
The presence information of a presentity may correspond to any of the presentity's devices (104). For example, presence information corresponding to the presentity's (100) personal computer (108) may describe the status of the personal computer as ‘closed’ while presence information corresponding to the presentity's (100) work station (104) may describe the status of the work station as ‘open.’ Such presence information of the presentity, when taken as a whole, represents that the presentity is at work, away from the presentity's personal computer, but capable of communicating through the presentity's workstation.
Presence information is stored in a presence information server (302). The exemplary presence information server of
A presence information document may be a document that includes presence information for a presentity. The exemplary presence information document (318) of
Consider for further explanation the following exemplary presence information document implemented as an extensible markup language (‘XML’) markup document:
In the XML example above, the presence information document includes a <presence entity> tag that identifies the user represented by the presentity. The presentity in the example above is identified as “Brandon.”
Also in the XML example above, the presence information document includes a <note> tag identifying text that the presentity, Brandon, intends for watchers of the Brandon's presence information to read. In this example, the note represents that Brandon is out of the office and can be reached on his cell phone.
Also in the XML example above, the presence information document includes two <tuple> tags, each tag identifying presence information for one of Brandon's networked devices. In this example, the <tuple> tag, <tuple id=“MyCellPhone”>, identifies presence information corresponding to Brandon's cell phone. The <tuple> tag, <tuple id=“MyWorkEmail”>, identifies presence information corresponding to Brandon's work email address.
Also in the XML example above, each <tuple> tag includes a dedicated section, identified by the <status> tag, describing the status of a device and contact information of the device. In this example, the <status> tag for Brandon's Cell phone identifies the status of the cell phone as “open.” Also in this example, the <status> tag for Brandon's work email describes the status of Brandon's work email as closed.
Also in the XML example above, each <tuple> tag also includes a <contact> tag, identifying the contact information corresponding to a device. In this example, the <contact> tag corresponding to Brandon's cell phone identifies a phone number, 555-555-5555, as contact information for the cell phone. Also in this example, the <contact> tag corresponding to Brandon's work email identifies an email address, brandon@example.com, as contact information for the cell phone.
In the system of
The system of
As mentioned above, the system of
A feed is typically a markup document, such as an extensible markup language (‘XML’) document, that is used to serve frequently updated content. A feed may be updated from time to time to reflect such frequently updated content. A feed may be distributed to any number of users. News websites and weblogs (‘blogs’) are common sources for web feeds, but feeds are also used to deliver other structured information ranging from weather data to search results. When the information represented in a feed varies at the source of the information the feed is updated to reflect the new information. Consider as an example a news website that publishes a feed that contains articles from news website. When the news website adds a new article to the site, the feed is updated to reflect the new article.
Consider for further explanation the following exemplary feed that includes presence information of a presentity implemented as an extensible markup language (‘XML’) markup document:
In the example above, the watcher feed includes a <title> tag identifying the subject matter represented by the feed. In this example the subject matter represented by the feed is “Bob's Watcher Feed For Brandon's Presence Info.” That is, Bob, a watcher uses the feed above to observe presence information of a presentity named Brandon. Also in the example above, the watcher feed includes an <id> tag that includes an identification of the feed itself. In the example above the <id> tag includes as the feed identification myfeed.
Also in the example above, the watcher feed includes an <entry> tag identifying an entry in the feed representing presence information of a presentity. In this example the <entry> tag includes presence information of Brandon's cell phone, as identified by the <title> tag. The entry also includes an <id> tag identifying the location of presence information of Brandon's cell phone. In this example the <id> tag identifies as the location of the presence information of Brandon's cell phone, the URI, /Brandon/MyCellPhone/status/basic. The entry also includes a <summary> tag identifying the presence information at the location identified by the <id> tag. In this example the summary tag identifies the presence information at the location identified by the <id> tag as ‘open.’
Although the example XML feed above includes only one entry representing presence information for one presentity, readers of skill in the art will immediately recognize that feeds of presence information according to embodiments of the present invention may include multiple entries for multiple presentities. In addition, more or less information may be present in each entry. In many feeds for example a timestamp is also included to identify the time that presence information was last updated by the presentity.
In the system of
The presence information server parses the URI, determines the identification of the feed, determines the data storage designated for storing feed definitions, and creates a data structure identifying the feed in the data storage designated for storing feed definitions. When a presence information server receives the HTTP PUT request message, HTTP PUT/watchers/myfeed, for example, the presence information server parses the URI, determines the identification of the feed to be ‘myfeed,’ determines the data storage designated for storing feed definitions to be ‘watchers,’ and creates a data structure identifying the feed in the data storage designated for storing feed definitions. The data structure may be any type of data structure, such as, for example, a table in a database, a markup document, a file in a directory in file system, or others as will occur to those of skill in the art. Although the create request is described here as an HTTP PUT request message, readers of skill in the art will recognize that presence information servers according to embodiments of the present invention may be configured to create a feed definition in response to any type of HTTP request message, such as for example, an HTTP POST request message.
In the system of
The presence information server parses the URI to locate the feed definition and adds to the feed definition, the identification of the presentity in the URI. When a presence information server receives the HTTP POST request message, HTTP POST/watchers/myfeed/Bob, for example, the presence information server parses the URI, determines the identification of the presentity to be Bob, the identification of the feed corresponding to a data structure to be myfeed, and the identification of the data storage designated for storing feed definitions to be watchers.
Adding to the data structure identifying the feed the one or more identifications of the presentities is carried out in dependence upon the implementation of the data structure. If the data structure is implemented as a table in a database, for example, the presence information server may add an identification of a presentity by inserting the identification in an entry in the table. If the data structure is implemented as a markup document, as another example, the presence server may add an identification of a presentity by inserting the identification in the markup document as an attribute of a markup tag. If the data structure is implemented as a file in a directory in a file system, as yet another example, the presence information server may add an identification of a presentity by inserting the identification in the file.
The system of
In the system of
The presence information server parses the URI and determines the feed identification and the data storage designated for storing feed definitions. The presence information server uses the feed identification and data storage designated for storing feed definition to locate the feed definition that includes the feed identification. When the presence information server receives the HTTP GET request message, HTTP GET/watchers/myfeed, for example, the presence information server parses the URI and determines the feed identification to be ‘myfeed’ and the data storage designated for storing feed definitions to be ‘watchers’. The presence information server uses the feed identification and data storage designated for storing feed definitions to locate, in ‘watchers,’ the feed definition that includes the feed identification ‘myfeed’.
In the system of
Over time, a watcher client application may request many feeds created from the same feed definition in order to retrieve the current presence information of presentities identified in the feed definition. In some cases, however, the current presence information of a presentity identified in the feed definition has not changed since the last time a feed was created using the feed definition. A feed of presence information then may be configured in various ways. A feed of presence information may, for example, include all current presence information for presentities identified in the feed definition or, as an alternative, a feed of presence information may include only presence information for presentities identified in the feed definition that has changed since a previous feed. In this way, a feed may either be comprehensive, containing the most current presence information for all presentities identified in the feed definition, or lightweight, containing only presence information of presentities identified in the feed definition that has changed.
In the system of
The system of
In addition to deleting one or more identifications of presentities from the feed definition, the presence server may also update the feed definition by receiving an HTTP request message from the watcher client application (136), the HTTP request message including one or more identifications of additional presentities, and adding the one or more identifications of additional presentities.
The arrangement of servers and other devices making up the exemplary system illustrated in
Administering feeds of presence information of one or more presentities in accordance with the present invention is generally implemented with computers, that is, with automated computing machinery. In the system of
Stored in RAM (168) is a feed administration module (184), a module of computer program instructions for administering feeds of presence information of one or more presentities according to embodiments of the present invention. The feed administration module (184) is capable of creating, by a presence information server (152) in response to a create request from the watcher client application, a feed definition (308) including a feed identification; adding, by the presence information server (152) in response to an add request from the watcher client application, to the feed definition (308) one or more identifications of presentities; receiving, by the presence information server (152) from the watcher client application, a feed request requesting a feed created from the feed definition (308), the feed request including the feed identification; creating, by the presence information server (152) in response to the feed request, the feed, the feed including presence information for presentities identified in the feed definition; and sending, from the presence information server (152) to the watcher client application, a response to the feed request including the feed.
Also stored in RAM (168) is an operating system (154). Operating systems useful administering feeds of presence information of one or more presentities according to embodiments of the present invention include UNIX™, Linux™, Microsoft XP™, Microsoft Vista™, AIX™, IBM's i5/OS™, and others as will occur to those of skill in the art. The operating system (154), feed administration module (184), and feed definition (308), in the example of
The presence information server (152) of
The example presence information server (152) of
The exemplary presence information server (152) of
For further explanation,
The method of
The method of
The method of
The method of
As mentioned above, over time a watcher client application (136) may request many feeds created from the same feed definition in order to retrieve the current presence information of presentities identified in the feed definition. In some cases, however, the current presence information of a presentity identified in the feed definition has not changed since the last time a feed was created using the feed definition. A feed of presence information then may be configured in various ways. A feed of presence information may, for example, include all current presence information for presentities identified in the feed definition or, as an alternative, a feed of presence information may include only presence information for presentities identified in the feed definition that has changed since a previous feed. In this way a feed may either be comprehensive, containing the most current presence information for all presentities identified in the feed definition, or lightweight, containing only presence information of presentities identified in the feed definition that has changed.
The method of
For further explanation,
The method of
For further explanation,
The method of
The HTTP request message (608) may include a URI specifying an identification of a presentity (328), as well as the data storage designated for storing feed definitions and the identification (310) of the feed. The presence information server (302) parses the URI to determine the identification (328) of the presentity, the data storage designated for storing feed definitions, and the identification (328) of the feed. The presence information server then uses the parsed URI to locate the feed definition in data storage designated for storing feed definitions and deletes from the feed definition that includes the feed identification (310), the identification (328) of the presentity specified in the URI. In this way, a watcher may remove from any feed created from the feed definition, presence information corresponding to one or more particular presentities.
In addition to deleting one or more identifications of presentities from the feed definition, the presence server may also update the feed definition by receiving an HTTP request message from a watcher client application (136), the HTTP request message including one or more identifications of additional presentities, and adding the one or more identifications of additional presentities. That is, the feed definition may be updated either by adding or deleting presentity identifications.
Exemplary embodiments of the present invention are described largely in the context of a fully functional computer system for administering feeds of presence information of one or more presentities. Readers of skill in the art will recognize, however, that the present invention also may be embodied in a computer program product disposed on signal bearing media for use with any suitable data processing system. Such signal bearing media may be transmission media or recordable media for machine-readable information, including magnetic media, optical media, or other suitable media. Examples of recordable media include magnetic disks in hard drives or diskettes, compact disks for optical drives, magnetic tape, and others as will occur to those of skill in the art. Examples of transmission media include telephone networks for voice communications and digital data communications networks such as, for example, Ethernets™ and networks that communicate with the Internet Protocol and the World Wide Web as well as wireless transmission media such as, for example, networks implemented according to the IEEE 802.11 family of specifications. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a program product. Persons skilled in the art will recognize immediately that, although some of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
It will be understood from the foregoing description that modifications and changes may be made in various embodiments of the present invention without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense. The scope of the present invention is limited only by the language of the following claims.