Inherits iprm::INameParam.
Interface for accessing information about a product (software or hardware).
A Product represents a software or hardware offering and is fundamentally defined as a collection of Features. From a licensing perspective, a Product also contains all available License Definitions, where each license "unlocks" a specific set of features.
Conceptual Model
Product as Feature Container:**
Product
├─ Feature 1 (Mandatory)
├─ Feature 2 (Optional)
├─ Feature 3 (Optional)
│ ├─ Child Feature 3.1
│ └─ Child Feature 3.2
└─ Feature 4 (Permission)
Product as License Container:**
Product
├─ License Definition "Basic" → unlocks Features {1}
├─ License Definition "Professional" → unlocks Features {1, 2, 3}
└─ License Definition "Enterprise" → unlocks Features {1, 2, 3, 4}
Product Lifecycle
- Definition Phase:**
Create Product with unique ID, name, description
- Assign to category for organization
- Add Features that define capabilities
- Create License Definitions that unlock feature subsets
- Catalog Phase:**
- Product becomes part of product catalog
- Available for sale to customers
- Marketing materials reference product features
- Pricing based on license types
- Deployment Phase:**
- Customer purchases product with selected licenses
- Product Instance created (see IProductInstanceInfo)
- License Instances activated on Product Instance
- Features enabled based on active licenses
Product Families
Products can be organized in families:
- Parent product defines common features
- Child products inherit or extend features
- Simplifies product management
- Example: "Office Suite" → "Office Home", "Office Professional", "Office Enterprise"
Key Responsibilities
- Maintains product identification:
- Unique Product ID (UUID or custom identifier)
- Human-readable name and description
- Category classification for organization
- Manages feature collection:
- Container of all product Features
- Feature addition and removal
- Feature hierarchy management
- Feature dependency tracking (via IFeatureInfo)
- Supports product families:
- Optional parent-child relationships
- Feature inheritance
- Hierarchical organization
Meta-Information
Products support meta-information for persistence and serialization:
- MIT_PRODUCT_NAME: QString - Human-readable product name
- MIT_PRODUCT_ID: QByteArray - Unique product identifier
- MIT_PRODUCT_DESCRIPTION: QString - Detailed product description
- MIT_PRODUCT_CATEGORY: QByteArray - Category classification
Usage Example
IProductInfoSharedPtr product = ...;
product->SetProductId("product-enterprise-suite");
product->SetName("Enterprise Suite");
product->SetProductDescription("Complete enterprise solution");
product->SetCategoryId("software");
IFeatureInfoSharedPtr featureCore = ...;
product->AddFeature("feature-core", *featureCore);
IFeatureInfoSharedPtr featureAdvanced = ...;
product->AddFeature("feature-advanced", *featureAdvanced);
int featureCount = features->GetCount();
Related Interfaces
- See also
- IFeatureInfo, ILicenseDefinition, IProductInstanceInfo, IProductLicensingInfo
Definition at line 133 of file IProductInfo.h.