Как предварительно заполнить поля создания OSLC-ресурса в IBM Rational Change

Источник: IBM

Базовая спецификация Open Services for Lifecycle Collaboration (OSLC) утверждает, что поставщики сервисов могут поддерживать прием запроса POST, содержащего определение ресурса запроса на изменение для URI диалога создания ресурса. Он извлекает URI встроенной страницы, которая будет использоваться. Нираджа Вишванатхапура предоставляет пример исходного кода, демонстрирующий предварительное заполнение диалога создания ресурса.

Open Services for Lifecycle Collaboration (OSLC) представляет собой набор стандартов или правил предоставления инструментальными средствами разработки ПО своих сервисов и совместного использования своих данных с другими инструментальными средствами.

Если инструментальное средство разработки предоставляет сервис через OSLC-интерфейс, его называют OSLC-поставщиком. Инструментальное средство, предоставляющее интерфейс для использования сервисов, называется потребителем. Спецификации OSLC определяют правила поведения OSLC-поставщика и потребителя. Одна из этих спецификаций описывает предварительное заполнение диалоговых окон создания ресурсов.

Например, IBM Rational Change 5.3 выступает как OSLC-поставщик, предоставляя множество сервисов. Одним из таких сервисов является создание запросов на изменение через OSLC-интерфейс. IBM Rational Quality Manager 3.0 может использовать (потреблять) этот сервис, связывая запрос на изменение с контрольным тестом.

Для интеграции любых инструментальных средств разработки ПО в OSLC-режиме средство, являющееся поставщиком, должно зарегистрироваться у потребителя, чтобы две программы могли выполнить обмен данными, и наоборот. В нашем примере Rational Quality Manager регистрирует Rational Change как поставщика OSLC-сервисов, а Rational Change подтверждает регистрацию. После OSLC-интеграции этих инструментальных средств OSLC-потребитель может использовать сервисы, предоставляемые поставщиком. Следовательно, теперь Rational Quality Manager может создавать и потреблять запросы на изменение в Rational Change и связывать их с любым из своих контрольных тестов. Для создания или выбора существующего запроса на изменение Rational Change должен предоставить диалоговое окно, в котором потребители смогут создавать или выбирать необходимый ресурс. В OSLC есть другая спецификация, называемая Delegated UI, согласно которой поставщик должен предоставлять интерфейс для создания и выбора ресурсов пользователем.

При каждом создании потребителем запроса на изменение через своего поставщика потребитель должен заполнить все поля в интерфейсе создания ресурса. Разработчики могут захотеть предварительно заполнить некоторые поля поставщика в диалоговом окне создания ресурса, чтобы не нужно было каждый раз вводить значение, или добавить что-либо к имеющемуся значению. Базовая OSLC-спецификация определяет для поставщиков такое поведение по предварительному заполнению диалоговых окон создания ресурсов. Rational Change реализует эту спецификацию, позволяя предварительно заполнять диалоговые окна создания запроса на изменение.

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

Для предварительного заполнения диалогового окна создания ресурса OSLC-потребитель должен отправить свои данные в запросе POST по URI диалогового окна. Поставщик должен ответить состоянием 201 (Created - создан) с заголовком ответа Location и значением, которое является URI запроса только что созданной формы.

Поставщики сервисов могут не хранить форму создания ресурса. Следовательно, метод GET по этим временным URI ответа может возвратить результат позже с кодами состояния 404 (Not found - не найдено) или 3xx (Redirect - перенаправление).

Приведенный ниже фрагмент кода отправляет запрос POST в диалоговое окно создания ресурса в Rational Change для предварительного заполнения атрибута Summary. После получения ответа от поставщика код выводит расположение реального предварительно заполненного диалогового окна создания ресурса.

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

//импорт необходимых классов для создания запроса POST
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;

/**
* Этот класс будет отправлять запрос POST OSLC-поставщику в диалоговое окно  
* создания ресурса для предварительного заполнения диалогового окна, а из  
* встроенного ответа он выведет расположение реального предварительно 
* заполненного диалогового окна создания ресурса.
*/
public class PostToPreFillDialog
{

/**
* Предварительное заполнение атрибута Summary в диалоговом окне создания ресурса
*/
public static void postData(String url)
{

PostMethod post = new PostMethod(url);
try {
    post.setRequestHeader("Content-Type", "application/x-oslc-cm-change-request+xml");

    //создать данные, которые нужно отправить в диалоговое окно создания ресурса. 
    //Они должны быть в формате, установленном выше в "Content-Type". 
    //Содержит имена и значения атрибутов для заполнения.
    //Я добавила атрибут 'Summary' и его значение.

    String data = "<oslc_cm:ChangeRequest xmlns:dcterms='http://purl.org/dc/terms/' 
    xmlns:foaf='http://xmlns.com/foaf/0.1/' 
        xmlns:oslc='http://open-services.net/ns/core#'
    xmlns:oslc_cm='http://open-services.net/xmlns/cm/1.0/' 
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
    <Summary>This is my synopsis!</Summary>
    </oslc_cm:ChangeRequest>";

    StringRequestEntity requestEntity = new StringRequestEntity(data);
    post.setRequestEntity(requestEntity);
			
    //указать учетные данные пользователя в заголовке запроса. 
    //Rational Changeожидает, что это будет установлено в специальном cookie-файле. 
    //Эту информацию можно получить из cookie-файла браузера.
    post.setRequestHeader("Cookie", "JSESSIONID=16rzss8fdtk3b; 
        ChangeLoginCookie_8080_context=
            user1%7c%5c%5myserver%5database%5testdb%7ccentral%7c
    User%7ctrue");
    
    //отправить запрос POST
    HttpClient httpclient = new HttpClient();
    int result = httpclient.executeMethod(post);
    
    //Заголовок ответа содержит расположение предварительно заполненного диалога,
    System.out.print(post.getResponseHeader("Location"));
    }
    catch (HttpException e) { e.printStackTrace();  }
    catch (IOException e) {  e.printStackTrace();    }
    finally { post.releaseConnection();    }
}

public static void main(String args[])
{
try
    {
    //вызвать метод postData с URL диалога создания ресурса. URL диалога 
    //создания ресурса может быть получен из каталога OSLC-сервисов поставщика.
    postData
        ("http://Myserver:8080/context/oslc/db/<database_guid>/role/User/dialog/
    START_HERE2entered");			
    } 
    catch (Exception e) { e.printStackTrace();	}
}
}

Загрузка

Описание

Имя

Размер

Метод загрузки

Пример кода pre-fill-creation-dialog-rational-change.zip 2 КБ HTTP 


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