Finally, we can look at the services we provide: basic telephony, voice mail and diagnostic testing. Anticipating the need for CIM_Service, I included it on Figure 9.4 ”it is also a subclass of CIM_EnabledLogicalElement. I described the concept of a service on page 92 where I even used the example of voice mail as a prototypical service.
To allow us to concentrate on the service aspects of our PBX, I have redrawn part of the core model in Figure 9.8 Notice that CIM_DiagnosticService is already a subclass of CIM_Service, but that, not unexpectedly, our voice mail and telephony do not yet exist. This gives us the opportunity to introduce two new services: ACNE_PBXVoiceMail and ACNE_PBXTelephony.
We can then use the existing association CIM_HostedService, or a subclass of it, to connect the services to our PBX and we can use CIM_ServiceAccessBySAP or its subclass CIM_ProvidesEndpoint to connect the services with the points through which they may be accessed.
Part of the telephony service requires us to be able to group telephones so that incoming calls can be correctly directed. CIM provides various methods of modelling collections, the grandparent of them all being CIM_Collection (see Figure 9.9). One subclass of this class is CIM_SystemSpecificCollection which is described as follows in its mof :
SystemSpecificCollection represents the general concept of a collection which is scoped (or contained) by a System. It represents a Collection that only has meaning in the context of a System, and/or whose elements are restricted by the definition of the System. This is explicitly described by the (required) association, HostedCollection. An example of a SystemSpecificCollection is a Fibre Channel zone that collects network ports, port groupings and aliases (as required by a customer) in the context of an AdminDomain. The Collection is not a part of the domain, but merely an arbitrary grouping of the devices and other Collections in the domain. In other words, the context of the Collection is restricted to the domain, and its members are also limited by the domain.
This sounds very like our grouping of telephone ports and, in fact, CIM_SystemSpecificCollection actually has a subclass which appears to be even more suitable for our application: CIM_LogicalPortGroup. This class allows us to name the specific collection and, through the CIM_MemberOfCollection association, we can group telephony ports into a particular instance of the class. Having created our group of Telephone Ports, we have to associate a trunk port with the group: for this I have created an association ACNE_PBXTrunkToGroup as shown in Figure 9.9.