UML软件工程组织

如何在ClearQuest中建立多语言模式库
刘慎锋 , IBM CSDL Rational Team软件工程师

 IBM Rational ClearQuest支持建立多语言的模式库。通过设置不同的代码页,使数据库可以接受多语言的字符,从而实现ClearQuest的本地化部署和应用。

 在ClearQuest的客户端访问ClearQuest数据库的时候,ClearQuest会检查并控制哪些从客户端输入的字符可以被后台的数据库接受,哪些后台数据库中的字符能够被在当前的客户端正确显示。在多语言的使用环境下,ClearQuest的客户端可能运行在不同语言的操作系统上,对应的代码页也不同。在这种情况下,只有在各个代码页里通用的字符才能被ClearQuest接受。
本文将向您介绍ClearQuest对多语言模式的支持功能,并通过简体中文和繁体中文为例,阐述建立多语言模式库的具体操作。

一、ClearQuest模式库的代码页

在ClearQuest 2003.06.15版本中,ClearQuest支持以多种常用语言的代码页作为模式库(schema repository)的代码页(codepage),如:简体中文,繁体中文,德文,法文,日文,韩文,等等。

在ClearQuest的三层架构模型中,必须保证从前台的ClearQuest客户端到后台的数据库的代码页都相同,才能成功地对一个模式库及其用户数据库进行操作。一个模式库和它所带的所有用户数据库(userdb)可以被统称为一个数据库集合(dbset),在一个数据库集合中,各个数据库的代码页必须一致。而设定代码页的操作也是以数据库集合为单位的。

通常在设定数据库集合的代码页时候,ClearQuest会检查要设定的代码页是否能被数据库集合中所有模式库及用户数据库的后台数据库完全接受。如有不能被接受的字符,则代码页设定的过程就会失败。这样就保证了数据不会因为接收到了不被支持的字符而被损坏。

所以,首先就是在为模式库及其用户数据库建立后台数据库的时候选择正确的数据库代码页。下表列出了为不同的数据库集合语言在建立不同的数据库的时候应为该后台数据库指定的代码页。
 

 用户可以在新建模式库的时候指定代码页,或者更改一个已有的数据库集合的代码页。

用户可以在图形界面的管理工具Maintenance Tool中选择模式库的代码页,或者通过命令行工具installutil来指定一个数据库集合的代码页。下面我们将分别说明。

回页首

二、在Maintenance Tool中设定代码页

通过Maintenance Tool的图形界面来设定模式库的优点是比较方便。通过菜单选项,在创建模式库的时候指定代码页,或者更改一个已存在的模式库的代码页。缺点则在于它只能转换受支持的代码页。

下面以简体中文为例进行说明。

1、在Maintenance Tool中创建一个简体中文模式库

在本例中,我们将通过创建一个新的简体中文模式库MySCHRepo1(假设后台的数据库是DB2),来演示如何在创建模式库的时候指定代码页。以下是操作步骤:

第一步,在简体中文视窗操作系统下,打开Rational ClearQuest Maintenance Tool。

第二步,选择菜单项Schema Repository->Create,然后输入数据库信息,点"下一步"



  第三步,在输入数据代码页的下拉框里,可以看到两个选项。第一个20127 (US-ASCII) 是在所有语言平台下都会出现的。而第二个选项则是和ClearQuest所在的操作系统的代码页相同的。在这里,因为操作系统是简体中文视窗操作系统,所以第二个选项是936 (ANSI/OEM - 简体中文 GBK)。我们选择第二个选项,点"下一步"。



 第四步,在接下来的步骤中,用户可以依照提示选择是否创建样本数据库。所创建的样本数据库与模式库的代码页是一致的,因而不需要再单独选择。


最后,在生成模式库的报告中,会显示模式库中的主数据库和样本数据库的代码页被设置成了936。



 要注意的是,后台的数据库的代码页必须是GBK或GBK的超集,否则创建模式库的过程会报告如下图错误,说后台数据库不支持GBK字符,创建过程失败。



 2、更改一个已有的模式库的代码页到简体中文

在本例中,我们将介绍如何在Maintenance Tool中更改一个已有的模式库的代码页。

假设现有一个模式库MySCHRepo2,它在创建时被指定为ASCII代码页。

如果我们此时试图通过ClearQuest客户端向其中输入中文字符,则会因被检测到有不被当前模式库的代码页所支持的字符而失败,并返回如下图的错误信息:



 我们可以通过以下的操作将它的代码页转换到简体中文。

第一步,在Maintenance Tool中,在连接MySCHRepo2上点右键,在弹出菜单里选Change Code Page (更改代码页)。也可以选中该连接后,从主菜单上选则Schema Repository->Change Code Page。


第二步,按提示输入该模式库的管理员的用户名和密码后,就可以在下拉框里重新选择代码页了。


同样,它也需要后台的数据库的代码页必须是GBK或GBK的超集,否则创建模式库的过程会报告错误。

现在,设定了代码页为简体中文的模式库和它所带的用户数据库就可以接收简体中文的字符了。如下图:



  返回首页

三、通过installutil来指定代码页

installutil是ClearQuest中一个功能强大的命令行管理工具。

通过命令行installutil的方式来设定代码页更加灵活,并能实现一些在Maintenance Tool中不能实现的功能。

要注意的是,通过installutil来进行代码页的操作时,操作者必须具有该模式库的管理员的权限。

下表列出了installutil中与代码页相关的命令:


 1、使用installutil查询和转换一个模式库的代码页

下面用一个简体中文模式库的例子来说明installutil的用法。假设现有一个模式库myrepo,通过在命令行执行lscodepage命令,我们发现它当前的代码页是ASCII。

installutil lscodepage -dbset myrepo admin password

返回的信息如下:

*********************************************************
Starting test lscodepage
*********************************************************

Code page of myrepo: 20127 (US-ASCII)
Code page of client: 936 (ANSI/OEM - 简体中文 GBK)

*********************************************************
Exit code 0 for test lscodepage
*********************************************************

由于用户需要向数据库中输入简体中文的信息记录,所以我们决定要将myrepo的代码页转换成简体中文。我们可以通过以下方式转换。

在安装了ClearQuest管理工具的简体中文视窗操作系统中,从命令行运行下面的命令:

installutil setdbcodepagetoplatformcodepage -dbset myrepo admin password

下面的返回信息说明操作已经成功,数据库集合中的主数据库和所有的用户数据库的代码页都被转换:

*********************************************************
Starting test setdbcodepagetoplatformcodepage
*********************************************************

Validating that database MASTR supports code page 936 (ANSI/OEM - 简体中文 GBK
)...
Validating that database SAMPL supports code page 936 (ANSI/OEM - 简体中文 GBK
)...
Successfully validated all databases.
Note: this command does not guarantee that all of the text in
this dbset is compatible with this code page setting. Please
refer to the ClearQuest Release Notes for more information.
Successfully set the code page to: 936 (ANSI/OEM - 简体中文 GBK).

*********************************************************
Exit code 0 for test setdbcodepagetoplatformcodepage
*********************************************************

再次运行lscodepage命令可以看到myrepo的代码页已经被改变成为简体中文:

*********************************************************
Starting test lscodepage
*********************************************************

Code page of myrepo: 936 (ANSI/OEM - 简体中文 GBK)
Code page of client: 936 (ANSI/OEM - 简体中文 GBK)

*********************************************************
Exit code 0 for test lscodepage
*********************************************************

使用setdbcodepagetoascii命令,则可以将指定的模式库的代码页转换回ASCII,从而限定其只能够接收ASCII的字符。

installutil setdbcodepagetoascii -dbset myrepo admin password

这样,当用户试图输入非ASCII的字符时,ClearQuest会拒绝接收并返回错误信息。

这就是一个通过installutil命令将模式库的代码页在ASCII和简体中文间转换的例子。

2、使用installutil实现向一个不支持的代码页的转换

即便是一个在ClearQuest的release notes里未受支持的代码页,我们依然可以将其设定到一个数据库集合上,使该数据库集合能够接收该代码页中的字符。

 前面提到过,使用installutil命令甚至可以实现一些Maintenance Tool所不能支持的功能,其中之一就是实现向一个未支持的代码页的转。当然,前提是ClearQuest客户端和后台数据库的代码页一致。

下面通过一个转换繁体中文数据库集合的例子来演示说明:在一个繁体中文的视窗操作系统中,我们试图从Maintenance Tool中直接创建一个繁体中文的模式库,如下图:

在选择代码页的下拉框里除了第一项20127 (US-ASCII)之外,还可以看到第二项950 (ANSI/OEM - Traditional Chinese Big5)的选项,它是从当前的操作系统中自动检测出来的。但是,当我们选择第二项,试图为模式库指定繁体中文代码页的时候,我们会得到一个错误信息,说所指定的是一个未受支持的数据代码页。如下图:



 因此,在创建模式库的时候,我们只能先选择ASCII代码页。

然后,我们通过installutil命令来转换这个模式库的代码页到繁体中文。我们先试着运行以下的命令:

installutil setdbcodepagetoplatformcodepage -dbset myrepo admin password

依然会得到一个错误信息,说这是一个未支持的数据代码页。而在这个信息中,它给出了一个提示,即我们可以使用-force参数来向未支持的代码页转换。

*********************************************************
Starting test setdbcodepagetoplatformcodepage
*********************************************************

Validating that database MASTR supports code page 950 (ANSI/OEM - Traditional
Chinese Big5)...
Successfully validated all databases.
You have specified an unsupported data code page "950 (ANSI/OEM - Traditional
Chinese Big5)".
Please refer to ClearQuest release notes for list of supported code pages
OR
Use -force option while using the installutil command to set the code page.(The
use of -force option is highly discouraged.)

*********************************************************
Exit code 1 for test setdbcodepagetoplatformcodepage
*********************************************************

于是,我们在命令中加上-force参数:

installutil setdbcodepagetoplatformcodepage -dbset myrepo -force admin password


  返回信息显示转换成功:

*********************************************************
Starting test setdbcodepagetoplatformcodepage
*********************************************************

Validating that database MASTR supports code page 950 (ANSI/OEM - Traditional
Chinese Big5)...
Successfully validated all databases.
Warning: You have set the data code page to an unsupported data code page "950
(ANSI/OEM - Traditional Chinese Big5)".
Please refer to ClearQuest release notes for list of supported code pages.
Note: this command does not guarantee that all of the text in
this dbset is compatible with this code page setting. Please
refer to the ClearQuest Release Notes for more information.
Successfully set the code page to: 950 (ANSI/OEM - Traditional Chinese Big5).

*********************************************************
Exit code 0 for test setdbcodepagetoplatformcodepage
*********************************************************

我们再次运行lscodepage命令来确认,可以看到myrepo的代码页已经是繁体中文了:

installutil lscodepage -dbset myrepo admin password

*********************************************************
Starting test lscodepage
*********************************************************

Code page of myrepo: 950 (ANSI/OEM - Traditional Chinese Big5)
Code page of client: 950 (ANSI/OEM - Traditional Chinese Big5)

*********************************************************
Exit code 0 for test lscodepage
*********************************************************


  这样,我们就通过installutil的命令,将模式库的代码页设定成为了繁体中文。

3、使用installutil setdbcodepagetonochecking取消代码页的检查

使用installutil中的setdbcodepagetonochecking命令,可以取消一个模式库中对代码页的检查。在一些特殊的情况下(比如后台数据库的代码页是UTF-8),这个命令可以使用户更加灵活地在多语言环境下使用ClearQuest。

它的语法如下:

installutil setdbcodepagetonochecking [-dbset dbset_name] clearquest_login clearquest_password

使用这个命令必须十分的谨慎!因为它将停止ClearQuest对所指定的模式库在进行数据处理时的字符合法性检查。这样,一旦有模式库的后台数据库的代码页不支持的字符被输入,则模式库中的数据则面临着被破坏的风险。

回页首

总结

本文讲向您介绍ClearQuest对多语言的代码页的支持功能,并以简体中文和繁体中文为例,描述了通过图形管理工具Maintenance Tool和命令行工具installutil来设定模式库的代码页的具体操作,希望能对读者有所帮助。

免责说明

本文发表的话题仅为介绍性内容,并非代表 IBM 的立场、策略和观点。本文档所介绍的信息仅仅限于本文的环境。本文档不提供任何类型的包括显式或隐含的担保,不对任何(但不限于)收入或利润的损失或其它间接的、特殊的、偶然的、必然的损失负责,使用者将自行承担由于使用本文档所造成的各类经济损失和法律责任,本文作者、IBM以及发表本文的站点不负相关责任。相关技术细节,请咨询IBM公司、操作系统服务提供商。

参考资料

IBM Rational ClearQuest Introduction

IBM Rational ClearQuest Administrator's Guide

关于作者

刘慎锋,IBM CSDL Rational Team软件工程师,曾参与过多个项目的开发与测试工作,熟悉ClearQuest。联系方式:liushenf@cn.ibm.com


版权所有:UML软件工程组织