System and method for flexible packaging of software application licenses
First Claim
1. A method for providing licenses to client computer systems to allow said client computer systems to use licensed software products, the method comprising:
- receiving a request for a feature license for a feature included in a package, said request being received from a client computer system that wishes to use said feature, said request optionally including checkout data, said checkout data including at least one desired feature attribute;
filtering said request based on whether said license requires the checkout of a parent license;
granting a package license to said client computer system when said client computer system is allowed to receive said package license according to a license policy, said package license being associated with said package that includes said requested feature, said package license allowing said client computer system to use said requested feature product; and
denying said package license to said client computer system when said client computer system is not allowed to receive said package license according to said license policy, wherein said filtering further comprises;
modifying said checkout data when said license requires the checkout of a parent license;
locating said license within a license database; and
verifying said license.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for providing licenses to client computer systems to allow the client computer systems to use licensed software products includes receiving a request for a feature license for a feature included in a package, filtering the request based on whether the license requires the checkout of a parent license, granting a package license to the client computer system when the client computer system is allowed to receive the package license according to a license policy and denying the package license to the client computer system when the client computer system is not allowed to receive the package license according to the license policy. The request may include checkout data that includes at least one desired feature attribute. A software license server for providing licenses to client computer systems to allow the client computer systems to use licensed software products, the software license server includes at least one memory having program instructions and at least one processor configured to use the program instructions to receive a request for a feature license for a feature included in a package, filter the request based on whether the license requires the checkout of a parent license, grant a package license to the client computer system when the client computer system is allowed to receive the package license according to a license policy and deny the package license to the client computer system when the client computer system is not allowed to receive the package license according to the license policy.
199 Citations
39 Claims
-
1. A method for providing licenses to client computer systems to allow said client computer systems to use licensed software products, the method comprising:
-
receiving a request for a feature license for a feature included in a package, said request being received from a client computer system that wishes to use said feature, said request optionally including checkout data, said checkout data including at least one desired feature attribute;
filtering said request based on whether said license requires the checkout of a parent license;
granting a package license to said client computer system when said client computer system is allowed to receive said package license according to a license policy, said package license being associated with said package that includes said requested feature, said package license allowing said client computer system to use said requested feature product; and
denying said package license to said client computer system when said client computer system is not allowed to receive said package license according to said license policy, wherein said filtering further comprises;
modifying said checkout data when said license requires the checkout of a parent license;
locating said license within a license database; and
verifying said license. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
indicating said license request does not require the checkout of a parent license when said license is not associated with a parent license;
indicating said license request does not require the checkout of a parent license when said license does not include a package definition string; and
indicating said license request requires the checkout of a parent license when said license has a parent and said license contains a package definition string.
-
-
3. The method of claim 1 wherein said modifying checkout data further comprises:
-
generating share values;
generating a package ID; and
setting a modified checkout data value to said share values concatenated with said package ID.
-
-
4. The method of claim 3 wherein said generating share values further comprises returning a character string that includes each attribute in said share mode.
-
5. The method of claim 3 wherein said generating a package ID further comprises:
-
determining the mode of said feature;
setting said package ID to the hashed value of said share values concatenated with said feature when said mode of said feature is “
One Of”
;
setting said package ID to the node number of said feature when said mode of said feature is “
Any Of”
, said node number based on a number assigned to said feature within a tree representation of said package definition string; and
setting said package ID to the node number of said feature, concatenated with a slot indicated by the combination of said feature and said share values when said mode of said feature is “
One Each Of”
.
-
-
6. The method of claim 5 wherein said determining the mode of said feature further comprises:
-
finding said feature in the package definition string portion of said license data; and
returning the mode of said feature based upon the syntax of said package definition string.
-
-
7. The method of claim 5 wherein said determining the node number of said feature further comprises:
-
receiving a package definition string;
receiving a feature to be located in said package definition string;
initializing a count;
finding the next feature in said package definition string;
returning said count when said package definition feature matches said feature to be located; and
incrementing said count when said mode of said package definition feature is “
One Each Of”
or “
Any Of”
.
-
-
8. The method of claim 5 wherein said determining the slot indicated by the combination of said feature and share values further comprises:
-
determining whether a slot indicated by the combination of any feature and said share values currently exists when said slot indicated by the combination of said feature and share values does not exist;
returning said slot index when said slot indicated by the combination of said feature and share values exists; and
determining a minimum slot index without a slot when said slot does not exist.
-
-
9. The method of claim 8 wherein said determining whether a slot indicated by the combination of said feature and said share values exists further comprises:
-
initializing an index;
indicating there is no slot when said index is greater than the index of a last slot;
incrementing said index when there is a slot at said index and said features and share values do not match; and
returning said index when there is a slot at said index and said feature and said share values match.
-
-
10. The method of claim 8 wherein said determining whether a slot indicated by the combination of any feature and said share values exists further comprises:
-
initializing an index;
indicating there is no slot when said index is greater than the index of a last slot;
incrementing said index when there is a slot at said index and said share values do not match; and
returning said index when there is a slot at said index and said share values match.
-
-
11. The method of claim 8 wherein said determining the minimum slot index without a slot further comprises:
-
initializing an index;
returning said index when said index is greater than the index of the last slot; and
incrementing said index when said index is not greater than the index of the last slot and when there is a slot at said index.
-
-
12. The method of claim 1 wherein said locating and said verifying further comprises:
-
updating said internal database and indicating success when said license has a share mode duplicate;
receiving a candidate license for said requested feature when said license has no share mode duplicate;
verifying other attributes;
finding and verifying a parent license of said license;
updating said internal database and indicating success when said parent license is available; and
receiving the next candidate license when said parent license is not available.
-
-
13. The method of claim 12 wherein said determining whether said license has a share mode duplicate further comprises:
-
finding the next license with the requested feature in a database of checked out licenses;
indicating said license does not have a share mode duplicate when said license is not found; and
indicating said license has a share mode duplicate when said share mode attribute values are identical and when there are no more share mode attributes.
-
-
14. A software license server suitable for use in conjunction with a computer system and operative to provide licenses to said computer system to allow said computer system to use licensed software programs, the license server comprising:
-
a database for storing a plurality of feature licenses and package licenses;
means for receiving a request for a feature license for a feature included in a package, said request being received from a client computer system that wishes to use said feature, said request optionally including checkout data, said checkout data including at least one desired feature attribute;
means for filtering said request based on whether said license requires the checkout of a parent license;
means for granting a package license to said client computer system when said client computer system is allowed to receive said package license according to a license policy, said package license being associated with said package that includes said requested feature, said package license allowing said client computer system to use said requested feature product; and
means for denying said package license to said client computer system when said client computer system is not allowed to receive said package license according to said license policy, wherein said means for filtering further comprises;
means for modifying said checkout data when said license requires the checkout of a parent license;
means for locating said license within a license database; and
means for verifying said license. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
means for indicating said license request does not require the checkout of a parent license when said license is not associated with a parent license;
means for indicating said license request does not require the checkout of a parent license when said license does not include a package definition string; and
means for indicating said license request requires the checkout of a parent license when said license has a parent and said license contains a package definition string.
-
-
16. The software license server of claim 14 wherein said means for modifying checkout data further comprises:
-
means for generating share values;
means for generating a package ID; and
means for setting a modified checkout data value to said share values concatenated with said package ID.
-
-
17. The software license server of claim 16 wherein said means for generating share values further comprises means for returning a character string that includes each attribute in said share mode.
-
18. The software license server of claim 16 wherein said means for generating a package ID further comprises:
-
means for determining the mode of said feature;
means for setting said package ID to the hashed value of said share values concatenated with said feature when said mode of said feature is “
One Of”
;
means for setting said package ID to the node number of said feature when said mode of said feature is “
Any Of”
, said node number based on a number assigned to said feature within a tree representation of said package definition string; and
means for setting said package ID to the node number of said feature, concatenated with a slot indicated by the combination of said feature and said share values when said mode of said feature is “
One Each Of”
.
-
-
19. The software license server of claim 18 wherein said means for determining the mode of said feature further comprises:
-
means for finding said feature in the package definition string portion of said license data; and
means for returning the mode of said feature based upon the syntax of said package definition string.
-
-
20. The software license server of claim 18 wherein said means for determining the node number of said feature further comprises:
-
means for receiving a package definition string;
means for receiving a feature to be located in said package definition string;
means for initializing a count;
means for finding the next feature in said package definition string;
means for returning said count when said package definition feature matches said feature to be located; and
means for incrementing said count when said mode of said package definition feature is “
One Each Of”
or “
Any Of”
.
-
-
21. The software license server of claim 18 wherein said means for determining the slot indicated by the combination of said feature and share values further comprises:
-
means for determining whether a slot indicated by the combination of any feature and said share values currently exists when said slot indicated by the combination of said feature and share values does not exist;
means for returning said slot index when said slot indicated by the combination of said feature and share values exists; and
means for determining a minimum slot index without a slot when said slot does not exist.
-
-
22. The software license server of claim 21 wherein said means for determining whether a slot indicated by the combination of said feature and said share values exists further comprises:
-
means for initializing an index;
means for indicating there is no slot when said index is greater than the index of a last slot;
means for incrementing said index when there is a slot at said index and said features and share values do not match; and
means for returning said index when there is a slot at said index and said feature and said share values match.
-
-
23. The software license server of claim 21 wherein said means for determining whether a slot indicated by the combination of any feature and said share values exists further comprises:
-
means for initializing an index;
means for indicating there is no slot when said index is greater than the index of a last slot;
means for incrementing said index when there is a slot at said index and said share values do not match; and
means for returning said index when there is a slot at said index and said share values match.
-
-
24. The software license server of claim 21 wherein said means for determining the minimum slot index without a slot further comprises:
-
means for initializing an index;
means for returning said index when said index is greater than the index of the last slot; and
means for incrementing said index when said index is not greater than the index of the last slot and when there is a slot at said index.
-
-
25. The software license server of claim 14 wherein said means for locating and verifying further comprises:
-
means for updating said internal database and indicating success when said license has a share mode duplicate;
means for receiving a candidate license for said requested feature when said license has no share mode duplicate;
means for verifying other attributes;
means for finding and verifying a parent license of said license;
means for updating said internal database and indicating success when said parent license is available; and
means for receiving the next candidate license when said parent license is not available.
-
-
26. The software license server of claim 25 wherein said means for determining whether said license has a share mode duplicate further comprises:
-
means for finding the next license with the requested feature in a database of checked out licenses;
means for indicating said license does not have a share mode duplicate when said license is not found; and
means for indicating said license has a share mode duplicate when said share mode attribute values are identical and when there are no more share mode attributes.
-
-
27. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method to provide licenses to client computer systems to allow said client computer systems to use licensed software products, the method comprising:
-
receiving a request for a feature license for a feature included in a package, said request being received from a client computer system that wishes to use said feature, said request optionally including checkout data, said checkout data including at least one desired feature attribute;
filtering said request based on whether said license requires the checkout of a parent license;
granting a package license to said client computer system when said client computer system is allowed to receive said package license according to a license policy, said package license being associated with said package that includes said requested feature, said package license allowing said client computer system to use said requested feature product; and
denying said package license to said client computer system when said client computer system is not allowed to receive said package license according to said license policy, wherein said filtering further comprises;
modifying said checkout data when said license requires the checkout of a parent license;
locating said license within a license database; and
verifying said license. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
indicating said license request does not require the checkout of a parent license when said license is not associated with a parent license;
indicating said license request does not require the checkout of a parent license when said license does not include a package definition string; and
indicating said license request requires the checkout of a parent license when said license has a parent and said license contains a package definition string.
-
-
29. The program storage device of claim 27 wherein said modifying checkout data further comprises:
-
generating share values;
generating a package ID; and
setting a modified checkout data value to said share values concatenated with said package ID.
-
-
30. The program storage device of claim 29 wherein said generating share values further comprises returning a character string that includes each attribute in said share mode.
-
31. The program storage device of claim 29 wherein said generating a package ID further comprises:
-
determining the mode of said feature;
setting said package ID to the hashed value of said share values concatenated with said feature when said mode of said feature is “
One Of”
;
setting said package ID to the node number of said feature when said mode of said feature is “
Any Of”
, said node number based on a number assigned to said feature within a tree representation of said package definition string; and
setting said package ID to the node number of said feature, concatenated with a slot indicated by the combination of said feature and said share values when said mode of said feature is “
One Each Of”
.
-
-
32. The program storage device of claim 31 wherein said determining the mode of said feature further comprises:
-
finding said feature in the package definition string portion of said license data; and
returning the mode of said feature based upon the syntax of said package definition string.
-
-
33. The program storage device of claim 32 wherein said determining the node number of said feature further comprises:
-
receiving a package definition string;
receiving a feature to be located in said package definition string;
initializing a count;
finding the next feature in said package definition string;
returning said count when said package definition feature matches said feature to be located; and
incrementing said count when said mode of said package definition feature is “
One Each Of”
or “
Any Of”
.
-
-
34. The program storage device of claim 31 wherein said determining the slot indicated by the combination of said feature and share values further comprises:
-
determining whether a slot indicated by the combination of any feature and said share values currently exists when said slot indicated by the combination of said feature and share values does not exist;
returning said slot index when said slot indicated by the combination of said feature and share values exists; and
determining a minimum slot index without a slot when said slot does not exist.
-
-
35. The program storage device of claim 34 wherein said determining whether a slot indicated by the combination of said feature and said share values exists further comprises:
-
initializing an index;
indicating there is no slot when said index is greater than the index of a last slot;
incrementing said index when there is a slot at said index and said features and share values do not match; and
returning said index when there is a slot at said index and said feature and said share values match.
-
-
36. The program storage device of claim 34 wherein said determining whether a slot indicated by the combination of any feature and said share values exists further comprises:
-
initializing an index;
indicating there is no slot when said index is greater than the index of a last slot;
incrementing said index when there is a slot at said index and said share values do not match; and
returning said index when there is a slot at said index and said share values match.
-
-
37. The program storage device of claim 34 wherein said determining the minimum slot index without a slot further comprises:
-
initializing an index;
returning said index when said index is greater than the index of the last slot; and
incrementing said index when said index is not greater than the index of the last slot and when there is a slot at said index.
-
-
38. The program storage device of claim 31 wherein said locating and said verifying further comprises:
-
updating said internal database and indicating success when said license has a share mode duplicate;
receiving a candidate license for said requested feature when said license has no share mode duplicate;
verifying other attributes;
finding and verifying a parent license of said license;
updating said internal database and indicating success when said parent license is available; and
receiving the next candidate license when said parent license is not available.
-
-
39. The program storage device of claim 38 wherein said determining whether said license has a share mode duplicate further comprises:
-
finding the next license with the requested feature in a database of checked out licenses;
indicating said license does not have a share mode duplicate when said license is not found; and
indicating said license has a share mode duplicate when said share mode attribute values are identical and when there are no more share mode attributes.
-
Specification