CQ7.0.0.0中令人恼火的BUG
上一篇 /
下一篇 2009-12-22 23:54:27
/ 个人分类:ClearQuest
[CQ]CQ7.0.0.0中令人恼火的BUG
CQ7.0.0.0是CQ进行较大改版后的第一版,其中Eclipse客户端也是第一次出现,因此存在一些BUG是难免的。如果是一些小BUG,那就不在此说了。这里要说的是一些令CQ二次开发的人恼火的BUG(希望其他人进行CQ的二次开发时可以参考一下):
**判断记录类型是否存在的EntityExist方法有BUG,总是返回True(IBM官网上证实此BUG)
此方法毫无疑问是非常有用的,但是却存在BUG。不过还好的是,这个可以通过自己封装一个函数来达到相同目的。但是前期确定此BUG花费了一些时间。CQ中自带的VBS编辑器实在是太弱了,因此比较难调试。所以最常使用的方式就是查看代码,碰到问题首先是怀疑自己的代码有问题,最后才怀疑到CQ提供的API上。
**当用全局变量(Session对象的NameValue)传递数组(Array)时,会报错,确定为CQ7.0.0.0的BUG(IBM官网上证实此BUG),错误信息类似于下面信息:
实体的指定挂钩“DelItems”失败,错误消息为:
失败状况:!(var.vt & (VT_ARRAY | VT_BYREF))
位置:ClearQuest Core:adcodepage.cpp:1124
CQ中的全局变量传递数组(Array)时,会报错。另外,关于全局变量传递对象的方法,CQ的帮助文档中写错了。帮助文档中写的是[Set currentSession.NameValue "name",obj],经过实验,发现如果按帮助文档中那样写,首先语法就是错的,编译通过不了。试验后,发现传递对象也跟传递一般变量一样的写法就可以了,即[currentSession.NameValue "name",obj]。经实验发现传递一般的对象没问题,但是如果传递的是“Entity”对象,则在给传递的对象包含的字段赋值时没有效果。
**SetFieldValue在Eclipse客户端下,有时无效(如果下拉框是Reference类型,且选项是经过代码过虑的,如果手动事先选择了一个值,这时再用SetFieldValue在Eclipse客户端就无效了。在Windows端下是有效的。)
这个问题应该是Eclipse客户端不完善造成的吧。但是现象有些怪异。
**查询进行排序的字段名居然要是小写,如以下,我写成“Name”时,有时会报错。(注,记录类型此字段的名称是“name”,但是别的地方也没有说大小写敏感哦。)
Set qfDefs = objEntity.QueryFieldDefs
Set idfield = qfDefs.Item("name")
这个问题可能是CQ后台在获取记录类型的字段名(非数据库字段)时,没有进行大小写处理的原因吧。不过这个BUG很是烦人,目前碰到的基本都是大小写不敏感,而突然来一个大小写敏感,“害人不浅”哦。
**GetFieldRequiredness 此方法有BUG,如果是只读时会返回2,其实应该返回3.(IBM官网上证实此BUG)
因为此BUG,导致一些特殊应用上要添加多点的代码,而且,将来要改权限时,也会多涉及到一些内容。
**“去除”按钮如果加上Hook脚本,在Eclipse客户端下,点击此按钮则没有效果;如果是在Windows客户端下点击此按钮则正常(有效果)。如果不加Hook脚本,则在Eclipse和Windows客户端下都有效果。
这个问题应该是Eclipse客户端不完善造成的吧。这IBM是怎么测试的呢?
**在Eclipse端和Windows端的批量操作的处理方式是不一样的,因此结果也是不一样的。
CQ默认支持的批量操作是把进行批量操作的每条数据中要修改的字段都改成与选中记录的第一条记录一样,未修改的字段保持不变。但是对于子表形式的字段,不同客户端对于批量操作的处理方式是不一样的。在Eclipse客户端下,不管是增加还是删除选中的记录中的第一条记录子表字段中的一个值或多个值,则选中的其他记录的相应子表字段原有数据都被清空,并改成跟选中的记录中的第一条记录一样的值(不管这值是新增加的还是原有的)。在Windows客户端下,如果是增加选中的记录中的第一条记录子表字段中的一个值或多个值,则选中的其他记录的相应子表字段也增加此相同值(第一条记录原有的值除外),子表字段原有数据保持不变。在Windows客户端下,如果是删除选中的记录中的第一条记录子表字段中的一个值或多个值,则选中的其他记录的相应子表字段也删除此相同值,没有相同值的,则保持不变。
**另外,进行CQ的辅助工具开发时,外部调用OADEntity对象的EditEntity方法却是两个参数,但即使都填上也不能使用;而OAdSession对象的EditEntity方法却是正常的。怀疑IBM编写外部调用API时,直接拷贝OAdSession对象的EditEntity方法到OADEntity对象的EditEntity方法,修改时没全改?
首发:http://bbs.5etesting.com/ucenter_home/space.php?uid=217&do=blog&id=355
收藏
举报
TAG:
Bug
ClearQuest
Clearquest
Session