Перенос поддерева отчетов между пользовательскими базами данных ClearQuest

Аннотация
       В задачу администрирования дерева отчетов в пользовательской базе данных довольно часто входит элемент клонирования отчетов. Например, потребовалось для нескольких проектов иметь идентичные поддеревья отчетов. Существует несколько способов клонирования отчетов, каждый из которых применим при некоторых ограничениях.
Способы клонирования
  • Клонирование отчетов в одной пользовательской базе не составляет труда - отчеты копируются в раздел "Personal Queries", настраиваются, а затем вновь копируются в раздел "Public Queries".
  • Клонирование отчетов посредством механизма "Export" - требуемые для копирования отчеты экспортируются в файлы, а затем на другой пользовательской базе данных импортируются и перенастраиваются. Данный способ пригоден только при небольшом количестве копируемых отчетов.
  • Клонирование отчетов при помощи утилиты "bkt_tool" - самый мощный механизм, предназначенный для копирования большого числа отчетов.
    Применение утилиты bkt_tool
       Использование стандартной утилиты ClearQuest для выгрузки дерева отчетов является оптимальным вариантом при операциях с большим числом отчетов. Однако, возникает серьезная проблема при импорте в другую пользовательскую базу данных части из исходного числа отчетов. Стандартных механизмов для такой операции нет, поэтому необходимо воспользоваться дополнительным сценарием перенумерования файлов отчетов (см. ниже).
    Экспорт файлов отчетов:

    bkt_tool -e -b ESavitsky -dbset CMS.INIKEV.INITS -us ESavitsky -P ******* -db NPPM e:\temp\cq\buckets

    -e - экспорт
    -b - имя пользователя, чьи персональные отчеты будут выгружены
    Импорт файлов отчетов:

    bkt_tool -i -dbset CMS.INIKEV.INITS -us ESavitsky -P ******* -db SAMPL e:\temp\cq\buckets

    -i - импорт
    Сценарий перенумеровки файлов
       Проблема с импортом только части отчетов заключается в нумерации файлов отчетов (формат - bkt####.dat). Импортироваться будут только файлы, начиная с нулевого индекса - bkt0000.dat.

    1. Необходимо отредактировать файл "config.dat" - удалить ссылки на лишние отчеты, предварительно запомнив номера первой и последней строк выделяемой части отчетов;
    2. Запустить сценарий перенумерации, который удалит лишние файлы отчетов и перенумерует оставшиеся файлы в порядке сквозной нумерации начиная с 0.
     
    ======================================== renumber.vbs ===========================================
    ' Параметры запуска: 
    '  1 - путь к каталогу с файлами отчетов, 
    '  2 - номер первой строки (по файлу config.dat) выделяемой части за вычетом единицы (нумерация с нуля), 
    '  3 - номер последней строки (по файлу config.dat) выделяемой части за вычетом единицы.
    '
    '
    Set objArgs = WScript.Arguments
    
    If objArgs.Count < 3 Then
    	WScript.Echo("parameters: <buckets path> <first bucket> <last bucket>")
    	WScript.Quit(-1)
    End If
    
    ' путь к файлам
    '
    szPath = objArgs(0)
    firstBucket = CInt(objArgs(1))
    lastBucket = CInt(objArgs(2))
    
    set fso = WScript.CreateObject("Scripting.FileSystemObject")
    
    set fls = fso.getFolder(szPath).Files
    
    ' удаляем лишние файлы
    for each file in fls
    
    	if UCase(Mid(file.name, 1, 3)) = "BKT" then
    		' номер текущего файла
    		curindex = CInt(mid(file.name, 4, 4))
    
    		' определим минимальный номер
    		if curindex < firstBucket or curindex > lastBucket then
    			file.Delete		      
    		end if
    	end if
    next
    
    index = 0
    curindex = 0
    
    ' перенумеруем файлы
    for i=1 to fls.count
    
    	minindex = 1000
    	Set chfile = Nothing
    
    	for each file in fls
    
    		if UCase(Mid(file.name, 1, 3)) = "BKT" then
    			' номер текущего файла
    			curindex = CInt(mid(file.name, 4, 4))
    
    			' определим минимальный номер
    			if curindex < minindex and curindex >= index then
    				minindex = curindex
    				Set chfile = file
    			end if
    		end if
    	next
    	
    	If not chfile is Nothing then
    		if UCase(Mid(chfile.name, 1, 3)) = "BKT" then
    
    			if Mid(chfile.name, 4, 4) <> Format(index) then
    				chfile.name = "bkt" & Format(index) & ".dat"
    			end if
    	
    			index = index + 1
    		end if
    	end if
    next
    
    WScript.Echo "All .bkt-files have been renumbered successfully !"
    
    Function Format(num)
    	if num < 10 then
    		Format = "000" & CStr(num)
    	elseif num < 100 then
    		Format = "00" & CStr(num)
    	elseif num < 1000 then
    		Format = "0" & CStr(num)
    	else
    		Format = CStr(num)
    	end if
    End Function
    
    =================================================================================================
    

     Evgeny Savitsky © 2002-2003