Одной из главных стратегий направления Rational является улучшение интеграции между инструментами Rational и другими инструментами. Технология этой стратегии основана на Open Services for Lifecycle Collaboration (OSLC).
Сценарии, которые становятся доступными, полностью контролируются и настраиваются администратором Rational DOORS; он определяет, какие сценарии DXL будут предоставляться через сервисный интерфейс. Администратор может запретить вызов определенных функций, которые могут представлять риск для безопасности, например "runDXL".
Обратите внимание, что некоторые DXL, например виджеты пользовательского интерфейса, вообще не поддерживаются.
Поскольку обнаружение служб защищено протоколом OAuth, пользователи такой функции должны вначале пройти идентификацию по имени и паролю.
Создайте файл 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"
}
Скопируйте файл helloWorld.inc в каталог /addins/services. По умолчанию этот каталог имеет такое расположение: C:\Program Files (x86)\IBM\Rational\DOORS\9.5\lib\dxl\addins\services.
Запустите клиент 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 извлекает значения и преобразует их в отдельные параметры.