| 免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 8 Business Intelligence Developer Edition V8.4 试用版 |
|---|
| 下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。 |
本文介绍如何通过几种不同的方法从一个 IBM Cognos Real-time Monitoring(或 IBM Cognos Now!)自动备份/导出元数据,以及如何计划这些备份。
除此之外,本文还附带一个自定义工具,该工具可用于 Java 和 VB Script 实现。
本文附带的工具适用于以下发布和产品:
- IBM Cognos Real-time Monitoring 10.1
- IBM Cognos Now! 4.6.x 设备
- IBM Cognos Now! 4.5.x 设备
- IBM Cognos Now! 4.5.x for OEM
本文假定 IBM Cognos Real-time Monitoring(或 IBM Cognos Now!)已安装且运行完全正常。
IBM Cognos Real-time Monitoring 提供一个支持按需手动导出元数据的特性。但是,总是没有一种开箱即用的方法来自动导出和计划元数据对象的备份。这是一个重要的需求,尤其对于 IBM Cognos Real-time Monitoring 开发环境而言;在这种开发环境中,高级用户根据实时业务 KPI(Key Performance Indicator)信息需求逐渐构建元数据模型。
如果缺少元数据对象备份计划,就很有可能丢失对元数据模型的所有更改(即,新元数据对象的创建、对现有元数据对象的更改、等等)。所有用户都可能丢失最后一次备份之后的任何修改。
开箱即用元数据备份特性是一个手动过程,需要用户执行以下操作:
- 作为管理用户登录 IBM Cognos Real-time Monitoring Workbench Application。
- 单击 Administration Console 选项卡。
- 单击 Import/Export Metadata 按钮 。
- 要导出完整的元数据模型,将 Operation 选项设置为 “Export Metadata to JAR file (download)”,将 Export Options 选项设置为 “Full export”,单击 OK。这些选择是默认值。
- 将 Metadata JAR 文件保存到磁盘上的一个位置。
可以通过以下几种方法从客户机或服务器本身备份来自 IBM Cognos Real-time Monitoring 服务器的元数据对象或将其导出到磁盘上:
- 使用本文包含的自定义 Auto Export 工具。
- 使用 IBM Cognos Real-time Monitoring SDK 附带的 cqupload.jar。
本文包含这个自定义工具的两个版本。一个 Java 和一个 VB 脚本实现分别命名为 AutoExport.java 和 AutoExport.vbs。这些工具首先获取一个有效的 sessionId 到指定 IBM Cognos Real-time Monitoring 服务器,然后将这个元数据作为一个指定 JAR 文件导出到磁盘上。
Auto Export 工具利用 IBM Cognos Real-time Monitoring 上可用的 /AdminAction/ExportMetadataJar 资源,以便将这个完整的元数据对象模型导出到指定位置。
调用 AdminAction/ExportMetadataJar 资源之前,需要作为一个属于 Real-time Monitoring 服务器上的 System Administrator 角色的用户登录(获取一个有效的会话 ID)。
获取一个有效的会话 ID
可以通过向 /Controller/UserAction/Login 资源发送一个请求来获取 IBM Cognos Real-time Monitoring 服务器的一个有效会话 ID,该资源包含一个遵守以下示例规范的 XML 文档:
<login> <user>USERNAME</user> <password>PASSWORD</password> </login> |
收到响应后,可以从 XML 文档提取会话 ID,如下面的代码段所示:
HttpURLConnection conn = null;
try {
URL url = new URL(serverURL + "/Controller/UserAction/Login");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-type","text/xml");
conn.setDoOutput(true);
//Writing HTTP Request XML
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write("<login><user>" + userName + "</user><password>"
+ password + "</password></login>");
wr.flush();
conn.connect();
wr.close();
// Reading the HTTP response to extract sessionId
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(conn.getInputStream());
Element resp = (Element) doc.getElementsByTagName("loginResp").item(0);
String sessionId = resp.getAttribute("sessionid");
}catch(Exception e){
System.out.println("Error while retrieving session ID." + e);
}
finally{
conn.disconnect();
} |
准备请求 XML 以导出元数据
获取一个有效会话 ID 并将其保存在 ObiSessionId 请求头部中后,可以发送一个 XML 请求到 IBM Cognos Real-time Monitoring 服务器上的 /AdminAction/ExportMetadataJar 资源。HTTP 响应然后将元数据作为一个 JAR 文件返回。
注意,这个特定 HTTP 请求的请求 XML 架构根据服务器版本号而不同:Cognos Now!(即 v4.5.x、v4.6.x)与 IBM Cognos Real-time Monitoring(即 V10.1)。
这个工具利用 /AdminAction/VersionInfo 服务器资源来提取服务器版本(或架构版本),如下面的代码段所示:
public String getVersion() throws Exception{
HttpURLConnection conn = null;
try{
conn = getConnection(serverURL + "/Controller/AdminAction/VersionInfo");
conn.connect();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(conn.getInputStream());
// Retrieve & return the value of the <xsdVersion> element from the response XML
Element resp = (Element) doc.getElementsByTagName("xsdVersion").item(0);
return resp.getTextContent();
}catch(Exception e){
throw new Exception(e);
}
finally{
conn.disconnect();
}
} |
针对 IBM Cognos Now! 4.5.x 和 4.6.x 的示例请求
<ns1:performImportExport xsi:schemaLocation='http://obi.cognos.com/4' xmlns:ns1='http://obi.cognos.com/4' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> <ns1:isExport>true</ns1:isExport> <ns1:pathname>CompleteFilePath</ns1:pathname> <ns1:applyState>false</ns1:applyState> <ns1:clientRequest>true</ns1:clientRequest> <ns1:jarFileRequest>true</ns1:jarFileRequest> </ns1:performImportExport> |
针对 IBM Real-time Monitoring 10.1 的示例请求
<ns1:performImportExport xsi:schemaLocation='http://obi.cognos.com/5' xmlns:ns1='http://obi.cognos.com/5' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> <ns1:isExport>true</ns1:isExport> <ns1:pathname>CompleteFilePath</ns1:pathname> <ns1:applyState>false</ns1:applyState> <ns1:clientRequest>true</ns1:clientRequest> <ns1:jarFileRequest>true</ns1:jarFileRequest>> <ns1:exportOptions> <ns1:fullExport>true</ns1:fullExport> </ns1:exportOptions> </ns1:performImportExport> |
备份元数据并将其导出到一个 JAR 文件
确定服务器版本后,就可以构建适当的请求并将其发送到 /AdminAction/ExportMetaDataJar 资源。返回的 HTTP 响应包含一个可以写入磁盘的 JAR 文件。
if(xsdVersion.equals("4"))
reqXML = reqXmlCnow;
else
reqXML = reqXmlRtm;
HttpURLConnection conn = null;
String boundary = "----------ThIs_Is_tHe_bouNdaRY_$";
try{
URL url = new URL(serverURL +
"/Controller/AdminAction/ExportMetaDataJar");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("ObiSessionId", sessionId);
conn.setRequestProperty("Content-type",
"multipart/form-data; boundary=" + boundary);
conn.setDoOutput(true);
StringBuilder Message = new StringBuilder();
Message.append("--");
Message.append(boundary);
Message.append("\n");
Message.append("Content-Disposition: form-data;
name=\"performImportExport\"\n\n");
Message.append(reqXML);
Message.append("\n");
Message.append("--");
Message.append(boundary);
Message.append("--\n");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(Message.toString());
wr.flush();
conn.connect();
wr.close();
// Writing the HTTP Response to the JAR File
InputStream inputStream = conn.getInputStream();
FileOutputStream out =
new FileOutputStream(new File(“/tmp/autoExport.jar”));
int read=0;
byte[] bytes = new byte[1024];
while((read = inputStream.read(bytes))!= -1)
out.write(bytes, 0, read);
inputStream.close();
out.flush();
out.close();
}catch(Exception e){
throw new Exception(e);
}
finally{
conn.disconnect();
}
|
这个 Auto Export 工具的两个实现都预期以下参数:
- <ServerURL> 包含 web 上下文的 IBM Cognos Real-time Monitoring 实例的 URL,例如 http://rtmserver/cognos/realtime、http://cnow-appliance/cognos/now
- <TargetFile> 元数据需要导出到的目标 FAR 文件的完整路径
- <Username> 拥有导出元数据权限的用户的用户名
- <Password> 用户密码
Java 样例调用
java AutoExport http://cnow.server.com/cognos/now /tmp/MyExport.jar CognosNowAdmin manager java AutoExport http://rtmserver:81/cognos/realtime C:/MyExport.jar rtmadmin manager |
VB 脚本样例调用
AutoExport.vbs http://cnow.server.com/cognos/now C:/testExport.jar CognosNowAdmin manager AutoExport.vbs http://rtmserver:99/cognos/realtime C:/temp/testExport.jar rtmadmin manager |
还可以使用 IBM Cognos Real-time Monitoring SDK 中包含的 cqupload.jar 导出元数据。根据不同的产品发布/产品和服务,这个 JAR 文件可能位于以下位置:
- 对于 IBM Cognos Now! Appliance,此工具可能位于
/srv/cognos-now/utilities文件夹中。 - 对于 IBM Cognos Now! OEM 发布,此工具可能位于安装媒体上的
LAVA_xxxxxxx_OEM/CognosLAVA/CQUpload文件夹中。 - 对于 IBM Cognos Real-time Monitoring,此工具可能位于
..../ibm/cognos/c10_64/realtime/sdk/java/lib下。
除 IBM Cognos Real-time Monitoring 服务器 URL、用户名和密码外,cqupload 工具还预期一个导出命令 XML,它包含导出模式和位置的相关配置/细节。
语法:
prompt# java -jar <...\cqupload.jar> -u <username> -p <password> -s <server-url> <full path of exportcommand.xml>
示例:
prompt# java -jar cqupload.jar -u rtmadmin -p manager -s http://rtm-server/cognos/realtime exportcommand.xml
这些导出命令 XML 文件与第 5 节(注:“准备请求 XML 以导出元数据” 小节)中提到的请求 XML 文件没有任何区别。
本文包含了两个示例:exportcommand-cnow.xml 和 exportcommand-rtm.xml,分别对应 IBM Cognos Now! 和 IBM Cognos Real-time Monitoring。它们将元数据导出为一个名为 Export_<datetimestamp>.jar 的 JAR 文件,存储在 XML 中指定的位置。
提示:要将元数据导出到服务器上的目录,只需将到处命令 XML 中的 <jarFileRequest> 元素值设置为 false。
本文讨论的两个工具,即 Auto Export 和 cqupload,都可以轻松计划为从任何 IBM Cognos Real-time Monitoring 或 IBM Cognos Now! 服务器运行自动元数据备份。Auto Export VB 脚本实现可以配置为在 Microsoft Windows 上运行的计划任务,而这个自定义工具的 Java 版本和 cqupload 工具则可以配置为跨多种操作系统的计划执行。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| 本文包含的 ZIP 文件 | Utilities.zip | 7KB | HTTP |
学习
- 通过 developerWorks Information Management 专区:在这里可以学到更多关于 Information Management 的知识。还可以找到技术文档、how-to 文章、培训、下载、产品信息等。
- 通过 Information Management 专区 Cognos BI 专题,了解更多有关 Cognos BI 专题的产品和技术资源。
- 通过 商业智能入门以及 Cognos 产品介绍,了解 商业智能的基本概念和相关技术,并介绍了 Cognos 商业智能相关的产品。
- 关于 Cognos 的安装,请参照 Cognos 8 BI Server 在 Linux 上的安装及与 IHS、WAS、DB2 的配置,学习 Cognos 详细的安装过程。
- 通过访问 IBM Cognos 8 Business Intelligence,学习 IBM Cognos 8 Business Intelligence 产品的相关知识。
- 随时关注 developerWorks 技术活动 和 网络广播。
获得产品和技术
- 在线试用 IBM Cognos BI 试用版软件,了解 IBM Cognos BI 商业智能解决方案的最新版本新功能。
- 下载 IBM Cognos Express V9 试用版软件,了解 IBM 专为中型企业定制的集成商业智能和计划解决方案。
- 下载免费的 IBM Information Management 试用版软件,了解 IBM Information Management 软件的最新版本和特性。
讨论
- 参与 developerWorks
博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
Jason Bernstein 是 IBM Cognos Real-time Monitoring 和 IBM Cognos Now! 产品软件开发主管。他于 2007 年 Cognos 收购 Celequest 时加入 Cognos,2008 年 IBM 收购 Cognos 时加入 IBM。在 Celequest 时,他是一名高级软件工程师,负责设计和实现现在的 Cognos Real-time Monitoring,这是一个使用 HTML、Javascript 和 Ajax 技术的新型富 Internet 应用程序。他擅长脚本技术,包括 Javascript 脚本、Linux Shell 脚本和 VBScript。他拥有一个关于交互式 Internet 触摸屏网亭的专利。Jason 居住在旧金山市湾区。