Службы OSLC DXL для Rational DOORS для версии 9.6.0

Rational DOORS реализация спецификации OSLC Requirements Management (RM) версии 2 содержит службу, которую можно использовать для запуска сценариев DXL Rational DOORS с помощью протокола HTTP.

Rational использует технологию на основе Open Services for Lifecycle Collaboration (OSLC) для интеграции с инструментами Rational и других компаний. Rational DOORS дополняет стандартные возможности OSLC за счет поддержки службы DXL OSLC, позволяющей запускать сценарии DXL Rational DOORS по протоколу HTTP. Служба построена по принципу библиотеки сценариев DXL. Процесс применения службы выглядит следующим образом:

1.      Пользователь выполняет поиск необходимого сценария OSLC DXL.

2.      Пользователь вызывает сценарий, чтобы упаковать обязательные параметры, в вызове OSLC. Если вы отправляете запрос GET на получение URI службы DXL, то ответ содержит справочную информацию о сценарии, которую предоставил автор. Если передается запрос PUT с необязательными параметрами на получение URI службы DXL, то вызывается служба.

3.      Сценарий выполняется на сервере взаимодействия.

4.      Результаты возвращаются.

Сценарии управляются и настраиваются администратором Rational DOORS, который определяет, какие сценарии DXL будут предоставляться через интерфейс служб. Администратор может запретить вызов определенных функций, которые могут представлять риск для безопасности, например "runDXL".

Отдельные DXL, например виджеты пользовательского интерфейса, вообще не поддерживаются.

Поскольку обнаружение служб защищено протоколом OAuth, для работы со службой DXL OSLC необходимо пройти идентификацию, указав имя пользователя и пароль.

Обычная процедура применения службы DXL OSLC выглядит следующим образом:

1.      Создайте сценарий DXL.

2.      Установите сценарий DXL как службу.

3.      Найдите службу в каталоге служб.

4.      Вызовите службу.

5.      Получите из ответа возвращаемое значение.

Пример:

1.      Создайте файл DXL helloWorld.inc, содержащий следующий код:

 
void getHelloString(string language)
{
        string hello = null
        if ("French" == language)
        {
                hello = "Bonjour le monde"
        }
        else if ("Finnish" == language)
        {
               hello = "Hei maailma"
        }
        else if ("Latin" == language)
        {
               hello = "Ave mundi"
        }
        else
        {
               hello = "Hello world"
        }
        setDxlServiceResult hello
   
        print hello "\n"
}
 

2.      Скопируйте файл helloWorld.inc в каталог /addins/services. Расположение каталога по умолчанию: C:\Program Files (x86)\IBM\Rational\DOORS\9.версия\lib\dxl\addins\services.

3.      Откройте клиент Rational DOORS и войдите в систему от имени администратора.

4.      Для того чтобы установить DXL, откройте окно DXL и введите следующий код DXL. Создается служба с именем helloWorld.

 
OSLCDXLService os = null
string err = null
string dxlCode = "#include <addins/services/helloWorld.inc>\n" 
err = addOrUpdateOSLCDXLService("helloWorld", "Hello world in several languages", dxlCode, "getHelloString") 
if (!null err)
{
        print err

else 
{
        print "Installed Service\n"
}
 

5.      Вызовите службу. URI аналогичен следующему примеру: http://servername:portnumber/dwa/rm/dxl/helloWorld

6.       В заголовках accept и content-type укажите следующую запись: application/rdf+xml

7.      Содержимое запроса должно выглядеть следующим образом:


<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#
xmlns:doors="http://jazz.net/doors/xmlns/prod/jazz/doors/2.0/">
  <doors:Arguments>
  <doors:arguments>English</doors:arguments>
  </doors:Arguments>
</rdf:RDF>
 

8.      Для передачи аргументов службе применяется элемент <doors:arguments>. Введите строку, описывающую обязательные аргументы, в тексте элемента. Служба DXL преобразует строку в аргументы, необходимые для работы служб DXL. В предыдущем примере показан один параметр English, который передается функции getHelloString. Если функция DXL ожидает два параметра, то запрос выглядит следующим образом:

 
<doors:Arguments>
<doors:arguments>English,French</doors:arguments>
</doors:Arguments>
 

*Принимающая служба DXL разбивает разделенный запятыми список в отдельные строки: English и French.

9.      Нестроковые аргументы необходимо преобразовать в соответствующие типы с помощью DXL. Например, если аргумент является целым числом, то с помощью операции intOf можно преобразовать строку, извлеченную из разделенного запятыми списка в целое число. Затем значение можно передать методу.

Содержимое ответа:

 
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#
xmlns:doors="http://jazz.net/doors/xmlns/prod/jazz/doors/2.0/">
  <doors:DxlServiceResult rdf:about="http://my-desktop:8080/dwa/rm/dxl/helloWorld>
  <doors:result>Hello world</doors:result>
  </doors:DxlServiceResult>
</rdf:RDF>
 

Служба не выполняет маршализацию. Аргументы указываются в строковом формате, из которого сценарий DXL извлекает значения и преобразует их в отдельные параметры.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=38769