The present disclosure relates generally to network communications and, more particularly, to methods and apparatus to maintain validity of shared information.
Standardized document formats are often used to define how documents are created and how information is stored and maintained therein. An example of such a standardized document format is the extensible markup language (XML) standard. The Open Mobile Alliance (OMA) is a group that defines XML Document Management (XDM) for use in distributed access. For example, an OMA XDM enabler defines mechanisms for manipulating user-specific, service-related information stored in XML documents on servers. Such information is typically stored in the network where it can be located, accessed and manipulated (e.g., created, changed, and/or deleted). The XDM specifications specify how such information should be defined in XML documents. In addition, the XDM specifications specify a common protocol for accessing and manipulating such XML documents.
As is known, XML documents can be employed for many different types of uses. Some of those uses are application specific (e.g., such as storing subscriber preferences for a particular enabler (e.g., a Presence Subscription Policy or push-to-talk-over-cellular (PoC) Groups), and others are not application specific (e.g., storing a list of uniform resource identifiers (URIs), such as a list of friends, that can be re-used from multiple enablers).
In some instances, XDM can be used to facilitate authorizing individuals to access presence information for other individuals. In addition, XDM can be used to facilitate session initiation of many individuals to the same conference call. In such instances, there are common usages which are shared across multiple OMA enablers. For example, a URI list defined within a presence enabler could be used to initiate a conference call between an online group of friends.
Although the following discloses 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.
The example methods and apparatus described herein can be used to maintain validity of shared information stored in a network system that is accessed by a plurality of users. 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, etc.
The example methods and apparatus are described herein in connection with the Open Mobile Alliance (OMA) standard related to extensible markup language (XML) document management (XDM), 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 300 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 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 UE or terminals, and 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.
In some example implementations, example methods and apparatus implemented in accordance with the teachings described herein may involve generating a document subset corresponding to a portion of a standard-formatted document (e.g., an XML document) for a user requesting the document subset. In such example methods and apparatus, the validity of the document subset may be maintained based on assembly rules associated with the standard-formatted document and access control permissions (ACPs) associated with the user. For example, the document subset is valid when a standardized structural format (e.g., an XML structural format) associated with the standard-formatted document is not violated. In some example implementations, requests to change one or more ACPs may be evaluated and accepted or rejected based on whether such ACP change(s) would result in maintaining the validity of or render invalid one or more document subsets that may be generated based on the standard-formatted document and the requested ACP change(s). In some example implementations, a tangible machine accessible medium may be provided with instructions stored thereon that, when executed, cause a machine to implement such example methods and apparatus.
In some example implementations, example methods and apparatus implemented in accordance with the teachings described herein may involve generating a document subset corresponding to a portion of a standard-formatted document (e.g., an XML document) and identifying elements of the standard-formatted document that a schema of the standard-formatted document indicates as being required in the document subset. A first group of the elements having access permissions set to retrievable may be provided in the document subset, and placeholders may be provided in the document subset for a second group of the elements having access permissions set to not retrievable. The access permissions of the first and second group of the elements may correspond to a user requesting the document subset. The placeholders may be blank or may include values indicative of restricted access to the second group of elements. In some example implementations, the document subset may be sent to a mobile communication device. In some example implementations, a tangible machine accessible medium may be provided with instructions stored thereon that, when executed, cause a machine to implement such example methods and apparatus.
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.
In the illustrated example of
Turning to
Using known techniques for assembling different views (e.g., the views 202 and 204) for respective clients based on access permissions can often result in views that are not valid XML documents. For example, if access permissions define that a parent element is not visible and a child element is visible, the child element will be included in a view without the context of the enclosing parent element. Or, if an XML schema specifies a minimum occurrence (minOccurs) of particular elements to be greater than zero and applying an access permission would result in none of the elements or attributes being visible, an invalid XML document would be generated. Further problems associated with generating views or subsets of an XML document can result when a principal changes a server document in such a way that it differs from an already generated client views residing on one or more other clients and the clients whose views differ need to be notified about the change. This problem may arise when the principal changes the contents of the document or restricts access permissions associated with certain document parts that are already pending in document views residing on other clients.
The example methods and apparatus described herein can be used to overcome the above-described problems and other problems associated with information integrity to enable maintaining the validity of information stored on a network. In some example implementations as discussed in greater detail below in connection with
In other example implementations as discussed in greater detail below in connection with
Turning now to
Turning in detail to the service application layer 302, in the illustrated example the service application layer 302 includes a home subscriber server (HSS) 306, application servers 308, and one or more applications 310. The HSS 306 stores subscriber profiles (e.g., IMS data 312) and performs authentication and authorization processes (e.g., via a home location register/authentication center (HLR/AuC) 314) to determine communication services and features that users are authorized to access or use. The application servers 308 host and execute services and communicate with the IMS layer 304 using session initiation protocol (SIP). In the illustrated example, the application servers 308 include the XDMS 108, a SIP AS 316, an IP multimedia service switching function (IM SSF) 318, and an open service access-service capability server (OSA-SCS) 320.
In the illustrated example, each of the XDMCs 106a-c initializes communications with the service application layer 302 through a SIP registration process that occurs via the IMS layer 304. After the SIP registration process, the XDMCs 106a-c can communicate with the XDMS 108 via the hypertext transfer protocol (HTTP) to perform document management functions. For example, the XDMCs 106a-c can submit information requests to 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 400 includes the XDMS 108 in communication with a trusted XDMC 402 and an untrusted XDMC 404. The trusted XDMC 402 or the untrusted XDMC 404 can be any of the XDMCs 106a-c of
The subscription proxy 408 is configured to provide notifications to XDMCs (e.g., the XDMCs 106a-c of
In the illustrated example, the XDMS 108 is shown as a logical grouping or collection of a plurality of different XDMSs 416a-d in the XDM system 400. In particular, the XDMS 108 is shown in connection with a shared profile XDMS 416a, a shared list XDMS 416b, a shared policy XDMS 416c, and a shared group XDMS 416d, all of which are typical XDMSs in an XDM system. In addition, one or more additional enabler specific XDMSs may also be provided. Each of the XDMSs 416a-d provides XML document management services for its respective type of information. For example, the shared profile XDMS 416a manages stored user profiles. The shared list XDMS 416b manages uniform resource identifier (URI) list and group usage list documents. The shared policy XDMS 416c manages user access policies. The shared group XDMS 416d manages group documents. In other example implementations, an XDM system may be provided with fewer or more types of XDMSs.
The XDMCs 402 and 404 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 402 and 404, a SIP/IP core 418, the XDMS 108, and the subscription proxy 408 to register the XDMCs 402 and 404 with the XDM system 400. The interfaces XDM-3 and XDM-4 enable exchanges associated with document management requests/responses and confirmations of access permissions (e.g., access permissions associated with the ACP's A-C 110a-c). 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
In the illustrated example, each of the AUIDs 504a-c represents a different application usage, and each of the XUIs 510a-c represents a different user or principal under which documents store information pertinent to respective ones of the AUIDs 504a-c. For example, if the AUID 504a 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-1510a, while another XML document 514 can store contact information for a business address book also owned by the user XUI-1510a. When one of the XDMCs 106a-c requests access to any of the documents 512, an XCAP request is communicated to the XDMS 108 (
In the illustrated example, the view-assembly rules 604 include one or more permissions-dependent rules 606 and one or more content-dependent rules 608. The permissions-dependent rules 606 are rules based on the access permissions associated with a document. The content-dependent rules 608 are rules based on the information or content stored in a document.
The following example rules can be used as the permissions-dependent rules 606. An example permissions-dependent rule can specify that a child element cannot be retrievable if a corresponding parent element is not retrievable. Another example permissions-dependent rule can specify that if an element is retrievable, all attributes of the element in the XML schema for its corresponding document that are declared with the ‘use’ parameter equal to ‘required’ (i.e., use=required) must also be retrievable. Another example permissions-dependent rule can specify that if a parent element is modifiable then all the child elements must also be modifiable, but if the parent element is not modifiable, then some child elements may be modifiable. Another example permissions-dependent rule can specify that modify and delete rights can be assigned only together with retrieve rights (i.e., an element can be either only retrievable, both retrievable and modifiable, but not only modifiable).
An example rule that can be used as part of the content-dependent rules 608 can specify that if a retrieve restriction on children elements as defined by ACPs (e.g., the ACPs A-C 110a-c) conflicts with a minOccurs schema specification for a corresponding parent element, then the parent cannot be retrievable. In XML schema notation, the minOccurs parameter indicates that the content of an XML document must have a minimum number of child element occurrences for a particular parent. Violating the minOccurs parameter can result in an invalid XML document view or subset. For example, if a parent element <phone-number> has a minOccurs indicator of 1, and the parent element has two corresponding child elements, one of which is accessible by a user and one which is not, a view for that user will be invalid if the document owner removes the child element that is accessible by the user. That is, when the document owner removes the accessible child element, only the child element that is not accessible to the user will remain such that any subsequent view or subset assembled for that user will contain zero child elements for the <phone-number> parent element. The resulting view or subset will be in violation of the corresponding minOccurs indicator that is set to 1. Thus, a content-dependent rule that will prevent generation of views that would violate a minOccurs schema specification can be used to avoid generating this type of invalid XML view. Other types of content-dependent rules can similarly be implemented.
A view or subset of a document derived by applying ACPs (e.g., the ACPs A-C 110a-c of
A request to update the content of a document may be rejected when an access permission of a parent element is set to retrievable prior to receiving the requested document change, a minimum occurrences (minOccurs) requirement of the parent element defines a number of child elements that must be retrievable when the parent element is retrievable and the requested document content change results in a number of retrievable child elements not satisfying the minimum occurrences requirement of the parent element. However, the request to update the content of the document may be accepted if, in response to accepting the request, the access permission of the parent element is changed to not retrievable when the content of the standard-formatted document is updated.
In addition, the XDMS 108 is also configured to re-evaluate the permissions-dependent rules 606 and the content-dependent rules 608 after a change in ACPs to ensure that any existing assembled views or subsets (e.g., the view 602) are still valid. An example process that may be used to re-evaluate the permissions-dependent rules 606 and the content-dependent rules 608 after a requested change in ACPs is discussed below in connection with
A request to update an ACP may be rejected when an access permission of a parent element is set to not retrievable prior to receiving the requested ACP change and the requested ACP change involves changing an access permission of a child element corresponding to the parent element to retrievable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the child element is changed to retrievable and the access permission of the parent element is changed to retrievable.
A request to update an ACP may be rejected when an access permission of a child element is set to retrievable prior to receiving a requested ACP change and the requested ACP change involves changing an access permission of a parent element corresponding to the child element to not retrievable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the parent element is changed to not retrievable and the access permission of the child element is changed to not retrievable.
A request to update an ACP may be rejected when an access permission of an element is set to retrievable prior to receiving the requested ACP change, a schema of the standard-formatted document declares an attribute of the element as required when the element is retrievable, and the requested ACP change involves changing an access permission of the attribute to not retrievable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the attribute is changed to not retrievable and the access permission of the element is changed to not retrievable
A request to update an ACP may be rejected when an access permission of an attribute is set to not retrievable prior to receiving the requested ACP change, a schema of the standard-formatted document declares the attribute as required when a corresponding element is retrievable, and the requested ACP change involves changing an access permission of the element corresponding to the attribute to retrievable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the element is changed to retrievable and the access permission of the attribute is changed to retrievable.
A request to update an ACP may be rejected when an access permission of a parent element is modifiable prior to receiving the requested ACP change and the requested ACP change involves changing an access permission of a child element corresponding to the parent element to not modifiable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, changing the access permission of the child element to not modifiable and the access permission of the parent element to not modifiable.
A request to update an ACP may be rejected when an access permission of an element is set to not retrievable prior to receiving the requested ACP change and the requested ACP change involves changing the access permission of the element to modifiable while also being not retrievable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the element is changed so that it is modifiable and retrievable.
A request to update an ACP may be rejected when an access permission of an element is set to retrievable and modifiable prior to receiving the requested ACP change and the requested ACP change involves changing the access permission of the element to not retrievable while also being modifiable. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the element is changed so that it is not retrievable and not modifiable.
A request to update an ACP may be rejected when an access permission of a parent element is set to retrievable prior to receiving the requested ACP change, a minimum occurrences (minOccurs) requirement of a parent element defines a number of child elements that must be retrievable when the parent element is retrievable, and the requested ACP change involves changing an access permission of at least one child element to not retrievable resulting in the number of child elements set to retrievable not satisfying the minimum occurrences requirement of the parent element. However, the requested ACP change may be accepted under such circumstances when, in response to accepting the requested ACP change, the access permission of the at least one child element is changed to not retrievable and the access permission of the parent element is changed to not retrievable.
When a document update renders a view or subset for one or more principals that is invalid, notifications can be sent to those one or more principals. In the illustrated example, the principal performing the update is notified of the invalidity. For example, upon notification the principal that requested the modification may choose not to perform the update. However, if the update is committed, then any principal whose view is affected is notified to update their views. In addition, the admin principal that administers the affected document is notified. In this manner, the admin principal can decide whether to modify the ACPs associated with the affected document to rectify the situation.
An example manner of automating actions taken by principals affected by document changes is through the use of document-change policies 610. A policy can be implemented as a system-wide policy or a per-document policy. In the illustrated example, the document-change policies 610 include system policies 612 for system-wide policies that are generally applicable to all documents managed by a particular XDMS (e.g., the XDMS 108) and document-specific policies 614 for document-specific policies that are specifically applicable to particular respective documents (e.g., the XML document 104). In some example implementations, a system-wide policy can be used by default but be overridden under defined conditions by an overriding per-document policy. An example policy may be to unconditionally accept changes to documents and notify the affected principals. Another example policy may be to reject changes and notify the principal that attempted the update. Yet another example policy may be to queue up a change until the admin principal resolves any issues, and while the change is queued up notify the principal that attempted the update that the update is still pending. Example processes of applying the view-assembly rules 604 and the document-change policies 610 of
The XDMS 108 can use the blank placeholders 704 to ensure that it assembles views or subsets that are valid XML documents. By using the blank placeholders 704, the XDMS 108 can generate views that do not violate XML schema specifications such as the minOccurs specification because the blank placeholders 704 ensure that a generated view retains the structure specified in a corresponding XML schema. Although the blank placeholders 704 appear as blank (i.e., no information) in the illustrated example of
Some or all of the rules interface 802, the policy interface 804, the ACP interface 806, the notifier 808, the document interface 812, the parser 814, the blank inserter 816, the view assembler 818, and/or the communication interface 820, or parts thereof, may be implemented using instructions, code, and/or other software and/or firmware, etc. stored on a machine accessible medium and executable by, for example, a processor system (e.g., the example processor system 1410 of
Now turning in detail to
To retrieve parts (e.g., elements or attributes) from a document, the XDMS 108 is provided with the parser 814. For example, the parser 814 can retrieve parts for which an XDMC requesting access is authorized to access based on a corresponding ACP (e.g., the ACPs A-B 110a-c of
To assemble views or subsets (e.g., the views 602 of
To communicate with XDMCs or other XDMSs, the XDMS 108 is provided with a communication interface 820. For example, the XDMS 108 can receive information request messages and document change requests from XDMCs via the communication interface 820. In addition, the XDMS 108 can communicate responses or notifications to XDMCs via the communication interface 820.
The example processes of
The rules interface 802 (
If at block 914, the rules interface 802 determines that the view would be valid based on the content-dependent rules 608, the view assembler 818 (
The ACP interface 806 (
If the rules interface 802 determines that the view or subset for the selected principal would not be valid (block 1012), the policy interface 804 (
Returning to block 1014, if the document-change policies 610 do not indicate that the document changes should be accepted, the policy interface 804 determines whether the document-change policies 610 indicate that the document changes should be rejected (block 1020). If the document changes should be rejected (block 1020), the notifier 808 rejects the requested change (e.g., by notifying the XDMC requesting the change) and the document 104 is reverted (block 1022) with no changes being committed. However, if at block 1020 the document-change policies 610 indicate that the document changes should not be rejected, the notifier 808 notifies the admin principal of the XML document 104 to resolve the conflict (block 1024). In addition, the notifier 808 notifies the XDMC requesting the change that the change is pending (block 1026). In the illustrated example, the requested change will remain pending until the admin principal resolves the conflict or until a predetermined duration has lapsed, at which point the requested change will be automatically rejected.
After the XDMC requesting the change is notified that the change is pending (block 1026) or after notifying the XDMC to retrieve an updated valid view (block 1018) or if the view of the selected principal is valid (block 1012), the ACP interface 806 determines whether there is another principal authorized to access the XML document 104 (block 1028). If there is another principal, the ACP interface 806 selects the next principal (block 1030) for which to analyze the validity of a corresponding view and control returns to block 1008. On the other hand, if there are no more principals remaining for which to analyze validities of views (block 1028) or after the change is rejected (block 1022), the example process of
If the ACP change should be accepted (block 1108), the ACP interface 806 adjusts one or more permissions causing the invalid view or subset (block 1110). For example, if the requested ACP change includes various changes corresponding to different portions of a document (e.g., the XML document 104) and only one of those changes would create an invalid view or subset, the ACP interface 806 can commit all of the requested ACP changes but adjust the ACP change that would create the invalid view or subset so that a valid view or subset can be generated. The ACP interface 806 commits the change to the principal's ACP for the document 104 (block 1112). In addition, the notifier 808 (
Returning to block 1108, if the ACP change should not be accepted (block 1108), control advances to block 1114 at which the ACP interface 806 rejects the ACP change (block 1116), and the ACP A 110a reverts to the original ACP without committing the changes (block 1118). After the ACP changes are reverted (block 1118) or after the affected XDMC is notified to retrieve the updated ACP (block 1114) or if at block 1106 the rules interface 802 determines that a valid view would be generated based on the requested ACP changes, the example process of
Turning in detail to
As shown in
The processor 1412 of
In general, the system memory 1424 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 1425 may include any desired type of mass storage device including hard disk drives, optical drives, tape storage devices, etc.
The I/O controller 1422 performs functions that enable the processor 1412 to communicate with peripheral input/output (I/O) devices 1426 and 1428 and a network interface 1430 via an I/O bus 1432. The I/O devices 1426 and 1428 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 1430 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 1410 to communicate with another processor system.
While the memory controller 1420 and the I/O controller 1422 are depicted in
Although certain methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this disclosure 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 the benefit of U.S. Provisional Patent Application No. 61/218,787, filed on Jun. 19, 2009, which is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61218787 | Jun 2009 | US |