我想做一些高级的速度查询、比较和计算,然后将结果显示在标准实时报告页面图表等中。
在这个例子中,我想将版本号最后一位低于某个版本号的缺陷与高于某个版本号的所有缺陷分开。像这样,我可以看到哪些缺陷在最新的测试候选版本及以下版本中已修复,哪些缺陷未修复,因为它们是在测试版本构建后包含的。
我创建了一个名为 Build 的页面参数,并用 1.3.5.15789 填充它
然后我创建了一个页面脚本来查找相关缺陷的 id:
#set($projId="my id")
#set($proj = $trackerService.getTrackerProject($projId))
#set($release = $pageParameters.Release.singleValue().id )
#set($q = "type:defect AND release.KEY:$release AND status:resolved AND resolution:done")
#set($Reqs= $proj.queryWorkItems($q, "~severity"))
#set($partsBuild=$pageParameters.Build.value.split("[.]"))
#set($majorBuild = $math.toInteger( $listTool.get($partsBuild,0)))
#set($minorBuild = $math.toInteger( $listTool.get($partsBuild,1)))
#set($patchBuild = $math.toInteger( $listTool.get($partsBuild,2)))
#set($buildBuild = $math.toInteger( $listTool.get($partsBuild,3)))
#set($defectsWaiting =" dummy ")
#set($defectsReady = " dummy ")
#set($numWaiting=0)
#set($numReady=0)
#foreach ($defect in $Reqs)
#set($fixedIn= $defect.getValue("fixedin"))
#set($partsFixedIn = $fixedIn.split("[.]"))
#set($majorFixed = $math.toInteger( $listTool.get($partsFixedIn,0)))
#set($minorFixed = $math.toInteger( $listTool.get($partsFixedIn,1)))
#set($patchFixed = $math.toInteger( $listTool.get($partsFixedIn,2)))
#set($buildFixed = $math.toInteger( $listTool.get($partsFixedIn,3)))
#if( $listTool.size($partsFixedIn)<4 || $listTool.get($partsFixedIn,3) == "X" || $listTool.get($partsFixedIn,3) == "x" || $listTool.get($partsFixedIn,3) == "")
##set($x = $defectsReady.add($defect))
#set($defectsReady="$defectsReady $defect.id")
#set($numReady=$numReady+1)
#else
#if($majorBuild < $majorFixed)
##set($x = $defectsWaiting.add($defect))
#set($defectsWaiting="$defectsWaiting $defect.id")
#set($numWaiting=$numWaiting+1)
#else
#if($minorBuild < $minorFixed)
#set($defectsWaiting="$defectsWaiting $defect.id")
#set($numWaiting=$numWaiting+1)
##set($x = $defectsWaiting.add($defect))
#else
#if($patchBuild < $patchFixed)
##set($x = $defectsWaiting.add($defect))
#set($defectsWaiting="$defectsWaiting $defect.id")
#set($numWaiting=$numWaiting+1)
#else
#if($buildBuild < $buildFixed)
##set($x = $defectsWaiting.add($defect))
#set($defectsWaiting="$defectsWaiting $defect.id")
#set($numWaiting=$numWaiting+1)
#else
##set($x = $defectsReady.add($defect))
#set($defectsReady="$defectsReady $defect.id")
#set($numReady=$numReady+1)
#end
#end
#end
#end
#end
#end
ready: $numReady
waiting: $numWaiting
$!scriptedPageParameters.put("defectsReady", $factory.string("defectsReady").value($defectsReady).build())
$!scriptedPageParameters.put("defectsWaiting", $factory.string("defectsWaiting").value($defectsWaiting).build())
这将添加两个额外的页面参数“defectsReady”和“defectsWaiting”。
在小部件中,我将查询类型设置为“Lucene + Velocity”,并将查询设置为
id:($pageParameters.defectsWaiting.value)
永远不会找到初始虚拟值,但会创建一个完整的查询,以防找不到 id。