Use Case: Making Feature Counts Available to Multiple Business Units

Requirement: Make feature count from multiple named license pools available to users that belong to more than one business unit.

Important:This use case is only applicable to scenarios where the vendor dictionary value can be an array. For information about whether the vendor dictionary supports arrays and the data that might be available, contact your software producer.

Previous use cases showed how the model definition could allocate feature counts based on a business unit named in the vendor dictionary. However, these only catered for scenarios where a user belongs to a single business unit.

This use case demonstrates a simple way of allocating feature counts to multiple business units—called DevOps and Engineering in this example—that are specified in an array in the vendor dictionary.

The vendor dictionary entry would look similar to this:

"vendorDictionary": {

"business-unit": [

"Engineering",

"DevOps",

"Security"

],

"Region": "EMEA"

}

Consider the following capability request that contains an array of strings associated with the business-unit key in the vendor dictionary:

{

"features": [

{

"count": 20,

"name": "cad",

"version": "1.0"

}

],

"hostId": {

"type": "string",

"value": "h1"

},

"vendorDictionary": {"Region":"EMEA", "business-unit" : ["Engineering","DevOps"]},

"borrow-interval": "300"

}

The vendor dictionary will match any of these clauses:

on dictionary("business-unit", "Engineering")
on dictionary("business-unit", "DevOps")
on dictionary("Region", "EMEA")

If the vendor dictionary element contains a simple value (string, 32-bit integer) an equality match is done.

If the vendor dictionary element contains an array, a "contains" match is done, meaning that it is sufficient if only one matching element exists in the array.

The conditions in the following model would grant such a capability request—coming from a client device that belongs to multiple business units—access to features in both named license pools, EngDevOps and EngSecurity.

Model Definition Example

model "exampleModel" {

partitions {

partition "EngDevOps" {

"cad" 1.0 30%

}

partition "EngSecurity" {

"cad" 1.0 30%

}

}

on dictionary("business-unit":"Engineering") and dictionary("Region":"EMEA"){

use "EngDevOps"

accept

}

 

on dictionary("business-unit":"Security") and dictionary("Region":"EMEA"){

use "EngSecurity"

accept

}

 

on any() {

use "default"

accept

}

}