СМ-Консалт
 

Использование встроенных механизмов интеграции IBM Rational ClearCase с нестандартными средствами разработки ПО и встроенными системами

Статьи Управление конфигурациями и изменениями (ALM)

При внедрении систем управления конфигурациями на первых же этапах возникает вопрос интеграции с используемыми средствами разработки. Для наиболее продуктивного применения инструментария версионного хранения последний должен обладать возможностью интеграции со средой разработки, дабы не усложнять процесс разработки возникающими операциями создания новых версий в хранилище. Большинство современных средств разработки программного обеспечения обладает встроенными интерфейсами интеграции, поддерживающими определённый набор инструментов версионного хранения (ClearCase, CVS, PCVS и т.д.). Встатье показывается каким образом можно расширить возможности ClearCase для интеграции с ИС, о существовании которых ренее IBM Rational ClearCase было неизвестно.
Зайдуллин Рустам - ведущий инженер, ТатАСУнефть" ОАО "Татнефть", Новичков Александр, руководитель отдела внедрения и консалтинга, СМ-Консалт
Cтатья опубликована на сайте IBM.

 

Использование встроенных механизмов интеграции IBM Rational ClearCase с нестандартными средствами разработки ПО и встроенными системами

 Зайдуллин Рустам - ведущий инженер, ТатАСУнефть" ОАО "Татнефть", Новичков Александр, руководитель отдела внедрения и консалтинга, СМ-Консалт
Cтатья опубликована на сайте IBM.

 

При внедрении систем управления конфигурациями на первых же этапах возникает вопрос интеграции с используемыми средствами разработки. Для наиболее продуктивного применения инструментария версионного хранения последний должен обладать возможностью интеграции со средой разработки, дабы не усложнять процесс разработки возникающими операциями создания новых версий в хранилище. Большинство современных средств разработки программного обеспечения обладает встроенными интерфейсами интеграции, поддерживающими определённый набор инструментов версионного хранения (ClearCase, CVS, PCVS и т.д.). Сложнее обстоит дело с нестандартными средствами разработки. Для интеграции таких инструментов необходимы возможности разработки уникальных решений в кратчайшие сроки, без отвлечения основных ресурсов от решения задач бизнеса. IBM Rational ClearCase обладает достаточным набором необходимых возможностей – это и встроенный API, открывающий возможности создания полноценных интеграционных решений, и встроенный интерпретатор языка программирования ccperl, служащий платформой для разработки скриптов и дающий практически неограниченные возможности для расширения функционала ClearCase, и, естественно, интерпретатор командной строки cleartool, который, собственно, и выполняет все операции с элементами версионного хранилища, являясь основным инструментом администратора ClearCase. Кроме того, ClearCase обладает такими приятными дополнениями как интерпретаторы clearprompt и cleardlg, посредством команд которых вызываются стандартные GUI-диалоги и разрабатываются собственные. В данной статье мы описываем выполнение интеграции инструмента управления конфигурациями IBM Rational ClearCase со средой разработки отчётности, выполненной в корпоративной информационной системе.

Описание проблемы

В ходе внедрения дисциплины УК мы столкнулись с необходимостью интегрировать инструмент разработки отчётов одной из корпоративных информационных систем с ClearCase. Отчёты представляли собой набор файлов, описывающих строки, формулы расчёта и заголовочный файл. Таким образом, версия отчёта является набором файлов, число которых зависит от состава отчёта. Отчёты редактируются непосредственно в базе данных системы с использованием модуля редакции отчётов, для отладки используется тестовая версия базы данных. До внедрения ClearCase для сохранения промежуточных версий разработчики выгружали исходный код отчёта на свои рабочие станции, создавая структуру каталогов под каждый отчёт, с делением на подкаталоги для версий отчётов. Идентификаторами версий служили пометки о дате релиза, описание версий велось в тетрадях.

Для организации версионного хранения в ClearCase необходимо было разработать интеграционное решение, позволяющее с минимальной затратой времени сохранить версию отчёта в версионном хранилище с присвоением версиям файлов идентификаторов и описания версии и, что самое главное, оперативно восстановить нужную версию. Оптимальным решением, удовлетворяющим выдвинутым условиям, была разработка скриптов для создания и проставления меток на вновь созданные версии, а также последующего поиска версий по метке и вывода их в состояние CheckedOut. Для упрощения вызова скриптов необходимо было разработать диалоговые формы ввода необходимой информации – типы создаваемых меток, их описания, тип метки для поиска версии – и привязать разработанные скрипты к контекстному меню ClearCase.

 

Описание решения

Все скрипты разработаны на встроенном языке ccperl, для обращения к элементам версионного хранилища используется интерпретатор команд cleartool, для выполнения операций с элементами в графическом режиме – cleardlg, для вывода диалоговых форм – clearprompt.

Ниже приводится описание разработанных скриптов и настройки контекстного меню ClearCase.

 

Описание скриптов

Интеграция реализована в виде трёх скриптов, автоматизирующих основные операции сохранения версии отчёта в хранилище и отката к нужной версии:

  • скрипт перевода в состояние CheckedOut определённой версии каталога версионного хранилища вместе с содержимым. Выполняется при необходимости восстановить версию отчёта по названию и описанию метки. При инициации скрипта производится поиск в каталоге всех типов меток, проставленных на элементы каталога и вывод диалогового окна выбора метки из списка всех обнаруженных. Вместе с именами меток выводятся их описания (рисунок 1);

    Рисунок 1
    Рисунок 1

  • скрипт перевода в состояние CheckedIn каталога и всех вложенных элементов с присвоением создаваемой версии метки. Выполняется после сохранения в версионном хранилище новой версии отчёта. Запрос характеристик метки производится в начале выполнения скрипта, при этом в диалоговом окне создания нового типа метки приводятся названия меток, проставленных на прежние версии. Выполняется поиск и внесение под версионное хранение добавленных в новой версии файлов (рисунок 2);

    Рисунок 2
    Рисунок 2

  • скрипт перевода в состояние CheckedOut текущей версии каталога и его содержимого. Выполняется перед сохранением новой версии отчёта в версионном хранилище. При выполнении скрипта вызывается стандартная форма ClearCase для ввода комментария к выполняемой операции с возможностью применения его ко всем выбранным элементам.

Все скрипты привязаны к командам контекстного меню и выводятся только при вызове меню для каталогов в соответствии с их текущим состоянием, т.е. если каталог находится в состоянии CheckedIn, то кроме стандартных пунктов в контекстном меню будут отображены действия перевода в состояние CheckedOut для отображаемой версии и версии по имени метки. Эта настройка выполнена инструментом редактирования контекстного меню.

При создании новой команды в контекстном меню указывается объект, для которого она будет отображаться – каталог, состояние объекта, например, CheckedIn, название команды в меню, текст подсказки к пункту, сама выполняемая команда – путь к файлу скрипта, и служебная информация, например, текущая директория и передаваемый аргумент. На рисунке 3 показано окно ClearCase Context Menu Editor для созданной команды CheckOut версии отчёта.


Рисунок 3. Настройка контекстного меню
Рисунок 3. Настройка контекстного меню

Далее следует более подробное рассмотрение всех скриптов с листингами, комментариями и изображениями выводимых форм.

CheckOut каталога и его содержимого – выведение в состояние CheckedOut каталога и его содержимого. Скрипт выполняется перед выгрузкой из базы данных новой версии отчёта. Так как скрипт использует команды интерпретатора cleardlg, выводимое окно имеет стандартный вид (рисунок 4).


Рисунок 4. Диалоговое окно ClearCase
Рисунок 4. Диалоговое окно ClearCase

Листинг этого скрипта приведён полностью.

Сохраняем в переменной передаваемый параметр – путь к обрабатываемому каталогу:

												$path=@ARGV[0];







Определяем переменную для хранения путей к элементам версионного хранилища:

												$filez="";







Составляем список файлов, содержащихся в каталоге. Для этого используем подпрограмму, обрабатывающую «выхлоп», полученный в результате отработки команды find интерпретатора командной строки cleartool:

												$DoCom="cleartool find \"$path\" -print "; 







DoCommand($DoCom);











Передаём в консоль команду вызова графических диалогов ClearCase для выполнения операции CheckOut:

												$string="cleardlg /checkout $filez ";







system(" $string ");











Далее – процедура обработки «выхлопа», получаемого после выполнения команд в консоли:

												sub DoCommand







{







my $cmd = shift;







my $line;







open(CMD, "$cmd 2>&1 |");







foreach $line (<CMD>)







{







chop $line;







$line=~ tr(/\/)(////);







$temp="$filez \"$line\" ";







$filez=$temp;







};







close CMD;







}# end DoCommand











CheckIn каталога и его содержимого, операции с меткой – в скрипте выполняется запрос параметров создаваемого типа метки, сохранение новой версии отчёта (перевод каталога и его содержимого в состояние CheckedIn) с присвоением новым версиям элементов вновь созданной метки.

При выполнении скрипта у пользователя запрашивается название для метки, которая будет проставлена на сохраняемую версию (рисунок 5)


Рисунок 5. Диалог ввода названия метки
Рисунок 5. Диалог ввода названия метки

и описание для неё (рисунок 6).


Рисунок 6. Диалог ввода описания метки
Рисунок 6. Диалог ввода описания метки

Далее приводим фрагменты скрипта для выполнения ключевых моментов операции.

При запросе имени метки в диалоговом окне выводится список имеющихся меток в каталоге. Формирование этого списка производим следующим образом.

Вызываем команду lsvtree (отображение древа версий – в текстовом формате – текущего каталога). Обработка результата выполнения команды выполняется уже знакомой процедурой:

												$findlbtype="cleartool lsvtree -a \"$path\"";







DoCommand($findlbtype);











Результат – многострочный текст – преображаем в массив для удобства обработки:

												@rezmas=split(/\n/,$rez);







$rez="";











Результат выполнения команды lsvtree – отчёт о версиях элемента хранилища, в котором все названия меток на версии перечислены через запятую и взяты в скобки. По этому признаку выделяем фрагменты отчёта с названиями меток и собираем в одну строку:

												foreach $line (@rezmas) {







$n=index($line, ")");







$m=index($line, "(");







if ($n > 0) {







$line=substr($line,$m+1,$n-1);







chop($line);







$labels=$labels.",".$line;







};







};











В результате получаем переменную $labels, содержащую список всех найденных меток. Последней командой отсекаем впереди идущую запятую:

												$labels=substr($labels,1,length($labels));







Далее описываем формирование диалоговых окон, используемых для ввода характеристик меток.

Непосредственно вывод диалога командой clearprompt (см. рисунок 5). В тексте запроса использована переменная с названиями меток:

												prompt: $string="clearprompt text -outfile labeln -prompt 







\"Введите название метки. Предыдущие: $labels\"";







Для обработки результата работы диалога записываем его в переменную:

												$lab=system(" $string ");







Если в диалоговом окне была нажата кнопка отмены – завершаем работу скрипта:

												if ($lab != 0) {







Win32::MsgBox("Операция прервана пользователем");







exit(1);







};











Если при редактировании отчёта были сформированы новые файлы (это происходит при изменении структуры отчёта и добавлении новых скриптов), необходимо внести их под версионный контроль. Для этого выполняем поиск приватных файлов, определяем тип для создаваемого элемента, и, собственно, создаём из них элемент версионного хранилища. Команда lsprivate выводит список приватных файлов в текущем View текущего версионного хранилища:

												$listprivate="$path cleartool lsprivate";







DoCommand($listprivate);







@filez=split(/\n/,$filez);











Так как lsprivate выводит список приватных файлов по всему хранилищу, необходимо отсеять из найденных файлов те, которые не отвечают следующим условиям: расположены вне каталога обновляемого отчёта и имеют тип файла, отличный от типов файлов отчёта. Тип файла также необходим и при создании нового элемента версионного хранилища:

												foreach $file (@filez) {







if (($file=~".xml")&&($file=~$path)) {







system("cleartool mkelem –nc -nco –eltype xml $file ");







};







if ((($file=~".aqs") || ($file=~".aqs"))&&($file=~$path)) {







system("cleartool mkelem –nc -nco –eltype text_file $file ");







};







};











Получив все нужные данные и поместив в версионное хранилище добавленные в отчёт файлы, выполняем операцию CheckIn для всех файлов в графическом режиме:

												system("cleardlg /checkin /identical $filez ");







После этого проставляем метку на вновь созданные версии элементов:

												system("cleartool find \"$path\" -print -exec 







\"cleartool mklabel $label %CLEARCASE_PN%\"");







CheckOut версии отчёта – выполняется поиск всех типов меток, проставленных на элементы в каталоге, вывод диалога выбора версии (по метке с описанием), выборка версий по типу метки и перевод их в состояние CheckedOut (рисунок 7).


Рисунок 7. Диалог выбора версии
Рисунок 7. Диалог выбора версии

Формирование списка меток элементов каталога мы привели выше, а здесь остановимся на получении описаний меток, которые нужны для большего удобства при определении искомой версии.

Имея список меток каталога, поднимаем описания каждой из них. Для этого формируем массив, каждый элемент которого содержит название одной метки:

												@labels=split(/,/,$labels);







foreach $line (@labels) {











Команда desc выводит информацию по метке, в том числе и её текстовое описание:

												    $descr="cleartool desc lbtype:$line";







DoCommand($descr);







@rezmas2=split(/\n/,$rez);











Так как комментарий к метке начинается со второй строки описания, копируем её в переменную

												    $description=@rezmas2[2];







Заменяем кавычки и запятые на другие символы (кавычки и символы помешают при вызове диалога выбора метки):

												    $description=~ tr/"/>/;







$description=~ tr/,/ /;







$i=length($description);











Отсекаем первые два символа – из-за форматирования отчёта по метке там пробелы:

												    $description=substr($description,2,$i);







Если у метки нет текстового описания – комментария, в переменную попадает информация о принадлежности метки к реплике. Распознаём такие строки по слову master и пишем пустой комментарий:

												    if ($description=~"master") {







$description="";







};











Сохраняем в переменной названия и описания всех меток каталога:

												    $line1=$line.$description;







$rez1="$rez1"."$line1".",";







};











Для вывода диалога выбора из списка (см. рисунок 7) используем команду clearprompt с ключом list:

												prompt: $lab=system("clearprompt list -outfile $filep -items







\"$rez1\" -prompt \"Выберите метку\"");







if ($lab != 0)







{







Win32::MsgBox("Операция прервана пользователем");







exit(1);







};











И, наконец, выполнение CheckOut для выбранной версии отчёта. Выполняем поиск версий элементов с указанной меткой:

												$search="cleartool find \"$path\" -version lbtype($label) -print";







DoCommand($search);







@rezmas=split(/\n/,$rez);











и CheckOut для найденных версий. В этом случае уже не поднимаем графический интерфейс cleardlg, а используем cleartool:

												foreach $version (@rezmas)







{







system("cleartool checkout -c







\"Скрипт интеграции редактора отчётов с ClearCase\"







-version -nwarn \"$version\" ");







};












Заключение

Интеграционное решение выполнено на встроенном языке ccperl, использованы команды интерпретаторов cleartool, cleardlg, clearprompt. Разработанные скрипты размещены на сервере ClearCase в каталоге с общим доступом. Для вызова скриптов настроено контекстное меню.

Весь цикл разработки решения – от описания концепции до передачи в эксплуатацию – занял семь рабочих дней, решение было реализовано одним специалистом.

Это только один из возможных вариантов выполнения интеграции. В нашей практике мы выполняли также интеграцию средства разработки с ClearCase на уровне API, используя библиотеку CAL. Но в этой статье мы описали именно вариант без вмешательства в код системы.

 

Ресурсы СМ-Консалт

 

 

 

 

01.03.2009

Комментарии

Добавить комментарий (анонимные комментарии не публикуются!!!)

ФИО: 
E-mail: 
Тема: 
Комментарий: 
Оценка:   
 
 
 
 
 
Код подтверждения:
   

Новости СМ-Консалт

Мастер-класс для тренеров и руководителей "Работа в аудитории". 1 ступень уже в марте

Обновлено расписание тренингов до марта 2017 года

Бесплатный вебинар 14 декабря в 14 00 по Мск - «Секреты управления ИТ-командой: 10 важных практик, которые сделают команду эффективной»

Новые статьи в библиотеке

Примеры отраслевых решений на основе BIPULSE

Практика реализации модуля интеграции для Rational Software Architect, позволяющего преобразовывать низкоуровневое представление процесса из IBM Rational ClearQuest в UML

Что удивляет в русских менеджерах иностранцев

Разработка ПО с использованием лучших мировых практик и инструментов на Иркутском авиационном заводе

Презентация доклада для IT Global Meetup Санкт-Петербург: "Почему Agile так популярен? Взгляд циника и психолога"

Отчет, презентация и видео доклада для Октябрьской встречи Петербургского клуба менеджеров проектов в IT - SPM Meetup #36

Заказчики и истории успеха

Наши тренинги, семинары, курсы

Дружите с нами на FaceBook

Проверить настройки
Компания
Сделано в СМ-Консалт
Услуги 
Компетенция
  • CMC-TotalTest (скоро)
    уникальная разработка автоматизации функционального тестирования. Альтернатива HP UFT, IBM RFT и Microsoft!
  • CMC-Bisquiter
    автоматизированное тестирование АБС "Бисквит"
  • CMC-Formater
    тестирование печатных и экранных форм
  • CMC-TerminalTest
    тестирование терминальных приложений
  • ProjectTracker
    интеграция ALM и MS Project
  • GanttChart
    модуль управления проектами для IBM Rational ClearQuest и TeamConcert
    Все разработки СМ-Консалт >
  • ИТ-консалтинг
  • Автоматизированное тестирование
  • Ручное тестирование
  • Аутсорсинг тестирования
  • Оптимизация бизнес-процессов
  • Внедрение методологии и инструментов ALM
  • Обучение и коучинг
  • Разработка ПО
  • Интеграция
ООО СМ-Консалт (СМК), 2004-2016.
Карта сайта