Common Information Model
Common Information Model (CIM) is een uitbreidbaar objectgeoriënteerd gegevensmodel dat informatie bevat over verschillende onderdelen van een onderneming. De CIM- is een platformoverschrijdende standaard die wordt onderhouden door de Distributed Management Task Force (DMTF-). Via WMI kan een ontwikkelaar de CIM gebruiken om klassen te maken die harde schijven, toepassingen, netwerkrouters of zelfs door de gebruiker gedefinieerde technologieën vertegenwoordigen, zoals een airconditioner in het netwerk. Door wijzigingen in een CIM-klasse te bekijken en aan te brengen, kan een manager verschillende aspecten van de onderneming beheren. Een manager kan bijvoorbeeld een query uitvoeren op een CIM-klasse-exemplaar dat een desktopwerkstation vertegenwoordigt. De manager kan vervolgens een script uitvoeren om het CIM-werkstationexemplaren te wijzigen. WMI zou elke wijziging in het CIM-klasse-exemplaar van het werkstation omzetten in een wijziging in het werkelijke werkstation.
De CIM is een taalonafhankelijk programmeermodel dat objectgeoriënteerde technieken gebruikt om een onderneming te beschrijven. Met behulp van drie niveaus van bovenliggende/onderliggende overname kan de CIM zowel algemene als specifieke aspecten van een onderneming beschrijven. De CIM maakt ook gebruik van een techniek genaamd 'koppeling' om verschillende onderdelen van het bedrijfsmodel aan elkaar te koppelen en maakt gebruik van schema's om verschillende beheeromgevingen te onderscheiden.
De CIM is ontworpen om een consistente weergave van logische en fysieke objecten in een beheeromgeving te presenteren. De CIM vertegenwoordigt beheerde objecten met behulp van een objectgeoriënteerde constructie die een 'klasse' wordt genoemd. Net als een C++ of COM-klasse kan een CIM-klasse eigenschappen bevatten om gegevens en methoden te beschrijven om gedrag te beschrijven. Net als een set COM-klassen is de CIM niet gekoppeld aan een platform. WMI bevat echter een extensie voor de CIM die de Microsoft Windows-besturingssysteemplatformen beschrijft.
De CIM definieert drie niveaus van klassen:
Kern
Kernklassen vertegenwoordigen beheerde objecten die van toepassing zijn op alle beheergebieden. Deze klassen bieden een eenvoudige woordenlijst voor het analyseren en beschrijven van beheerde systemen. De klassen __Parameters en __SystemSecurity zijn voorbeelden van kernklassen.
Gemeenschappelijk
Algemene klassen vertegenwoordigen beheerde objecten die van toepassing zijn op specifieke beheergebieden. Algemene klassen zijn echter onafhankelijk van een bepaalde implementatie of technologie. Algemene klassen zijn een uitbreiding van de kernklassen. De CIM_UnitaryComputerSystem klasse is een voorbeeld van een gemeenschappelijke klasse.
Verlengd
Uitgebreide klassen vertegenwoordigen beheerde objecten die technologiespecifieke toevoegingen aan de algemene klassen zijn. Een uitgebreide klasse is doorgaans van toepassing op een specifiek platform, zoals UNIX of de Microsoft Win32-omgeving. De Win32_ComputerSystem-klasse is een voorbeeld van een uitgebreide klasse.
Een ontwikkelaar kan een klasse afleiden uit een andere klasse. Een afgeleide klasse vertegenwoordigt een speciaal geval van de bovenliggende klasse en neemt alle eigenschappen en methoden van de bovenliggende klasse over. Win32_ComputerSystem neemt bijvoorbeeld over van CIM_UnitaryComputerSystem. Overnamerelaties kunnen worden bepaald met behulp van de systeemeigenschappen __Derivation, __Dynastyen __SuperClass. De __Derivation systeemeigenschap is een matrix met tekenreeksen met de volledige overnameketen tot en met de hoofdklasse, die ook is opgenomen in __Dynasty. De __SuperClass systeemeigenschap toont het directe bovenliggende element van de huidige klasse.
WMI ondersteunt ook koppelingen. Een koppeling is een relatie tussen twee of meer verschillende WMI-klassen. Een actief werkstation heeft bijvoorbeeld meestal een processor. De WMI-koppelingsklasse Win32_ComputerSystemProcessor koppelt de werkstationklasse Win32_ComputerSystem aan de processorklasse Win32_Processor. Een koppelingsklasse hoeft echter niet twee afhankelijke klassen aan elkaar te koppelen. Het primaire doel van een koppelingsklasse is om relaties weer te geven tussen klassen die niet noodzakelijkerwijs afhankelijk zijn van elkaar. Zie Een koppelingsklasse declarerenvoor meer informatie.
Ten slotte ondersteunt WMI het concept van schema's. In de context van WMI is een schema een groep klassen die een bepaalde beheeromgeving beschrijven. De Microsoft Windows Software Development Kit (SDK) maakt gebruik van twee schema's: het CIM-schema en het Win32-schema. De CIM-schemaklassenamen beginnen met CIM_en de Win32-schemaklassenamen beginnen met Win32_. Het CIM-schema bevat de definities voor de kern- en algemene klassen, terwijl het Win32-schema de definities bevat voor de uitgebreide klassen die gemeenschappelijk zijn voor de Win32-omgeving. Een externe leverancier kan echter hun eigen schema's maken om leverancierspecifieke vereisten te beschrijven. Omdat schema's oneindig uitbreidbaar zijn, kan een ontwikkelaar altijd nieuwe klassen toevoegen om nieuwe beheerde objecten in een bestaande omgeving te beschrijven. Voor het gemak kiezen de meeste leveranciers er echter voor om schema's te maken die eigenschappen overnemen van de CIM- of Win32-schema's.