Інтеграція IBM Lotus Connections з IBM WebSphere Portal, Інтеграція додатків і даних, Бази даних, статті

IBM WebSphere Portlet Factory – потужне і гнучке засіб розробки, що дозволяє швидко створювати, компонувати, налаштовувати під замовника і підключати портлет до IBM WebSphere Portal. ПО для організації соціальних взаємодій IBM Lotus Connections можна легко розширити і інтегрувати з іншими додатками за допомогою набору API REST. В результаті цей продукт чудово підходить для швидкої розробки з використанням IBM WebSphere Portlet Factory.


Хоча Lotus Connections комплектується портлетів для забезпечення інтеграції WebSphere Portal з, Вам, можливо, знадобляться кошти, що виходять за рамки стандартного продукту.


Прочитавши цю статтю, ви зможете створювати власні рішення, які використовують такі додаткові можливості, як взаємодія між портлет і детальне управління доступом до різних сервісів Lotus Connections. Ми описуємо простий спосіб побудови портлетів і інтегріраціі Lotus Connections в WebSphere Portal. Основною темою даної статті та ілюстрацією до неї служить сервіс Dogear в Lotus Connections. Dogear, якщо ви ще з ним не знайомі, – це інструмент створення закладок для користувачів.


Ми припускаємо, що ви раніше встановив портлет в WebSphere Portal і вже вивчили wiki по WebSphere Portlet Factory і приклади по Lotus Connections.


“Що таке REST?”, “Що таке програма-конструктор?”, І, нарешті, “Що таке REST-конструктор?”


Що таке REST? Representational State Transfer (REST) ​​- це невимоглива до ресурсів інтуїтивно зрозуміла середу, яка дозволяє користувачам створювати, оновлювати і запитувати інформацію з будь-яких підтримують REST додатків (наприклад, Lotus Connections), і керувати нею з власних користувальницьких додатків. Простота API-інтерфейсу досягається за рахунок того, що REST API заснований на HTTP, тому дозволяє легко робити запити на п’ять сервісів Lotus Connections через прості прямі URL-посилання, за допомогою команд POST (надіслати), PUT (розмістити), і DELETE (видалити), інкапсуліруя дані сервісу в HTML або в документ XML Atom.


Що таке конструктор (builder)? Основою ПО IBM WebSphere Portlet Factory є набір програмних компонентів автоматизації, що називаються конструкторами. Вони реалізують логіку проектування через зручні інтерфейси, влаштовані за принципом “майстра”, і потім автоматизують розробку коду. Використання конструкторів значно прискорює процес розробки, приховуючи складність базових API і дозволяючи створювати повністю сумісні з SOA портлетів.


Це поняття підводить нас до того, що таке REST-конструктор: це ще більш простий варіант REST API, реалізований в заснованому на формах конструкторі WebSphere Portlet Factory. Конструктор REST Service Call (це його повне ім’я) викликає службу REST, а та повертає фід Atom. На підставі аналізу отриманого фіда конструктор генерує опис XML Schema Definition (XSD) за замовчуванням.


Створення взаємодіє портлет Dogear


Взаємодіючим (cooperative) називається портлет, який взаємодіє з іншим портлетів на тій же сторінці або на іншій сторінці в тому ж примірнику WebSphere Portal. У нашому прикладі ми створимо два портлет. Один портлет виводить на екран пошукове вікно, яке дозволяє користувачам шукати теги закладок, що відповідають заданим критеріям пошуку в сервісі Dogear. Другий портлет виводить на екран отриманий список посилань на закладки. Для здійснення цієї операції використовується WebSphere Portlet Factory. Якщо ви ще не вивчили керівництво по створенню портлет, що поставляється в пакеті WebSphere Portlet Factory, займіться цим зараз.


У даному розділі ми пояснимо, як створити два портлет, які доставляють дані з Lotus Connections через REST API, використовуючи WebSphere Portlet Factory.


ПРИМІТКА: Ці приклади були розроблені з використанням WebSphere Portlet Factory v6.0.2.3 і Lotus Connections 2.0.


Створюємо портлет-джерело


Спочатку створіть портлет-джерело цього сценарію взаємодії. Портлет-джерело виводить на екран користувача пошукове вікно з кнопкою Submit (Відправити). Коли користувач натискає на неї, пошуковий запит відправляється до портлет-приймача через брокер властивостей (property broker). Брокер властивостей – це сервіс WebSphere Portal, який дозволяє пов’язувати портлет один з одним і пересилати повідомлення. Передача для здійснення цього з’єднання конфігурується адміністратором порталу.


Перш ніж почати, переконайтеся, що ви перебуваєте в області WebSphere Portlet Factory. В іншому випадку виберіть Window – Open Perspective (Відкрити відображення) – Other (Інше) – WebSphere Portlet Factory.


Для створення проекту WebSphere Portlet Factory виконайте наступні кроки:



  1. Натисніть File (Файл) – New (Створити) – WebSphere Portlet Factory Project.
  2. Назвіть проект Dogear і натисніть Next (Далі).
  3. Натисніть Next у вікні Add Feature Sets (Додати набір ознак).
  4. Натисніть Next у вікні Java Settings (Настройки Java).
  5. У вікні Deployment Configuration (Конфігурація розміщення), виберіть Application Server (Сервер додатків) і Portal Server (Сервер порталу), в якому вам потрібно їх розмістити. Якщо вам знадобиться один з них, натисніть Add (Додати). Натисніть Finish (Закінчити).
    ПРИМІТКА: Ці сервери повинні бути працюючими.
  6. На питання “Would you like to deploy your project now (Розгорнути ваш проект зараз)?” дайте відповідь “Так”.

Тепер у вас є порожній проект. Далі вам потрібно створити нову модель. Модель – поняття програми WebSphere Portlet Factory; фактично це і є той додаток, що ви будете створювати. Модель визначає набір конструкторів, які відповідають за генерування коду програми, що задає поведінку, структуру і зовнішній вигляд вашого застосування-портлет.


Для створення моделі виконайте наступні кроки:



  1. Правою кнопкою натисніть на щойно створений проект і виберіть New – WebSphere Portlet Factory Model.
  2. Виберіть Dogear у вікні Choose Project та натисніть Next.
  3. Виберіть Main and Page у вікні Choose Model (Вибір моделі) і натисніть Next. Конструктор Main and Page створить простий метод main (), який негайно направляє користувача на сторінку за замовчуванням.
  4. У вікні Page Settings (Параметри сторінки) виберіть Simple Page (Проста сторінка). Натисніть Next (Далі).
  5. У вікні Save New Model (Зберегти нову модель) назвіть модель DogearSource та натисніть Finish (Завершити).

Ми створили модель з дуже простої сторінкою за умовчанням. Тепер змінимо цю сторінку і створимо пошукову форму:



  1. У поданні Project Explorer (див. малюнок 1) клацніть двічі по моделі DogearSource. Далі двічі клацніть по page1 в Outline (Структура), щоб відкрити цю сторінку у вигляді, призначеному для користувачів.

  2. У розділі Page Contents (Вміст сторінки) введіть код з лістингу 1.

Лістинг 1. HTML-код для сторінки пошуку





<html>
<body>
<!– As a best practice, change the form name to a unique name –>
<form name=”searchForm” method=”post”>
<div align=”center”>
<span name=”searchTag”></span>
<span name=”searchButton” class=”searchButton”></span>
</div>
</form>
</body>
</html>

  • Збережіть модель. Тепер ваша сторінка за замовчуванням містить поле пошуку з кнопкою пошуку Search.

  • Наступні прості кроки перетворять наш додаток до додатка портлет. Виконайте наступне:



    1. У розділі Outline натисніть на піктограму зі знаком (+), щоб додати в модель конструктор.
    2. У розділі Category виберіть Portal Integration (Інтеграція порталу) і потім Portlet Adapter (Адаптер портлет) в області Builder Type. (Тип конструктора)
    3. Назвіть цей портлет WPFDogearSource.
    4. Встановіть (Title (Заголовок) для портлет WPF Dogear Source.
    5. Збережіть модель.

    Тепер Налаштуйте портлет, щоб він був джерелом у сценарії взаємодії. Спочатку потрібно додати змінну для подання рядка пошуку:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Variables (Змінні), а потім Variable (Змінна) в області Builder Type.
    3. Натисніть OK.
    4. Встановіть значення Name (Ім’я) рівним searchQuery.
    5. Встановіть значення Type (Тип) рівним String (Рядок).
    6. Встановіть значення Initial Value (Початкове значення) рівним Portal (Портал)
    7. Збережіть модель.

    Потім додайте підтримку для відправки подій в property broker, як показано на малюнку 2:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Portal Integration, а потім Cooperative Source Portlet зі значенням Builder Type.
    3. Натисніть OK.
    4. Встановіть значення для Name ProcessProperty (Властивості процесу).
    5. Встановіть Type на Property Broker Action (Дія брокера властивостей). Така установка означає, що спілкування між портлет відбувається, коли здійснюється дію, наприклад, натискання кнопки.
    6. Встановіть Output Type Name (Тип вихідного документа) на linkTextType.
    7. Встановіть Caption (Заголовок) зі значенням linkText.
    8. Встановіть для Name в Output Definitions (Опис вихідного документа) значення linkText.
    9. Збережіть модель.

    Рисунок 2. Вікно взаємодіє портлет-джерела

    Тепер додайте елемент керування для введення тексту в теге, названому searchTag на page1. Значення цього текстового поля буде присвоюватися змінної, яку ви створили раніше. Виконайте наступні кроки:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Page Controls (Управління сторінкою), а потім Text Input (Введення тексту) в Builder Type (Тип конструктора).
    3. Натисніть OK.
    4. Привласніть текстовому полю ім’я searchTag.
    5. Задайте для Page значення page1.
    6. Задайте для Tag значення searchTag.
    7. Задайте для Text значення $ {Variables / searchQuery}. ПРИМІТКА: Можна також натиснути на кнопку (…), щоб вибрати ім’я змінної через користувальницький інтерфейс.
    8. Збережіть модель.

    Задайте дії для натискання кнопки Submit. Спочатку візьміть значення, введене користувачем в пошуковому вікні та збережіть його у змінній, яка називається searchQuery. Потім відправте це значення Property Broker, потім його можна було передати цільовим портлет через з’єднання. Див. малюнок 3.


    Виконайте наступні кроки:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Flow Control (Управління обміном даних) і потім Action List (Список дій) під заголовком Builder Type.
    3. Натисніть OK.
    4. Встановіть значення dogearSearch як Name.
    5. В Action List встановіть значення першої дії:
      Assignment!Variables/searchQuery=${Inputs/searchTag}
    6. Встановіть значення наступного дії:
      pbAction_ProcessProperty (pbAction_ProcessProperty,${Variables/searchQuery})
    7. Збережіть модель.

    Рисунок 3. Опис дій кнопки Submit

    Нарешті, Налаштуйте кнопку Submit, щоб ініціювати дію, описане в попередніх кроках:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Page Controls ((Елементи управління сторінки), потім виберіть Button (Кнопка) в Builder Type.
    3. Натисніть OK.
    4. Дайте кнопці назву searchButton.
    5. Встановіть для Page (Сторінка) на значення page1.
    6. Встановіть Label (Мітка) на Submit.
    7. Встановіть Action (Дія) на dogearSearch.
    8. В Input Mappings (Відображення даних введення) додайте одне відображення з Name, встановленим на ACTION_NAME, і Value (Значення), встановленим на pbAction_ProcessProperty.
    9. Збережіть модель.

    Портлет-джерело готовий. Щоб його перевірити, натисніть правою кнопкою на модель DogearSource і виберіть Run As (Запустити як) WebSphere Portlet Factory Model. Якщо все задано вірно, в браузері відкриється вікно пошуку з кнопкою пошуку.


    У наступних розділах описано процес створення портлет-приймача, що виконує пошук з використанням REST API сервісу Lotus Connections Dogear, розбір результатів, а потім їх рендеринг в портлетів.


    Створення провайдера даних


    Перш ніж створювати портлет-приймач, вам потрібно повідомити WebSphere Portlet Factory, як викликати API Lotus Connections. У даному розділі ми пояснюємо, як створити провайдер даних.


    Провайдер даних визначає, як дані витягуються з Dogear. У нашому випадку для отримання даних використовується Lotus Connections Dogear REST API. Таке абстрагування дозволить надалі змінювати механізм вилучення даних, не зачіпаючи рівень відображення у вашому додатку.


    Наступні кроки описують конфігурування WebSphere Portlet Factory для виклику REST API-інтерфейсів Lotus Connections Dogear.


    Для створення моделі провайдера даних виконайте наступні кроки:



    1. Натисніть правою кнопкою на назву проекту і виберіть New – WebSphere Portlet Factory Model.
    2. Виберіть Dogear у вікні Choose Project і потім натисніть Next.
    3. Виберіть Empty (Порожня) у вікні Choose Project (Вибрати проект), і потім натисніть Next
    4. У вікні Save New Model (Зберегти нову модель) задайте моделі назву DogearProvider та натисніть Finish (Завершити).

    Далі необхідно задати взаємодію з Dogear REST API. Можна описати сервіс Dogear, який зможуть споживати інші моделі і програми. Для цього треба виконати наступне:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Services, виберіть Service Definition (Опис сервісу) під заголовком Builder Type.
    3. Натисніть OK.
    4. Встановіть Name на dogearSearch.
    5. Переконайтеся, що вибрано Make Service Public (Зробити сервіс публічним).
    6. Збережіть модель.

    Додайте розробника REST Service Call (Виклик REST-сервісу), виконавши наступне:



    1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
    2. У розділі Category виберіть Data Integration (Інтеграція даних), потім виберіть REST Service Call під заголовком Builder Type.
    3. Натисніть OK.
    4. Задайте для Name значення dogear.
    5. Встановіть для URL еначеніе http://connections.acme.com/dogear/atom (або інше відповідне значення).
    6. У розділі Parameters (Параметри) додайте наступні параметри, як показано на малюнку 4, і залиште порожніми все Values ​​(значення).

      • search
      • page
      • ps
      • lang (Встановіть для Value значення en)
      Рисунок 4. Параметри конструктора

    7. У розділі Results Schema (Схема результатів) виконайте наступне:

      • o Переконайтеся, що вибрані Auto Create Schema (Автоматичне створення схеми), Restructure Feed Data (Реструктуризація даних фіда) і Cache Schema (Кешування схеми).
      • o Задайте для Sample Data URL (URL зразків даних) значення http://connections.acme.com/dogear/atom (або інший відповідний URL), створіть один Sample Data Parameter (Параметр зразків даних) під назвою lang і встановіть для нього значення en.

    8. Натисніть Apply (Застосувати). При цьому буде виконаний виклик вашого сервісу Dogear і витягнутий зразок готового XML. Використовуючи цей зразок, WebSphere Portlet Factory автоматично згенерує схему.
    9. Збережіть модель.


    10. Для додавання сервісної операції для абстрагування до рівня REST-виклику виконайте наступні кроки:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services (Сервіси), потім виберіть Service Operation (Сервісна операція) в якості Builder Type.
      3. Натисніть OK.
      4. Задайте для Data Service значення dogearSearch.
      5. Задайте для цієї операції ім’я doSearch.
      6. Вкажіть для DataServices / dogear / execute Action to Call (Викликати дію).
      7. Встановіть Input Structure Handling (Оперування структурою введення) і Result Structure Handling (Оперування результуючої структурою) на значення Use structure from called action (Використовувати структуру з викликається дії).
      8. Натисніть Apply (Застосувати).
      9. Збережіть модель.

      Додайте детальне визначення даних для подальшого опису полів, які з сервісу Dogear. Це визначення дозволить вам легко приховувати окремі поля. Виконайте наступні кроки:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services (Сервіси), потім виберіть Service Operation (Сервісна операція) в якості Builder Type.
      3. Натисніть OK.
      4. Виберіть зі списку опцій схему dogear.
      5. У розділі Data Definition Editor (Редактор визначень даних) переконайтеся, що Container Element (Елемент контейнера) встановлений на entry (вхід).
      6. Переконайтеся, що для кожного поля у списку, Data Type (Тип даних) встановлено на string (рядок) (крім полів author і category).
      7. Натисніть кнопку Create Data Definition File (Створити файл опису даних) і збережіть файл як:
        /WEB-INF/data_definitions/dogear.xml
      8. Збережіть модель.

      Створюємо портлет-одержувач


      Цей розділ описує, як створити портлет, який отримує інформацію з іншого портлет і використовує провайдер даних, який ви створили в попередньому розділі для дзвінків REST API в Lotus Connections Dogear.


      Зверніть увагу, що оскільки ви абстрагувати витяг даних з Lotus Connections, ви теоретично могли б змінити провайдер і використовувати з’єднання JDBC замість виклику REST API для отримання даних від Lotus Connections Dogear без будь-яких змін з боку портлет.


      Для створення моделі портлет-одержувача виконайте наступні кроки:



      1. Натисніть правою кнопкою на проект і виберіть New – WebSphere Portlet Factory Model.
      2. Виберіть Dogear у вікні Choose Project (Вибрати проект), потім натисніть Next.
      3. Виберіть Main і Page з Choose Project, потім натисніть Next.
      4. У вікні Page Settings (Настройки сторінки) виберіть Simple Page (Проста сторінка) і натисніть Next.
      5. У вікні Save New Model (Зберегти нову модель) задайте для моделі назву DogearTarget та натисніть Finish.

      Далі виконайте кілька простих операцій, щоб перетворити це додаток до додатка портлет:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Portal Integration, потім виберіть портлет Adapter (Адаптер порталу) як Builder Type.
      3. Дайте портлет назву WPFDogearTarget.
      4. Встановіть Title портлет на WPF Dogear Target.
      5. Збережіть модель.

      Тепер потрібно налаштувати портлет, щоб він став одержувачем в сценарії взаємодії.


      Щоб додати змінну для зберігання введеної рядки, отриманої з вхідного портлет, виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Variables, потім виберіть Variable як Builder Type.
      3. Натисніть OK.
      4. Встановіть для Name значення receivedProperty.
      5. Встановіть Type на String.
      6. Збережіть модель.

      Додайте функціональність одержувача взаємодії для брокера властивостей в додатку портлет. Це доповнення реагує на рядок запиту, що посилається з вхідного портлет, коли створюється з’єднання між двома портлетів.


      Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Portal Integration, потім виберіть Cooperative Source Portlet (портлет-джерело взаємодії) як Builder Type.
      3. Натисніть OK.
      4. Встановіть Event Name (Ім’я події) на ProcessProperty (Властивості процесу).
      5. Встановіть Input Name (Вхідна ім’я) на linkText (Текст посилання)
      6. Встановіть Input Type Name (Ім’я типу вхідних даних) на linkTextType (Тип тексту посилання).
      7. Встановіть Caption (Підпис) на Link Text (Текст посилання).
      8. Встановіть Caption (Підпис) в Output Definitions (Визначення виходу) на Received Text (Отриманий текст).
      9. Збережіть модель.

      Далі створіть сторінку для рендеринга результатів у Lotus Connections:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Pages (Сторінки), потім виберіть Page (Сторінка) під заголовком Builder Type.
      3. Натисніть OK.
      4. Встановіть Name (Ім’я) на значення TargetPage.
      5. Введіть у Page Contents (Вміст сторінки) код, зазначений в лістингу 2.


        Лістинг 2. Зразок HTML-коду для портлет-одержувача






      <html>
      <body>
      <div align=”center” class=”bookmarks”>
      <span name=”allTags”/>
      <div class=”bookmarkList” >
      <span name=”searchResults”></span>
      </div>
      <div>
      <span name=”pagingTag”></span>
      </div>
      </div>
      </body>
      </html>


    11. Збережіть модель.


    12. Візуалізуйте результати у відповідному місці на своїй сторінці, скориставшись конструктором Data Page (Сторінка даних), щоб відобразити дані в іменовані HTML-теги, створені на попередній сторінці. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Page Modifiers (Модифікатори сторінок), потім виберіть Data Page як Builder Type.
      3. Натисніть OK.
      4. Задайте для Name значення Search.
      5. Задайте для Variable значення DataServices / dogear / doSearch / results / feed / entries.
      6. Встановіть Page в Model на значення TargetPage.
      7. Встановіть Page Type на View Only.
      8. Встановіть Location for New Tags (Розташування нових тегів) на searchResults.
      9. Збережіть модель.

      Далі створіть програми-конструктор для виклику Lotus Connections API. Спочатку створіть обробник (handler) для виконання дії при отриманні нового властивості від property broker. Дія полягає в тому, щоб отримати пошуковий запит по з’єднанню, призначити його тимчасової змінної, викликати Lotus Connections API і потім перенаправити користувачів до вихідної сторінці, що відображає результати. Виконайте наступні кроки:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Flow Control (Управління обміном даних), потім виберіть Event Handler (Обробник подій) як Builder Type.
      3. Натисніть OK.
      4. Встановіть для Name значення handleNewProperty.
      5. Встановіть Event Name (Ім’я події) на ProcessProperty.
      6. У розділі Arguments (Аргументи), встановіть Name на linkText і Data Type на String.
      7. У розділі Actions створіть наступні три дії:
        ПРИМІТКА: Дії SystemOut Action – необов’язкові, оскільки призначені тільки для налагодження.

        Assignment!Variables/receivedProperty=${Arguments/linkText}
        DataServices/dogear/doSearch
        TargetPage


      8. Збережіть модель.

      Далі створіть програму-споживач сервісу для виклику сервісу, описаного (DogearProvider) в попередньому розділі. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services, виберіть Service Consumer (Споживач сервісу) під заголовком Builder Type.
      3. Натисніть OK.
      4. Встановіть Name на значення dogear.
      5. Встановіть Provider Model (Модель провайдера) на DogearProvider.
      6. Переконайтеся, що вибрано Override Inputs (Заміна вхідних даних).
      7. Встановіть Input Value (Значення вхідних даних) наступним чином (значення. Page і. Ps дозволять пізніше додати підтримку сторінок):
        dogearRestInputs.Parameters.search to ${Variables/receivedProperty}
        dogearRestInputs.Parameters.page to 1
        dogearRestInputs.Parameters.ps to 10

      8. Встановіть Rich Data Definition File (Файл докладного опису даних) на значення:
        /WEB-INF/data_definitions/dogear.xml
      9. Збережіть модель.

      Розробка двох портлетів завершена. Один портлет дозволяє користувачам вводити пошуковий рядок. Другий отримує цю пошуковий рядок і здійснює пошук в Dogear по всіх загальнодоступним закладок, використовуючи REST API. Варто також зауважити, що нам до сих пір не довелося написати жодного рядка коду Java. Це велика перевага WebSphere Portlet Factory. Діючи в такому дусі, ви можете створювати портлет, використовують Lotus Connections API, без вивчення Java, XML, REST і розробки портлетів.


      Після того як WAR-файл портлетів створений і розгорнуто, можна налаштувати портлет на конкретній сторінці і пов’язати їх між собою. Щоб зв’язати портлет, виконайте наступну процедуру:



      1. Увійдіть на сервер WebSphere Portal Server як адміністратор порталу.
      2. Перейдіть на сторінку, де сконфігуровані портлетів.
      3. Поруч із заголовком сторінки виберіть Edit Page Layout (Правити макет сторінки).
      4. Натисніть на вкладку Wires (З’єднання).
      5. Специфікує наступні параметри:

        • В поле Source Portlet (портлет-джерело) введіть WPF Dogear Source.
        • В поле Sending (Відправлення) введіть linkText.
        • В поле Target Page (Цільова сторінка), введіть ім’я сторінки ().
        • В поле Target Portlet (портлет-одержувач) введіть WPF Dogear Target.
        • В поле Receiving (Одержання) введіть Received Text, Link Text.
        • В поле Wire Type (Тип зв’язування) введіть Public (Загальнодоступне).

      6. Натисніть на піктограму зі знаком (+), щоб додати зв’язування.
      7. Натисніть Done (Виконано).

      Поверніться на сторінку WebSphere Portal і введіть рядок пошуку в портлет-джерелі. Коли ви натискаєте Submit, Dogear Service викликає дію, аналізує отриманий фід Atom за допомогою Lotus Connections REST API і повертає результати в красивий портлет, наприклад, як показано на малюнку 5.

      Рисунок 5. Портлет-приймач

      ПРИМІТКА: Цей портлет працює тільки з Lotus Connections 2.0 і більш пізніми версіями, в яких налаштування Dogear дозволяють анонімний доступ. Приклад портлет, що використовує ідентифікаційні дані користувачів, можна знайти в WebSphere Portlet Factory Wiki і серед прикладів Lotus Connections Integration.


      Цей приклад ми будемо використовувати як основу для подальшої розробки. Тепер можна взяти отриманий фід Atom і виконати з ним різні дії:



      • • Відфільтрувати фід на підставі ролі користувача (наприклад, показати тільки посилання від користувачів з того ж відділу або регіону)
      • Оснастити закладки гіперпосиланнями
      • Додати підтримку сторінок для показу більш ніж 10 закладок за один раз
      • Додати можливість перекладу
      • Інтегрувати з пошуковою машиною вашого підприємства

      Оскільки ПО Lotus Connections засноване на сервісах, ви можете навіть самостійно створити новий користувальницький інтерфейс, який відповідає вашим потребам і інтегрується з вашої середовищем за допомогою WebSphere Portlet Factory. WebSphere Portlet Factory відкриває незліченну кількість можливостей, для реалізації яких буде потрібно зовсім небагато коду.


      Детальне управління доступом в Dogear


      ПО Lotus Connections за самою своєю суттю практично не передбачає управління доступом. В результаті кожен, хто вирішує передати інформацію, використовуючи включені п’ять сервісів, розуміє, що весь зміст блогів, коментарів, закладок негайно стає відомим усьому мережному спільноті. Накладати обмеження на інструментарій, метою якого є забезпечення відкритого спілкування та співробітництво без кордонів, було б зовсім нелогічно.


      Ми не заохочуємо спроби структурувати неструктурований контент, але розуміємо, що вам може знадобитися вирішити комерційну проблему, подібну описаної далі.


      Клієнт корпорації IBM, велика компанія XYZ, що займається роздрібною торгівлею, має свій портал для підтримки постачальників. Намагаючись привернути додаткових постачальників і утримати тих, кого влаштовує співпраця, в компанії XYZ вирішили додати можливість організації соціальної мережі в середовищі порталу, а саме сервіс установки закладок і тегування. Однак проблема з використанням Lotus Connections в цьому випадку полягає в тому, що постачальникам не повинні бути видні закладки, створені іншими постачальниками. Оскільки сервіс Dogear був створений для розміщення у відкритій системі без будь-яких стандартних засобів управління доступом, використання стандартної установки Lotus Connections в цьому випадку не підходить. Нам потрібно розробити користувальницький портлет, який би використовував WebSphere Portlet Factory.


      У наступному розділі розповідається, як створити користувальницький портлет Dogear, який можна пов’язувати з профілем або персоніфікувати в залежності від зареєстрованого в системі клієнта, щоб показувати закладки саме для даного клієнта. Це виключає доступ до закладок інших користувачів.


      ПРИМІТКА: Ці приклади були створені за допомогою WebSphere Portlet Factory v6.0.2.3 і Lotus Connections 2.0.


      Створення співтовариства


      Перш ніж розпочати процес розробки, слід зрозуміти, як можна реалізувати вимоги по управлінню доступом. Для цього ми скористаємося сервісом Lotus Connections Communities. Сервіс Communities унікальний в тому, що це – єдиний сервіс, який дозволяє створити приватний або модерується список членів. Оскільки до складу сервісу входить компонент закладок, що дозволяє членам спільноти обмінюватися закладками один з одним, реалізація Dogear в цьому сервісі буде корисна для нашого прикладу.


      Компоненти Communities (наприклад, можливість використання закладок) можна витягати за допомогою виклику REST, якщо відомий їх communityUuid. Оскільки портлет можуть приймати параметри конфігурації (і допускають персоналізацію), можна вбудувати параметр communityUuid в портлет, щоб впливати на те, які результати будуть показуватися.


      На додаток до цього настройка bookmarklet-компонента Lotus Connections Dogear (маленької програми JavaScript ™, яка зберігається у вигляді URL в закладці браузера), дає можливість створювати закладки виключно для сервісу Communities. Оскільки і Communities, і Bookmarklet розпізнають членів спільноти, можна створювати закладки тільки для того співтовариства, до якого ви належите. В результаті при створенні приватного спільноти ви будете впевнені, що кожен учасник зможе бачити тільки вміст, тегами і закладками учасників цієї спільноти.


      Створення провайдера даних Communities


      Як було згадано раніше, провайдер даних вказує, як дані витягуються з сервісу – в нашому випадку Lotus Connections Communities. Створивши таку модель, ви зможете використовувати REST API Lotus Connections Communities, щоб знаходити певний співтовариство на підставі communityUuid і повертати аспект установки закладок в це співтовариство. При цьому communityUuid буде використовуватися як параметр конфігурації для персоніфікації результатів портлет. Це значення встановлюється адміністратором порталу, коли портлет поміщається на сторінку. (CommunityUuid відображається в URL, коли ви відкриваєте співтовариство в Lotus Connections, як показано на малюнку 6.)

      Малюнок 6. Ідентифікація communityUuid

      Наступні кроки описують процес конфігурації WebSphere Portlet Factory для виклику Lotus Connections Communities REST API. Спочатку створіть модель провайдера даних:



      1. Натисніть правою кнопкою на проект і виберіть New – WebSphere Portlet Factory Model.
      2. Виберіть Dogear у вікні Choose Project (Вибрати проект), і натисніть Next (Далі).
      3. Виберіть Empty from the Choose Project, і натисніть Next.
      4. У вікні Save New Model (Зберегти нову модель), дайте моделі назву CommunitiesProvider та натисніть Finish (Завершити).

      Тепер у вас є порожня модель.


      Далі задайте конструктор Community Service Definition, який створює новий сервіс даних (див. малюнок 7). Цей сервіс даних можна зробити загальнодоступним, щоб він міг використовуватися іншими моделями, працюють як споживачі сервісів. Виконайте наступні дії:



      1. У розділі Outline вашого інструментарію натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services, виберіть Service Definition (Опис сервісу) під заголовком Builder Type.
      3. Натисніть OK.
      4. Встановіть для Name значення communities.
      5. Переконайтеся, що обрана опція Make Service Public (Зробити сервіс загальнодоступним).
      6. Збережіть модель.
      Малюнок 7. Конструктор Service Definition

      Далі додайте в створений конструктор REST Service Call (Сервіс REST-виклику), який дозволить інтегруватися через REST-дзвінки з сервісом Lotus Connections Communities. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Data Integration (Інтеграція даних), потім виберіть REST Service Call під заголовком Builder Type.
      3. Натисніть OK.
      4. Встановіть для Name значення getAllBookmarks.
      5. Встановіть URL на:
        http://www.acme.com/communities/service/atom/community/bookmarks
        (Інший відповідний адреса)
      6. У розділі Parameters (Параметри) конструктора додайте наступні параметри. Залиште поки значення незаданій, як показано на малюнку 8:



        • communityUuid. Це значення профілюється в портлет-споживачеві. Профілювання в WebSphere Portlet Factory використовується для генерування різних варіантів портлетів в залежності від значення.
        • Tag. Це значення необов’язкове і дозволяє фільтрувати членів спільноти або закладки за значенням тега communityUuid. Це значення профілюється в портлет-споживачеві.

        Рисунок 8. Параметри конструктора



    13. У розділі Results Schema (Схема результатів) конструктора виконайте наступне:

      • Переконайтеся, що вибрані Auto Create Schema (Автоматичне створення схеми), Restructure Feed Data (Реструктуризація переданих даних) і Cache Schema (Схема кешу).
      • Встановіть Sample Data URL на:
        http://www.acme.com/communities/service/atom/community/bookmarks
        (Або інший відповідний адреса)
      • Створіть два Sample Data Parameters (Зразка параметрів даних). Один називається communityUuid зі значенням за замовчуванням 35FG091E0E92932F37764EE3F30442000007 і тег із значенням за умовчанням vendor_1. Значення повинні налаштувати відповідно до вашої середовищем. Тому потрібно ввести communityUuid, який є в місці розміщення Communities, і реально існуючий тег.

    14. Натисніть Apply (Застосувати). Ця дія здійснює виклик вашого сервера Communities і витягує зразок отриманого XML. Використовуючи цей зразок,, WebSphere Portlet Factory автоматично генерує схему.
    15. Збережіть модель.


    16. Далі додайте конструктор Service Operation (Операція сервісу) для додавання до сервісу даних операції, яка може викликати будь-який сервіс даних або метод (в нашому випадку вона викликає сервіс REST, який ви тільки що створили) і перетворювати результати (див. малюнок 9). Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services, виберіть Service Operation як Builder Type.
      3. Натисніть OK.
      4. Встановіть значення Data Service (Сервіс даних) рівним dogearSearch.
      5. Дайте операції назву getAllMyBookmarks.
      6. Вкажіть DataServices / getAllBookmarks / execute як Action to Call (Дію авзова). Ця специфікація ілюструє роботу конструктора REST Call, створеного вами на попередньому етапі.
      7. Встановіть Input Structure Handling (Обробка вхідної структури) і Result Structure Handling (Обробка отриманої структури) на Use structure from called action (Використовувати структуру) з викликаного дії.
      8. Натисніть Apply (Застосувати).
      9. Збережіть модель.

      Малюнок 9. Додавання конструктора Service Operation

      Далі додайте детальне визначення даних для опису полів, витягнутих з раніше описаного виклику. Це доповнення дозволить показувати або приховувати отримані поля. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services, виберіть Service Operation як Builder Type.
      3. Натисніть OK.
      4. Виберіть communities в якості схеми зі списку опцій.
      5. Переконайтеся, що в Data Definition Editor (Редактор опису даних) значення Container Element встановлено рівним Entry. Ця установка дозволить маніпулювати інформацією про кожну отриманої закладці (а їх може бути декілька).
      6. Переконайтеся, що для кожного поля у списку Data Type (Тип даних) встановлено значення string (рядок).
      7. Натисніть кнопку Create Data Definition File (Створити файл опису даних), і збережіть файл в:
        /WEB-INF/data_definitions/communities.xml
      8. Збережіть модель.

      Тепер можете перевірити модель провайдера даних CommunitiesProvider, вибравши Run Active Model (Запустити активну модель), як було зроблено в попередніх прикладах. Якщо отримані результати відповідають очікуваним, можна переходити до наступного кроку.


      Створення портлет закладок з керуванням доступом


      Портлет закладок відображає всі закладки для певної спільноти постачальників, грунтуючись на значенні communityUuid, встановленому адміністратором порталу для даного екземпляра портлет.


      Для створення моделі Data Consumer (Споживач даних) (портлет-джерело) виконайте наступні дії:



      1. Натисніть правою кнопкою на проект і виберіть New – WebSphere Portlet Factory Model.
      2. Виберіть Dogear у вікні Choose Project (Вибрати проект), і натисніть Next.
      3. Виберіть Empty (Пусто) з Choose Project та натисніть Next.
      4. У вікні Save New Model (Зберегти нову модель) дайте моделі назву Communitiesportlet та натисніть Finish (Завершити).

      Тепер імпортуйте модель Provider (Провайдер). Ця модель робить сервіси, створені в провайдера, доступними вам як споживачам. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Model Construction (Створення моделі), потім виберіть Imported Model (Імпортована модель) як Builder Type.
      3. 3. Дайте імена Builder Connections Data (Дані про з’єднання конструктора) і направте їх до моделі провайдера, як показано на малюнку 10.

      Малюнок 10. Імпорт моделі

      Тепер створіть дві змінних для подання шуканих communityUuid і тегів. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. 2. У розділі Category виберіть Variables, потім виберіть Variable під заголовком Builder Type. Виконайте цей крок двічі, створивши одну змінну з назвою tags і одну – communityUuid. Кожна із змінних має тип String (Рядок).

      Створіть новий Profile (профіль – набір параметрів, що визначають настройку системи) для змінної communityUuid. Profiling (Профілювання) – це поняття в WebSphere Portlet Factory, яке дозволяє змінювати поведінку програми, грунтуючись на певних значеннях. У нашому прикладі ви міняєте результати, які відображаються в конкретному портлет, грунтуючись на значенні communityUuid, встановленому адміністратором портлет при виборі ним опції Edit Shared Settings (Редагувати загальні установки).


      Щоб створити новий профіль для communityUuid, виконайте наступні дії:



      1. Відкривши змінну communityUuid, натисніть на піктограму Профілювальники (програма оптимізації профілю) поряд з полем Initial Value (Початкове значення).
      2. Виберіть опцію Create Profile Set (Створити набір параметрів профілю).
      3. Дайте профілем назву Profile Set connections.communities.Edit. Виберіть “none” (ніякі) в установках Profile Set, щоб створити ще одну копію. Див. малюнок 11.


        Малюнок 11. Вікно нового Profile Set


      Встановіть $ {Profile / connections.communities.Edit / communityUuid} як Profile Values ​​for Default (Значення профілю за замовчуванням). Натисніть OK. В результаті значення для communityUuid визначається установками Edit Shared Settings (Редагування загальних установок). Див. малюнок 12.


      Малюнок 12. Вікно Profile Input

      Далі створіть конструктор Service Consumer (Споживач сервісу) для використання операцій сервісу вашого джерела даних. Виконайте наступні кроки:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Services, виберіть Service Consumer під заголовком Builder Type.
      3. Дайте конструктору назву CommunitiesData і направте його до моделі-провайдеру.
      4. 4. Виберіть CommunitiesProvider як Provider Model (Модель провайдера) і виберіть Add All Provider Operations (Додати всі операції провайдера) і Override Inputs (перевизначати вхідні дані). Перевизначення вхідних даних дозволяє задавати communityUuid як вхідний параметр для цього виклику сервісу. Див. малюнок 13.


        Малюнок 13. Вікно Service Consumer



      У тому ж конструкторі виберіть операцію getAllMyBookmarks. У розділі для Inputs (Вхідних даних) переконайтеся, що communityUuid і тег налаштовані на змінні, створені вами раніше. Див. малюнок 14.


      Малюнок 14. Імена та значення вхідних даних


    17. Налаштуйте значення файлу докладного опису даних на схему, створену раніше в / WEB-INF/samples/data_definitions/communities.xml.
    18. Збережіть програму-конструктор.


    19. Далі створіть нову сторінку під назвою BookmarkPage:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Pages, потім виберіть Page як Builder Type.
      3. Назвіть цей розробник BookmarkPage.

      Далі створіть Data Page Builder (Конструктор сторінки даних) для відображення результатів з вашого сервісу або викликів провайдера джерела даних на створеної вами сторінці. Виконайте наступне:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Page Modifiers (Модифікатори сторінок), потім виберіть Data Page (Сторінка з даними) під заголовком Builder Type. Назвіть цей розробник searchBookmarks.
      3. Налаштуйте змінну як Variables / CommunitiesDataGetAllMyBookmarksResults для подання фіда, що повертається при виклику вашого сервісу getAllMyBookmarks.
      4. Зі списку опцій виберіть BookmarkPage в якості Page Type (Тип сторінки).
      5. Для Location for New Tags (Розміщення нових тегів) виберіть searchResults. За замовчуванням це значення фігурує на вашій сторінці BookmarkPage як тег “span”. Задайте всі інші настройки, як показано на малюнку 15.


        Малюнок 15. Налаштування властивостей



      Далі створіть конструктор Rich Data Definition, щоб додати докладний опис даних до отриманих полям.



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Page Modifiers, потім виберіть Rich Data Definition під заголовком Builder Type. Назвіть цей конструктор CommunitiesDataGetAllBookmarks.

      Потім ви можете поекспериментувати з отриманими полями, форматуючи їх так, як вам потрібно.


      Тепер створіть конструктор Action builder для основної частини методу. Це метод, який викликається при першому завантаженні портлет. Виконайте наступні дії:



      1. У розділі Outline натисніть на піктограму зі знаком плюс, щоб додати в модель конструктор.
      2. У розділі Category виберіть Flow Control (Управління обробкою даних), потім виберіть Action List (Список дій) як Builder Type. Назвіть цей конструктор main (головний) (використовуйте тільки малі літери).
      3. В ActionList задайте перші кілька дій, як показано на малюнку 16, для встановлення початкового з’єднання.

        Малюнок 16. Налаштування дій



    20. Для наступного ActionList виберіть наступну дію, щоб виконати getAllBookmarks для спільноти: DataServices / CommunitiesData / getAllMyBookmarks.
    21. В якості останньої дії відобразіть сторінку BookmarkPage.


    22. Нарешті, додайте конструктор Portlet Adapter, щоб перетворити це в портлет. Дайте йому назву Portlet DogearBookmarks як показано на малюнку 17.


      Малюнок 17. Конструктор Portlet Adapter

      Після складання WAR-файлу портлет ви можете розгорнути цей портлет і налаштувати його communityUuid за замовчуванням. Виконайте наступні дії:



      1. Увійдіть в систему як адміністратор порталу і розгорніть портлет DogearBookmarks на вашій сторінці.
      2. Перейдіть на сторінку, де розгорнуто портлет, і далі до його назві. Виберіть Edit Shared Settings (Редагувати загальні настройки).
      3. У вікні введіть communityUuid того співтовариства постачальників, яке має доступ до цієї сторінки або притулити.
      4. Збережіть зміни.

      Ви завершили розробку портлет Dogear, що дозволяє здійснювати детальний управління доступом. Поверніться на сторінку портлет і увійдіть в систему як інший користувач із правами доступу іншого постачальника. Подивіться, як в результаті змінюються результати Dogear.


      Ще раз зверніть увагу, що нам до сих пір не довелося написати жодного рядка Java-коду.


      Крім того, відзначте, що коли ви вибираєте “Dogear This!” у своєму браузері, вам пропонується опція установки закладок тільки в спільнотах, членами яких ви є.


      Цей приклад може служити основою для подальшої розробки. Тепер ви можете взяти отриманий фід Atom і зробити ще кілька речей:



      • Повернутися назад і відформатувати хмара тегів для закладок цієї спільноти
      • Реалізувати для хмари тегів підтримку клацання мишею по тегу (вибір тега змінює отримані результати Dogear)
      • Реалізувати в портлет-одержувача відображення обраної статті або навіть піктограми цієї статті

      Висновок


      З цієї статті ви дізналися, як будувати портлет, використовуючи WebSphere Portlet Factory. В крок за кроком показано, як будувати портлет, які звертаються до даних з Lotus Connections Communities і сервісів Dogear. Ви також дізналися, як створити модель провайдера даних, яка дозволяє використовувати конструктори REST API в WebSphere Portlet Factory для роботи з усіма п’ятьма сервісами Lotus Connections. Тепер ви можете створювати додатки, що забезпечують такі просунуті можливості, як спілкування між портлет і детальне управління доступом до різних сервісів Lotus Connections.


    Схожі статті:


    Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

    Коментарів поки що немає.

    Ваш отзыв

    Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    *

    *