Разработка Android-приложений с использованием InfoSphere Business Glossary REST API

Решение IBM® InfoSphere® Business Glossary позволяет пользователям создавать словари и системы классификации уровня предприятия, а также управлять и обмениваться ими. В состав InfoSphere Business Glossary входит интерфейс RESTAPI, позволяющий создавать собственные приложения в зависимости от поставленных задач и, таким образом, упрощающий работу с содержимым глоссариев. Интерфейс REST API обновляется с каждой новой версией InfoSphere Business Glossary. В этой статье представлены пошаговые инструкции по разработке динамического Android-приложения, использующего IBM InfoSphere Business Glossary REST API. Это приложение позволяет пользователям находить термины, получать подробные сведения о них, а также связываться с ответственным лицом с помощью встроенных телефонных функций Android-устройства и установленных на нем почтовых приложений. Мы надеемся, что информация, полученная в процессе чтения этой статьи и создания тестового приложения, вдохновит пользователей InfoSphere Business Glossary на использование REST API и создание своих собственных приложений.

Бенни Халберштадт, старший разработчик, IBM

Benny Halberstadt PhotoБенни Халберштадт (Benny Halberstadt) – старший разработчик инструментария IBM InfoSphere Governance Tools. Последние 7 лет занимается продуктами InfoSphere Information Server и InfoSphere Business Glossary. Обладает большим опытом разработки продуктов как для IBM, так и для других компаний.



Нэнси Наварро, консультант по разработке документации, IBM

Nancy NavarroНэнси Наварро (Nancy Navarro) – консультант по разработке документации IBM. Последние 5 лет занимается продуктами InfoSphere Information Server и InfoSphere Business Glossary. Обладает большим опытом разработки продуктов как для IBM, так и для других компаний.



06.11.2013

Краткий обзор

Решение IBM InfoSphere Business Glossary позволяет пользователям создавать словари и системы классификации уровня предприятия, а также управлять и обмениваться ими. InfoSphere Business Glossary предоставляет в распоряжение разработчиков богатый набор функций с помощью API-интерфейса, использующего службу на основе REST (Representational State Transfer – передача состояния представления). REST – это стиль построения архитектуры для разработки Web-сервисов, позволяющий разработчикам, знакомым на базовом уровне с технологиями Web 2.0, быстро создавать приложения.

В этой статье представлены пошаговые инструкции по разработке Android-приложения, которое использует интерфейс IBM InfoSphere Business Glossary REST API для доставки корпоративного словаря на Android-устройство. Мы создадим простое приложение, позволяющее быстро находить и изменять бизнес-словарь предприятия. При этом словарь не будет храниться на Android-устройстве; вместо этого с помощью REST API к нему будут выполняться динамические обращения по требованию.

Интерфейс Business Glossary REST API является компонентом продукта IBM InfoSphere Information Server и обладает полной технической поддержкой. Android-приложение, которое мы создадим в этой статье, построено на базе REST API и операционной системы Android, однако официальная поддержка IBM на него не распространяется. При разработке тестового приложения были использованы InfoSphere Business Glossary версии 9.1 и операционная система Android версии 2.3.

Исходный код и исполняемый файл тестового приложения вы можете загрузить по ссылкам, представленным в конце статьи.


Предварительные требования

Эта статья рассчитана на разработчиков приложений с базовым уровнем знаний XML, REST и операционной системы Android. Для развертывания тестового приложения вам потребуется устройство под управлением ОС Android. В процессе развертывания мы использовали модуль Android Development Tools (ADT) интегрированной среды разработки Eclipse. Модуль ADT и среда разработки Eclipse необходимы для работы тестового приложения. Дополнительную информацию о модуле ADT вы найдете в разделе Ресурсы.


Сценарии использования

Ниже представлены два примера, демонстрирующих, как можно использовать мобильное приложение InfoSphere Business Glossary.

  • Сотрудник службы сбыта Лоррейн, выехавшая к клиенту, получает по служебной электронной почте сообщение, содержащее фразу Account Accruement. Лоррейн не слишком знакома с финансовыми терминами, поэтому ей необходимо выяснить, что принято понимать под этим термином в ее компании. С помощью Android-приложения InfoSphere Business Glossary она находит этот термин в словаре и выясняет, что он в себя включает и что означает.
  • Том, являющийся экспертом в области финансов, просматривает бизнес-глоссарий на своем Android-устройстве, ожидая посадку на рейс в аэропорту, и обнаруживает ошибку в определении термина Accounting Period. Он исправляет определение термина в реальном времени.

Тестовое приложение, которое мы создадим в этой статье, подходит для использования в первом примере.

На рисунке 1 изображено тестовое Android-приложение, в котором пользователь просматривает подробную информацию для термина Account Accruement.

Рисунок 1. Простое Android-приложение InfoSphere Business Glossary
Простое Android-приложение InfoSphere Business Glossary

На рисунке мы видим следующее: значение термина, его аббревиатуру и статус (Accepted – утвержден, т. е. является актуальным, а не устаревшим или не прошедшим проверку), а также имя сотрудника, отвечающего за этот термин. Имя ответственного сотрудника является гиперссылкой: щелкнув по ней, пользователь может просмотреть подробную контактную информацию.


Интерфейс InfoSphere Business Glossary REST API

Интерфейс Business Glossary REST API позволяет клиентским приложениям считывать и добавлять содержимое в бизнес-глоссарии. REST был выбран в качестве API-интерфейса по той причине, что он обладает рядом преимуществ по сравнению с другими распределенными технологиями. Самое важное преимущество заключается в том, что REST потребляет мало ресурсов и поддерживает взаимодействие между различными платформами. Содержимое глоссариев представлено в виде ресурсов API-интерфейса. Обращения к этим ресурсам выполняются при помощи унифицированных идентификаторов (URI). Эти URI-идентификаторы содержатся в XML-документах, которые определены в хранящихся на сервере XML-схемах.

Ресурсы API-интерфейса

Ресурсы, доступ к которым можно получить с помощью Business Glossary REST API, разделяются на две основные группы:

  • Набор объектов. Эта группа ресурсов содержит подробную информацию об объектах Business Glossary, таких как категории, термины, ответственные сотрудники, пользовательские атрибуты и дополнительные ресурсы. Все эти объекты обрабатываются API-функцией Read. Категории, термины и пользовательские атрибуты также обрабатываются API-функцией Write, которая также может создавать, изменять и удалять данные.
  • Набор операций. Эта группа содержит простые базовые функции для использования в клиентских приложениях, например:
    • Автозаполнение – данная функция позволяет выбирать из словаря готовые термины по мере набора символов.
    • Поиск в любом месте (Anywhere Search) – алгоритм, работающий так же, как одноименный алгоритм в IBM InfoSphere Business Glossary Anywhere.
    • Поиск – эта функция позволяет выполнять поиск в глоссарии по заданному шаблону. Пользователь может управлять возможностями и классами поиска, а также сортировкой результатов.

Полное описание групп ресурсов вы можете найти в документации InfoSphere Business Glossary REST API (см. раздел Ресурсы).

Транзакции API-интерфейса

Транзакции API-интерфейса состоят из HTTP-запросов и ответов. Различные операции требуют наличия в запросе различных HTTP-методов. Комбинации URI-идентификаторов и HTTP-методов определяют, какие операции будут выполняться в том или ином случае. Интерфейс REST содержит следующие HTTP-методы:

  • POST – создание ресурса.
  • GET – чтение ресурса.
  • PUT – обновление ресурса.
  • DELETE – удаление ресурса.

Вызов функций REST из Android

Существует множество способов вызова функций REST из Android-приложений. В листинге 1 приведен пример, содержащий основной метод вызова функции REST GET. Вызывающая сторона сообщает URL-адрес, а в ответ возвращается DOM-объект (Document Object Model – объектная модель документа). Параметры подключения к серверу InfoSphere Business Glossary берутся из общих настроек Android-приложения. В следующем примере вызывается функция REST GET.

Листинг 1. Вызов функции REST GET
public ArrayList<Item> invokeRestAPI(String relativeUrl, XMLParser xmlParser) {
    Document document = invokeRestAPI(relativeUrl);
    return xmlParser.parse(document);
}
                
private Document invokeRestAPI(String relativeUrl) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(fContext);
              
    String server = prefs.getString("server", "Server");
    String port = prefs.getString("port", "Port");
                
    HttpGet httpGet = new HttpGet("http://" + server + ":" + port + "/" + relativeUrl);
                
    try {
                
       HttpResponse response = getHttpClient().execute(httpGet, new BasicHttpContext());
       HttpEntity entity = response.getEntity();
       DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
       builderFactory.setNamespaceAware(true);
       DocumentBuilder builder = builderFactory.newDocumentBuilder();
       return builder.parse(entity.getContent());
                
     } catch (Exception e) {
       Log.e("error", e.getLocalizedMessage(), e);
       return null;
     }
                
}
                
private DefaultHttpClient getHttpClient() {
    if (fHttpClient == null) {
       SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(fContext);
       String username = prefs.getString("username", "");
       String passw = prefs.getString("password", "");
       String server = prefs.getString("server", "");
       String port = prefs.getString("port", "");
                
       fHttpClient = new DefaultHttpClient();
       fHttpClient.getCredentialsProvider().setCredentials(
       new AuthScope(server, Integer.parseInt(port)),
       new UsernamePasswordCredentials(username, passw));
     }
     return fHttpClient;
}

Операционная система Android позволяет приложениям создавать фоновые потоки. Это можно использовать для генерации асинхронных вызовов REST. В этом случае пользователь сможет продолжать работать с приложением, пока вызов REST обрабатывается.


Алгоритм работы приложения

Наше тестовое приложение состоит из пяти Android-компонентов, которые называются activities (действия). В операционной системе Android activity – это определенное действие, которое может выполнить пользователь; каждое действие реализовано в виде подкласса базового открытого класса Activity операционной системы.

В нашем приложении используются следующие действия:

  1. Home (Домашняя страница).
  2. Preferences (Параметры).
  3. Progress (Обработка).
  4. List Results (Вывод результатов).
  5. Item (Просмотр информации).

На рисунках 2-6 показано, как выглядит каждое действие на экране Android-устройства.

  1. Действие Home позволяет пользователю начать поиск с помощью REST API.
    Рисунок 2. Действие Home
    Действие Home
  2. Действие Preferences позволяет пользователю указать параметры подключения к серверу InfoSphere Business Glossary.
    Рисунок 3. Действие Preferences
    Действие Preferences
  3. Действие Progress отображается на экране во время обработки вызова REST.
    Рисунок 4. Действие Progress
    Действие Progress
  4. Действие List Results позволяет пользователю просматривать результаты поиска.
    Рисунок 5. Действие List Results
    Действие List Results
  5. Действие Item выводит на экран всю информацию по заданному элементу поиска.
    Рисунок 6. Действие Item
    Действие Item

Последовательность выполнения действий

На рисунке 7 изображена последовательность выполнения действий в приложении.

Рисунок 7. Последовательность выполнения действий
TПоследовательность выполнения действий

При запуске приложения пользователь видит домашнюю страницу (действие Home). Далее выполняется следующая последовательность действий:

  1. Пользователь переходит на страницу параметров (действие Preferences). Данное действие позволяет указать параметры подключения к серверу InfoSphere Business Glossary. Указанные параметры сохраняются на Android-устройстве и используются при всех последующих запусках приложения.
  2. Пользователь возвращается на домашнюю страницу(действие Home).
  3. Пользователь вводит запрос в поле поиска и нажимает кнопку Search, в результате чего запускается действие Progress и выполняется обработка запроса.
  4. В процессе обработки запроса (действие Progress) происходит обращение по URL-адресу REST и анализ результирующего XML-документа, после чего на экран выводится список результатов (действие List Results).
  5. Пользователь может просмотреть результирующий список и выбрать требуемый термин глоссария. После этого запрос обрабатывается (действие Progress), а пользователь снова он видит соответствующий экран.
  6. В процессе обработки запроса (действие Progress) снова происходит обращение по URL-адресу REST и анализ результирующего XML-документа, после чего на экран выводится информация о выбранном термине (действие Item).
  7. На экране просмотра информации (действие Item) пользователь видит всю информацию о выбранном термине. Дополнительно пользователь может щелкнуть по отображаемой на экране ссылке, запустив действие Progress (обработка запроса). В данном случае ссылка указывает на сотрудника, ответственного за редактирование выбранного термина.
  8. В процессе обработки запроса (действие Progress) снова происходит обращение по URL-адресу REST и анализ результирующего XML-документа, после чего пользователь снова видит экран Item.
  9. На этот раз на экран Item выводится контактная информация об ответственном сотруднике. Пользователь может просмотреть эту информацию и щелкнуть по телефонному номеру сотрудника. В результате он перейдет к встроенному приложению для совершения телефонных звонков.

Подробное описание действий

В следующих разделах подробно описаны действия Android, используемые в тестовом приложении.

Действие Home

Это основное действие приложения. Интерфейс REST API содержит данные о глоссарии, включая заголовок глоссария, текст приветствия и счетчики для различных типов ресурсов. Эта информация доступна пользователям для просмотра и позволяет им получить общее представление о словарях.

Интерфейс REST API позволяет осуществлять три типа поиска. В нашем тестовом приложении пользователь может выбирать между обычным поиском и поиском с автозаполнением. В качестве альтернативного варианта можно было бы предусмотреть единственную кнопку поиска, а тип поиска сделать зависимым от настроек приложения.

Когда пользователь нажимает кнопку Search, запускается обработка запроса (действие Progress).

Домашняя страница приложения (действие Home) содержит кнопку Preference, которая направляет пользователя на страницу настроек (действие Preferences).

Действие Preferences

Это действие позволяет пользователю указывать параметры подключения к серверу: имя сервера, порт, имя и пароль пользователя. Эти параметры сохраняются в устройстве, поэтому их необходимо указать только один раз при первом запуске приложения.

Действие Progress

Это действие используется для отображения вращающегося круга во время обработки отдельного потока REST API и анализа результатов. Для действия Progress требуется указать следующие два объекта:

  1. Вызываемый URL-адрес.
  2. Следующее действие, которое должно быть запущено после того, как отработает действие Progress.

В листинге 2 показан пример вызова действия Progress.

Листинг 2. Вызов действия Progress
package com.bg.android.activity;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;

import com.bg.android.R;
import com.bg.android.model.Item;
import com.bg.android.parser.XMLParser;

public class ProgressActivity extends Activity {

	private String fUrl;
	private Class<?> fNextActivity;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_item_progress);
		Intent intent = getIntent();
		fUrl = intent.getStringExtra("url");
		String nextActivity = intent.getStringExtra("nextActivity");

		try {
			fNextActivity = Class.forName(nextActivity);
		} catch (Exception e) {
			Log.e("error", e.getLocalizedMessage(), e);
		}

		new LongRunningInvoke().execute();

	}

	private class LongRunningInvoke extends AsyncTask<Void, Void, String> {

		ArrayList<Item> fResult;

		@Override
		protected String doInBackground(Void... params) {

			BgApp app = (BgApp) getApplicationContext();
			try {
				fResult = app.getHttpUtil().invokeRestAPI(
   fUrl,XMLParser.getParser(fUrl));
				return "SUCCESS";
			} catch (Exception e) {
				Log.e("error", e.getLocalizedMessage(), e);
				return e.getLocalizedMessage();
			}
		}

		protected void onPostExecute(String results) {
			if (fResult != null) {
				Intent intent = new Intent(getApplicationContext(), 
                     fNextActivity);
				intent.putExtra("list", fResult);
				startActivity(intent);
			} else {
				Intent intent = new Intent(getApplicationContext(), 
                MainActivity.class);
				intent.putExtra("toast", results);
				startActivity(intent);
			}
		}
	}

}

Сначала выполняется обращение по указанному URL-адресу. После того как вызов REST возвращает нужный XML-документ, этот документ преобразовывается в Java-объекты. Далее запускается следующее действие и в него передаются полученные объекты. Это общий механизм, который используется для всех вызовов REST, генерируемых приложениями.

Действие List Results

Это действие выводит на экран список полученных результатов. Когда пользователь выбирает определенный элемент из этого списка, активируется действие Progress, в результате которого с помощью REST API запрашивается подробная информация, относящаяся к этому элементу. После получения всей нужной информации выполняется действие Item.

В листинге 3 показан пример вызова действия List Results.

Листинг 3. Вызов действия List Results
package com.bg.android.activity;

import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.ListView;

import com.bg.android.model.Item;

public class ListResultsActivity extends ListActivity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ArrayList<Parcelable> list = getIntent().getParcelableArrayListExtra("list");

            setListAdapter(new ResultsArrayAdapter(this, list));
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
            Item selectedValue = (Item) getListAdapter().getItem(position);		
            String url = selectedValue.getUri();

            Intent intent = new Intent(getApplicationContext(), ProgressActivity.class);
            intent.putExtra("url", url);
            intent.putExtra("nextActivity", ItemActivity.class.getName());
            startActivity(intent);
	}

}

Действие Item

Это действие выводит на экран атрибуты элемента, содержащиеся в бизнес-глоссарии. Это могут быть термины, категории, политики и правила управления информацией или данные о сотрудниках, ответственных за тот или иной термин. Действие Item получает результирующий набор пар "ключ-значение" и выводит их в табличном виде. Имя и описание элемента наиболее важны, поэтому выводятся в верхней части экрана, чтобы быть более заметными.

Имеющиеся ссылки на связанные объекты отображаются в виде гиперссылок. Например, такими объектами могут быть:

  • Термины, являющиеся синонимами данного термина. При выборе такой ссылки пользователь увидит подробную информацию о синониме.
  • Имя сотрудника, ответственного за редактирование термина. При выборе такой ссылки пользователь увидит подробную информацию об этом сотруднике.
  • Телефонный номер сотрудника, ответственного за редактирование термина. При выборе такой ссылки откроется встроенное приложение для осуществления телефонного вызова.

При помощи таких ссылок пользователи могут перемещаться по глоссарию, переходить от одного термина к другим связанным терминам, синонимам, родительским категориям, сотрудникам и т. д.

Хотя в нашем тестовом приложении отсутствуют функции редактирования содержимого страницы, при желании их можно добавить. В этом случае все сделанные изменения будут отправляться на сервер InfoSphere Business Glossary посредством запросов PUT в виде обновлений для указанных элементов.


Заключение

Интерфейс IBM InfoSphere Business Glossary REST API позволяет получать доступ к содержимому глоссариев из пользовательских программ, в том числе из мобильных приложений. Пример Android-приложения, рассмотренный в этой статье, на практике показывает, как можно использовать всю мощь InfoSphere Business Glossary на мобильных устройствах.


Благодарности

Авторы хотели бы поблагодарить Майкла Фанкхаузера (Michael Fankhauser), Габи Нэйтив (Gabi Nativ), Марка Хабера (Marc Haber) и Эрела Шарфа (Erel Sharf) за рецензирование и вклад в работу над этой статьей.


Загрузка

ОписаниеИмяРазмер
Исходный код тестового Android-приложенияBGAndroidEclipseProject.zip544 КБ
Исполняемый файл тестового Android-приложенияMain.zip372 КБ

Ресурсы

Научиться

Получить продукты и технологии

  • Оцените продукты IBM (EN) любым удобным для вас способом: загрузите ознакомительные версии продуктов, поработайте с ними в онлайновом режиме, используйте их в облачной среде или же проведите несколько часов в песочнице SOA Sandbox (EN) и узнайте, как можно эффективно применять сервис-ориентированную архитектуру при разработке программного обеспечения.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management, Мобильные приложения
ArticleID=951958
ArticleTitle=Разработка Android-приложений с использованием InfoSphere Business Glossary REST API
publish-date=11062013