yeshaolin 发表于 2012-7-2 15:59:19

QC10.0 Workflow 中编写SCRIPT添加defect

求助:
最近使用workflow编写项目的特定事件。
目前希望在更改defect某个状态时,可以拷贝当前的defect为一个新的Defect,敢为各位大侠,这样的脚本应如何编写

wower1985 发表于 2012-7-2 17:33:57

本帖最后由 wower1985 于 2012-7-2 17:40 编辑

我明天有时间研究一下。。。。。。下班了

提供思路两种思路:1、触发状态时,取当前bug各个字段值,直接往数据库中插一条新的。
2、触发状态时,取当前bug各个字段值,new新bug,赋值,提交。(模拟操作过程)
都要查查QC开放指南。。。。。。。楼主可自行研究。

yeshaolin 发表于 2012-7-3 15:07:38

非常感谢wower1985
我在网上找了一段代码:但试了以后没有效果。
Bug.post环节会卡很久,但无法new出新的defect, 请高人指点下 多谢了!
例子如下:
Dim QCConnection
Set QCConnection = QCUtil.QCConnection
if QCConnection.Connectedthen
       msgbox("connect successfully")
end if

'Get the IBugFactory
Set BugFactory = TDConnection.BugFactory

'Add a new empty bug
Set Bug = BugFactory.AddItem (Nothing)

'fill the bug with relevant parameters
Bug.Status = "New"
Bug.Summary = "Connecting to TD"
Bug.Priority = "4-Very High" ' depends on the DB
Bug.AssignedTo = "admin" ' user that must exist in the DB's users list
Bug.DetectedBy = "admin" ' user that must exist in the DB's users list

'Post the bug to DB ( commit )
Bug.Post

wower1985 发表于 2012-7-3 17:13:29

你写的这个可能可以,但是完全搬到你这来可能就运行不通过了,具体原因不想找了,我写的:


Sub Defects_Bug_FieldChange(FieldName)
On Error Resume Next
   if Bug_Fields.Field("BG_STATUS").IsModified then
      Set Bug = BugFactory.AddItem (Nothing)
      Bug.Status = "New"
      Bug.Status = "已关闭"
      Bug.Summary = "测试测试测试测试"
      Bug.Priority = "3-中"
      Bug.AssignedTo = "test"
      Bug.DetectedBy = "test"         
      Bug.Post      
      Set Bug=nothing
   end if
On Error GoTo 0
End Sub

这个我是能成功添加的,关于取bug的值,楼主自己搞,取附件。。。困难。。
注释:有人先new TDconnection,再实例化bugFactory,再实例化bug,事实是这个样子,但是这是别人在其他地方用的,在QC脚本编辑器里面,事实上,BugFactory对象已经实例化了,直接用就行,那用得着new来new去的。'Set BugFactory = TDConnection.BugFactory等等步骤全部去掉。
尝试过直接往bug表里面插数据,那样会导致再新建bug的时候报错。。。。。原因是bugID重复了,看来还是别直接插表了。。。

yeshaolin 发表于 2012-7-4 10:18:44

如您的帮忙,我已经可以正常post了。
(我这边的版本是QC10.0,数据库是ORACLE,不存在ID重复的问题)
总结整个过程,发现几个现象:
1.BugFactory.AddItem (Nothing)一执行,数据库就会自动添加一条带ID的BUG空记录。
2.Bug.post的过程,如果属性比较多,也就是有较多的内容要更新到数据库,则会卡住,有可能导致post失败(我这里测试是25个字段)。猜测这应该更SERVER端设置的超时有关系。
3.试过您这边提到的SQL的方式,问题同上,字段多了一样卡住,另外定位BUG_ID 很不方便,同时SQL语句繁琐、编写也很容易出错。
最后,衷心的感谢您的帮忙,谢谢!

yeshaolin 发表于 2012-7-4 17:14:23

再次请教一下wower1985
请问如何通过脚本实现 DEFECT与DEFECT间的link?

wower1985 发表于 2012-7-6 15:16:50

本帖最后由 wower1985 于 2012-7-6 15:18 编辑

回复 6# yeshaolin


    不太清楚你想怎么link,是想像实验室模块里面的 链接到缺陷的功能?这个好像有困难,不是不可能,QC的API很开放,理论上能实现很多自己想要的功能。。。。建议让你们的开发人员研究下,他们有写东西,领悟得快点。
页: [1]
查看完整版本: QC10.0 Workflow 中编写SCRIPT添加defect