Службы OSLC DXL для Rational DOORS

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

Одной из главных стратегий направления Rational является улучшение интеграции между инструментами Rational и другими инструментами. Технология этой стратегии основана на Open Services for Lifecycle Collaboration (OSLC).

Поскольку обнаружение служб OSLC является открытым, разработчики Rational и разработчики других фирм могут добавлять службы, которых на данный момент нет в реализованном стандарте или которые не могут быть включены в стандарт по причине их специфичности, и потому не планируются для включения в будущие версии стандарта. Для поддержки постоянного стремления к расширению в Rational DOORS предусмотрено понятие служб OSLC DXL, чтобы восполнить эти упущения. Интерфейс OSLC RM V2 предоставляет службу, которая позволяет пользователям выполнять сценарии Rational DOORS DXL в HTTP. Эта служба построена по принципу библиотеки сценариев DXL:
  1. Пользователь выполняет поиск необходимого сценария OSLC DXL.
  2. Пользователь вызывает этот сценарий, чтобы упаковать обязательные параметры, в вызове OSLC.
  3. Сценарий выполняется на сервере Interop Server.
  4. Результаты возвращаются назад.

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

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

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

Обычный порядок действий для работы с этой функцией:
  1. Создайте сценарий DXL.
  2. Установите этот сценарий DXL как службу.
  3. Найдите эту службу в каталоге служб.
  4. Вызовите службу.
  5. Получите из ответа возвращаемое значение.

Пример

Создайте файл 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"
}

Скопируйте этот файл в следующий каталог: $DOORSHOME$/addins/services/helloWorld.inc

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

Для того чтобы установить 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" 
}

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

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

Содержимое запроса должно быть аналогично следующему коду:

<?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>

Наиболее важными являются поля doors:arguments. Они содержат все параметры, необходимые для работы сценария. Отсутствие или неправильный порядок параметров может привести к сбою вызова.

Содержимое ответа должно быть аналогично следующему коду:

<?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 извлекает значения и преобразует их в отдельные параметры.


Комментарии