Claims
- 1. A method for determining whether an element within an organization is a member of one or more target groups pre-defined within the organization, the organization maintaining a computer network comprising a plurality of storage devices organized into X levels and storing element-group information, the storage devices including a directory at a higher, more-costly level X and at least one cache, each cache being at a lower, less-costly level below X and including at least a portion of the element-group information in the directory, the levels 1 to X corresponding to least-costly to most-costly, the method comprising:
validating each target group by searching the levels of storage devices to find an item for the target group and, if the target group is found, placing the target group in a validated target bin (V); validating the element by searching the levels of storage devices to find an item for the element, and if the item for the element is found, determining from the item all groups that the element is listed as being a member of and placing such member-of groups in a search bin (S); firstly determining whether any group in (S) matches any group in (V):
if so, concluding that the element is a member of a target group; and if not continuing by moving all groups in (S) to a queue (Q1) corresponding to the storage device at level 1 and performing an iterative process to search for a membership path from the element to any target group, the iterative process comprising, for each level x from 1 to X: secondly determining whether a queue (Qx) corresponding to the level is empty;
if empty, incrementing the level and returning to the secondly determining step if x<X, and concluding that the element is not a member of any target group if x=X; if not empty, removing a group from (Qx) and determining whether the removed group is already in a discard bin (D);
if in (D), returning to the secondly determining step; if not in (D), searching for an item corresponding to the removed group in the storage device corresponding to the level;
if no such item is found from the search, moving the removed group to (Q(x+1)) if x<X and moving the removed group to (D) if x=X, and returning to the secondly determining step; if such an item is found from the search, placing each newly discovered group that the removed group is a member of as determined from the found item into (S), moving the removed group to (D), and returning to the firstly determining step, whereby the iterative process develops all possible paths from the element to any of the validated target groups, and more costly operations at a higher level storage device do not occur until all possible less costly operations at all lower level storage devices are exhausted.
- 2. The method of claim 1 wherein validating each target group comprises:
placing each target group in a target bin (T); and for each level from 1 to X, searching in the storage device at the level for an item corresponding to each target group in (T), and if such an item is located removing the target group from (T) and placing such target group in the validated target bin (V).
- 3. The method of claim 2 further comprising, if such an item is found, populating any lower-level storage devices with a corresponding item.
- 4. The method of claim 1 comprising, after searching the levels of storage devices for each target group, determining whether (V) is empty and if so concluding that no valid target groups are found.
- 5. The method of claim 1 wherein validating the element comprises, for each level from 1 to X, searching in the storage device at the level for an item corresponding to the element until such item is found.
- 6. The method of claim 5 further comprising, if such an item corresponding to the element is found, populating any lower-level storage devices with a corresponding item.
- 7. The method of claim 1 comprising, after searching the levels of storage devices for the element, determining whether an item for the element is found and if not concluding that no valid element is found.
- 8. The method of claim 1 wherein X=3, with a local cache at level 1, a remote cache at level 2, and the directory at level 3.
- 9. The method of claim 1 further comprising, if such an item is found, populating any lower-level storage devices with a corresponding item.
- 10. The method of claim 1 for determining whether a user from an organization is a member of one or more target groups pre-defined within the organization, the organization maintaining the computer network comprising the plurality of storage devices organized into X levels and storing user-group information.
- 11. A computer-readable medium having stored thereon computer-executable instructions for performing a method for determining whether an element within an organization is a member of one or more target groups pre-defined within the organization, the organization maintaining a computer network comprising a plurality of storage devices organized into X levels and storing element-group information, the storage devices including a directory at a higher, more-costly level X and at least one cache, each cache being at a lower, less-costly level below X and including at least a portion of the element-group information in the directory, the levels 1 to X corresponding to least-costly to most-costly, the method comprising:
validating each target group by searching the levels of storage devices to find an item for the target group and, if the target group is found, placing the target group in a validated target bin (V); validating the element by searching the levels of storage devices to find an item for the element, and if the item for the element is found, determining from the item all groups that the element is listed as being a member of and placing such member-of groups in a search bin (S); firstly determining whether any group in (S) matches any group in (V):
if so, concluding that the element is a member of a target group; and if not continuing by moving all groups in (S) to a queue (Q1) corresponding to the storage device at level 1 and performing an iterative process to search for a membership path from the element to any target group, the iterative process comprising, for each level x from 1 to X: secondly determining whether a queue (Qx) corresponding to the level is empty;
if empty, incrementing the level and returning to the secondly determining step if x<X, and concluding that the element is not a member of any target group if x=X; if not empty, removing a group from (Qx) and determining whether the removed group is already in a discard bin (D);
if in (D), returning to the secondly determining step; if not in (D), searching for an item corresponding to the removed group in the storage device corresponding to the level;
if no such item is found from the search, moving the removed group to (Q(x+1)) if x<X and moving the removed group to (D) if x=X, and returning to the secondly determining step; if such an item is found from the search, placing each newly discovered group that the removed group is a member of as determined from the found item into (S), moving the removed group to (D), and returning to the firstly determining step, whereby the iterative process develops all possible paths from the element to any of the validated target groups, and more costly operations at a higher level storage device do not occur until all possible less costly operations at all lower level storage devices are exhausted.
- 12. The medium of claim 11 wherein validating each target group comprises:
placing each target group in a target bin (T); and for each level from 1 to X, searching in the storage device at the level for an item corresponding to each target group in (T), and if such an item is located removing the target group from (T) and placing such target group in the validated target bin (V).
- 13. The medium of claim 12 wherein the method further comprises, if such an item is found, populating any lower-level storage devices with a corresponding item.
- 14. The medium of claim 11 wherein the method comprises, after searching the levels of storage devices for each target group, determining whether (V) is empty and if so concluding that no valid target groups are found.
- 15. The medium of claim 11 wherein validating the element comprises, for each level from 1 to X, searching in the storage device at the level for an item corresponding to the element until such item is found.
- 16. The medium of claim 15 wherein the method further comprises, if such an item corresponding to the element is found, populating any lower-level storage devices with a corresponding item.
- 17. The medium of claim 11 wherein the method comprises, after searching the levels of storage devices for the element, determining whether an item for the element is found and if not concluding that no valid element is found.
- 18. The medium of claim 11 wherein X=3, with a local cache at level 1, a remote cache at level 2, and the directory at level 3.
- 19. The medium of claim 11 wherein the method further comprises, if such an item is found, populating any lower-level storage devices with a corresponding item.
- 20. The medium of claim 11 wherein the method is for determining whether a user from an organization is a member of one or more target groups pre-defined within the organization, the organization maintaining the computer network comprising the plurality of storage devices organized into X levels and storing user-group information.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The following U.S. Patent Applications disclose subject matter that is related to the subject matter of the present application, and are hereby incorporated herein by reference in their entirety:
[0002] U.S. patent application Ser. No. 10/185,527, filed Jun. 28, 2002 under attorney docket number MSFT-1330 and entitled “Obtaining a Signed Rights Label (SRL) for Digital Content and Obtaining a Digital License Corresponding to the Content Based on the SRL in a Digital Rights Management System”;
[0003] U.S. patent application Ser. No. 10/185,278, filed Jun. 28, 2002 under attorney docket number MSFT-1333 and entitled “Using a Rights Template to Obtain a Signed Rights Label (SRL) for Digital Content in a Digital Rights Management System”;
[0004] U.S. patent application Ser. No. 10/185,511, filed Jun. 28, 2002 under attorney docket number MSFT-1343 and entitled “Systems And Methods For Issuing Usage Licenses For Digital Content And Services”;
[0005] U.S. patent application Ser. No.______,filed______under attorney docket number MSFT-1498 and entitled “Publishing Digital Content Within an Organization in Accordance with a Digital Rights Management (DRM) System;
[0006] U.S. patent application Ser. No.______, filed______ under attorney docket number MSFT-1569 and entitled “Publishing Digital Content Within an Organization in Accordance with a Digital Rights Management (DRM) System; and
[0007] U.S. patent application Ser. No.______, filed concurrently with the present application under attorney docket number MSFT-1585 and entitled “Issuing a Digital Rights Management (DRM) License for Content Based on Cross-Forest Directory Information”.