---
- entityDefinitions:
  - IDC_ProductType: '{9a7bf831-589e-43c5-875d-d15d4b12d23c}'

  - IDI_ProductType_BallpointPen: '{0349ad48-9166-49e5-ba3f-afaf97f68e84}'

  - IDR_Product__has__Product_Type: '{0e9718b0-03cc-4399-9d4b-3ad84751b3a2}'
  - IDR_Product_Type__for__Product: '{bc0453ce-ba6d-4cbf-b93a-65f8bfa50285}'

  - IDR_Product_Type__has_valid__Product_Style: '{aa0c563d-c842-450c-b2af-b3b7c865609a}'
  - IDR_Product_Style__valid_for__Product_Type: '{b2466672-da2e-4f7f-aad3-7f6e0b890bfd}'
  
- library: '&IDL_MochaBaseSystem;'
  instances:
  - class: '&IDC_ProductType;'
    name: 'Product Type'
    index: 22005
    customTagName: 'productType'
    attributes:
    - instance: '&IDA_Name;'
      customTagName: 'name'
    defaultTask: '&IDI_Task_ProductType_View;'
    relatedTasks:
    - instance: '&IDI_Task_ProductType_View;'
    - instance: '&IDI_Task_ProductType_Edit;'

  - relationship: '&IDR_Product__has__Product_Type;'
    sourceClassId: '&IDC_Product;'
    type: 'has'
    destinationClassId: '&IDC_ProductType;'
    siblingRelationshipId: '&IDR_Product_Type__for__Product;'
    singular: no

  - relationship: '&IDR_Product_Type__for__Product;'
    sourceClassId: '&IDC_ProductType;'
    type: 'for'
    destinationClassId: '&IDC_Product;'
    siblingRelationshipId: '&IDR_Product__has__Product_Type;'
    singular: no

  - relationship: '&IDR_Product_Type__has_valid__Product_Style;'
    sourceClassId: '&IDC_ProductType;'
    type: 'has valid'
    destinationClassId: '&IDC_ProductStyle;'
    siblingRelationshipId: '&IDR_Product_Style__valid_for__Product_Type;'
    singular: no

  - relationship: '&IDR_Product_Style__valid_for__Product_Type;'
    sourceClassId: '&IDC_ProductStyle;'
    type: 'valid for'
    destinationClassId: '&IDC_ProductType;'
    siblingRelationshipId: '&IDR_Product_Type__has_valid__Product_Style;'
    singular: no

  - productType: '&IDI_ProductType_BallpointPen;'
    name: 'Ballpoint Pen'
    validProductStyles:
    - instance: '&IDI_ProductStyle_Capped;'
    - instance: '&IDI_ProductStyle_Retractable;'
