throbber
(12) United States Patent
`Meyer
`
`111111
`
`1111111111111111111111111111111111111111111111111111111111111
`US006810389Bl
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6,810,389 Bl
`Oct. 26, 2004
`
`(54) SYSTEM AND METHOD FOR FLEXIBLE
`PACKAGING OF SOFTWARE APPLICATION
`LICENSES
`
`(75)
`
`Inventor: Marc A. Meyer, Woodside, CA (US)
`
`(73) Assignee: Synopsys, Inc., Mountain View, CA
`(US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 738 days.
`
`(21) Appl. No.: 09/710,685
`Nov. 8, 2000
`
`(22) Filed:
`
`Int. Cl? ................................................ G06F 17/60
`(51)
`(52) U.S. Cl. ............................. 705/59; 705/51; 705/57;
`713/200
`(58) Field of Search ............................... 705!59, 50-58;
`713/200
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`5,204,897 A * 4/1993 Wyman ......................... 380/4
`5,671,412 A
`9/1997 Christiano .................. 395/615
`
`Primary Examiner-James P. Trammell
`Assistant Examiner-Jalatee Worjloh
`(74) Attorney, Agent, or Firm-Bever, Hoffman & Harms,
`LLP; Jeanette S. Harms
`
`(57)
`
`ABSTRACT
`
`A method for providing licenses to client computer systems
`to allow the client computer systems to use licensed soft(cid:173)
`ware 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 com(cid:173)
`puter 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 pro(cid:173)
`cessor 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 com(cid:173)
`puter 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 accord(cid:173)
`ing to the license policy.
`
`EP
`
`0332304
`
`............. G06F/1!00
`
`FOREIGN PATENT DOCUMENTS
`* 2/1989
`01HER PUBLICATIONS
`Chavez et al., "Software Component Licensing: A Primer",
`Sep./Oct. 1998, IEEE Software, pp. 47-53.*
`Hauser, "Does Licensing Require New Access Control
`Techniques?", 1993 ACM.*
`"FLEXlm End Users Guide", Aug. 2000, Globetrotter Soft(cid:173)
`ware, Inc., Version 7.1.
`
`* cited by examiner
`
`39 Claims, 32 Drawing Sheets
`
`760
`
`/700
`
`755
`
`705
`
`725
`
`735
`
`750
`
`710
`
`720
`
`715
`
`745
`
`ServiceNow's Exhibit No. 1003
`
`001
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 1 of 32
`
`US 6,810,389 Bl
`
`10
`············································-~---··············· ............................................................................................................................................... ,
`!
`Software Licensing System (SLS)
`!
`
`Application
`
`Client
`Licensing
`Library
`
`,...-25
`Licensing Server
`
`,.65
`License File
`License ; !'---60
`License
`
`('55
`Grant or
`Deny
`Request
`
`[
`
`I
`
`/35
`
`Client
`Licensing
`I
`Library
`L ............................................................................................................................................................................... __________________________________ ;
`
`45 '\
`Request License I
`Checkout Request
`(key, value)
`
`Application
`
`20
`'---
`
`Fig. 1 - Prior Art
`
`ServiceNow's Exhibit No. 1003
`
`002
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 2 of 32
`
`US 6,810,389 Bl
`
`License File
`
`10 (
`
`Attribute Key
`
`Attribute Value
`
`...........__.
`105
`
`Attribute Key
`
`Attribute Value
`
`Attribute Key
`
`Attribute Value
`
`r---·
`110
`
`r--
`115
`
`I
`
`I
`
`I
`
`Fig. 2 - Prior Art
`
`ServiceNow's Exhibit No. 1003
`
`003
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 3 of 32
`
`US 6,810,389 Bl
`
`License File
`
`205 ----~---
`
`License Count
`
`5
`
`215--.... 1--
`
`Feature Name
`
`Spell Checker
`
`20 0
`\_
`
`9/1/1999
`
`1.2
`
`225---~
`
`End Date
`
`235--.... 1--
`
`License Version
`.
`.
`.
`
`-1'------210
`
`-r--220
`-1'--- 230
`
`-I'- 240
`
`Fig. 3 - Prior Art
`
`ServiceNow's Exhibit No. 1003
`
`004
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 4 of 32
`
`US 6,810,389 Bl
`
`License File
`
`345
`
`License Count
`
`5
`
`Feature Name
`
`Spell Checker
`
`End Date
`
`License Version
`
`Share Mode
`
`9/1/1999
`
`1.2
`
`Feature Name,
`License Version
`
`355
`
`350
`355
`
`315
`
`300
`
`Request1
`; Feature Name = Spell Checker
`! Version= 1.1
`
`310
`
`335
`
`360
`
`325
`
`320
`
`365
`
`330
`
`340
`
`Fig. 4 - Prior Art
`
`ServiceNow's Exhibit No. 1003
`
`005
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 5 of 32
`
`US 6,810,389 Bl
`
`License File
`
`400
`\_
`
`License Count
`
`5
`
`Feature Name
`
`Spell Checker
`
`End Date
`
`9/1/1999
`
`License Version
`
`420 ""--
`
`Checkout data
`
`1.2
`
`ABC
`
`Feature Name,
`License Version,-
`Checkout_ data
`
`425
`
`Share Mode
`
`.
`.
`.
`
`405
`
`r-.410
`
`415
`
`!••••••••••••••••••••••••••••••••••••••••••••••••• •····•··•·•·•·•••••••••••••••••••••••••••••••••••••••••• ••••••••••••••••••••••••oon••••••:
`
`!
`! Request 1
`Request 2
`Feature Name = Spell Checker !
`! Feature Name = Spell Checker
`!
`! Version= 1.1
`Version= 1.1
`~~heckout~data=~B~ _ ~h:~kou~::ta=~:;2 _]
`
`Request3
`Feature Name = Spell Checker
`Version = 1.2
`Checkout_data = DEF
`
`430
`
`435
`
`Fig. 5 - Prior Art
`
`ServiceNow's Exhibit No. 1003
`
`006
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 6 of 32
`
`US 6,810,389 Bl
`
`License File
`
`505 ....__r--
`
`License Data
`
`License Count
`
`~
`
`510
`
`XYZ
`
`5
`
`500
`\___
`
`Feature Name
`
`Spell Checker
`
`End Date
`
`9/1/1999
`
`1.2
`
`ABC
`
`Feature Name,
`License Version,
`Checkout_ data
`
`License Version
`
`Checkout data
`
`Share Mode
`.
`.
`.
`
`···:~=~~iE1:·~=11~h~ck~;
`
`Version = 1.1
`Checkout data = ABC
`
`.
`
`:
`:
`I
`:
`: ................................................................................................................................................. ..
`
`:~=!~~~~f =~::~~~~=ker i r:::F-ea-tu_r_e ,-N-am-e"""=~:=-:-e~,:-IUC=eh_s;_,.c~-e--,r
`
`Version = 1.1
`Checkout data =ABC
`
`!,,, Version = 1.2
`Checkout_data = DEF
`. '-----=-----~
`
`Fig. 6 - Prior Art
`
`ServiceNow's Exhibit No. 1003
`
`007
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 7 of 32
`
`US 6,810,389 Bl
`
`( 600
`
`,630
`DISPLAY
`ADAPTER
`
`....
`
`•
`
`;,.
`
`. .....
`
`/625
`
`D_
`
`~
`
`DIS PLAY SCREEN
`
`ef..675
`
`USER POINTING
`DEVICE
`
`~635
`
`·I SERIAL
`
`PORT
`
`I·
`
`r-605
`
`...
`
`~
`
`~
`
`1'610
`CENTRAL
`PROCESSOR
`
`/615
`SYSTEM
`MEMORY
`
`/620
`1/0
`CONTROLLER
`
`~~ ~
`
`--..
`
`KEYBORD
`
`/685
`.. ~]]Til~
`
`ICJ Cl Cl Cl a!
`NETWORK INTERFACE
`'
`ADAPTER
`
`/640
`....
`SERIAL
`
`~ . PORT ~
`
`680
`• [olo(o]
`MODEM
`
`......
`
`.
`
`,650
`~0
`~0
`=
`FIXED DISK
`
`670
`
`c5
`
`1'665
`1~1· ...
`CD-ROM PLAYER
`
`/655
`.. ~,
`
`~
`
`8660
`
`FLOPPY DISK
`UNIT
`
`R EMOVABLE
`STORAGE
`
`Fig. 7
`
`ServiceNow's Exhibit No. 1003
`
`008
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 8 of 32
`
`US 6,810,389 Bl
`
`License
`Server
`
`/700
`
`755
`
`Client Computer
`
`705
`
`725
`
`Client Computer
`
`735
`
`750
`
`Client Computer
`
`710
`
`720
`
`Client Computer
`
`745
`
`715
`
`Client Computer
`
`Fig. 8
`
`ServiceNow's Exhibit No. 1003
`
`009
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 9 of 32
`
`US 6,810,389 Bl
`
`Specifies grouping
`
`I mode of features
`
`M-Package
`Definition String
`
`/805
`
`License File
`
`80
`0
`\_
`
`License Data
`
`License Count
`
`5
`
`Feature Name
`
`Spell Checker
`
`End Date
`
`License Version
`
`Share Mode
`
`9/1/1999
`
`1.2
`
`Feature Name,
`License Version,
`Checkout_ data
`
`.
`.
`.
`
`Fig. 9
`
`ServiceNow's Exhibit No. 1003
`
`010
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 10 of 32
`
`US 6,810,389 Bl
`
`Licensed
`Application
`
`900
`
`Status
`
`License Request---.....__.
`Checkout_ data
`
`905
`
`License Request
`Checkout_ data
`
`Receiver
`
`License Request
`Checkout_ data
`
`Non-M-
`Package
`Filter
`
`920
`
`M-Package
`Filter
`
`License Request
`Modified
`Checkout_ data
`
`925
`
`935
`
`License
`Verifier
`
`License
`Library
`
`Package
`Definition
`String
`
`930
`
`Fig. 10
`
`ServiceNow's Exhibit No. 1003
`
`011
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 11 of 32
`
`US 6,810,389 Bl
`
`1000
`
`Parent License
`
`• Parent may have
`multiple children
`- One parent per child
`- Requested internally to
`licensing server
`- Can obtain only via child
`license
`• Own set of attributes
`- Inherits some attributes
`from child via
`checkout_ data
`- Share mode set to
`checkout _data
`
`Child License
`
`Child License
`
`1005
`
`1010
`
`Fig. 11
`
`ServiceNow's Exhibit No. 1003
`
`012
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 12 of 32
`
`US 6,810,389 Bl
`
`Parent License:
`One_ Of (A, B, C)
`{A 8 C}
`
`-- 1100
`
`Child License: A -- 1105
`
`Fig. 12
`
`ServiceNow's Exhibit No. 1003
`
`013
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 13 of 32
`
`US 6,810,389 Bl
`
`1200
`
`Parent License:
`OneEachOf (A, 8, C)
`(ABC)
`
`Child License: A
`
`Child License: B
`
`Child License: C
`
`1205
`
`1210
`
`1215
`
`Fig. 13
`
`ServiceNow's Exhibit No. 1003
`
`014
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 14 of 32
`
`US 6,810,389 Bl
`
`1300
`
`Parent License:
`AnyOf (A, B, C)
`[ABC]
`
`Child License: A
`
`Child License: B
`
`Child License: B
`
`Child License: C
`
`1320
`
`1325
`
`1330
`
`1335
`
`Fig. 14
`
`ServiceNow's Exhibit No. 1003
`
`015
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 15 of 32
`
`US 6,810,389 Bl
`
`1400
`
`Parent License:
`UpToNOf (A, B, C)
`(N = 6)
`N <ABC>
`
`Child
`License: A
`
`Child
`License: A
`
`Child
`License: B
`
`Child
`License: B
`
`Child
`License: B
`
`Child
`License: C
`
`1425
`
`1430
`
`1435
`
`1440
`
`1445
`
`1450
`
`Fig. 15
`
`ServiceNow's Exhibit No. 1003
`
`016
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 16 of 32
`
`US 6,810,389 Bl
`
`Receive License Request
`
`1500
`
`Apply Checkout Filter
`
`1505
`
`1515
`
`No
`
`Indicate Error
`
`Yes
`
`Use Licensed Application
`
`1520
`
`No
`
`Yes
`
`Release License(s)
`
`1530
`
`Fig. 16
`
`ServiceNow's Exhibit No. 1003
`
`017
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 17 of 32
`
`US 6,810,389 Bl
`
`Apply Checkout Filter
`
`Determine Whether License
`Request is An M-Package Request
`
`1600
`
`No
`
`Modify Checkout_Data
`
`1615
`
`Find And Verify License
`
`1610
`
`Fig. 17
`
`ServiceNow's Exhibit No. 1003
`
`018
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 18 of 32
`
`US 6,810,389 Bl
`
`Determine Whether License Request
`is An M-Packege License Request
`
`No
`
`1710
`
`No
`
`Indicate License Request is Not An
`M-Package License Request
`
`Yes
`
`1715
`
`Indicate License Request is An
`M-Package License Request
`
`End
`
`Fig. 18
`
`ServiceNow's Exhibit No. 1003
`
`019
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 19 of 32
`
`US 6,810,389 Bl
`
`Modify Checkout Data
`
`r
`
`Generate Share_ Values
`
`r--- 1800
`
`~r
`
`Generate Package I D
`
`r-- 1805
`
`•r
`Set Checkout_Data To Share_ Values r--
`Concatenated With Package ID
`
`1810
`
`.,,
`
`End
`
`Fig. 19
`
`ServiceNow's Exhibit No. 1003
`
`020
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 20 of 32
`
`US 6,810,389 Bl
`
`Generate Share_ Values
`
`Initialize Share_ Values
`
`------1900
`
`1910
`
`Return Share_ Values
`
`Yes
`
`Concatenate Share_ Values With
`Attribute Value
`
`1915
`
`End
`
`Fig. 20
`
`ServiceNow's Exhibit No. 1003
`
`021
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 21 of 32
`
`US 6,810,389 Bl
`
`Generate Package ID
`
`Determine Mode Of Feature
`
`2000
`
`2020
`
`Set Package_ID To Hashed Value
`Of Share_ Values Concatenated
`With Feature
`
`Determine Node Number Of
`Feature
`
`2025
`
`2030
`
`Yes
`
`Set Package_ID To Node Number
`Of Feature
`
`2035
`
`Yes
`
`Determine Slot (Feature,
`Share_ Values)
`
`2040
`
`Set Package_ID To Node Number
`Of Feature Concatenated With Slot
`(Feature, Share_ Values)
`
`End
`
`Fig. 21
`
`ServiceNow's Exhibit No. 1003
`
`022
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 22 of 32
`
`US 6,810,389 Bl
`
`Determine Mode Of Feature
`
`F
`Find Feature In Package Definition String
`Portion Of License_Data
`
`.-......___.
`
`2100
`
`v
`Return Mode Based On Package
`Definition String Syntax
`
`1--
`
`2105
`
`,,.
`( __ E_nd_)
`
`Fig. 22
`
`ServiceNow's Exhibit No. 1003
`
`023
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 23 of 32
`
`US 6,810,389 Bl
`
`Determine Node Number Of Feature
`
`Receive Package Definition String
`
`2200
`
`Receive Feature To Locate Within
`Package Definition String
`
`Initialize Count
`
`Find Next Feature In Package Definition
`String
`
`2205
`
`2210
`
`2215
`
`Yes
`
`Yes
`
`Return Count
`
`2235
`
`Increment Count
`
`Fig. 23
`
`ServiceNow's Exhibit No. 1003
`
`024
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 24 of 32
`
`US 6,810,389 Bl
`
`Determine Slot {Feature,
`Share_ Values)
`
`Determine Whether Slot (Feature,
`Share_ Values) Currently Exists
`
`2300
`
`Determine Whether Slot ("Any",
`Share_ Values) Currently Exists
`
`2315
`
`Yes
`
`Determine Minimum Slot Index
`Without A Slot
`
`2325
`
`Return Slot Index
`
`2310
`
`End
`
`Fig. 24
`
`ServiceNow's Exhibit No. 1003
`
`025
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 25 of 32
`
`US 6,810,389 Bl
`
`Determine Whether Slot (Feature,
`Share_ Values) Currently Exists
`
`Initialize Index
`
`2400
`
`Yes
`
`Indicate No Existing Slot
`
`2410
`
`Yes
`
`Return Index
`
`2425
`
`Increment Index
`
`2430
`
`Fig. 25
`
`ServiceNow's Exhibit No. 1003
`
`026
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 26 of 32
`
`US 6,810,389 Bl
`
`Determine Whether Slot ("Any",
`Share_ Values) Currently Exists
`
`Initialize Index
`
`2500
`
`2510
`
`Indicate No Existing Slot
`
`Yes
`
`Return Index
`
`2525
`
`Increment Index
`
`2530
`
`Fig. 26
`
`ServiceNow's Exhibit No. 1003
`
`027
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 27 of 32
`
`US 6,810,389 Bl
`
`Determine Minimum Slot Index
`Without A Slot
`
`Initialize Index
`
`2600
`
`Yes
`
`Return Index
`
`2610
`
`No
`
`End
`
`Increment Index
`
`2620
`
`Fig. 27
`
`ServiceNow's Exhibit No. 1003
`
`028
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 28 of 32
`
`US 6,810,389 Bl
`
`Find And Verify License
`
`Determine Whether License Has
`A Share Mode Duplicate
`
`2700
`
`Yes
`
`Receive Next Candidate License
`For Requested Feature
`
`2720
`
`Find And Verify License For Parent
`
`No
`
`Yes
`
`Fig. 28
`
`ServiceNow's Exhibit No. 1003
`
`029
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 29 of 32
`
`US 6,810,389 Bl
`
`Determine Whether License Has
`A Share Mode Duplicate
`
`Find Next License With Requested Feature In
`Database Of Checked Out License
`
`2800
`
`2810
`
`No
`
`Indicate License Does Not Have A
`Share Mode Duplicate
`
`No
`
`2825
`
`Yes
`
`Get Next Share Mode Attribute
`From Requested License
`
`Indicate License Has A Share
`Mode Duplicate
`
`2830
`
`End
`
`Fig. 29
`
`ServiceNow's Exhibit No. 1003
`
`030
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 30 of 32
`
`US 6,810,389 Bl
`
`2900
`
`Checkout
`
`(
`~ Request
`
`f1
`
`f2
`
`f3"
`
`(
`I
`
`\2915
`
`2910
`
`Checkout
`data
`
`Share
`modes
`
`Modified
`checkout data
`
`2905
`)
`
`I( f1
`
`f2
`
`f3
`
`Total
`
`\1
`
`1
`
`1
`
`1
`
`2
`3
`I
`
`2920
`
`Fig. 30
`
`ServiceNow's Exhibit No. 1003
`
`031
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 31 of 32
`
`US 6,810,389 Bl
`
`3o~o I
`Checko~~ I/ checkout Share 1\ Modified ~ lft1
`\ Request 1
`/1
`f2 __./ J
`['- f1
`
`3000
`
`3005
`
`/3015
`
`3010
`!
`
`data
`
`modes
`
`f3/
`
`f2~
`
`f4~ 1\
`f5~ "\ \
`f4~ \1\\
`~3030 3035
`
`3040
`3045
`
`3 025
`
`f2
`
`f3
`
`f4
`
`f5
`
`Pkg
`
`1
`
`1
`
`1
`
`1
`2
`
`2
`
`3
`
`4
`4
`4
`
`1
`
`2
`
`1
`
`1
`
`checkout data
`:f1 ~ /
`NodeNu~be0f2): Slot
`J
`(f2, " ") = 2 : 0
`NodeNumber
`(f3, " ") = 2 : 0
`NodeNumber (f2) : Slot
`(f2, " '') = 2 : 1
`NodeNumber (f4) = :3
`NodeNumber (f5) = :3
`NodeNumber (f4) = :3
`
`1
`
`Fig. 31
`
`ServiceNow's Exhibit No. 1003
`
`032
`
`

`
`U.S. Patent
`
`Oct. 26, 2004
`
`Sheet 32 of 32
`
`US 6,810,389 Bl
`
`3100
`
`Checkout
`data
`AA
`'----3115
`BB
`~ 3120
`
`Share
`modes
`checkout
`data
`checkout
`data
`
`checkout
`data
`
`f2
`
`f3
`
`3130
`
`3135
`
`)
`
`11
`
`AA : NodeNumber {f2) :
`Slot (f2, II
`=AA:2:0
`BB : NodeNumber (f3) :
`Slot (f3, II ")
`= BB: 2:0
`
`3145
`
`f1
`
`f2
`
`f3
`
`Pkg
`
`1
`
`2
`
`3
`
`3105
`
`3110
`
`3160
`
`Fig. 32
`
`ServiceNow's Exhibit No. 1003
`
`033
`
`

`
`US 6,810,389 Bl
`
`1
`SYSTEM AND METHOD FOR FLEXIBLE
`PACKAGING OF SOFTWARE APPLICATION
`LICENSES
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`The present invention relates to computer science. More
`particularly, the present invention relates to a system and 10
`method for flexible packaging of software application
`licenses.
`2. Background
`A Software Licensing System (SLS) is typically used to
`restrict the operation of a software program or system of
`programs, sometimes called an application, to holders of a
`verifiable software and/or hardware license. The restrictive
`information contained within a license may specify what
`entity may execute the application, when the application
`may be executed, how many copies of the application may
`be executed, and how the application may be run. The
`FLEXlm™ product by Globetrotter Software, Inc. of
`Campbell, Calif. is an example of a commercially available
`SLS. Such systems are also discussed in U.S. Pat. No.
`5,671,412 entitled "License Management System for Soft- 25
`ware Applications" to Matt Christiano.
`An SLS typically counts the number of authorized
`licenses in use, and imposes a restriction on the number, or
`count, of licenses that may be in use contemporaneously. An
`SLS may also cause the application to wait for a license, or 30
`notify the application of the availability of the license when
`it becomes available in the future.
`An SLS may reside completely in the licensed
`application, or operate in the form of a client-server archi- 35
`tecture. Client-server architecture is typically used to keep a
`count of license uses across multiple invocations of a
`program, and possibly across multiple computers. An SLS
`operates on licenses that can only be generated by an
`authorized entity, which is typically the creator of the 40
`application being licensed.
`Turning now to FIG. 1, a block diagram that illustrates a
`typical SLS is presented. A typical SLS 10 includes at least
`one application 15, 20 and a licensing server 25. Each
`application 15, 20 includes a client licensing library 30, 35. 45
`In operation, an application 15, 20 within an SLS 10 requests
`a license 40, 45 from the licensing server 25. This request is
`referred to as a performing a "checkout" and is typically
`performed over a secure channel. The licensing server 25
`and the application 15, 20 cooperate to authenticate the 50
`license and to verify that the license is intended to allow the
`operation of the application in the current configuration,
`environment, and at the current time. The licensing server 25
`and the application 15, 20 may also verify the integrity of the
`licensing system components and verify version and plat- 55
`form compatibility. Based on the result of these checks, the
`licensing server either grants or denies (50, 55) a license
`request. If the license request is denied, the application 15,
`20 may not use the feature associated with the license
`request.
`A typical SLS maintains licenses for multiple features, or
`functional subsets, of an application. These features are also
`referred to as attributes. Attributes are key /value data pairs
`that are included in the licensing request 40, 45 and contain
`information that may originate in the environment of the 65
`applications, or be explicitly set by the application. These
`licensing request attributes are used in conjunction with
`
`2
`similar attributes found in the license 60 or in the license
`server 25 to determine whether a license 60 satisfies a
`licensing request 40, 45. A typical license file 65 is illus(cid:173)
`trated in FIG. 2. A license file 100 typically includes at least
`5 one (attribute key, attribute value) pair 105, 110, 115.
`FIG. 3 is a block diagram that illustrates examples of
`(attribute key, attribute value) pairs found in a typical license
`file. License 200 includes four attributes. The first attribute
`key 205 is the license count and its associated attribute value
`210 is the number five, indicating that five licenses may be
`checked out. The second attribute key 215 is the feature
`name, and the associated attribute value 220 is "Spell
`Checker". A license request can be met by this license only
`when the feature name in the license request exactly matches
`15 the feature name in the license. In the present example, the
`license request must include a feature name of "Spell
`Checker". The third attribute indicates an end date (225) of
`Sep. 1, 1999 (230). A license request can be met by this
`license only when the license request date is less than the
`20 end date, Sep. 1, 1999. The fourth attribute indicates a
`version number (235) of 1.2 (240). A license request can be
`met by this license only if the requested version number is
`less than or equal to 1.2.
`An SLS may use a "share modes" attribute to determine
`when multiple license requests may be satisfied using the
`same underlying license. A share modes attributre specifies
`a list of attributes that, if matched in any separate license
`requests, will be satisfied using the same license. The rules
`for matching are typically based on identity (equality) of
`both the keys and values of all the attributes in the share
`modes attribute set. In other words, two requests are satisfied
`from the same license when their share modes attribute sets
`are identical. This matching is typically attempted only
`among licensing requests for the same feature. An illustra(cid:173)
`tion of share modes is presented in FIG. 4.
`Turning now to FIG. 4, a block diagram that illustrates
`share modes is presented. Request 1 (300), Request 2 (305)
`and Request 3 (310) represent three separate license
`requests. License requests 1 (300) and 2 (305) have identical
`attribute keys (315, 320) and attribute values (325, 330).
`License request 3 (310) includes the same feature attribute
`value 335, but a different version attribute value 340.
`License 345 includes a share mode attribute value 350
`consisting of two attribute keys: feature name 355 and
`license version 355. Since both Request 1 (300) and Request
`2 (305) include all attribute keys listed in the share mode
`attribute value 355, and since the attribute values for both
`Request 1 (325) and Request 2 (330) are identical, Request
`1 (300) and Request 2 (305) are satisfied by the same license
`(345). Since Request 3 (310) includes an attribute value 340
`that is different from attribute value 360 and 365, Request 3
`(310) requires an additional license 345. Thus, two separate
`licenses are required for the three license requests.
`One type of attribute is "Checkout data". The checkout
`data attribute value is typically set in a licensed application
`and accompanies a licensing request. The checkout data may
`be part of the share modes. If the checkout data is part of the
`share modes, multiple checkouts for the same feature, with
`60 the same checkout data attribute value, are satisfied with the
`same license. The checkout data attribute is described in
`more detail with reference to FIG. 5.
`Turning now to FIG. 5, a block diagram that illustrates the
`checkout data attribute is presented. FIG. 5 is identical to
`FIG. 4, except that license 400 and license requests 1 ( 405)
`2 (410) and 3 (415) include a checkout data attribute 420,
`and the checkout data attribute 420 is included in the share
`
`ServiceNow's Exhibit No. 1003
`
`034
`
`

`
`US 6,810,389 Bl
`
`4
`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 com-
`puter 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 pro-
`cessor 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
`15 requires the checkout of a parent license, grant a package
`license to the client computer system when the client com(cid:173)
`puter 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
`20 system is not allowed to receive the package license accord(cid:173)
`ing to the license policy.
`
`3
`modes attribute value 425. In the example, since the Request
`1 ( 405) and Request 2 ( 410) checkout data attribute values
`( 430, 435) are identical, both license requests are satisfied by
`the same license. License Request 3 ( 415) includes a dif(cid:173)
`ferent checkout data value. Consequently, license request 3 5
`( 415) is satisfied by a separate license 400.
`A license may also include a "license data" attribute that
`is typically initialized when the license is generated. The
`license data attribute value is typically used to influence
`operation of the SLS. FIG. 6 is a block diagram that 10
`illustrates the license data attribute. FIG. 6 is identical to
`FIG. 5, except that license 500 includes a license data
`attribute key 505 and value 510.
`A typical SLS includes support for the bundling of
`products into "packages". For the purposes of this
`disclosure, the term "package" refers to a generic grouping
`of different component products included within that pack(cid:173)
`age. The component products are typically programs,
`although in an alternate embodiment, packages can be
`components of higher-level packages. The term "software
`product" is considered to be a program, package, or other
`similar type of licensed software product. The term "pro(cid:173)
`gram" refers to any software process, such as an application
`program (word processor, spreadsheet, drawing program,
`etc.), utility program, resident or background program, etc. 25
`For example, a package can include different component
`programs that are conveniently specified within the package
`heading. A package allows a license sharing policy to be
`specified regarding how a combination of products con(cid:173)
`sumes a single package license. This allows a single license,
`for example, to enable the use of one OR another of a set of
`products at different times. However, this packaging concept
`is rarely used because it does not allow for groups of
`components in the same package to have different sharing
`policies. For example, there is no way of specifying that the 35
`same package license apply to any number of components in
`a first group of package components but only one compo(cid:173)
`nent in a second group of package components.
`Typical software licensing systems support only homog- 40
`enous groups of features that share the same behavior. They
`are too inflexible to support different sharing policies for
`groups of components within the same package. Due to the
`inflexibility of typical licensing systems, software vendors
`typically price a licensed system using a pricing model that 45
`is based upon an assumed usage. Contract provisions
`between a software vendor and a software user are relied
`upon to ensure licensed products are used according to a
`pricing model. Due to the difficulty of monitoring licensed
`component usage to ensure compliance with contract
`provisions, it would be desirable to enable enforcement of a
`relatively flexible licensing policy within a software licens(cid:173)
`ing system itself. Accordingly, a need exists in the prior art
`for a system and method for grouping licenses that supports
`different sharing policies for groups of components within 55
`the same package. Additionally, a further need exists for
`such a system and method that enables enforcement of such
`sharing policies without requiring independent monitoring
`of licensed component usage.
`
`50
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram that illustrates a typical Soft(cid:173)
`ware Licensing System (SLS).
`FIG. 2 is a block diagram that illustrates a typical license
`file.
`FIG. 3 is a block diagram that illustrates examples of
`(attribute key, attribute value) pairs found in a typical license
`30 file.
`FIG. 4 is a block diagram of a typical license file that
`features share modes.
`FIG. 5 is a block diagram of a typical license file that
`includes a checkout data attribute.
`FIG. 6 is a block diagram of a typical license file that
`includes a license data attribute.
`FIG. 7 is a block diagram of a client computer system
`suitable for implementing aspects of the present invention.
`FIG. 8 is a block diagram that illustrates a license man(cid:173)
`agement system in accordance with one embodiment of the
`present invention.
`FIG. 9 is a block diagram that illustrates a Multi-Package
`(M-Package) license in accordance with one embodiment of
`the present invention.
`FIG. 10 is a block diagram that illustrates a software
`license system in accordance with one embodiment of the
`present invention.
`FIG. 11 is a block diagram that illustrates the relationship
`between a parent license and a child license in accordance
`with one embodiment of the present invention.
`FIG. 12 is a block diagram that illustrates a "one of"
`policy in accordance with one embodiment of the present
`invention.
`FIG. 13 is a block diagram that illustrates a "OneEachOf"
`policy in accordance with one embodiment of the present
`invention.
`FIG. 14 is a block diagram that illustrates an "AnyOf"
`60 policy in accordance with one embodiment of the present
`invention.
`FIG. 15 is a block diagram that illustrates an "UpToN"
`policy in accordance with one embodiment of the present
`invention.
`FIG. 16 is a flow diagram that illustrates a method for
`requesting a license in accordance with one embodiment of
`the present invention.
`
`SUMMARY OF THE INVENTION
`
`A method for providing licenses to client computer sys(cid:173)
`tems 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 65
`request based on whether the license requires the checkout
`of a parent license, granting a package license to the client
`
`ServiceNow's Exhibit No. 1003
`
`035
`
`

`
`US 6,810,389 Bl
`
`5
`FIG. 17 is a flow diagram that illustrates a method for
`applying a checkout filter in accordance with one embodi(cid:173)
`ment of the present invention.
`FIG. 18 is a flow diagram that illustrates a method for
`determining whether a license request is an M-Package
`license request in accordance with one embodiment of the
`present invention.
`FIG. 19 is a flow diagram that illustrates a method for
`modifying checkout data in accordance with one embodi(cid:173)
`ment of the present invention.
`FIG. 20 is a flow diagram that illustrates a method for
`generating share values in accordance with one embodiment
`of the present invention.
`FIG. 21 is a flow diagram that illustrates a method for 15
`generating a package identifier in accordance with one
`embodiment of the present invention.
`FIG. 22 is a flow diagram that illustrates a method for
`determining a feature mode in accordance with one embodi(cid:173)
`ment of the present invention.
`FIG. 23 is a flow diagram that illustrates a method for the
`node number of a feature in accordance with one embodi(cid:173)
`ment of the present invention.
`FIG. 24 is a flow diagram that illustrates a method for
`determining the slot indicated by the combination of a
`feature and a share value in accordance with one embodi(cid:173)
`ment of the present invention.
`FIG. 25 is a flow diagram that illustrates a method for
`determining whether a slot indicated by the combination of
`a feature and share values currently exists in accordance
`with one embodiment of the present invention.
`FIG. 26 is a flow diagram that illustrates a method for
`determining whether a slot indicated by the combination of
`any feature and share values in accordance with one embodi(cid:173)
`ment of the present invention.
`FIG. 27 is a flow diagram that illustrates a method for
`determining a minimum slot index without a slot in accor(cid:173)
`dance with one embodiment of the present invention.
`FIG. 28 is a flow diagram that illustrates a method for
`finding and ve

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket