Rational использует технологию на основе Open Services for Lifecycle Collaboration (OSLC) для повышения эффективности интеграции с инструментами Rational и других компаний. Поиск служб OSLC является расширяемым. Таким образом, разработчики Rational и разработчики других фирм могут добавлять службы, которых на данный момент нет в реализованном стандарте или которые не могут быть включены в текущую или будущую версии по причине их специализированности.
В Rational DOORS реализация спецификации OSLC Requirements Management (RM) версии 2 содержит API, который можно использовать для запуска сценариев DXL Rational DOORS с помощью протоколов HTTP и HTTPS. Этот API расширяет возможности интеграций обеспечивая безопасный доступ к данным Rational DOORS и управление ими. Он основан на концепции библиотеки сценариев DXL. Администраторы могут добавлять, изменять и удалять сценарии DXL с помощью пользовательского интерфейса Службы DXL OSLC.
Сценарии управляются и настраиваются администратором Rational DOORS, который определяет, какие сценарии DXL будут доступны через интерфейс служб. Администратор может запретить вызов определенных функций, которые могут представлять риск для безопасности, например "runDXL". Отдельные DXL, например виджеты пользовательского интерфейса, не поддерживаются.
Поскольку обнаружение служб защищено протоколом OAuth, для работы со службой DXL OSLC необходимо пройти идентификацию, указав имя пользователя и пароль.
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"
}
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"
}
<?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>
<doors:arguments>English,French</doors:arguments>
</doors:Arguments>
Принимающая служба DXL разбивает разделенный запятыми
список в отдельные строки: English и
French.<?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 анализирует и извлекает значения из строки перед их преобразованием в требуемые отдельные параметры.