分类: 系统运维
2010-10-23 21:56:38
在本文中,我们将讨论两个主题: IBM Cognos 8.4 中对提示的改进,以及定制的提示控件。
IBM Cognos 8.4 中对提示进行改进的目的是,扩展提示缓存特性,让提示缓存更易于管理。
定制的提示控件的设计目的是,让用户掌握创建自己的提示控件的原理,提供一些有用的示例,比如选项卡式提示界面和随需选择列表。
定制的提示控件已经用 IBM Cognos 8.3 和 IBM Cognos 8.4 测试过了。
本文发表于 2008 North America IBM Cognos Forum 。
IBM Cognos 8.4 在现有的提示缓存特性中增加了两个特性。第一个大大简化了缓存的管理,第二个提供增强的多语种用户支持。
IBM Cognos 8.3 引入了提示缓存,这允许缓存并重用提示查询值。以前控制缓存刷新的方法是,通过使用作业运行报表提示查询来刷新缓存。
客户的反馈意见表明,尽管这个特性确实可以通过重用查询结果提供更好的提示性能,但是使用作业管理提示缓存刷新非常麻烦,这增加了管理员的维护工作量。
因此, IBM Cognos 8.4 简化了提示缓存的管理。为了保证升级兼容性,仍然可以使用作业维护提示缓存。但是,现在在报表属性 Report 选项卡中增加了一个新选项:
在使用这个选项时,提示缓存将由系统自动管理,不需要作业或其他干预
措施。
这个选项使用用户报表的执行驱动提示缓存刷新活动。在执行报表时,系统根据在报表属性中指定的有效期,判断缓存是有效的,还是过期了。如果缓存足够新,就不执行任何操作。如果缓存过期了,就删除缓存的数据并执行提示查询来创建新的缓存。
提示缓存是多语种的,用来填充缓存的查询与用户的内容位置(用来运行报表和查看数据的语言)相关。
在使用动态刷新方法刷新缓存时,使用当前用户的内容语言运行提示查询。只有当后续用户使用不同的语言运行报表时,才会为另一种语言创建缓存。当提示缓存过期时,同时删除所有语言的缓存。
为便于理解,请考虑以下场景和事件:
创建一个没有提示缓存的新报表。设置 Dynamic Prompt Cache 选项,有效期为 7 天。
在创建报表的当天,一位法语用户运行这个报表,这会促发法语提示缓存的创建。这时设置缓存创建日期。
在第二天,另外两位法语用户运行同一个报表。因为法语的提示缓存已经存在了,该缓存适用于所有法语用户。
在第三天,一位德语用户运行这个报表。因为还没有德语的提示缓
存,所以运行提示查询并创建德语的提示缓存。这个操作不影响法语的提示缓存。在第三天,还有新的法语用户运行报表,使用第一天创建的法语缓存。
在第四天到第七天,更多的法语和德语用户运行报表,分别使用各自语言的提示缓存。
在第八天,一位德语用户运行报表。因为在第一天由法语缓存设置了有效期,提示缓存现在超过了 7 天的期限。删除所有语言的提示缓存,尽管德语缓存只存在了 4 天。为了满足德语报表请求,现在创建新的德语缓存。
在以后 6 个月里,一直没有用户运行这个报表。缓存不受影响,因为没有用户操作驱动缓存刷新。
一位英语用户运行报表。缓存(德语)已经过期了,所以删除它并创建英语缓存。
以此类推,根据需要缓存与语言相关的数据。
多语种应用程序的一种有意思的变体是,让多语种用户用单语种数据库运行报表。也就是说,用户希望根据他们的内容位置显示数据,例如数字和日期相应地显示为 $123.45 与 123,45$ 或 1 January 2008 与 janvier 01, 2008 ;但是,数据都是同一种语言的。一个 IBM Cognos 客户(一家大型航空公司)用英语记录所有信息,但是允许用户选择 IBM Cognos 8 用户界面和数据格式化所用的语言。
在这种变体中,为不同的用户内容语言创建提示缓存是没有意义的,因为它们都包含来自单语种数据库的相同数据。
为了满足这个需求, IBM Cognos 8.4 提供一个高级服务器属性,可以用它指定一种在创建所有提示缓存时使用的语言。在服务器管理屏幕上 Cognos Connection 中设置属性 RSVP.PROMPTCACHE.LOCALE=
因为很难演示这个高级服务器属性的效果,这里不提供相关的示例。关于高级服务器属性的更多信息,请参见 IBM Cognos 8.4 管理手册。
报表项目常常在不同的报表中需要相同的 Report Studio 对象,比如提示定义。这可以通过两种方法实现:在报表之间使用报表布局引用,或者使用定制的工具箱对象。因为本文后面讨论的提示方法要使用定制的工具箱对象,本节主要讨论这种方法而不是布局组件引用( Report Studio User Guide 中讨论了布局组件引用)。
定制的工具箱对象仅仅是取自报表的有效 xml 片段。例如,标准 Report Studio 工具箱中的 HTML 对象是下面的 xml 报表规范片段: