IBM Cognos 最佳实践: 在 IBM Cognos Real-time Monitoring 中计划一个元数据备份

文档性质:技巧或技术;产品:IBM Cognos Real-time Monitoring,IBM Cognos Now!;领域:开发

本文介绍如何通过几种不同的方法从一个 IBM Cognos Real-time Monitoring(或 IBM Cognos Now!)自动备份/导出元数据,以及如何计划这些备份。

Jason Bernstein, 软件开发主管, IBM

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 居住在旧金山市湾区。



Prakash Dewan, 系统软件工程师, IBM

Prakash Dewan 是位于印度 Pune 的 IBM 软件研究所的 IBM Cognos 工程团队的一名成员。除了使用 Rational Functional Tester 进行自动化测试之外,他还从事产品的各种特性和功能的验证和确认。Prakash 具有计算机应用软件的硕士学位,并在开发自动化框架方面有很深的技能。他在高级测试主题的培训方面也具有丰富的经验,并贡献了一些知识库的文章。



2011 年 4 月 21 日

免费下载: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)信息需求逐渐构建元数据模型。

如果缺少元数据对象备份计划,就很有可能丢失对元数据模型的所有更改(即,新元数据对象的创建、对现有元数据对象的更改、等等)。所有用户都可能丢失最后一次备份之后的任何修改。


手动导出元数据

开箱即用元数据备份特性是一个手动过程,需要用户执行以下操作:

  1. 作为管理用户登录 IBM Cognos Real-time Monitoring Workbench Application。
  2. 单击 Administration Console 选项卡。
    Administration Console 选项卡
  3. 单击 Import/Export Metadata 按钮 。
    Import Export 按钮
  4. 要导出完整的元数据模型,将 Operation 选项设置为 “Export Metadata to JAR file (download)”,将 Export Options 选项设置为 “Full export”,单击 OK。这些选择是默认值。
    Import 和 Export 对话框
  5. 将 Metadata JAR 文件保存到磁盘上的一个位置。

自动导出元数据

可以通过以下几种方法从客户机或服务器本身备份来自 IBM Cognos Real-time Monitoring 服务器的元数据对象或将其导出到磁盘上:

  1. 使用本文包含的自定义 Auto Export 工具。
  2. 使用 IBM Cognos Real-time Monitoring SDK 附带的 cqupload.jar。

自定义工具:Auto Export

本文包含这个自定义工具的两个版本。一个 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

这个 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

使用 cqupload.jar 导出元数据

还可以使用 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.xmlexportcommand-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.zip7KB

参考资料

学习

获得产品和技术

讨论

  • 参与 developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=649232
ArticleTitle=IBM Cognos 最佳实践: 在 IBM Cognos Real-time Monitoring 中计划一个元数据备份
publish-date=04212011