Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


The information on this page refers to v5.1 and newer, which banned sharing both tokens and their dependencies at the same time. For documentation applicable to earlier versions, see documentation for previous versions.

There are many different ways you can use token-based licensing, as described in the following examples.

Anchor
License pools
License pools
License pools

One primary use for token-based licensing is to let users purchase a number of pseudo-features that each require one or more real licenses. This gives users a "pool" of licenses they can draw upon for license checkout requests, providing the flexibility to use various combinations of features as their needs require.

...

As you can see from the two different scenarios below, a pool of token-based licenses gives customers significantly more flexibility than purchasing a specific number of licenses for each feature. The users can check out any combination of the features, up to the maximum 20-license limit.

Example Scenario 1

Feature

# of

licenses consumed

Licenses Consumed per

checkout

Checkout

# of

checkout requests

Checkout Requests

Total

licenses consumed

Licenses Consumed

MyDraw

5

2

10

MyWrite

2

3

6

MySpreadsheet

1

3

3

Totals

 

8

19

Number of licenses remaining

 

 


1

Example Scenario 2

Feature

# of

licenses consumed

Licenses Consumed per

checkout

Checkout

# of

checkout requests

Checkout Requests

Licenses

consumed

Consumed

MyDraw

5

1

5

MyWrite

2

4

8

MySpreadsheet

1

7

7

Totals

 

11

20

Number of licenses remaining

 

 


0

Example

The following example shows a token-based license for the license pool scenario described above, where MySolutions is a license pool that is drawn upon to fulfill license requests for MyDraw, MyWrite and MySpreadsheet.

Code Block
languagehtml/xml
FEATURE MySolutions
{
  VENDOR = ABC_Software
 COUNT =20 20
KEYTYPE =EXCLUSIVE EXCLUSIVE
MAJOR_VERSION = 1.0
MINOR_VERSION = 2
KEY = GTLP4FLUFFDFJB3N87SEVB224G0TJKKP=bhq3ed873qcrKHG6783rhJgvkhvTUtxcuBiouVtyCuyVy78Gftq...
}

FEATURE MyDraw
{
  VENDOR = ABC_Software
 KEYTYPE =TOKEN TOKEN
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=MySolutions VERSION=1.0 COUNT=5"
  KEY = PTZH9BTWNTLFJHH862IOAF39NHIM9HVB=b978bv5ybui7Noyg6c3Vd57fngN987NGSC54sDiugU6v5eio8g...
}

FEATURE MyWrite
{
  VENDOR = ABC_Software
 KEYTYPE =TOKEN TOKEN
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=MySolutions VERSION=1.0 COUNT=2"
  KEY = KW1OPU87VNUAA9ZI2NMBP9721EEU2 =yig*bv7tu6r879yu09yut75evbGJvHGHdrCHJVJGCt79g78gvv...
}

FEATURE MySpreadsheet
{
  VENDOR = ABC_Software
 KEYTYPE =TOKEN TOKEN
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=MySolutions VERSION=1.0 COUNT=1"
  KEY = PO3OP36RLTATVFHOT3H4RONIOV257L98=hygvCTYGg6r67fg890hbyvGTCVKJBjhc5r7y9joiVGckjlnut8...
}

...

Anchor
Product suite licenses
Product suite licenses
Product suite licenses

Product suite licenses specify that one token-based license depends on multiple real licenses. Product suite licenses enforce a logical AND rule, requiring all licenses to be valid in order to perform a checkout. This is essentially the opposite of license pools, which specify that multiple features depend on a single real license. 

For example, MyDraw may be composed of two modules: Sketcher and Printer. A token-based license can specify that in order to use MyDraw, you must have 1 license of each of the two modules.

Example

The following example shows a token-based license for the product suite license scenario described above.

html/xml
Code Block
language
FEATURE Sketcher
{
  VENDOR = ABC_Software
 COUNT =5 5
KEYTYPE =EXCLUSIVE EXCLUSIVE
MAJOR_VERSION = 2.0
MINOR_VERSION = 0
KEY = GTLP4FLUFFDFJB3N87SEVB224G0TJKKP=mBpIAWB9Uuzl2b2B3v]vcsFBx7qEQG1SwXCz8A9d612hU3vSKT...
}

FEATURE Printer
{
  VENDOR = ABC_Software
 COUNT =5 5
KEYTYPE =EXCLUSIVE EXCLUSIVE
MAJOR_VERSION = 1.5
MINOR_VERSION = 5
KEY = HEN3CRJ8VOI6FS5L25KKB0QLRJD3CE4O=B9Uuzl2b2B3v]vcsFBx7qEvcsFBx7qEQG1SwXCz8A9d6U3vSKT...
}

FEATURE MyDraw
{
  VENDOR = ABC_Software
 KEYTYPE =TOKEN TOKEN
MAJOR_VERSION = 1.0
MINOR_VERSION = 2
TOKEN_DEPENDENCY = "FEATURE=Sketcher VERSION=2.0 COUNT=1"
  TOKEN_DEPENDENCY = "FEATURE=Printer VERSION=1.5 COUNT=1"
  KEY =mBpIAWB9Uuzl2b2B3v]vcsFBxBx7qEQG1SwXCz8A9dj1g866USKT... ALPO3OP36RLTATVFHOT3H4RONIOV257L
}

...

Anchor
alternate licenses
alternate licenses
Alternate licenses

You can use token-based licenses to allow license requests to be fulfilled by one or more alternate product licenses. This enforces a logical OR rule, since it requires one license or another to succeed with a checkout.

...

The order of the token-based licenses in the license file determines the order that alternate checkouts are attempted. For example, if the MyDraw features's Lower_Priced_License token-based license precedes the Higher_Priced_License token-based license, then Lower_Priced_License will be preferred for filling checkout requests. Higher_Priced_License will be used only if Lower_Priced_License is unavailable. End users can change the license order if they desire.

Example

The following example shows a license for the alternate license scenario described above. Note that the first MyDraw token-based license refers to Lower_Priced_License, so this will be the preferred license for MyDraw checkout requests.

Code Block
languagehtml/xml
FEATURE Lower_Priced_License
{
  VENDOR = ABC_Software
 COUNT =5 5
KEYTYPE =EXCLUSIVE EXCLUSIVE
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
KEY =mBpIAWB9Uuzl2b2B3v]8GJqW300arlnWmnT01nZXSOIYdF... CTLF6UIWOPPQYH35Q7WPYB7W2NH68JI9
}

FEATURE Higher_Priced_License
{
  VENDOR = ABC_Software
 COUNT =10 10
KEYTYPE =EXCLUSIVE EXCLUSIVE
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
KEY =mBpIAWB9Uuzl2b2B3v]vcsFBx7qEQG1SwXCz8A9d6U3vSKT... AP1FYIS98WPN2UIP99QSVUIPA4EEOV26
}

FEATURE MyDraw
{
  VENDOR = ABC_Software
 KEYTYPE =TOKEN TOKEN
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=Lower_Priced_License VERSION=1.0 COUNT=5"
  KEY =mYsfn30C6ShBYszCq2WVicpTZXQwkfKJTohkzg1wNkle163... HEN3CRJ8VOI6FS5L25KKB0QLRJD3CE4O
}

FEATURE MyDraw
{
  VENDOR = ABC_Software
 KEYTYPE =TOKEN TOKEN
MAJOR_VERSION = 1.0
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=Higher_Priced_License VERSION=1.0 COUNT=10"
  KEY =2w66Ng3wVSVp6ttmWCc8GyJqW300arlnWmnT01nZXSOIYdF... ALF5HUJ9VCQ6HSNL42MLT0VLMJC3PDMM
}

...

Anchor
Cascading licenses
Cascading licenses
Cascading (recursive) licenses

Cascading licenses let you specify a recursive list of token-based licenses, all of which must be available in order to fulfill a checkout request.

...

The maximum number of recursive dependencies you may define for a token-based license is 16.

The maximum number of dependencies the token-based license may have is 256512. (However, there is no limit on the number of token-based licenses you may define.)

Example

The following example shows a token-based license for the cascading license scenario described above.

html/xml
Code Block
language
FEATURE Sketcher
{
  VENDOR = ABC_Software
 COUNT=10 KEYTYPE=EXCLUSIVE 10
KEYTYPE = EXCLUSIVE
MAJOR_VERSION = 1
MINOR_VERSION = 0
KEY = GTLP4FLUFFDFJB3N87SEVB224G0TJKKP
}
FEATURE MyDraw
{
VENDOR = ABC_Software
KEYTYPE = TOKEN
MAJOR_VERSION = 2
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=SketcherVERSION=1.0
  KEY=2w66Ng3wVSVp6ttmWCc8GyJqW300arlnWmnT01nZXSOIYdF...
}

FEATURE MyDraw
{
  VENDOR=ABC_Software KEYTYPE=TOKEN VERSION=2.0
  TOKEN_DEPENDENCY="FEATURE=Sketcher VERSION=1.0 COUNT=2"
  KEY=4i]mYsfn30C6ShBYszCq2WVicpTZXQwkfKJTohkzg1wNkle... 
}

FEATURE MyWrite
{
  VENDOR=ABC_Software KEYTYPE=TOKEN VERSION=2.0
  TOKEN_DEPENDENCY="FEATURE=MyDraw VERSION=2.0 COUNT=1"
  KEY=mBpIAWB9Uuzl2b2B3v]vcsFBx7qEQG1SwXCz8A9d6U3vSKT...
}

Anchor
Token sharing
Token sharing
Token sharing and token dependency sharing

Token-based licenses are always unlimited; therefore, sharing tokens is unnecessary. However, sharing token dependencies may be useful in some cases.

For example, you may have an application with multiple features that can be sold separately or together. Multiple instances of each feature can be shared on a single host. With token sharing, all instances of the particular feature share licenses, but only amongst themselves, not between the different features.

Token dependency sharing allows the features and their instances to share their available licenses and thereby use the licenses more efficiently in cases where you do not want to count features' licenses independently. Dependency sharing can be implemented using multiple token-based licenses that share a common dependency. 

Note
iconfalse

Tokens and their dependencies cannot both be shared at the same time.

Example Scenario

For example, say you have two token-based features, "ModuleA" and "ModuleB," with a common token dependency, "Product." ModuleA requires three Product licenses and ModuleB requires two Product licenses, and there are a total of 10 Product licenses.

Without sharing implemented, 2 instances of ModuleA (3 licenses required per instance * 2 instances = 6) and 2 instances of ModuleB (2 licenses required per instance * 2 instances = 4) will consume all 10 Product licenses.

Token sharing lets you share licenses between multiple instances of ModuleA and ModuleB running on the same host. Using the same example with token sharing implemented, two instances of ModuleA and two instances of ModuleB on a single host will use only five licenses, because the licenses are shared between each feature's instances. Two instances of ModuleA share two Product licenses amongst themselves and two instances of ModuleB share three Product licenses among themselves. 

Token dependency sharing allows for sharing the dependency's licenses freely between ModuleA and ModuleB. Continuing to use the same example with token dependency sharing implemented, two instances of ModuleA and two instances of ModuleB are able to share just three Product licenses.

The example scenario described above is illustrated in the table below.

Sharing Type

Product licenses used for two instances of ModuleA

Product licenses used for two instances of ModuleB

None

6

4

Token sharing

3

2

Token dependency sharing

3

0 (shares 2 licenses with ModuleA)

Token sharing license example

The following example shows a token-based license for the token sharing scenario described above.

Code Block
FEATURE Product
{
  VENDOR=ABC_Software COUNT=10 VERSION=1.0
  KEY=mBpIAWB9Uuzl2b2B3v]vcsFBx7qEQG1SwXCz8A9d6U3vSKT...
}

FEATURE ModuleA
{
  VENDOR=ABC_Software KEYTYPE=TOKEN VERSION=1.0 SHARE=HOST
  TOKEN_DEPENDENCY="FEATURE=Product VERSION=1.0 COUNT=3"
  KEY=4i]mYsfn30C6ShBYszCq2WVicpTZXQwkfKJTohkzg1wNkle...
}

FEATURE ModuleB
{
  VENDOR=ABC_Software KEYTYPE=TOKEN VERSION=1.0 SHARE=HOST
  TOKEN_DEPENDENCY="FEATURE=Product VERSION=1.0 COUNT=2"
  KEY=2w66Ng3wVSVp6ttmWCc8GyJqW300arlnWmnT01nZXSOIYdF...
}


Token dependency sharing license example

The following example shows a token-based license for the token dependency sharing scenario described above.

Code Block
FEATURE Product
{
  VENDOR=ABC_Software COUNT=10 VERSION=1.0 SHARE= HEN3CRJ8VOI6FS5L25KKB0QLRJD3CE4OHOST
  KEY=mBpIAWB9Uuzl2b2B3v]vcsFBx7qEQG1SwXCz8A9d6U3vSKT...
}

FEATURE MyWriteModuleA
{
VENDOR  VENDOR= ABC_Software
 KEYTYPE=TOKEN VERSION= TOKEN
MAJOR_VERSION = 2
MINOR_VERSION = 0
TOKEN_DEPENDENCY = "FEATURE=MyDraw VERSION=21.0
  TOKEN_DEPENDENCY="FEATURE=Product VERSION=1.0 COUNT=3"
  KEY=4i]mYsfn30C6ShBYszCq2WVicpTZXQwkfKJTohkzg1wNkle...
}

FEATURE ModuleB
{
  VENDOR=ABC_Software KEYTYPE=TOKEN VERSION=1.0
  TOKEN_DEPENDENCY="FEATURE=Product VERSION=1.0 COUNT=12"
KEY = ALPO3OP36RLTATVFHOT3H4RONIOV257L KEY=2w66Ng3wVSVp6ttmWCc8GyJqW300arlnWmnT01nZXSOIYdF...
}