我正在使用通用信息模型 (CIM)为基础设施建模。该模型描述了不同 IT 系统的多个类。它是全面的,因此它由一系列层次结构而不是一个层次结构组成。例如,要表示一个物理服务器机箱,您可以定义一个 CIM_Chassis 实例。然后,为了表示将在该硬件上运行的逻辑服务器,您定义了一个 CIM_ComputerSystem 实例。然后您应该将两者与 CIM_SystemPackaging 的一个实例相关联,以注意其中一个是由另一个提供的。任何一个类中都没有可以将一个设置为另一个的属性的属性。它们是两个独立的类,由第三个相关联。该模型将使用 XML 进行描述,并通过当前用于 CIM 的 XML 模式进行验证。我不了解 CIM_SystemPackaging 的 XSD,它应该包含什么内容。
此 XML 演示了该问题(chassis 是 CIM_Chassis.xsd 等的别名):
<chassis:CIM_Chassis>
<chassis:CreationClassName>CIM_Chassis</chassis:CreationClassName>
<chassis:Manufacturer>Cisco</chassis:Manufacturer>
<chassis:Model>Catalyst 6000</chassis:Model>
<chassis:Tag>6548431</chassis:Tag>
</chassis:CIM_Chassis>
<computer:CIM_ComputerSystem>
<computer:CreationClassName>CIM_ComputerSystem</computer:CreationClassName>
<computer:Name>Switch1</computer:Name>
</computer:CIM_ComputerSystem>
<sp:CIM_SystemPackaging>
<sp:Antecedent>?</sp:Antecedent>
<sp:Dependent>?</sp:Dependent>
</sp:CIM_SystemPackaging>
我应该把什么放在哪里?是?架构文档对此事保持沉默,并且网络上似乎没有 XML 示例。这不验证:
E [Xerces] cvc-complex-type.2.4.b: The content of element 'sp:Antecedent' is not complete. One of '{WC[##other:"http://schemas.dmtf.org/wbem/wscim/1/common",""]}' is expected.
在 Schema 中,Dependent 和 Antecedent 属于 cimReference 类型,即:
<xs:complexType name="cimReference">
<xs:sequence>
<xs:any namespace="##other" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
所以这对我帮助不大。我想知道我是否打算将实例嵌入到先行词中:
<sp:CIM_SystemPackaging>
<sp:Antecedent>
<chassis:CIM_Chassis>
...etc...
</chassis:CIM_Chassis>
</sp:Antecedent>
<sp:Dependent>
<computer:CIM_ComputerSystem>
...etc...
</computer:CIM_ComputerSystem>
</sp:Dependent>
</sp:CIM_SystemPackaging>
这验证正常,但似乎无法扩展。由于机箱内的每个硬件都可能有一个对象,并且它们都需要与具有相似关联类的机箱相关联,因此很快就会变得不可能。这似乎也违背了整个关联模型。是否有人对 CIM 足够熟悉来解释它应该如何工作?