The present disclosure relates generally to document management systems and, more particularly, to methods and apparatus to subscribe for change notifications in a document management system.
Prior extensible markup language (XML) document management (XDM) systems include a subscription proxy employing session initiation protocol (SIP) messaging to allow XDM clients to subscribe to documents maintained by an XDM server and to receive from the XDM server notifications of changes to the subscribed documents. Accordingly, such prior XDM systems require each XDM client device to implement a SIP user agent (UA) to interface with the SIP-based subscription proxy. However, older and lower-end devices, and some other categories of devices, may not include a SIP UA or cannot otherwise be adapted to implement a SIP UA, thereby precluding such devices from processing SIP message exchanges. Therefore, such devices are unable to subscribe to changes to documents in prior XDM systems.
Although the following disclosure describes example methods and apparatus including, among other components, software executed on hardware, it should be noted that such methods and apparatus are merely illustrative and should not be considered as limiting. For example, any or all of these hardware and software components could be embodied exclusively in hardware, exclusively in software, exclusively in firmware, or in any combination of hardware, software, and/or firmware. Accordingly, while the following describes example methods and apparatus, persons having ordinary skill in the art will readily appreciate that the examples provided are not the only way to implement such methods and apparatus.
Methods and apparatus to subscribe for change notifications in a document management system are disclosed herein. In contrast to the prior XDM systems described above, the methods and apparatus described herein support subscription to documents and receipt of associated notifications of document changes using non-SIP messaging. In an example implementation, the non-SIP messaging is implemented with XDCP messaging for subscription requests, and Open Mobile Alliance (OMA) Push Enabler for notifications. XDCP, which is an HTTP-based protocol, and OMA Push are based on protocols that, unlike SIP, can often be implemented in older and lower-end devices.
The non-SIP subscription and notification techniques described herein can be advantageous, at least under some circumstances, because they can provide functionality equivalent to existing SIP-based techniques without the need to support a SIP UA on the client. Furthermore, the non-SIP subscription and notification techniques described herein provide additional functionality not present in existing SIP-based techniques. For example, the non-SIP techniques described herein allow specification of a level of user interaction for processing notifications, and specification of a preferred notification type indicating what information is to be included in the notifications sent to XDM clients. Such specification of the level of user interaction and the preferred notification type is not available in conventional or existing XDM systems.
The example methods and apparatus described herein can be used in connection with mobile communication devices, mobile computing devices, or any other device capable of accessing information over a wired or wireless network. Such devices, also referred to as user equipment (UE), clients, or terminals, may include mobile smart phones (e.g., a BLACKBERRY® smart phone), personal digital assistants (PDA), laptop/notebook/netbook computers, desktop computers, set-top boxes, trusted network entities acting on behalf of the UE, etc.
The example methods and apparatus are described herein in connection with the OMA standard related to XDM Enabler, which, among other things, defines how to access, modify, create, etc. information in XML documents stored on network storage entities. However, the example methods and apparatus may additionally or alternatively be implemented in connection with other information management and access standards and document format standards other than the XML format. In addition, although the example methods and apparatus described herein can be implemented in any network environment providing access to information stored on the network, the example methods and apparatus are described herein in connection with telecommunication network systems such as the network system 200 of
The OMA XDM standard defines how to manipulate user-specific, service-related information stored in XML documents. Such information is often shared between different users or accessed from multiple devices of the same user, and is expected to be stored in the network where it can be located, accessed and manipulated (e.g. created, changed, and deleted) by those users. The XDM standard also defines how such information is to be defined in structured XML documents and defines a common protocol to access and manipulate such XML documents, by authorized principals (i.e., users with assigned access rights). Users access documents via XDM clients (XDMCs), such as UEs or other terminals, or other XDM or non-XDM servers acting as XDMCs. Access to the documents is managed in a network by one or more XDM servers (XDMSs) based on different access permissions uniquely corresponding to respective users.
The OMA XDM standard also specifies a search mechanism for locating XML documents of interest. Additionally, and as mentioned above, the OMA XDM standard defines SIP-based mechanisms by which XDMCs can subscribe to be notified when one or more XML documents of interest are changed.
Turning to
Authorized XDM users are called principals, which include admin principals, primary principals, and regular principals. A primary principal is a user that owns a given document (e.g., the XML document 104) and has full access rights (e.g., read, write, delete). An admin principal is a user that is authorized to modify access permissions associated with a document and delegate rights to other principals. Documents have a primary principal and an admin principal that may be assigned, for example, at document creation time. In some instances, the primary principal and the admin principal can be the same user. A regular principal is a user that is assigned some access permissions associated with a document.
Additionally, the OMA XDM standard envisions scenarios in which multiple XDMCs 106a-c belonging to different principals may access the same XML document 104, potentially at the same time. To avoid potential collisions in which one of the XDMCs 106a-c blindly overwrites changes established by another of the XDMCs 106a-c, the OMA XDM standard specifies a versioning scheme involving entity tags (ETags). As shown in the example of
Turning now to
Turning in detail to the service application layer 202, in the illustrated example the service application layer 202 includes a home subscriber server (HSS) 207, a subscriber location function (SLF) 209, application servers 208, and one or more applications 210. The HSS 207 stores subscriber profiles (e.g., IMS data 212) and performs authentication and authorization processes (e.g., via a home location register/authentication center (HLR/AuC) 214) to determine communication services and features that users are authorized to access or use. The application servers 208 host and execute services and communicate with the IMS layer 204 using SIP. In the illustrated example, the application servers 208 include the XDMS 108, a SIP AS 216, an IP multimedia service switching function (IM SSF) 218, and an open service access-service capability server (OSA-SCS) 220.
In the illustrated example, each of the XDMCs 106a-c initializes communications with the service application layer 202 through a SIP registration process that occurs via the IMS layer 204. After the SIP registration process, the XDMCs 106a-c can communicate with the XDMS 108 via the hypertext transfer protocol (HTTP) or, for example, the XML configuration access protocol (XCAP) based on HTTP, to perform document management functions. For example, the XDMCs 106a-c can submit information requests to and receive corresponding responses from the XDMS 108 using HTTP messages, and the requests and requested document information can be exchanged between the XDMCs 106a-c and the XDMS 108 via different proxies as described below in connection with
In the illustrated example, the XDM system 300 includes the XDMS 108 in communication with a trusted XDMC 302 and an untrusted XDMC 304. The trusted XDMC 302 or the untrusted XDMC 304 can be any of the XDMCs 106a-c of
The subscription proxy 308 is configured to provide notifications to XDMCs (e.g., the XDMCs 106a-c of
Generally, for an XDMC (e.g., the XDMCs 106a-c of
The search proxy 310 is provided to route and aggregate search requests and responses between XDMCs (e.g., the XDMCs 106a-c, 302, and 304), XDMSs (e.g., the XDMS 108), and the cross-network proxy 312. The cross-network proxy 312 enables XDM systems (similar to the XDM system 300) located in other networks (e.g., a remote network 314) to communicate over a trusted connection and exchange XCAP and search requests and responses with the XDM system 300.
In the illustrated example, the XDMS 108 is shown as a logical grouping or collection of a plurality of different XDMSs 316a-d in the XDM system 300. In particular, the XDMS 108 is shown in connection with a profile XDMS 316a, a list XDMS 316b, a policy XDMS 316c, and a group XDMS 316d, all of which are typical XDMSs in an XDM system. In addition, one or more additional enabler or application/service specific XDMSs may also be provided. Each of the XDMSs 316a-d provides XML document management services for its respective type of information. For example, the profile XDMS 316a manages and stores user profiles. The list XDMS 316b manages uniform resource identifier (URI) list and group usage list documents. The policy XDMS 316c manages user access policies. The group XDMS 316d manages group documents. In other example implementations, an XDM system may be provided with fewer or more types of XDMSs.
The XDMCs 302 and 304 communicate with the XDMS 108 via the interfaces XDM-1 through XDM-14 to access documents via the XDMS 108. The interfaces XDM-1, XDM-2, XDM-10, and XDM-12 enable SIP subscribe/notify exchanges between the XDMCs 302 and 304, a SIP/IP core 318, the XDMS 108, and the subscription proxy 308 to register the XDMCs 302 and 304 with the XDM system 300. The interfaces XDM-3 and XDM-4 enable exchanges associated with document management requests/responses and confirmations of access permissions. The interfaces XDM-5, XDM-6, XDM-7, and XDM-13 enable exchanges associated with search requests/responses. The interface XDM-8 enables forwarding of document management communications to other domains, and the interface XDM-9 enables forwarding of search requests/responses to other domains. The interfaces XDM-11 and XDM-14 enable communications associated with document management accesses (e.g., create, change, delete).
In some example implementations, the XDM standard can be used to implement a presence subscription policy to facilitate authorization of individuals who may wish to access another individual's presence information to determine whether that individual is presently available on a network for communication. In other example implementations, XDM can be used in a group calling application to specify a group definition to facilitate session initiation of many individuals to the same conference call. In these examples, there is common information that is shared across multiple OMA enablers. For example, a URI list defined within a presence subscription policy enabler could be used to initiate a conference call amongst an online group of friends.
As shown in
An XDM server can manage documents corresponding to different application usages. Generally, each application usage has a corresponding XML schema or Document Type Definition (DTD) and defines characteristics, such as authorization policies, naming conventions, etc., for the documents associated with the particular application usage. Each application usage is identified by a unique AUID, which is typically a meaningful name, such as Profile, address-book etc. In the illustrated example, application usages reside within the XCAP root path 402 as the AUID trees 404a-c. Each of the AUID trees 404a-c is shown as having respective users trees 406a-c and global trees 408a-c. Each of the users trees 406a-c is shown as having specific user IDs (XUIs) 410a-c. Below each XUI are one or more documents 412. For example, the XML document 104 of
In the illustrated example, each of the AUIDs 404a-c represents a different application usage, and each of the XUIs 410a-c represents a different user or principal under which documents store information pertinent to respective ones of the AUIDs 404a-c. For example, if the AUID 404a represents an address book application usage (i.e., AUID_1=‘address-book’), the XML document 104 can store contact information for a personal address book owned by the user XUI-1410a, while another XML document 414 can store contact information for a business address book also owned by the user XUI-1410a. When one of the XDMCs 106a-c requests access to any of the documents 412, an XCAP request is communicated to the XDMS 108 (
A first example XDM system 500 supporting subscription to documents and notification of changes according to the techniques described herein is illustrated in
Existing approaches for supporting such non-SIP subscriptions in an XDM system typically require creation of a new XDMS or a new AUID, or both, to which a non-SIP XDMC can write subscription requests. The existing subscription proxy 308 is adapted to monitor the XML document where non-SIP XDMCs write their subscriptions. The subscription proxy 308 then performs backend subscriptions with the XDMS 108 for specific documents on behalf of the subscribing XDMCs using the existing SIP SUBSCRIBE and NOTIFY messaging scheme. The subscription proxy 308 in such existing approaches maintains the mapping between XDMCs subscribed for non-SIP notifications and subscribed XDMS documents.
Furthermore, document change notifications in these existing non-SIP solutions are sent using an OMA push enabler, such as the OMA push enabler 505 illustrated in the XDM system 500 of
These existing approaches for supporting non-SIP subscriptions and notifications in an XDM system are inefficient and incomplete for numerous reasons. For example, the existing approaches require persistent storage of subscriptions in XDMS and its clean-up after processing, which is undesirable. Additionally, a client must perform a non-essential write in order to invoke a non-SIP subscription which is inconsistent with the SIP subscription mechanism already in place for XDM. Another disadvantage of the existing non-SIP approaches is that the XDMS and XDMC must implement the advanced incremental update feature in order to transfer only the change in the monitored document; otherwise the XDMC must retrieve the entire document every time there is a change. A further disadvantage is that many aspects of the subscribe/notify mechanism present in the SIP implementation are not supported in the existing non-SIP approaches. For example, features such as how to unsubscribe, subscription duration, and how to distinguish between multiple XDMCs on a single device are not provided in the existing non-SIP subscription and notification approaches.
In contrast, the techniques described herein for supporting non-SIP subscription to documents and receipt of associated non-SIP notifications of document changes do not suffer from the disadvantages of the existing non-SIP approaches. Instead, the non-SIP subscription and notification techniques described in the context of
Turning to
Although the non-SIP subscription and notification functionality is described in the illustrated examples as being implemented primarily in the new XDCP subscription proxy 510, this functionality could be implemented alternatively by one or more other components of the XDM system 500. For example, the SIP-based subscription proxy 308 could be adapted to implement the non-SIP functionality described herein, including adding an interface to the subscription proxy 308 for receiving XDCP commands from the aggregation proxy 306. Alternatively, the aggregation proxy 306 could be adapted to implement non-SIP subscription and notification functionality, and could augment the SIP-based functionality provided by the existing subscription proxy 308. Alternatively, the non-SIP subscription and notification functionality could be distributed among an adapted subscription proxy 308, an adapted aggregation proxy 306, and/or other adapted components in the XDMS system 500.
For convenience,
The XDM system 600 further includes interfaces XDM-11, XDM-15, XDM-16, XDM-17, XDM-18 and XDM-19. The XDM-11 interface supports the exchange of HTTP-based XDCP messages, in particular the XDCP SUBCRIBE commands as described herein between the XDMC 302 and the aggregation proxy 306. The XDM-15 interface supports the exchange of HTTP-based XDCP SUBCRIBE messages between the aggregation proxy 306 and the XDCP subscription proxy 510. XDCP is an HTTP-based protocol, and the particular XDCP SUBSCRIBE message disclosed herein is defined and described in greater detail below. The XDM-16 interface supports the exchange of SIP messages between the XDMS 108 and the SIP/IP core 318. The XDM-17 interface supports the exchange of SIP messages between the XDCP subscription proxy 510 and the SIP/IP core 318. The XDM-18 interface supports the exchange of OMA Push messages between the XDCP subscription proxy 510 and the push enabler 505 using the push access protocol (PAP). An example of PAP is described in OMA's “Push Access Protocol,” Candidate Version 2.2, OMA-TS-PAP-V2—2-20090609-C (Jun. 9, 2009). The XDM-19 interface supports the exchange of push notifications between the push enabler 505 and the XDMC 302. The example non-SIP subscription and notification techniques described herein support any push transport mechanism implemented via the XDM-19 interface.
In an alternative implementation with the trusted XDMC 302 replaced with the untrusted XDMC 304, the XDM-11 interface is replaced with the XDM-3 interface, and the XDM-19 interface is replaced with the XDM-20 interface illustrated in
Before proceeding with a description of the XDM system of
The XDCP subscription proxy 510 of
The XDCP subscription proxy 510 of
Operation of the XDM subscription proxy 510 of
In the case when the XDMC 302 requests subscription for a single document, the HTTP POST request implementing the XDCP SUBSCRIBE message 805 includes a request URI identifying the document of interest. An example URI for a single document subscription is: http://[XCAPRoot]/org.openmobilealliance.xdcp/<auid>/users/<xui>/document. In this example URI, the component “[XCAPRoot]/org.openmobilealliance.xdcp” identifies the XDM system and indicates that the message is an XDCP command. Additionally, the component “/<auid>/users/<xui>/document” identifies the proper XDMS 108 and the document, node, or attribute within a node of interest to which subscription is being requested.
The body/payload of the HTTP POST request implementing the XDCP SUBSCRIBE message 805 carries the SUBSCRIBE command encoded in XML. The parameters and structure of the XDCP SUBSCRIBE message 805 and its mapping to corresponding SIP SUBSCRIBE parameters are described in the context of Table 1, which is described in greater detail below.
In the case when the XDMC 302 requests multiple subscriptions, in a single operation the request URI included in the HTTP POST request implementing the XDCP SUBSCRIBE message 805 does not identify any documents, nodes, or attributes of interest. Instead, the request URI is set to, for example, http://[XCAPRoot]/org.openmobilealliance.xdcp. A list of documents, nodes, or attributes to which the XDMC 302 is to subscribe is provided in the contents of the XDCP SUBSCRIBE message 805, as shown in Table 1. Accordingly, the XDM client 302 can make a single request for multiple subscriptions, thereby reducing the number of HTTP connections over-the-air/network leading to significant bandwidth reduction and performance improvements in the network and the XDM client respectively.
Next, the subscription request processor 705 in the XDCP subscription proxy 510 receives the XDCP SUBSCRIBE message 805 after the message is authenticated by the aggregation proxy 306. In the illustrated example, the XDCP subscription proxy 510 acts as a SIP Back To Back User Agent (B2BUA) using XDCP on the XDM-15 interface to the aggregations proxy and SIP on the XDM-17 interface towards the XDMS 108. In response to the received XDCP SUBSCRIBE message 805, the subscription request processor 705 in the XDCP subscription proxy 510 issues a SIP SUBSCRIBE message 810 to the XDMS 108 managing the requested document. If the SIP subscription initiated by the SIP SUBSCRIBE message 810 is successful and a SIP OK message 815 (e.g., such as a SIP 2xx message 815) is received from the XDMS 108 (as in the illustrated example), the mapper 735 in the XDCP subscription proxy 510 establishes a mapping between the XDMC 302 and the SIP subscription using the content from the XDCP SUBSCRIBE message 805. For example, the mapper 735 stores elements of the XDCP SUBSCRIBE message 805 necessary to process future notifications received for the SIP subscription and to route the notifications to the appropriate XDMC 302. After receiving the SIP OK message 815 and mapping the XDMC 302 to the SIP subscription resulting from the SIP SUBSCRIBE message 810, the subscription request processor 705 in the XDCP subscription proxy 510 sends an HTTP OK message 820 (e.g., such as an HTTP 2xx response 820) to the XDMC 302. If the XDMS 108 chose to reduce the duration of the subscription, the HTTP OK message 820 may carry reduced subscription duration information (e.g., extracted from a SIP “Expires” header included in the SIP OK message 815). If the SIP subscription is not successful (e.g., such as when the SIP OK message 815 is not received), the subscription request processor 705 in the XDCP subscription proxy 510 sends a failure code (e.g., such as an HTTP 4xx message not shown) to the XDMC 302, along with any reason provided by the XDMS 108.
Although not illustrated in the message sequence diagram 800 of
To complete the subscription process, the XDMS 108 sends an initial SIP NOTIFY message 825 that is received by the push initiator 720 in the XDCP subscription proxy 510. The initial SIP NOTIFY message 825 is not used to indicate that a change to the subscribed document has occurred but, instead, is used to provide, for example, the ETag associated with the current version of the document. In response to receiving the initial SIP NOTIFY message 825, the push initiator 720 in the XDCP subscription proxy 510 generates a PUSH NOTIFICATION message 830 from the contents of the SIP NOTIFY message 825 and sends the PUSH NOTIFICATION message 830 to the push enabler 505. The push enabler 505 then pushes the content of the PUSH NOTIFICATION message 830 to the XDMC 302 using any appropriate push transmission mechanism 835. The structure and contents of the PUSH NOTIFICATION message 830 are described in greater detail below in the context of notification processing.
Table 1 illustrates data elements that can be included in an example XDCP SUBSCRIBE message 805. These data elements, along with the mapping of these data elements to associated SIP SUBSCRIBE parameters described below, enable full SIP-based subscription functionality to be achieved using non-SIP messaging. In an example implementation, the following data elements represent a subset that may be included in the XDCP SUBSCRIBE message 805: tel-uri, wap-application-id, user-interaction-level and preferred-notification-type.
As described above, the XDCP subscription proxy 510 generates the SIP SUBSCRIBE message 805 and sends it to the XDMS 108 managing the document of interest. In an example implementation, the mapper 735 in the XDCP subscription proxy 510 maps the element “duration” in the XDCP SUBSCRIBE message 805 to the SIP header “Expires” of the SIP SUBSCRIBE message 810. Additionally, the mapper 735 maps the “X-XCAP-Asserted-Identity” header from the HTTP POST request implementing the XDCP SUBSCRIBE message 805 to the “P-Asserted-Identity” SIP header of the SIP SUBSCRIBE message 810. In case of single document subscription, the mapper 735 also maps the “/<auid>/users/<xui>/document” part of the request URL to the “Content-Type application/resource-lists+xml” portion of the SIP SUBSCRIBE message 810. In the case of multiple document subscription, the mapper 735 maps parameters from the “target-document” data element of the XDCP SUBSCRIBE message 805 to the “Content-Type application/resource-lists+xml” portion of the SIP SUBSCRIBE message 810. Furthermore, the mapper 735 sets the “From”, “To” and “Contact” SIP headers of the SIP SUBSCRIBE message 810 to the tel-uri of the requesting device, as provided in the XDCP SUBSCRIBE message 805. Also, the mapper 735 sets the domain name to the domain or IP address of the XDCP subscription proxy 510.
Returning to
In an example implementation of mapping SIP NOTIFY message content to the content of the non-SIP PUSH NOTIFICATION message 850, the push initiator 720 in the XDCP subscription proxy 510 performs any, some or all of the following operations to assemble the PUSH NOTIFICATION message 850 using an OMA Push Message, although not necessarily in the order in which the operations are described. An example OMA Push Message is described in OMA's “Push Message”, Candidate Version 2.2, OMA-TS-Push Message-V2—2-20090609-C (Jun. 9, 2009). First, the push initiator 720 sets the X-Wap-Application-Id header of the OMA Push Message to the “wap-application-id” provided in the XDCP SUBSCRIBE message 805. Then, the push initiator 720 sets the type of the OMA Push Message to “Service Indication.”
Next, the push initiator 720 sets the “action” attribute of the “indication” element of the “Service Indication” OMA Push Message to the value supplied in the “user-interaction-level” of the XDCP SUBSCRIBE message 805. The user-interaction-level element of the XDCP SUBSCRIBE message 805 allows specification of various user interaction levels for involving the XDMC 302 in the updating of a subscribed document upon notification of change. This ability to specify user interaction levels can provide an advantage over existing SIP and non-SIP subscription and notification techniques. The user-interaction-level in the XDCP SUBSCRIBE message 805 can be governed by user preferences, service provider policies, etc.
In an example implementation, the user-interaction-level can take on values of “none,” “low”, “medium” and “high.” In such an example, a user-interaction-level of none indicates that no user interaction is employed or otherwise specified, and a changed document can be updated on the affected XDMC device without involving the user. In contrast, a user-interaction-level of low, medium or high employs or specifies some user interaction (e.g., such as an approval) before any document updating can take place. The different levels of low, medium and high can be used to configure the XDMC device to prompt the user using different techniques and/or different levels of urgency.
Another operation performed by the push initiator 720 to assemble the PUSH NOTIFICATION message 850 is to determine what to include in the body of the OMA Push Message based on the “preferred-notification-type” set in the XDCP SUBSCRIBE message 805. This ability to specify preferred notification types can also provide an advantage over existing SIP and non-SIP subscription and notification techniques. In an example implementation, the XCAP URL of the changed document is mapped to the “href” attribute of the “indication” element of the “Service Indication” OMA Push Message implementing the PUSH NOTIFICATION message 850. Additionally, a new ETag of the document is supplied as the content of the “indication” element in the following format: new-etag=“123xyz”. Furthermore, if “push” is specified as the preferred-notification-type in the XDCP SUBSCRIBE message 805, the changes contained in the xcap-diff XML document (being a document different/distinct from the changed document and which contains a listing, enumeration or the like of the changes (i.e., diffs) that were made to the XML document to arrive at the changed document), which is supplied in the body of the SIP NOTIFY message 810, are included in the body of the OMA Push Message implementing the PUSH NOTIFICATION message 850 (e.g., by being included as the “item” element of the “info” element of the “Service Indication” OMA Push Message, with the “class” attribute of the “item” element set to the value “xcap-diff”). If “pull” is specified, the changes contained in the xcap-diff XML document, which is supplied in the body of the SIP NOTIFY message 810, are stored in a (new) Application Usage under the global tree, and the XCAP URL for that document (i.e., an XDM document containing the changes from the xcap-diff document) is included in the body of the OMA Push Message implementing the PUSH NOTIFICATION message 850 (e.g., by being included as the “item” element of the “info” element of the “Service Indication” OMA Push Message, with the “class” attribute of the “item” element set to the value “xcap-url”) such that the XDMC can obtain the document changes by a subsequent pull operation or request message. If “none” is specified, only the new ETag and XCAP URL of the changed document are included in the body of the OMA Push Message implementing the PUSH NOTIFICATION message 850.
Returning to
In another example scenario, the XDMS 108 may terminate the subscription at any time by issuing a SIP NOTIFY request (not shown) with a subscription-state header set to “terminated.” The XDCP subscription proxy 510 then notifies the XDMC 302 about the failure using the push notification procedures described above.
While an example manner of implementing the XDCP subscription proxy 510 of
Flowcharts representative of example processes that may be executed to implement any, some or all of the XDM systems 500 and 600, the XDCP subscription proxy 510, the subscription request processor 705, the push initiator 720, the mapper 735 and the memory 740 are shown in
In these examples, the processes represented by the flowcharts may be implemented by one or more programs comprising machine readable instructions for execution by: (a) a processor, such as the processor 1112 shown in the example processing system 1110 discussed below in connection with
Further, although the example processes are described with reference to the flowcharts illustrated in
An example process 900 that may be executed to implement non-SIP document subscription functionality in the XDCP subscription proxy 510 of
Next, control proceeds to block 910 at which the subscription request processor 705, in conjunction with the mapper 735 in the XDCP subscription proxy 510, uses the contents of the received XDCP SUBSCRIBE message 805 as described above to create the corresponding SIP SUBSCRIBE message 810. After creating the SIP SUBSCRIBE message 810, the subscription request processor 705 sends it to the XDMS 108.
Control then proceeds to block 915 at which the subscription request processor 705 in the XDCP subscription proxy 510 receives a response from the XDMS 108. If the response is a SIP forwarding message (block 920), control proceeds to block 925 at which the subscription request processor 705 modifies the SIP SUBSCRIBE message 810 to include the address of the new (e.g., forwarding) XDMS identified in the received SIP forwarding message. The subscription request processor 705 then sends the modified SIP SUBSCRIBE message 810 to the new (e.g., forwarding) XDMS. Control then returns to block 915 and blocks subsequent thereto at which the XDCP subscription proxy 510 waits for and receives a response from the new (e.g., forwarding) XDMS.
However, if the response is not a SIP forwarding response (block 920), the subscription request processor 705 in the XDCP subscription proxy 510 determines whether the SIP OK message 815 was received (block 930). If the SIP OK message 815 was received (block 930), control proceeds to block 935 at which the mapper 735 in the XDCP subscription proxy 510 establishes parameters needed to map the XDMC 302 with the subscription invoked with the XDMS 108, as described above. Control then proceeds to block 940 at which the subscription request processor 705 sends the HTTP OK message 820 to the XDMC 302 from which the XDCP SUBSCRIBE message 805 was received at block 905. Execution of the example non-SIP subscription process 900 then ends.
If, however, the SIP OK message 815 was not received (block 930), control proceeds to block 945. At block 945, the subscription request processor 705 in the XDCP subscription proxy 510 sends a failure code (e.g., such as an HTTP 4xx message) to the XDMC 302 from which the XDCP SUBSCRIBE message 805 was received at block 905. The sent failure code can also include any reason provided by the XDMS 108 in the SIP response that was received at block 915. Execution of the example non-SIP subscription process 900 then ends.
An example process 1000 that may be executed to implement non-SIP change notification functionality in the XDCP subscription proxy 510 of
Next, control proceeds to block 1010 at which the push initiator 720, in conjunction with the mapper 735 in the XDCP subscription proxy 510, begins assembling the PUSH NOTIFICATION message 850 by determining that the XDMC 302 and its associated target device are to be notified of the document change reported by the received SIP NOTIFY message 845. For example, at block 1010 the XDMC 302 and associated target device can be identified based on information contained in the SIP NOTIFY message 845 and associated subscription information that was extracted from the XDCP SUBSCRIBE message 805 by the mapper 735 during the subscription process as described above.
Control then proceeds to block 1015 at which the push initiator 720, in conjunction with the mapper 735, determines the user-interaction-level to be set in the PUSH NOTIFICATION message 850. For example, the user-interaction-level can be determined at block 1015 based on information extracted from the XDCP SUBSCRIBE message 805 by the mapper 735 during the subscription process as described above.
Next control proceeds to block 1025 at which the push initiator 720, in conjunction with the mapper 735, begins configuring the preferred-notification-type in the PUSH NOTIFICATION message 850. For example, the preferred-notification-type can be determined based on information extracted from the XDCP SUBSCRIBE message 805 by the mapper 735 during the subscription process as described above. If the preferred-notification-type is “pull” (block 1025), control proceeds to block 1030 at which the push initiator 720 stores the xcap-diff XML document supplied in the body of the SIP NOTIFY message 810 received at block 1005 in the memory 740 for subsequent retrieval by the XDMC 302. Then, after processing at block 1030 completes, or if the preferred-notification-type is not “pull” (block 1025), control proceeds to block 1035.
At block 1035, the push initiator 720 in the XDCP subscription proxy 510 completes generation of the PUSH NOTIFICATION message 850 and sends it to the push enabler 505 for subsequent transmission to the XDMC 302. Execution of the example non-SIP notification process 1000 then ends.
As yet another example, the non-SIP document subscription and change notification techniques described herein can be implemented in an OMA-compliant XDM system by appropriately modifying OMA's “XML Document Management (XDM) Specification,” Candidate Version 2.0, OMA-TS-XDM Core-V2—0-20080916-C (Sep. 16, 2008). An example modification to OMA's “XML Document Management (XDM) Specification” to support the non-SIP document subscription and change notification techniques described herein is to include the following text, beginning with the BEGIN label and ending with the END label.
BEGIN
To subscribe to be notified of changes in XDM documents, XDMC SHALL send the “SUBSCRIBE” XDCP command. The SUBSCRIBE command is encoded in XML.
In the case when subscription is for a single document the request URI indicates the document of interest as follows:
http://[XCAPRoot]/org.openmobilealliance.xdcp/<auid>/users/<xui>/document
where “[XCAPRoot]/org.openmobilealliance.xdcp” identifies the XDM system and that it is an XDCP command, and “/<auid>/users/<xui>/document” determines the proper XDMS and the document. When an XDMC subscribes for multiple documents the request URI does not specify the document as follows:
http://[XCAPRoot]/org.openmobilealliance.xdcp
In the case of multiple document subscription, the list of documents to subscribe to SHALL be provided in the body of the SUBSCRIBE command.
The SUBSCRIBE command SHALL contain the following information:
1) The tel-URI of the subscribing non-SIP device identity to which the notifications are to be sent if the “X-XCAP-Asserted-Identity” header of the HTTP POST request does not contain that information.
2) The duration of the subscription in seconds.
3) The OMNA registered application ID specifying which of the possibly multiple XDMCs on the device is subscribing for changes of the document.
4) The indication of level of user interaction is required for processing notifications. Values of “none”, “low”, “medium” or “high” are allowed.
5) The indication whether the document changes need to be (i) included in the notification, or (ii) stored on the server with only the URL pointing to changes to be included in the notification, or (iii) no changes need to be included and only the XCAP URL of the changed document is to be included in the notification.
After receiving the XDCP SUBSCRIBE command, the XDCP Subscription Proxy SHALL issue a SIP SUBSCRIBE command to the XDMS managing the requested document. If the SIP subscription is successful, the XDCP Subscription Proxy establishes mapping between the XDMC and the SIP subscription and stores elements of the XDCP SUBSCRIBE command necessary for future notifications together with the mapping (as listed above). That information will be used for future notifications of changes.
Upon reception of the SIP NOTIFY message the XDCP Subscription Proxy assembles a push message notification based on the information contained in the SIP NOTIFY message and associated subscription mapping. Acting as a Push Initiator, the XDCP Subscription Proxy SHALL submit the push message to the Push Proxy Gateway (PPG) using Push Access Protocol (PAP).
While assembling the push message the (XDCP) Subscription Proxy SHALL include the following information:
1. Set the X-Wap-Application-Id header to “wap-application-id” provided with the subscription.
2. Set the type of the push message to “Service Indication”
3. Set the “action” attribute of the “indication” element of the “Service Indication” push message to the value supplied in the “user-interaction-level” provided with the subscription.
4. Based on the “preferred-notification-type” element, determine what to include in the body of the push message. If “push” is specified, the entire xcap-diff XML document supplied in the body of the original SIP NOTIFY message SHALL be included in the push message body. If “pull” is specified, the xcap-diff XML document supplied in the body of the original SIP NOTIFY message SHALL be stored in the XCAP-DIFF Application Usage under the global tree. The XCAP URL for that document SHALL be included in the body of the push message. If “none” is specified, only the new ETag and XCAP URL of the changed document SHALL be included in the body of the push message.
END
As shown in
The processor 1112 of
In general, the system memory 1124 may include any desired type of volatile and/or non-volatile memory such as, for example, static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, read-only memory (ROM), etc. The mass storage memory 1125 may include any desired type of mass storage device including hard disk drives, optical drives, tape storage devices, etc.
The I/O controller 1122 performs functions that enable the processor 1112 to communicate with peripheral input/output (I/O) devices 1126 and 1128 and a network interface 1130 via an I/O bus 1132. The I/O devices 1126 and 1128 may be any desired type of I/O device such as, for example, a keyboard, a video display or monitor, a mouse, etc. The network interface 1130 may be, for example, an Ethernet device, an asynchronous transfer mode (ATM) device, an 802.11 device, a digital subscriber line (DSL) modem, a cable modem, a cellular modem, etc. that enables the processor system 1110 to communicate with another processor system.
While the memory controller 1120 and the I/O controller 1122 are depicted in
As an alternative to implementing the methods and/or apparatus described herein in a system such as the device of
From the foregoing, example methods and apparatus to implement non-SIP based document subscription and change notification functionality in an XDM system are disclosed. As described above, an example technique to subscribe for notifications of changes in XML documents managed by an XDM server involves an XDM client sending an XDCP SUBSCRIBE command containing the XCAP URI(s) of the document(s) of interest and the duration of the subscription. The XDCP SUBSCRIBE command can also contain an OMNA registered application ID specifying which of one or more XDM clients on a target device are subscribing for changes of the document(s). Additionally or alternatively, the XDCP SUBSCRIBE command can contain an indication of a level of user interaction to be employed or specified for processing notifications. Additionally or alternatively, the XDCP SUBSCRIBE command can contain an indication of whether the XDM client prefers that the document changes (e.g., in the form of the xcap-diff mime type) are included in the notification (“push”), or that the document changes are stored on the server and only the URL pointing to changes are included in the notification (“pull”), or that just the XCAP URL of the changed document is included in the notification (“none”).
Furthermore, in such an example technique, an intermediate device (such as an XDCP subscription proxy, an appropriately adapted existing subscription proxy, etc.) uses the XDCP SUBSCRIBE command received from the XDM client to create a corresponding SIP SUBSCRIBE request to send to the XDM server to subscribe to changes of specified documents on behalf of the XDM client. The intermediate device also establishes mappings between the SIP subscription and the non-SIP XDM client identified by its tel-URI, the mapping containing information from the XDCP SUBSCRIBE command.
As described above, an example technique to terminate (or, equivalently, unsubscribe to) an existing subscription for notifications of changes in XML documents managed by an XDM server involves an XDM client sending an XDCP SUBSCRIBE command containing the XCAP URI(s) of the document(s) of interest and the duration of the subscription set to zero (0) seconds.
As described above, an example technique to notify an XDM client of changes in an XDM document involves receiving a SIP notification, creating a related PUSH NOTIFICATION message and sending it to the subscribed XDM client. The PUSH NOTIFICATION message can contain a header including an OMNA registered application ID specifying which of one or more XDM clients on a target device is to be notified, with the OMNA registered application ID being stored in a subscription mapping maintained by an intermediate device (such as an XDCP subscription proxy, an appropriately adapted existing subscription proxy, etc.). Additionally or alternatively, the PUSH NOTIFICATION message can contain an indication of a level of user interaction employed or specified for processing notifications, with the possible levels of user interaction encoded as values of the “action” attribute of the “indication” element of the “Service Indication” type of the OMA NOTIFICATION message, and with the level of user interaction being stored in the subscription mapping maintained by the intermediate device. Additionally or alternatively, the PUSH NOTIFICATION message can contain the document changes in the body of the message if the subscription mapping contains a “push” indication. Additionally or alternatively, the intermediate device can store the document changes (in the form of the xcap-diff mime type) and the PUSH NOTIFICATION message can contain only the XCAP URL pointing to the stored changes so the XDM client can retrieve them at later time if the subscription mapping contains a “pull” indication. Additionally or alternatively, the PUSH NOTIFICATION message can contain only the XCAP URL of the changed document if the subscription mapping contains a “none” indication.
Although certain methods, apparatus, and articles of manufacture have been described herein, the scope of the appended claims is not limited thereto. To the contrary, this disclosure covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents.
This patent claims priority from U.S. Provisional Application Ser. No. 61/240,051, entitled “Methods and Apparatus to Subscribe for Change Notifications in a Document Management System” and filed on Sep. 4, 2009. U.S. Provisional Application Ser. No. 61/240,051 is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61240051 | Sep 2009 | US |