ImagingTools Core SDK
Classes
imtlic Namespace Reference

Core licensing domain model providing feature-based product licensing and instance management. More...

Classes

class  CFeatureInfoProviderComp
 
class  CFeatureMetaInfoCreatorComp
 
class  CHardwareInstanceInfo
 
class  CLicenseBasedRightsProviderComp
 
class  CLicenseControllerComp
 
class  CLicenseDefinition
 
class  CLicensedHardwareInstanceInfo
 
class  CLicenseInfoManager
 
class  CLicenseInfoProviderComp
 
class  CLicenseInstance
 
class  CLicenseKeyProvider
 
class  CLicenseMetaInfoCreatorComp
 
class  CProductCollection
 
class  CProductInstanceInfo
 
class  CProductInstanceInfoComp
 
class  CProductInstanceMetaInfoCreatorComp
 
class  CProductLicensingInfo
 
class  CProductLicensingInfoComp
 
class  CProductLicensingInfoMetaInfoCreatorComp
 
class  CProductMetaInfoCreatorComp
 
class  IEncyptedLicenseKeyProvider
 
class  IFeatureDependenciesManager
 
class  IFeatureDependenciesProvider
 
interface  IFeatureInfo
 Interface for accessing information about a feature within a product. More...
 
class  IFeatureInfoProvider
 
class  IHardwareInstanceInfo
 
class  IKeyRing
 
class  ILicenseController
 
interface  ILicenseDefinition
 Interface for license definition information. More...
 
class  ILicenseDependenciesManager
 
class  ILicenseDependenciesProvider
 
class  ILicensedHardwareInstanceInfo
 
class  ILicenseInfoProvider
 
class  ILicenseInstance
 
class  ILicenseInstanceProvider
 
class  ILicenseStatus
 
class  IPartProductionInfo
 
interface  IProductInfo
 Interface for accessing information about a product (software or hardware). More...
 
class  IProductInstanceInfo
 
class  IProductInstanceInfoProvider
 
class  IProductLicensingInfo
 
class  IProductLicensingInfoProvider
 

Detailed Description

Core licensing domain model providing feature-based product licensing and instance management.

Overview

The imtlic module implements a comprehensive, feature-based licensing system for software and hardware products. It provides a clean separation between product definitions and deployed instances, enabling flexible licensing models with temporal control, hardware binding, and dependency management.

Architecture

The module uses a three-level abstraction hierarchy:

Level 1: Definitions** (What can be sold)

Conceptual Model

Products

A Product (IProductInfo, CProductInfo) represents a software or hardware offering.

Key Characteristics:**

Features

A Feature (IFeatureInfo, CFeatureInfo) represents an individual capability or functionality.

Key Characteristics:**

License Definitions

A License Definition (ILicenseDefinition, CLicenseDefinition) specifies a license type available for purchase.

Key Characteristics:**

Product Instances

A Product Instance (IProductInstanceInfo, CProductInstanceInfo) represents a deployed product installation.

Key Characteristics:**

License Instances

A License Instance (ILicenseInstance, CLicenseInstance) represents an activated license.

Key Characteristics:**

Hardware Instances

Hardware binding support through hardware instance abstractions.

IHardwareInstanceInfo / CHardwareInstanceInfo:**

Product Licensing Info

Product Licensing Info (IProductLicensingInfo, CProductLicensingInfo) provides the complete licensing catalog.

Key Characteristics:**

Design Patterns Used

Definition-Instance Pattern

Separates static definitions from runtime instances:

Container Pattern

Products and License Definitions are containers:

Provider Pattern

Data access through provider interfaces:

Component Pattern (ACF)

All major classes are ACF components:

Typical Workflows

Product Definition Workflow

  1. Create Features (atomic capabilities)
  2. Organize Features in hierarchies (if needed)
  3. Define Feature dependencies
  4. Create Product containing all Features
  5. Create License Definitions specifying Feature subsets
  6. Define License dependencies
  7. Create Product Licensing Info (complete catalog)

Product Deployment Workflow

  1. Customer purchases Product with selected licenses
  2. Create Product Instance with customer info
  3. Generate hardware binding data (if needed)
  4. Activate License Instances on Product Instance
  5. Generate license files with cryptographic keys
  6. Deploy license files to customer site
  7. System validates licenses and enables features

License Validation Workflow

  1. Application starts, loads license files
  2. CLicenseControllerComp imports license files
  3. Cryptographic validation of license keys
  4. Check expiration dates and goodwill periods
  5. Build list of unlocked Features
  6. CLicenseBasedRightsProviderComp provides access control
  7. Application enables/disables features accordingly

Feature Availability Check

  1. Application needs to use a Feature
  2. Query CLicenseBasedRightsProviderComp (implements IRightsProvider)
  3. Check if feature is unlocked by active licenses
  4. Check feature dependencies (if feature A needs feature B)
  5. Enable/disable functionality based on result

Key Components

Controllers

Providers

Core Implementations

Meta-Information Creators

Key Interfaces

All interfaces follow ACF conventions with virtual inheritance and smart pointers.

Domain Model Interfaces:**

Integration Points

With imtlicgql Module:**

Additional Documentation

See also
imtlicgql For GraphQL API layer
imtlicdb For database persistence layer