Description of Parts
In other formats like the KBL- or the KOMP-model the diverse types of parts (e.g. connector housing, terminal, wire) are differentiated by inheritance with a subclass for each type inheriting from the type corresponding to PartVersion. These subclasses define all specific information of the particular component type (e.g. the cavities of a connector). Due to the great diversity of components used in wiring harnesses a different approach is implemented in the VEC.
The general technical / physical properties of a component are described by PartOrUsageRelatedSpecifications (and its subclasses). For each aspect of a component an independent subclass of PartOrUsageRelatedSpecification is defined (e.g. a ConnectorHousingSpecification, a TerminalSpecification). The reason for this approach is, that thereby a PartVersion can be described by more than one PartOrUsageRelatedSpecifications (Association PartOrUsageRelatedSpecification.describedPart). This offers the possibility to extract information, which is common to more than one component type, into separate specifications so that the structure can be reused without having to modify the inheritance tree (e.g. GeneralTechnicalPartSpecification). Furthermore in reality some components cannot be mapped onto such a strict type hierarchy (e.g. a connector housing used as an inliner might have a fixing bolt for vehicle body in order to keep it in place). Representing this by an inheritance tree would result in a huge variety of different classes. With the concept of PartOrUsageRelatedSpecifications a component like the mentioned connector housing can be easily described by using a ConnectorHousingSpecification for the connector housing aspects and a FixingSpecification for the fixing aspects. However most parts have a primary characteristic. For example the mentioned connector housing will most probably only be used if a connector is necessary. This primary characteristic is defined by the PartVersion.primaryPartType. The PrimaryPartType always refers by a naming convention to a corresponding PartOrUsageRelatedSpecification. If the PrimaryPartType is ABC, the corresponding Specification is named ABCSpecification (e.g. ConnectorHousing and ConnectorHousingSpecification).
In some cases it might occur that it is required to specify attributes of a part that is not related to any of the existing subtypes of PartOrUsageRelatedSpecification. For example it might be relevant to describe a screw nut used as an accessory for a connector housing. In this case the class PartOrUsageRelatedSpecification is instanced and the relevant attributes are added with CustomProperties.
Since the PartOrUsageRelatedSpecification is a subclass of Specification, which is an sub element of a dedicated DocumentVersion all information defined with it can be related to a precise development state.
The relationship PartOrUsageRelatedSpecification.describedPart might be seen as redundant to the relationship DocumentVersion.referencedPart but considers the fact that there are use cases, where only information on the level of PartVersions and DocumentVersions is exchanged and not on the very detailed level of PartOrUsageRelatedSpecifications. In addition it is possible, that several PartVersions are described by a single DocumentVersion containing a couple of specifications, each of them describing a single PartVersion (e.g. a drawing with a major part and its accessory parts).