![](https://habrastorage.org/files/0fb/738/327/0fb7383277c24acba03d5fce6b64a3ee.png)
Платформа IBM Bluemix позволяет работать с различными службами компании IBM для создания когнитивных приложений. В качестве примера можно привести сервис IBM Watson Tradeoff Analytics Service. При помощи математических методов фильтрации он позволяет определить оптимальные варианты по большому количеству критериев. В результате специалисты (если речь идет о профессиональном приложении) могут принимать сложные решения из лучших предложенных вариантов.
Сегодня мы предлагаем познакомиться с ходом создания одного такого приложения, при помощи которого можно выбрать лучшее место для жизни в США. Понятно, что одной этой страной возможности приложения не ограничиваются — при желании можно создать любую схожую программу и выбрать оптимальное место для жизни в другой стране — России, Великобритании, Эквадоре или ином регионе. Давайте посмотрим, как все это работает.
Само приложение можно назвать iDecide — его изначальный разработчик поступил именно так. Программа использует большое количество демографических данных, основанных на результатах переписи населения США 2010 года. Эти данные выложены в свободном доступе в Сети, и служба Watson Tradeoff Analytics предоставляет пользователям возможность выбора решения, основанного на обработке этих данных.
Инструменты для работы
- Учетная запись в Bluemix;
- Инструментарий Cloud Foundry CLI с GitHub;
- Среда разработки Eclipse Kepler с сервером Tomcat 7.0;
- Плагин EGit, установленный в Eclipse Kepler. Информацию о том, как настроить локальный клиент для работы с Git, можно получить в документации по Bluemix DevOps Services.
Этап 1. Добавление службы Tradeoff Analytics в приложение Bluemix
- Входим в Bluemix под вашей учетной записью (или регистрируемся для бесплатного пробного использования).
- Нажимаем Create App в окне Cloud Foundry Apps.
- Выбираем WEB как тип приложения.
- Выбираем Liberty for Java. Это облегченный профиль IBM Web Sphere Application Server, предназначенный для облачных сред. Нажмите CONTINUE.
![](https://habrastorage.org/files/045/07e/b20/04507eb20c6c4788a029c21805a9a9ce.jpg)
5. На следующем экране кликните по надписи APP NAME, после чего нужно ввести имя приложения и нажать Finish. Это уникальное имя становится частью URL-адреса маршрута для приложения. После этого приложение некоторое время подготавливается для последующей работы.
6. Щелкаем по пункту Overview в левой навигационной панели вашего приложения. Под именем предложения будет показан его маршрут. После этого щелкаем по кнопке ADD A SERVICE OR API.
7. В области Services раздела Watson выберите службу Tradeoff Analytics.
![](https://habrastorage.org/files/310/def/c04/310defc049264337b405e4aeb748505f.jpg)
8. На выбранном экране приложения Tradeoff Analytics появляется имя приложения. Оно будет связывать само приложение с именем службы Tradeoff Analytics Service. Нажимаем кнопку Create. Все, что мы делали до этого, связывало приложение со службой. На панели приложения отображаются среда исполнения Java для приложения, а также связанная служба Tradeoff Analythics.
9. В разделе Tradeoff Analythics щелкаем по кнопке Show Credinetials.
![](https://habrastorage.org/files/4cc/918/abf/4cc918abf51e425c89a015326567f4f5.jpg)
На этом этапе необходимо записать значения полей URL, Username и Password. Позже эти учетные данные IBM Watson Tradeoff Analytics Service понадобятся для конфигурирования нового Java-приложения.
![](https://habrastorage.org/files/365/f04/ff5/365f04ff5f9b4f5f89fe5a0dd6d7fab2.jpg)
Этап 2. Создание экземпляра приложения
1. Нужно перейти к исходному коду и щелкнуть по кнопке FORK PROJECT, чтобы создать копию проекта.
2. В ответ на приглашение укажите имя вашего нового проекта и нажмите CREATE, чтобы создать копию кода в вашем проекте и в репозитории Git.
Этап 3. Соединяемся с проектом DevOps с помощью EGit в Eclipse
1. На главной странице проекта в IBM BluemixDevOpsServices в разделе Git скопируйте URL-адрес, указанный в поле GitUrl.
![](https://habrastorage.org/files/e64/7fc/269/e647fc2692844984847e2fb6a4cf0675.jpg)
2. В Eclipse требуется выбрать File>Import. В окне Import выбираем Git>ProjectsfromGit и нажимаем на кнопку Next.
3. Выбираем Clone URI и нажимаем Next. Вставляем скопированный URL Git в поле URI.
4. В разделе Authenticationвводм идентификатор пользователя Jazz.net и пароль IBM ID. Нажмите кнопку Next.
5. Выбираем ветвь master и нажимаем Next.
![](https://habrastorage.org/files/f5a/c68/c5d/f5ac68c5d62d4c8c84fc96591251464f.jpg)
8. Если необходимо, обновляем раздел LocalDestination клонированного репозитория, после чего нажимаем Next.
9. Выбираем Importasgeneralproject и нажмите Next.
10. Теперь нажимаем Finish для завершения создания проекта в Eclipse.
Этап 4. Разработка приложения в Eclipse
1. В Eclipse щелкаем правой кнопкой мыши по проекту, выбирая Properies;
2. В диалоговом окне Properties выбираем ProjectFacets и отмечаем Java и DynamicWebModule.
![](https://habrastorage.org/files/0ec/8ff/1b7/0ec8ff1b706c433bb02b887d33f557d0.jpg)
3. Нажимаем кнопку Apple, а затем кнопку ОК.
Этот шаг позволяет добавить нужные для работы библиотеки, и приложение компилируется. После того, как процесс компиляции завершен, в приложение добавляются файлы JRE SystemLibrary.
![](https://habrastorage.org/files/789/384/800/7893848000f44a138896f37d517352b3.jpg)
4. Изменяем приложение, указывая в нем учетные данные IBM WatsonTradeoffAnalyticsService, которые вы скопировали на шаге 1.
1. Откройте каталог idecide2\src\com.watson.idecide.
![](https://habrastorage.org/files/686/cf4/105/686cf41054d44893ae5f43320e00309c.jpg)
Редактируем файл AnalyticsServlet.java, а именно изменяем значения baseURL, username и password, указав данные, скопированные на этапе 1.
![](https://habrastorage.org/files/097/65a/a64/09765aa64bf6423fb2c67eb13cb74319.jpg)
5. Здесь создаем проект приложения в Eclipse. Для этого щелкаем правой кнопкой мыши по проекту, после чего выбираем в меню BuildProject. Конечно, нужно еще удостовериться и в том, что проект компилируется без ошибок.
6. Разворачиваем и запускаем приложение на локальном сервере Tomcat, после чего тестируем его.
a. Для этого щелкаем правой кнопкой мыши по проекту, выбирая в меню Run As > Run On Server.
b. Выбираем Tomcat v7.0 Server at localhost.
![](https://habrastorage.org/files/ba5/235/2c6/ba52352c656e4db88ec96d5105c356b8.jpg)
3. Нажимаем на Next, затем — Finish.
4. Тестируем приложение.
a. Экспортируем WAR-файл приложения и сохраняем его в каталог. Чтобы экспортировать WAR-файл, щелкните правой кнопкой мыши по проекту и выберите Export. Укажите параметры экспорта и нажмите Finish.
![](https://habrastorage.org/files/dfc/8ee/707/dfc8ee707dbf4b2a875e4425bef075c2.jpg)
На следующем этапе нужно развернуть WAR-файл приложения в Bluemix с использованием инструментария командной строки CloudFoundry (cf).
Этап 5. Разворачивание и выполнение приложения в Bluemix
Используя интерфейс командной строки, разворачиваем приложение в Bluemix (также можно запускать, останавливать и администрировать приложения, выполняемые в Bluemix). Предварительно необходимо установить инструментарий CloudFoundry CLI из GitHub.
a. В интерфейсе CloudFoundry CLI выполните команду cflogin для авторизации в Bluemix по адресу api.ng.bluemix.net. В ответ на приглашение введите свой идентификатор IBM ID и пароль.
b. Перенесите файлы приложения из локальной среды в выбранное приложение Bluemix. В интерфейсе CloudFoundry CLI выполните команду cfpush для переноса созданного WAR-файла из проекта Eclipse в Bluemix. В данном случае <application_name> — это уникальное имя вашего приложения, указанное на шаге 1.
cf push <application_name> -p C:\idecide2.war
3. Получив сообщение об успешном выполнении операции, откройте панель Bluemix.
4. Проверьте новое приложение, щелкнув по отображаемой ссылке.
На этом все, надеемся, что ваше пробное приложение заработало. На самом деле, возможностей при разработке такого типа — огромное количество, так что после тестовой программы попробуйте создать еще одну — уже ту, что подходит для решения ваших задач.