IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Lotus  >

Разработка составных приложений: Сборка составных приложений. Часть 1.

developerWorks
Опции документа

Опции документа, требующие включения JavaScript, не отображаются

Обсудить


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: средний

Крейг Уолперт, старший инженер-программист, IBM
Джо Грант, старший инженер-программист, IBM

02.07.2009

Получите советы общего характера и изучите методы проектирования, которые можно использовать при сборке высокопроизводительных составных приложений. В первой части данной статьи мы уделим основное внимание вопросам навигации и компоновки страниц.

Примечание редактора: Эта статья - седьмая из цикла публикаций о составных приложениях, которые печатаются на сайте developerWorks® Lotus. См. предыдущие статьи на сайте developerWorks,"Приложение Lead Manager в IBM Lotus Notes V8: общий обзор," "Разработка составных приложений: Проектирование компонентов", "Разработка составных приложений: Шаблоны проектирования", "Разработка составных приложений: Тестирование объектов", "Разработка составных приложений: Создание Eclipse-компонентов для IBM Lotus Notes" и "Разработка составных приложений: Компоненты IBM Lotus Notes".

Об этом цикле статей

Составные приложения -- ключевой элемент в сервис-ориентированной архитектуре (Service-Oriented Architecture - SOA) и в стратегиях контекстно-зависимой совместной работы (contextual collaboration). Эти приложения придают гибкость деятельности компаний и организаций, которым приходится быстро реагировать на изменяющиеся запросы конкурентного рынка. Составные приложения представляют собой совокупности компонентов пользовательского интерфейса, которые связаны между собой лишь в степени, необходимой для обеспечения межкомпонентного взаимодействия.

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

Такая слабая связанность компонентов в архитектуре составного приложения также позволяет различным группам, находящимся в разных местах, объединять усилия и взаимодействовать друг с другом. Например, одно подразделение может заниматься разработкой программы автоматизации бухгалтерского учета компании, в то время как другая группа работает над приложением по отслеживанию рынка потенциальных покупателей (приложение управления продажами). В составном приложении можно добавить в бухгалтерское приложение некоторые компоненты из приложения управления продажами для отображения актуальных бухгалтерских данных. Точно так же приложение управления продажами может включать в себя компоненты бухгалтерского приложения для предоставления финансовой информации по имеющимся активам. По мере разработки компанией все большего числа составных приложений возможности интеграции увеличиваются. Основная идея состоит в том, что полученное в итоге целое превышает сумму отдельно взятых его частей. Цель - сделать так, чтобы целое стало чем-то большим, чем сумма слагаемых.

Модель составного приложения уже знакома разработчикам IBM WebSphere Portal. Этот подход был распространён и на IBM Lotus Notes V8, что позволило разработчикам оформлять свои приложения Lotus Notes в виде компонентов составного приложения. Кроме того, в IBM Lotus Domino Designer была введена поддержка брокера свойств и реализована более интуитивно-понятная среда пользователя. Lotus Notes V8 также поддерживает вставку компонентов Eclipse. В составном приложении могут присутствовать любые комбинации компонентов Lotus Notes и Eclipse. Эти компоненты могут отображаться вместе в одном пользовательском интерфейсе за счёт "прозрачной" интеграции или, если используется брокер свойств, полностью взаимодействовать друг с другом. Для определения составных приложений можно использовать редактор составных приложений Composite Application Editor или редактор шаблонов приложений WebSphere Portal Application Template Editor.



В начало


Введение

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

Вначале мы рассмотрим навигацию и дизайн страниц, а во второй статье – дизайн страниц с прицелом на их изменение в будущем, стратегию связывания (wiring) и создание шаблона компоновки.



В начало


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

Предполагается, что читатель знаком с составными приложениями в IBM Lotus Notes, поэтому, возможно, будет полезно обратиться к разделу "Введение в составные приложения" Справки по IBM Lotus Domino Designer. Потом стоит прочесть первые три статьи данного цикла (см. выше примечание редактора), в которых как раз и содержится общий обзор и рассмотрены темы, связанные с шаблонами проектирования. О шаблонах топологии и приложений также рассказано ниже, в разделе о сборке приложений.



В начало


Дизайн страниц

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

Компоненты

На самом базовом уровне компонент связанного приложения – это прямоугольник экрана. Все, что отображается в этом прямоугольнике, определяется компонентом. Это наименьшая единица грануляции, которой мы можем оперировать при сборке составного приложения. Обычно бывает невозможно сделать так, чтобы компонент выводил только часть информации или чтобы информация одного компонента выводилась в другом. Тем не менее, компоненты редко остаются статическими. При сборке компонентов в приложении можно воспользоваться двумя опциями для управления тем, как компонент представляет информацию.

Во-первых, можно задать свойства самого компонента в Composite Application Editor, щелкнув по нему правой кнопкой мыши в дереве компонентов и выбрав Edit Component Properties (Редактировать свойства компонента) (см. рисунок 1). Диалог Edit Component Properties выдает несколько опций, которые и задают свойства компонента. Диалог Advanced Component Properties предлагает еще несколько задаваемых свойств. Сверьтесь с приложенной документацией по конкретным компонентам, чтобы разобраться с изменяемыми свойствами. Рисунок 1 показывает компонент Sales Lead Browser (Браузер списка потенциальных покупателей), который поддерживает настройки database.server и database.replicaid, при помощи которых вы сможете конкретизировать базу данных, используемую для отображения данных.


Рисунок 1. Пример редактирования свойств компонента
Пример редактирования свойств компонента

Во-вторых, большинство компонентов поддерживают набор свойств, которые сообщают о значениях параметров и использующих их действиях. Это и есть "артерии и вены", объединяющие независимые окна вашего составного приложения в единое целое. В документации для каждого компонента перечислены свойства, которые он публикует, используемые им действия и значения параметров, а также результаты к которым приводит их изменение. Каждое действие или свойство имеет свой ассоциированный тип. Во избежание ошибок свойства можно связывать только с действиями соответствующего типа. Такое жесткое связывание иногда может создать проблемы в процессе сборки. Например, компоненты из одного источника могут использовать тип PartNumber, а компоненты из другого источника - тип PartNum. Представляемые ими значения могут быть одинаковыми, но их невозможно будет связать, потому что они имеют разные типы.

Может возникнуть и противоположная проблема. Универсальный строковый тип подходит к общим случаям, и некоторые компоненты могут иметь все свойства и действия данного типа. Без проверки типов можно связывать любые типы, например, CustomerName (Имя клиента) с PartNumber (Номер детали), даже если при этом получается бессмыслица. Сверьтесь с документацией по свойству и использующему его действию, чтобы быть уверенными в том, что такая комбинация приведет к выполнению ожидаемого результата.

На рисунке 2 показано, как компонент LeadDetail связан со страницей Lead в примере приложения Lead Manager. Для просмотра данной ассоциации щелкните правой кнопкой мыши по компоненту LeadDetail и выберите Wiring в CAE. В данном примере в компоненте LeadDetail будет отмечено свойство Contact. Это свойство простого текстового формата и может быть ассоциировано со многими видами других действий, хотя смысл имеют только определенные комбинации.

Из документации мы знаем, что действие Column Filter в компонентах Discussions, Contracts и Sales Lead Company Detail принимает простые текстовые значения, но используется для категоризации представлений, которые неприменимы в качестве значения свойства Contact. Действия Contact name (Определить имя), Schedule A Meeting (Запланировать встречу) и Send Mail (Отправить почту) также принимают компонент в простом текстовом формате и ожидают значение в виде имени контакта, поэтому такое связывание будет допустимым.


Рисунок 2. Пример связи компонента
Пример связи компонента

Основные шаблоны компоновки

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

Страницы приложения Lead Manager используют этот общий принцип компоновки, причем на каждой странице области в красной рамке являются доменоцентрическими компонентами на основе домена (см. рисунок 3).


Рисунок 3. Пример общей компоновки доменоцентрических компонентов
Пример общей компоновки доменоцентрических компонентов

На каждой странице выделена рабочая область (содержащая доменоцентрические компоненты), а дополнительные области (с компонентами контекста домена) содержат контекстную информацию.

Задействуйте все свои пиксели

Полезная площадь экрана быстро исчерпывается. Контекстуальных компонентов, полезных в контексте основной операции, может быть сколько угодно, но как же добавить их, не загромождая рабочее пространство? Наша цель – облегчить работу пользователя, а не поставить его в тупик, и, к счастью, есть несколько способов повысить удобство приложения.

  • Папки с вкладками (Tabbed folders). Вместо того, чтобы добавлять компонент к фиксированному по размеру прямоугольнику на экране, можно поместить его поверх другого компонента. Эти компоненты объединяют для создания папок с вкладками. Каждый компонент при этом получает немного меньше места, потому что требуется место для панели вкладок, но когда вы перемещаетесь по вкладкам, они занимают все доступное место. Это хороший способ представления нескольких компонентов, содержащих взаимоисключающую информацию. Пользователь может выбрать, какой из них есть смысл отображать для того аспекта операции, который он выполняет. В целях дальнейшей автоматизации возможно также программным путем устанавливать фокус на ту или иную вкладку папки.

    Папки удобны в том отношении, что их легко расширять, Если позже будет разработан еще один компонент, его добавление почти не затронет целого. Папки с широкими горизонтальными вкладками использовать удобнее, чем папки с узкими вертикальными вкладками, потому что на них лучше видны названия вкладок.
  • Разворачивание и свертывание. Компоненты можно развернуть или свернуть командой пользователя или программным путем. Развернутый полностью компонент занимает всю полезную площадь экрана, и таким образом контекстный компонент может одним щелчком мыши стать доменоцентрическим компонентом. Например, в приложении Lead Manager к папке с вкладками добавляется компонент Managed Browser, чтобы отображать Web-страницу компании. При данном размере его польза невелика; но пользователь может легко развернуть этот компонент, найти на Web-странице нужную информацию, а затем восстановить изначальный размер папки и продолжить работу.
  • Всплывающие элементы. Одним из способов представления компонентов является минимизация пользовательского интерфейса (UI), пока компонент не запущен. Запуск возможен по активизации свойства, по щелчку на элементе пользовательского интерфейса (например, кнопке) или по другому событию. При запуске всплывает диалоговое окно с дополнительной информацией. Диалоговое окно может быть модальным (для информации, требующей определенной реакции пользователя) или немодальным, когда пользователь может сохранять его открытым и обращаться повторно.
  • Отображение на панели (Shelf view). В Lotus Notes 8 на экране имеется боковая панель (side shelf) с представлениями, которые персистентны в различных приложениях. Здесь можно программным путем сделать добавления видимыми или невидимыми, и в этом месте можно развернуть собственные элементы пользовательского интерфейса. Объекты здесь можно выделять или контролировать их видимость в зависимости от того, требуется ли данная функция постоянно или только для конкретного приложения.
  • Изменение размера пользователем. И один из последних методов настройки – передать возможность управления самому пользователю. Вы можете создать компоненты фиксированного размера или разрешить динамическое изменение размеров пользователем. Если вы зададите фиксированный размер в CAE, он сохранит заданные пропорции для всех пользователей, независимо от размера экрана. Если вы разрешите пользователям регулировать размер, они смогут адаптировать его к параметрам своего монитора и к собственным привычкам. Такие изменения будут сохраняться для них, но не будут распространяться на других пользователей.
  • Доступ к страницам. Новой возможностью, появившейся в Lotus Notes 8.0.1, является возможность задать на странице управление доступом. Сейчас в навигаторе страниц в редакторе Composite Application Editor можно выбрать Page Access (Доступ к странице). По умолчанию все страницы, которые вы включили в составное приложение, доступны всем пользователям. Ограничения можно вносить, сокращая возможности навигации, если вы пользуетесь настраиваемым навигатором, но лучше это делать путем контроля доступа к странице.

    Если вы отключите опцию All Users (Все пользователи) в диалоговом окне, в список будут включены те, чьи роли перечислены в списке управления доступом этого составного приложения: Access Control List. Доступ для каждой из этих групп можно включать или отключать.

    ВНИМАНИЕ: Это изменение не заменяет и не отменяет других правил управления доступом, которые действуют для компонентов страницы на основе Lotus Notes. Если пользователю не разрешен доступ к базе данных, в которой содержится компонент, получение доступа к странице с данным компонентом не предоставит ему доступ к самой базе данных.


В начало


Проектирование навигации

Редко бывает так, что составное приложение состоит только из одной страницы. Одну страницу хорошо отводить для обработки конкретного объекта данных или выполнения конкретной задачи, но чаще всего информационные домены, в которых мы работаем, содержат несколько типов данных и выполняют сложные или различные задачи. Естественно при этом идти от страницы к многостраничному приложению (и его тоже рассматривать как единицу). После того как пользовательский интерфейс выйдет за пределы одной страницы, придется выбирать проектные решения, которые позволят осуществлять переходы между страницами. Существуют следующие опции:

Навигация по выбору пользователя

При использовании этой модели все страницы приложения предоставлены на выбор пользователя. Имеется общий навигатор для того, чтобы пользователь выбирал, когда и какую страницу отображать. Это может быть встроенный навигатор составного приложения, который виден в левой колонке экрана или настраиваемый интерфейс управления с кнопками и с выпадающими меню. Такая модель хорошо проявляет себя в составных приложениях, построенных по агрегационной модели, описанной в статье на сайте developerWorks "Разработка составных приложений: Шаблоны проектирования". Контекст в одной из частей приложения не используется и не определяется его другой частью, поэтому рабочий процесс не прерывается при переходе.

Навигация на основе процесса

Эта модель напоминает диалоговые окна Мастера настроек в приложениях. Работа пользователя начинается с определенной страницы. По мере того как выполняются все задачи конкретной страницы, рабочий процесс переносит фокус приложения на следующую страницу. Вся навигация выполняется программным путем. Пользователь сам не переходит с одной страницы на другую, вместо этого страницы сами меняются по выполнении своих задач. Такой способ проектирования хорош для приложений, основанных на процессах. Подобно тому как страница нацелена на помощь пользователю в выполнении одной задачи, приложение ведет пользователя по длинной операции или последовательности задач.

Одна вкладка или несколько

Часто по умолчанию Lotus Notes запускает новый контекст в отдельной вкладке верхнего уровня. Этот метод уже знаком пользователям Lotus Notes, но в Lotus Notes 8 этакая вкладка верхнего уровня не может быть страницей составного приложения. Страницы составного приложения удобны тем, что дают возможность добавлять в операцию несколько других полезных компонентов. Иногда требуется выполнять задачи параллельно, и каждая должна размещаться на собственной вкладке; в других случаях добавление дополнительных компонентов не сулит значительных преимуществ. Выбирайте то, что больше подходит для конкретной операции.

В примере Lead Manager каждый тип закладки используется для отдельной области. При отображении подробностей о потенциальных покупателях выдается страница составного приложения, находящаяся непосредственно на главной вкладке. Дополнительные компоненты расположены рядом и готовы помочь вам в работе. Составляя ответ на предложения потенциальных покупателей, вы получаете новую вкладку с формой для составления ответа. Ее можно заполнить сразу или позже, в зависимости от состояния пользовательского процесса.

Комбинированный способ

Некоторые дополнительные возможности возникают при комбинации описанных подходов. Возможно, приложение в основном управляется программными средствами, но у него имеется несколько вариантов входа. Таким образом, в самом начале приложение может выглядеть зависящим от выбора пользователя с некоторым подмножеством страниц, по которым может осуществляться навигация. Но после выбора точки входа запускается некий процесс, общая навигация исчезает, а пользователь продолжает работу в режиме процесса. После завершения процесса пользователь возвращается к позиции, где он имеет возможность выбрать другую точку входа.

В примере Lead Manager реализован один из таких комбинированных подходов. Отображается общая панель навигации, показывающая три точки входа: Leads, Companies и Contacts. После выбора одного из них вы переходите на страницу, доступ к которой иным способом невозможен. Например, можно дважды щелкнуть по потенциальным клиентам на странице Leads, и программа переводит вас на страницу Lead Detail, недоступную из панели навигации. При этом панель навигации высокого уровня все еще действует, и из текущего контекста можно перейти назад в контекст точек входа.



В начало


Реализация навигации

Есть несколько способов реализации проекта навигации в составном приложении.

Системный навигатор

В платформе Lotus Notes для создания составных приложений имеется встроенный навигатор, обеспечивающий переключение фокуса между страницами приложения. Если запущен системный навигатор (по умолчанию), в левой части страницы появляется древовидное представление. Системный навигатор управляется настройками корневой страницы com.ibm.rcp.useNavigator и com.ibm.rcp.navigationModel. Эти страницы можно организовать в иерархическом порядке, определить, какие из них следует отображать, а какие нет, после чего пользователь сможет осуществлять навигацию в удобном ему порядке. ПРИМЕЧАНИЕ. При переходе на новые страницы пользователя спрашивают, нужно ли сохранить документы Lotus Notes.

Системный навигатор удобен тем, что он предустановлен изначально. Конфигурация страниц для использования системным навигатором поддерживается непосредственно редактором Composite Application Editor. При использовании в некоторых составных приложениях системный навигатор придает приложениям схожий внешний вид. Поддерживается функция перетаскивания между разными страницами в навигаторе. Однако в этом навигаторе отсутствуют дополнительные опции проектирования. Например, нельзя изменить положение навигатора, его размер и цвет.

Настраиваемый навигатор

Можно создать настраиваемый навигатор, вид которого будет соответствовать вашему рабочему процессу, а также позволит программным путем находить страницы в приложении и переключаться между ними. Пример приложения Lead Manager тоже использует подобный настраиваемый навигатор. Отображаемые опции основаны на свойствах, заданных компонентом настраиваемого навигатора. Однако обратите внимание на то, что такие компоненты нужно создать или получить их иным образом, развернуть в приложении и, скорее всего, функция перетаскивания в них не будет действовать.

Связи между страницами

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

В примере Lead Manager многие компоненты начинают работу не только при выборе элемента данных, но и при двойном щелчке. Выбор широко используется для связывания и направлен от порождающего компонента к периферийным компонентам для отображения статуса. Двойной щелчок используется для запуска перехода на страницы с помощью перекрестных связей, но это случается реже. Ассоциацию создают с действием одного из доменоцентрических компонентов на этой новой странице, эта же ассоциация задает переход страницы, а также контекст, для которого будет создана эта новая страница.

Компонент запуска рабочей области

Составные приложения или страницы можно перечислить в компоненте запуска рабочей области. Его можно задать для приложения или для страницы с помощью свойства com.ibm.rcp.launcher в диалоговых окнах Advanced Properties (Дополнительные свойства); тогда они будут отображаться при нажатии кнопки Open (Открыть) в клиенте Notes 8. На время развертывания может оказаться полезным связать несколько функциональных областей в одно составное приложение. Это один из способов ввести несколько вариантов входа в ваше составное приложение, и его стоит рассмотреть наряду с проектом и реализацией навигации.



В начало


Заключение

Мы рассмотрели некоторые рекомендации и способы создания страниц и методов перехода между страницами, подчеркивая ту мысль, что проектирование и компоновка страниц – один из важнейших аспектов во всех приложениях. Кроме того, мы отметили возрастающую важность проектирования системы навигации в тех случаях, когда число и размер компонентов превышают одну страницу или когда приложение содержит несколько задач или процессов. Правильная сборка составного приложения может повысить производительность, хотя случается и обратное.



Ресурсы

Научиться

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

Обсудить


Об авторах

Крейг Уолперт (Craig Wolpert) - старший инженер-программист программы поддержки независимых производителей ПО в IBM Lotus Software.


Джо Грант (Jo Grant) - старший инженер-программист IBM Lotus, специализирующийся на технологиях на основе Eclipse.




Выскажите мнение об этой странице


Пожалуйста, найдите минутку и заполните форму, чтобы повысить уровень сервиса.



 


 


 


Поделиться этой статьей:

забобрить забобрить memori сохранить в memori




В начало


IBM обладает всеми авторскими правами касательно информации, расположенной на developerWorks. Использование информации приведенной на этом ресурсе без явного письменного разрешения от IBM или первоначального автора запрещены. Если Вы желаете использовать информацию с developerWorks, пожалуйста воспользуйтесь регистрационной формой для того, чтобы связаться с нами запрос на использование материалов developerWorks Россия.
    IBM в России Конфиденциальность Контакты