概述
通用信息模型 (CIM) 提供了
![](/icons/88855yi.gif)
种对被管理信息
![](/icons/88855de.gif)
通用定义
![](/icons/88855dou.gif)
包括系统、网络、应用和服务
![](/icons/88855dou.gif)
并且能供被扩展
![](/icons/88855dou2.gif)
CIM 使得信息管理者可以在网络中以
![](/icons/88855yi.gif)
种通用
![](/icons/88855de.gif)
标准交互
![](/icons/88855dou.gif)
而 CIM Profile 定义了某
![](/icons/88855yi.gif)
个特定领域
![](/icons/88855de.gif)
CIM 模型和联系
![](/icons/88855dou2.gif)
当前
![](/icons/88855dou.gif)
CIM 已经被世界上很多公司所采纳
![](/icons/88855dou.gif)
作为他们构建上层信息管理软件Software
![](/icons/88855de.gif)
基础模型
![](/icons/88855dou.gif)
比如 IBM, HP 和 EMC 等
![](/icons/88855dou2.gif)
随着趋势
![](/icons/88855de.gif)
发展
![](/icons/88855dou.gif)
对这种技术进行
![](/icons/88855yi.gif)
次全面和基础
![](/icons/88855de.gif)
介绍
![](/icons/88855dou.gif)
将对刚进入这个领域
![](/icons/88855de.gif)
开发者具有非常重要
![](/icons/88855de.gif)
意义
![](/icons/88855dou2.gif)
本文
![](/icons/88855de.gif)
目标读者包括希望进入 CIM 开发领域
![](/icons/88855de.gif)
工程人员和对 CIM 技术有着浓厚兴趣
![](/icons/88855de.gif)
开发者
![](/icons/88855dou2.gif)
背景知识介绍
CIM
CIM ( 通用信息模型 ) 是由 DMTF 制定
![](/icons/88855de.gif)
用于管理计算机系统和网络
![](/icons/88855de.gif)
工业规范标准
![](/icons/88855dou.gif)
它提供了
![](/icons/88855yi.gif)
个共同
![](/icons/88855de.gif)
概念框架
![](/icons/88855dou.gif)
将所有系统进行分类
![](/icons/88855dou.gif)
并确定了部分网络环境
![](/icons/88855dou.gif)
而且描绘了这些部分
![](/icons/88855de.gif)
互动
![](/icons/88855dou2.gif)
CIM
![](/icons/88855de.gif)
概念适用于所有领域
![](/icons/88855de.gif)
管理
![](/icons/88855dou.gif)
而且所有
![](/icons/88855de.gif)
领域可以独立
![](/icons/88855de.gif)
进行技术实施
![](/icons/88855dou.gif)
由公共信息模型开发出
![](/icons/88855de.gif)
管理软件Software可以统
![](/icons/88855yi.gif)
异构环境下
![](/icons/88855de.gif)
产品管理
![](/icons/88855dou2.gif)
CIM 由以下几部分组成 :
CIM 规范标准- 定义了整合管理模型
![](/icons/88855de.gif)
语言和思路方法论
![](/icons/88855dou2.gif)
CIM 标准模型- 定义了对计算机系统
![](/icons/88855dou.gif)
应用
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
网络和设备描述信息模型
![](/icons/88855dou2.gif)
CIM 标准模型由以下及部分组成:
核心模型 - 提供了基本
![](/icons/88855de.gif)
受管对象
![](/icons/88855de.gif)
假设信息
![](/icons/88855dou.gif)
内容包括
![](/icons/88855yi.gif)
系列描述和分析受管系统
![](/icons/88855de.gif)
类和他们的间
![](/icons/88855de.gif)
关联信息
![](/icons/88855dou2.gif)
公共模型 - 实现了管理领域
![](/icons/88855de.gif)
公共概念
![](/icons/88855dou2.gif)
这些概念独立于各个特殊
![](/icons/88855de.gif)
技术和实现
![](/icons/88855dou2.gif)
可以说这个模型提供了
![](/icons/88855yi.gif)
个管理软件Software发展
![](/icons/88855de.gif)
基础
![](/icons/88855dou2.gif)
拓展模型 - 他们是在公共基础上拓展
![](/icons/88855yi.gif)
些和平台相关
![](/icons/88855de.gif)
模型
![](/icons/88855dou.gif)
比如操作系统
![](/icons/88855de.gif)
模型等
![](/icons/88855dou2.gif)
![](/icons/88855yi.gif)
些大公司如 IBM 公司都有根据自己
![](/icons/88855de.gif)
产品所拓展出
![](/icons/88855yi.gif)
系列
![](/icons/88855de.gif)
为自己产品服务
![](/icons/88855de.gif)
模型
![](/icons/88855dou2.gif)
DMTF
DMTF ( 分布式管理任务组织 ) 是工业界计算机和电信行业
![](/icons/88855de.gif)
企业间合作组织
![](/icons/88855dou2.gif)
它领导着个人电脑
![](/icons/88855dou.gif)
企业级服务器和网络管理标准
![](/icons/88855de.gif)
制定和发展
![](/icons/88855dou.gif)
并致力于建立整合跨平台和协议
![](/icons/88855de.gif)
计算机和网络管理思路方法
![](/icons/88855dou.gif)
以求能使得区别产品
![](/icons/88855de.gif)
整合管理成本消耗达到最小
![](/icons/88855dou.gif)
CIM 就是由 DMTF 制定发布
![](/icons/88855de.gif)
![](/icons/88855dou2.gif)
WBEM
WBEM ( 基于 Web
![](/icons/88855de.gif)
企业管理 ) 是
![](/icons/88855yi.gif)
系列网络管理规范标准 . 它标准化了企业网络中受管资源
![](/icons/88855de.gif)
描述和使用
![](/icons/88855dou2.gif)
遵循 WBEM 所开发
![](/icons/88855de.gif)
网络管理工具都可以实现低成本
![](/icons/88855de.gif)
管理
![](/icons/88855dou2.gif)
MOF
CIM 以受管对象格式 (MOF) 来描述对受管资源建立
![](/icons/88855de.gif)
模型
![](/icons/88855dou2.gif)
它和 IDL 语言(对象管理组
![](/icons/88855de.gif)
接口定义语言)很相似
![](/icons/88855dou.gif)
是用文本
![](/icons/88855de.gif)
格式描述面向对象
![](/icons/88855de.gif)
类和例子
![](/icons/88855de.gif)
定义
![](/icons/88855dou2.gif)
MOF 规范标准
![](/icons/88855de.gif)
主要内容有元素类
![](/icons/88855dou.gif)
属性
![](/icons/88855dou.gif)
思路方法等
![](/icons/88855de.gif)
描述
![](/icons/88855dou.gif)
还包括注释
![](/icons/88855dou.gif)
编译暗示
![](/icons/88855dou.gif)
和
![](/icons/88855yi.gif)
些 CIM 规范标准
![](/icons/88855de.gif)
特别语义
![](/icons/88855dou2.gif)
CIM Profile
CIM profile 是 DMTF 组织或其它相关组织织定
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
定义了在特定环境下
![](/icons/88855de.gif)
CIM 模型
![](/icons/88855de.gif)
实现
![](/icons/88855dou2.gif)
它内容包括 CIM 类
![](/icons/88855dou.gif)
关联信息
![](/icons/88855dou.gif)
思路方法和属性
![](/icons/88855dou2.gif)
它为 CIM 模型在具体化条件下
![](/icons/88855de.gif)
应用提供了统
![](/icons/88855yi.gif)
和便利
![](/icons/88855dou2.gif)
每
![](/icons/88855yi.gif)
个 profile 都清晰
![](/icons/88855de.gif)
指出每
![](/icons/88855yi.gif)
个类
![](/icons/88855dou.gif)
属性
![](/icons/88855dou.gif)
思路方法在具体条件
![](/icons/88855de.gif)
应用下都应该被例子化
![](/icons/88855dou2.gif)
CIM Server
CIM Server 是 CIM 技术中
![](/icons/88855yi.gif)
个核心组件
![](/icons/88855dou.gif)
用来管理和操作信息模型对象
![](/icons/88855dou.gif)
现在已经有很多区别版本
![](/icons/88855de.gif)
CIM Server:
SMALL-FOOTPRINT CIM BROKER (SFCB) - SFCB 是
![](/icons/88855yi.gif)
个轻量级 CIM 后台
![](/icons/88855chengxu.gif)
(CIMOM) 用来处理 CIM 客户端
![](/icons/88855de.gif)
请求
![](/icons/88855dou.gif)
随后根据请求内容进行系统管理
![](/icons/88855de.gif)
操作
![](/icons/88855dou2.gif)
SFCB 支持标准
![](/icons/88855de.gif)
http/https 和 CIM-XML http 编码的上
![](/icons/88855de.gif)
操作
![](/icons/88855dou2.gif)
它实现高度模块化
![](/icons/88855dou.gif)
可以很容易补充
![](/icons/88855dou.gif)
删除或自定义区别
![](/icons/88855de.gif)
管理应用软件Software
![](/icons/88855dou2.gif)
SFCB 由于它
![](/icons/88855de.gif)
轻量级大小
![](/icons/88855dou.gif)
十分适用于嵌入式环境
![](/icons/88855dou2.gif)
Open Pegasus - Pegasus 是
![](/icons/88855yi.gif)
个 DMTF CIM 和 WBEM 标准
![](/icons/88855de.gif)
开源项目
![](/icons/88855dou2.gif)
它由 C
![](/icons/88855jiajia.gif)
编写
![](/icons/88855dou.gif)
所以可以很方便
![](/icons/88855de.gif)
将面向对象
![](/icons/88855de.gif)
CIM 管理对象转变成
![](/icons/88855chengxu.gif)
模块
![](/icons/88855dou2.gif)
因此他被各个操作系统平台所支持
![](/icons/88855dou.gif)
包括 UNIX, Linux, OpenVMS, and Microsoft Windows
![](/icons/88855dou2.gif)
OpenWBEM - OpenWBEM 是
![](/icons/88855yi.gif)
个企业级 wbem 实现
![](/icons/88855de.gif)
开源项目
![](/icons/88855dou2.gif)
它由 C
![](/icons/88855jiajia.gif)
编写
![](/icons/88855dou.gif)
可用于任何商业和非商业
![](/icons/88855de.gif)
用途
![](/icons/88855dou2.gif)
它提供了
![](/icons/88855yi.gif)
个基础管理
![](/icons/88855de.gif)
开发框架
![](/icons/88855dou.gif)
克服跨平台
![](/icons/88855de.gif)
障碍
![](/icons/88855dou.gif)
并赋予真正
![](/icons/88855de.gif)
互操作性
![](/icons/88855dou2.gif)
开发人员可以使用 openwbem
![](/icons/88855dou.gif)
以提供配置和变更管理
![](/icons/88855dou.gif)
系统健康监测
![](/icons/88855dou.gif)
和企业范围
![](/icons/88855de.gif)
管理功能
![](/icons/88855dou2.gif)
WBEM Services - WBEM Services 项目是用 Java 编写
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
适用于任何商业和非商业用途
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
基于 wbem
![](/icons/88855de.gif)
实现
![](/icons/88855dou2.gif)
它
![](/icons/88855de.gif)
内容包括应用编程接口
![](/icons/88855dou.gif)
服务器端和客户端
![](/icons/88855de.gif)
应用
![](/icons/88855chengxu.gif)
和工具
![](/icons/88855dou2.gif)
通用信息模型技术总揽
图 1. 通用信息模型技术框架图
![](http://CrazyCoder.cn/WebFiles/200912/a22c17a1-32e2-4b2e-8e5d-a2816500536c.jpeg)
如上图所示
![](/icons/88855dou.gif)
DMTF组织
![](/icons/88855de.gif)
底层技术基础是通用信息模型 (CIM)
![](/icons/88855dou2.gif)
CIM 模型定义了
![](/icons/88855yi.gif)
套规范标准并提供了如何和其他管理模型进行整合
![](/icons/88855de.gif)
细节
![](/icons/88855dou2.gif)
上
![](/icons/88855yi.gif)
层是 CIM 规范标准
![](/icons/88855dou.gif)
它为受管元素提供了更多丰富
![](/icons/88855de.gif)
语义和面向对象
![](/icons/88855de.gif)
描述
![](/icons/88855dou2.gif)
该 CIM
![](/icons/88855de.gif)
规范标准有利于管理元素精简
![](/icons/88855dou.gif)
整合和成本
![](/icons/88855de.gif)
降低
![](/icons/88855dou.gif)
使得管理信息
![](/icons/88855de.gif)
交换处于
![](/icons/88855yi.gif)
个独立平台和技术中立
![](/icons/88855de.gif)
方式
![](/icons/88855dou2.gif)
再上层便是基于 Web
![](/icons/88855de.gif)
企业管理 (WBEM)
![](/icons/88855dou.gif)
它提供了
![](/icons/88855yi.gif)
系列网络管理标准来实现分布式系统
![](/icons/88855de.gif)
统
![](/icons/88855yi.gif)
管理 , 不仅如此 , 它还提供
![](/icons/88855yi.gif)
套基于标准
![](/icons/88855de.gif)
管理工具
![](/icons/88855dou.gif)
促进区别平台下数据
![](/icons/88855de.gif)
交流
![](/icons/88855dou2.gif)
这两层技术总揽提供了特定管理环境下
![](/icons/88855dou.gif)
![](/icons/88855yi.gif)
种统
![](/icons/88855yi.gif)
![](/icons/88855de.gif)
标准
![](/icons/88855de.gif)
方式来描述和管理受管资源
![](/icons/88855dou.gif)
以达到分布式管理
![](/icons/88855de.gif)
简化
![](/icons/88855dou2.gif)
最上层是 DMTF 或基于 DMTF 技术
![](/icons/88855de.gif)
其他组织
![](/icons/88855de.gif)
![](/icons/88855yi.gif)
些具体项目
![](/icons/88855dou2.gif)
它们提供了提供了垂直方向
![](/icons/88855de.gif)
具体应用和功能 , 包括比如公共诊断模型 (CDM), 桌面和移动系统硬件架构 (DASH)
![](/icons/88855dou.gif)
服务器硬件系统管理结构 (SMASH), 和存储网络工业协会 (SNIA's) 发布
![](/icons/88855de.gif)
存储管理规范标准 (SMI-S).
![](/icons/88855yi.gif)
个完整
![](/icons/88855de.gif)
开发案例
基于前面章节
![](/icons/88855de.gif)
CIM 技术介绍和基本概念
![](/icons/88855dou.gif)
我们将通过
![](/icons/88855yi.gif)
个完整
![](/icons/88855de.gif)
CIM Profile 开发案例
![](/icons/88855dou.gif)
把最基本
![](/icons/88855de.gif)
CIM 开发过程介绍给大家
![](/icons/88855dou2.gif)
简要说来
![](/icons/88855dou.gif)
开发 CIM 主要是指运用 CIM 技术
![](/icons/88855dou.gif)
开发出符合通用管理接口
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
同时满足自己需求
![](/icons/88855de.gif)
信息模型
![](/icons/88855dou.gif)
主要包括下面 4个步骤:理解 CIM profile
![](/icons/88855dou.gif)
扩展 CIM profile
![](/icons/88855dou.gif)
实现 CIM provider 和最后
![](/icons/88855de.gif)
测试和验证过程
![](/icons/88855dou2.gif)
清单 1. 需求案例
IBM 计算机系统中安装了
个新
软件Software -IBM Lotus Notes
我们如何对它进行对象模型化
并开发符合 CIM 标准
管理![](/icons/88855chengxu.gif)
使得 CIM 客户端
可以访问到这个 Lotus Notes 对象?
理解 CIM Profile
研究上面
![](/icons/88855de.gif)
需求
![](/icons/88855dou.gif)
第
![](/icons/88855yi.gif)
步就是如何建模
![](/icons/88855dou2.gif)
首先
![](/icons/88855dou.gif)
我们还要回顾
![](/icons/88855yi.gif)
下前面介绍
![](/icons/88855de.gif)
![](/icons/88855yi.gif)
个概念:CIM Profile
![](/icons/88855dou.gif)
CIM Profile 里面定义了某
![](/icons/88855yi.gif)
个特定领域对象
![](/icons/88855de.gif)
CIM 模型
![](/icons/88855dou.gif)
到目前为止
![](/icons/88855dou.gif)
已经发布
![](/icons/88855de.gif)
CIM Profile 基本上已经涵盖了在工业生产生活中所常见
![](/icons/88855de.gif)
对象模型
![](/icons/88855dou2.gif)
我们列举出
![](/icons/88855yi.gif)
小部分已经发布
![](/icons/88855de.gif)
CIM Profile
![](/icons/88855dou.gif)
如下所示:
表 1. 已经发布
![](/icons/88855de.gif)
![](/icons/88855yi.gif)
些 CIM Profile 举例
编号 名称 介绍
DSP1027 Power State Management Profile 计算机电源状态管理模型
DSP1028 Alarm Device Profile 警报设备模型
DSP1029 OS Status Profile 操作系统状态模型
DSP1030 Battery Profile 电源模型
那么 CIM Profile 和我们
![](/icons/88855de.gif)
建模有什么关系呢?简言的
![](/icons/88855dou.gif)
就是我们
![](/icons/88855de.gif)
CIM 开发
![](/icons/88855dou.gif)
就是要扩展这些标准
![](/icons/88855de.gif)
CIM Profile
![](/icons/88855dou.gif)
创建符合 CIM 标准
![](/icons/88855de.gif)
具体模型
![](/icons/88855dou.gif)
这样
![](/icons/88855de.gif)
好处有几点:
已经存在
![](/icons/88855de.gif)
CIM Profile 已经为我们搭建起了
![](/icons/88855yi.gif)
个标准
![](/icons/88855de.gif)
现实世界模型框架
![](/icons/88855dou.gif)
我们可以通过类继承实现模型重用
![](/icons/88855dou2.gif)
标准
![](/icons/88855de.gif)
CIM Profile 具有通用性
![](/icons/88855dou.gif)
接口标准和统
![](/icons/88855yi.gif)
化
![](/icons/88855dou.gif)
这样便于将来
![](/icons/88855de.gif)
跨系统跨平台操作
![](/icons/88855dou2.gif)
针对案例需求
![](/icons/88855dou.gif)
我们选择了 "DSP1023 Software Inventory Profile"
![](/icons/88855dou2.gif)
DSP1023 描述了可以安装在系统中
![](/icons/88855de.gif)
软件Software对象模型
![](/icons/88855dou.gif)
比如 BIOS
![](/icons/88855dou.gif)
固件
![](/icons/88855dou.gif)
应用
![](/icons/88855chengxu.gif)
以及软件Software和管理设备
![](/icons/88855de.gif)
关系等
![](/icons/88855dou2.gif)
对于这份文档中
![](/icons/88855de.gif)
更多信息
![](/icons/88855dou.gif)
在此就不详细介绍说明了
![](/icons/88855dou.gif)
我们需要重点关注
![](/icons/88855de.gif)
是如何模型化 Lotus Notes 这样
![](/icons/88855yi.gif)
个应用软件Software
![](/icons/88855dou2.gif)
在 DSP1023 中
![](/icons/88855dou.gif)
有这样
![](/icons/88855yi.gif)
个用例图可以作为参考
![](/icons/88855dou.gif)
如下图所示:
图 2. Software Inventory Profile 用例类图
![](http://CrazyCoder.cn/WebFiles/200912/f79e7ffc-3e07-4bb1-8a9f-17cb68d34537.jpeg)
注:上图中类名都省略了前缀 "CIM_"
在上图中
![](/icons/88855dou.gif)
CIM_Computer
![](/icons/88855System.gif)
代表了计算机系统
![](/icons/88855dou.gif)
CIM_SoftwareIdentity 代表了安装在系统中
![](/icons/88855de.gif)
软件Software
![](/icons/88855dou.gif)
这两者是通过 CIM_InstalledSoftwareIdentity 关联起来
![](/icons/88855de.gif)
![](/icons/88855dou2.gif)
IBM Lotus Notes 就是
![](/icons/88855yi.gif)
种 CIM_SoftwareIdentity
![](/icons/88855dou.gif)
因此我们可以利用这个框架来扩展
![](/icons/88855dou2.gif)
在 CIM 中
![](/icons/88855dou.gif)
对于类和对象
![](/icons/88855dou.gif)
是由MOF来描述定义
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
MOF 通过文本形式
![](/icons/88855dou.gif)
规范标准了类
![](/icons/88855dou.gif)
对象
![](/icons/88855dou.gif)
属性
![](/icons/88855dou.gif)
思路方法等
![](/icons/88855dou2.gif)
我们以 CIM_SoftwareIdentity 为例来看
![](/icons/88855yi.gif)
下它如何定义
![](/icons/88855de.gif)
:
清单 2. CIM_SoftwareIdentity
![](/icons/88855de.gif)
MOF 文件
// Copyright (c) 2005 DMTF. All rights reserved.
//![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
// CIM_SoftwareIdentity
//![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
![](/icons/88855dd.gif)
[Version ( "2.14.0" ), UMLPackagePath ( "CIM::Core::Software" ),
Description (
"SoftwareIdentity provides descriptive information about a "
"software component for as
tracking and/or
ation "
"dependency management. ")]
CIM_SoftwareIdentity : CIM_LogicalElement {
[Key]
InstanceID;
u
16 MajorVersion;
u
16 MinorVersion;
u
16 RevisionNumber;
u
16 BuildNumber;
VersionString;
TargetOperating
s
;
Manufacturer;
Languages
;
u
16 Class
ications
;
Class
icationDescriptions
;
SerialNumber;
datetime ReleaseDate;
};
注:在上面
![](/icons/88855de.gif)
MOF 文件中
![](/icons/88855dou.gif)
我们省略了很多属性描述和注释内容
对于上面
![](/icons/88855de.gif)
MOF 中各个属性
![](/icons/88855de.gif)
具体含义
![](/icons/88855dou.gif)
有兴趣
![](/icons/88855de.gif)
读者可以从DMTF 网站WebSite上下载详细
![](/icons/88855de.gif)
MOF 文件进行学习
![](/icons/88855dou2.gif)
扩展 CIM Profile
所谓扩展 CIM Profile
![](/icons/88855dou.gif)
就是继承 CIM Profile 中
![](/icons/88855de.gif)
类
![](/icons/88855dou.gif)
创建符合具体需求
![](/icons/88855de.gif)
子类
![](/icons/88855dou.gif)
如下图所示:
图 3. 扩展用例类图
![](http://CrazyCoder.cn/WebFiles/200912/30abc367-2de3-4e1b-9414-73a5b2b8e405.jpeg)
查看原图(大图)
如图所示
![](/icons/88855dou.gif)
IBM_Computer
![](/icons/88855System.gif)
继承了 CIM_Computer
![](/icons/88855System.gif)
![](/icons/88855dou.gif)
代表了特殊
![](/icons/88855de.gif)
计算机系统
![](/icons/88855dou.gif)
并相应地可以添加
![](/icons/88855yi.gif)
些 IBM 计算机
![](/icons/88855de.gif)
特殊属性和行为; IBM_SoftwareIdentity 代表了 IBM 公司开发
![](/icons/88855de.gif)
软件Software
![](/icons/88855dou.gif)
当然
![](/icons/88855dou.gif)
我们将要模型化
![](/icons/88855de.gif)
Lotus Notes 就属于这
![](/icons/88855yi.gif)
类
![](/icons/88855dou2.gif)
简化起见
![](/icons/88855dou.gif)
我们把重点放在 IBM_SoftwareIdentity 模型化上
![](/icons/88855dou.gif)
创建它
![](/icons/88855de.gif)
MOF 如下:
清单 3. IBM_SoftwareIdentity
![](/icons/88855de.gif)
MOF 文件
[Version ( "1.0" ), Description (
"To describe IBM software ")]
IBM_SoftwareIdentity : CIM_SoftwareIdentity
{
IBMProductName;
};
如上所示
![](/icons/88855dou.gif)
我们只需要在 CIM_SoftwareIdentity
![](/icons/88855de.gif)
基础上
![](/icons/88855dou.gif)
再增加
![](/icons/88855yi.gif)
个特殊
![](/icons/88855de.gif)
IBMProductName 属性
![](/icons/88855dou.gif)
用来描述该产品
![](/icons/88855de.gif)
IBM 名称
![](/icons/88855dou2.gif)
当然
![](/icons/88855dou.gif)
开发者在实际项目中
![](/icons/88855dou.gif)
可以根据需要添加他们自己
![](/icons/88855de.gif)
属性和行为
![](/icons/88855dou2.gif)
实现 CIM Provider
对 CIM 模型
![](/icons/88855de.gif)
访问操作
![](/icons/88855dou.gif)
是通过叫做 "CIM Provider"
![](/icons/88855de.gif)
![](/icons/88855chengxu.gif)
来实现
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
接下来我们要做
![](/icons/88855de.gif)
事情就是把对于特定类
![](/icons/88855de.gif)
操作
![](/icons/88855dou.gif)
转化为具体
![](/icons/88855de.gif)
CIM Provider
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
这样
![](/icons/88855dou.gif)
任何满足 CIM 规范标准
![](/icons/88855de.gif)
客户端
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
都可以通过标准 CIM Client 接口
![](/icons/88855diaoyong.gif)
到我们
![](/icons/88855de.gif)
IBM_SoftwareIdentity 对象
![](/icons/88855dou.gif)
并进行
![](/icons/88855yi.gif)
些标准操作
![](/icons/88855dou.gif)
比如访问特定对象
![](/icons/88855dou.gif)
枚举所有该类对象等
![](/icons/88855dou2.gif)
CIM
![](/icons/88855chengxu.gif)
![](/icons/88855de.gif)
整体框架如下图所示:
图 4. CIM
![](/icons/88855chengxu.gif)
框架
![](http://CrazyCoder.cn/WebFiles/200912/c82cb01d-16c0-42bc-9c5b-9aa7659482ce.jpeg)
图中
![](/icons/88855dou.gif)
绿色
![](/icons/88855de.gif)
部分叫做 CIM Provider
![](/icons/88855dou.gif)
就是我们所要实现
![](/icons/88855de.gif)
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
它
![](/icons/88855de.gif)
工作就是对具体
![](/icons/88855de.gif)
CIM 模型对象提供访问
![](/icons/88855diaoyong.gif)
功能
![](/icons/88855dou.gif)
这些
![](/icons/88855chengxu.gif)
是以动态连接库
![](/icons/88855de.gif)
形式被 CIM Server
![](/icons/88855diaoyong.gif)
![](/icons/88855dou.gif)
并提供给远端
![](/icons/88855de.gif)
CIM client 使用
![](/icons/88855dou2.gif)
图中
![](/icons/88855de.gif)
黄色部分叫做 CIM client
![](/icons/88855dou.gif)
它是具有 CIM 交互能力
![](/icons/88855de.gif)
客户端
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
可以连接到 CIM server
![](/icons/88855dou.gif)
并通过 CIM provider
![](/icons/88855chengxu.gif)
访问和操作 CIM 模型对象
![](/icons/88855dou2.gif)
灰色部分是 CIM server
![](/icons/88855dou.gif)
这是 CIM 体系
![](/icons/88855de.gif)
核心
![](/icons/88855dou.gif)
对上接口有 WBEM 标准
![](/icons/88855dou.gif)
对下接口有 CMPI
![](/icons/88855dou.gif)
现在已经有很多
![](/icons/88855de.gif)
实现版本如:OpenPegasus, OpenWBEM, WBEM service 和 SFCB 等
![](/icons/88855dou2.gif)
在本例中
![](/icons/88855dou.gif)
我们选择使用 SFCB 作为 CIM server
![](/icons/88855dou.gif)
CIM provider
![](/icons/88855de.gif)
实现接口选择 CMPI
![](/icons/88855dou.gif)
创建 CIM provider 选择使用 CIMPLE
![](/icons/88855dou.gif)
有关更加详细
![](/icons/88855de.gif)
CIMPLE 使用思路方法
![](/icons/88855dou.gif)
我们在此就不详述
![](/icons/88855dou.gif)
有兴趣
![](/icons/88855de.gif)
读者可以参考“基于 CIMPLE 接口
![](/icons/88855de.gif)
CIM Provider
![](/icons/88855de.gif)
实现及其性能测试”
![](/icons/88855yi.gif)
文
![](/icons/88855dou2.gif)
继续我们
![](/icons/88855de.gif)
具体案例
![](/icons/88855dou.gif)
针对 IBM_SoftwareIdentity
![](/icons/88855de.gif)
CIM provider
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
使用 CIMPLE 开发
![](/icons/88855dou.gif)
关键部分代码如下所示:
清单 4. IBM_SoftwareIdentity
![](/icons/88855de.gif)
CIM Provider
![](/icons/88855chengxu.gif)
// Generated by genprov 1.2.0
#
"IBM_SoftwareIdentity_Provider.h"
CIMPLE_NAMESPACE_BEGIN
……
Enum_Instances_Status IBM_SoftwareIdentity_Provider::enum_instances(
const IBM_SoftwareIdentity* model,
Enum_Instances_Handler<IBM_SoftwareIdentity>* handler)
{
IBM_SoftwareIdentity* inst = IBM_SoftwareIdentity::create(true); // 创建
个新
对象
inst->InstanceID.
("My Lotus Notes Instance"); // 设置对象关键字
inst->IBMProductName.
("IBM Lotus Notes"); // 设置子类属性
inst->MajorVersion.
(1); // 设置主版本号
inst->MinorVersion.
(0); // 设置副版本号
inst->RevisionNumber.
(10);
inst->BuildNumber.
(500);
inst->VersionString.
("version 1.0");
Array<String> TOS;
TOS.append("Windows");
TOS.append("Linux");
inst->TargetOperating
s.
(TOS);
inst->Manufacturer.
("IBM");
inst->SerialNumber.
("ADDFI2356R");
handler->handle(inst);
ENUM_INSTANCES_OK;
}
……
/*@END@*/
CIMPLE_NAMESPACE_END
在这个 CIM provider
![](/icons/88855chengxu.gif)
中
![](/icons/88855dou.gif)
我们主要实现了
![](/icons/88855yi.gif)
个思路方法:enum_instances
![](/icons/88855dou2.gif)
当 CIM client 需要枚举出所有 IBM_SoftwareIdentity 对象
![](/icons/88855de.gif)
时候
![](/icons/88855dou.gif)
这个思路方法就会被
![](/icons/88855diaoyong.gif)
![](/icons/88855dou.gif)
返回
![](/icons/88855de.gif)
结果是
![](/icons/88855yi.gif)
个部分属性设置好
![](/icons/88855de.gif)
对象
![](/icons/88855dou2.gif)
代码编写完成后编译成动态连接库
![](/icons/88855de.gif)
格式
![](/icons/88855dou.gif)
放置到 SFCB 指定
![](/icons/88855de.gif)
CIM Provider 库文件目录下面就完成了编码这
![](/icons/88855yi.gif)
步
![](/icons/88855dou2.gif)
此时
![](/icons/88855dou.gif)
SFCB 还不能正确地
![](/icons/88855diaoyong.gif)
我们
![](/icons/88855de.gif)
CIM provider
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
![](/icons/88855yinwei.gif)
SFCB 还不知道这个新添加
![](/icons/88855de.gif)
provider
![](/icons/88855de.gif)
任何信息
![](/icons/88855dou.gif)
所以我们要增加
![](/icons/88855yi.gif)
个 CIM Provider 注册文件
![](/icons/88855dou.gif)
并注册到 CIM server 中
![](/icons/88855dou2.gif)
注册文件如下所示:
清单 5. IBM_SoftwareIdentity
![](/icons/88855de.gif)
注册文件
[IBM_SoftwareIdentity] // CIM provider 操作
目标类
provider: IBM_SoftwareIdentity_Provider // CIM provider
名字
location: dwSoftwareInventoryDemoModule // CIM provider 生成
动态连接库
名字
type: instance // CIM provider
类型
: root/cimv2 // IBM_SoftwareIdentity 类所在
名字空间
#
注:上面
![](/icons/88855de.gif)
注册文件格式
![](/icons/88855dou.gif)
只适用于 SFCB
![](/icons/88855dou.gif)
其它 CIM Server
![](/icons/88855de.gif)
注册文件格式
![](/icons/88855dou.gif)
请读者参考具体规范标准
![](/icons/88855dou2.gif)
在上面文件中
![](/icons/88855dou.gif)
要强调
![](/icons/88855yi.gif)
下 "type"
![](/icons/88855de.gif)
意义
![](/icons/88855dou.gif)
这个属性描述了 CIM provider 所能提供
![](/icons/88855de.gif)
对象访问能力
![](/icons/88855dou.gif)
当类型是 "instance"
![](/icons/88855de.gif)
时候
![](/icons/88855dou.gif)
CIM provider 可以提供
![](/icons/88855yi.gif)
些枚举对象
![](/icons/88855de.gif)
能力;当类型是 "method"
![](/icons/88855de.gif)
时候
![](/icons/88855dou.gif)
它可以提供执行特定思路方法
![](/icons/88855de.gif)
能力;当类型是 "association"
![](/icons/88855de.gif)
时候
![](/icons/88855dou.gif)
它可以提供前后关联
![](/icons/88855de.gif)
能力
![](/icons/88855dou2.gif)
本例中
![](/icons/88855dou.gif)
我们
![](/icons/88855de.gif)
CIM provider
![](/icons/88855chengxu.gif)
唯
![](/icons/88855yi.gif)
![](/icons/88855de.gif)
功能就是提供对象
![](/icons/88855de.gif)
访问能力
![](/icons/88855dou.gif)
所以类型设置为 "instance"
![](/icons/88855dou2.gif)
安装到 CIM Server
通过前面几节
![](/icons/88855de.gif)
工作
![](/icons/88855dou.gif)
我们现在有 3个
![](/icons/88855de.gif)
成果:
MOF 文件:描述了 IBM_SoftwareIdentity 类信息
![](/icons/88855dou2.gif)
CIM provider 库文件:
![](/icons/88855chengxu.gif)
部分
![](/icons/88855dou2.gif)
SFCB 注册文件:把 CIM provider 信息告知 SFCB
![](/icons/88855de.gif)
文件
![](/icons/88855dou2.gif)
最后要做
![](/icons/88855de.gif)
![](/icons/88855dou.gif)
就是如何把这些安装到 SFCB 中去
![](/icons/88855dou2.gif)
下面
![](/icons/88855de.gif)
步骤简要介绍了安装
![](/icons/88855de.gif)
过程
![](/icons/88855dou.gif)
在本例中
![](/icons/88855dou.gif)
我们
![](/icons/88855de.gif)
开发环境是 OpenSuse10.3
![](/icons/88855dou.gif)
SFCB 版本是 1.2.5
![](/icons/88855dou2.gif)
复制 MOF 文件和注册文件到目录 /var/lib/sfcb/stage 下面
运行 SFCB
![](/icons/88855de.gif)
工具 sfcbrepos 把这两个文件编译成 SFCB 可以识别
![](/icons/88855de.gif)
2进制形式
重新启动 SFCB
到现在为止
![](/icons/88855dou.gif)
我们就完成了所有
![](/icons/88855de.gif)
开发步骤
![](/icons/88855dou2.gif)
也就是
![](/icons/88855dou.gif)
完成了
![](/icons/88855yi.gif)
个扩展自 "DSP1023 CIM profile"
![](/icons/88855de.gif)
IBM_SoftwareIdentity 类
![](/icons/88855dou.gif)
其所有操作符合标准
![](/icons/88855de.gif)
CIM/WBEM 接口
![](/icons/88855dou.gif)
可以提供 CIM
![](/icons/88855diaoyong.gif)
者标准
![](/icons/88855de.gif)
访问这个对象
![](/icons/88855de.gif)
能力
![](/icons/88855dou2.gif)
测试和验证
最后
![](/icons/88855dou.gif)
每
![](/icons/88855yi.gif)
个 CIM 开发人员都必须要做
![](/icons/88855de.gif)
事情就是测试和验证
![](/icons/88855dou2.gif)
有多种测试思路方法
![](/icons/88855dou.gif)
比如说编写 CIM 客户端
![](/icons/88855chengxu.gif)
![](/icons/88855dou.gif)
或者使用已有
![](/icons/88855de.gif)
![](/icons/88855yi.gif)
些 CIM 客户端工具软件Software
![](/icons/88855dou2.gif)
在本例中
![](/icons/88855dou.gif)
我们使用开源软件SoftwareEcute CIM Explorer这样
![](/icons/88855yi.gif)
款工具软件Software来进行测试
![](/icons/88855dou2.gif)
图 5. CIM Explorer 登陆界面
![](http://CrazyCoder.cn/WebFiles/200912/6a07a993-f9e3-4b9e-8c12-c3f696f638ce.jpeg)
登陆到 SFCB 的后
![](/icons/88855dou.gif)
进行枚举 IBM_SoftwareIdentity 所有对象
![](/icons/88855de.gif)
操作
![](/icons/88855dou.gif)
结果显示如下:
图 6. IBM_SoftwareIdentity 对象
![](http://CrazyCoder.cn/WebFiles/200912/54e45da6-4616-41a2-b531-4c7e17d8d0f0.jpeg)
查看原图(大图)
从上图可以看到
![](/icons/88855dou.gif)
我们可以得到这样
![](/icons/88855yi.gif)
个 IBM_SoftwareIdentity
![](/icons/88855de.gif)
对象
![](/icons/88855dou.gif)
其属性正是的前在代码中定义好
![](/icons/88855de.gif)
![](/icons/88855dou2.gif)
由此可以知道
![](/icons/88855dou.gif)
我们
![](/icons/88855de.gif)
CIM provider
![](/icons/88855chengxu.gif)
被正确
![](/icons/88855diaoyong.gif)
到了
![](/icons/88855dou2.gif)
整理总结
在信息管理技术领域
![](/icons/88855dou.gif)
如何把要管理
![](/icons/88855de.gif)
对象模型化
![](/icons/88855dou.gif)
是
![](/icons/88855yi.gif)
个首要和基本
![](/icons/88855de.gif)
问题
![](/icons/88855dou.gif)
通用信息模型 CIM 给我们在这方面
![](/icons/88855de.gif)
工作
![](/icons/88855dou.gif)
带来了更加统
![](/icons/88855yi.gif)
![](/icons/88855de.gif)
规范标准
![](/icons/88855dou2.gif)
本文立足基本概念
![](/icons/88855dou.gif)
力求完整地呈现给读者
![](/icons/88855yi.gif)
个简单
![](/icons/88855de.gif)
开发流程
![](/icons/88855dou.gif)
希望能为将要进入相关领域
![](/icons/88855de.gif)
开发人员做
![](/icons/88855yi.gif)
些技术方面
![](/icons/88855de.gif)
铺垫
![](/icons/88855dou2.gif)
本文举例源代码或素材下载