|
|
|||||||||||||||||||||||||||||
|
Оптимизация разработки приложений. Часть 2: Разработка решений с помощью Rational Application DeveloperИсточник: IBM developerWorks Россия Натаниэль Шута (Nathaniel T. Schutta)
Оглавление
Раздел 1. Перед началом работыОб этом руководствеЭто вторая из пяти частей общего руководства. Мы настоятельно рекомендуем проводить ознакомление со всеми частями последовательно, так как каждое руководство основывается на результатах предыдущего раздела. В данном руководстве рассматривается процесс составления диаграммы класса, сопровождаемый написанием соответствующего кода компонентов Enterprise JavaBean (EJB). Несмотря на то, что этот материал не охватывает создание полностью завершенного приложения, в результате изучения вы получите два основных протестированных бизнес-компонента, обладающих должной функциональностью. В этом руководстве рассматривается приложение Auction, широко используемое в семействе программных продуктов IBM в качестве учебного материала. В этом Web-приложении технология Java 2 Platform Enterprise Edition (J2EE) применяется для создания системы ведения аукциона, по функциональности схожей с порталами eBay, Yahoo, Amazon и другими подобными системами. Схема работы очевидна: пользователи выставляют определенные позиции на аукцион, в то время как остальные пользователи предлагают за них свою цену. По мере изучения руководства вы познакомитесь с самой последней версией инструмента, существенно облегчающего процесс разработки - IBM Rational Application Developer (ранее известный как IBM WebSphere Studio Application Developer), входящего в состав платформы IBM Software Development Platform. Этот новый продукт помогает унифицировать все стадии разработки на базе проекта Eclipse (от создания концепции до непосредственного развертывания). Он является лишь частью полноценного решения по разработке ПО, доступного в рамках платформы IBM Software Development Platform. Данное руководство охватывает следующие темы::
Закончив написание программного кода, перейдите к его тестированию. В части 3 данного руководства обсуждается выявление дефектов с помощью IBM Rational ClearQuest, а также отслеживание дефектов и других запросов на изменение непосредственно в IBM Rational RequisitePro. Для изучения данного руководства необходимо ознакомиться с языком Java и основными концепциями J2EE. Опыт работы с технологиями UML и EJB может помочь в изучении материала, но не является обязательным условием. Предварительные условияДля выполнения операций данного руководства вам потребуется Rational Application Developer (версия 6.0). Загрузите ознакомительную версию. Для загрузки доступны версии, предназначенные для установки в ОС Microsoft Windows 2000, Windows Server 2003 и Windows XP, а также версии для ОС Linux на базе x86. Раздел 2.Начало работыСоздание проектаЭтот раздел посвящен созданию рабочих пространств, которые необходимы для размещения программного кода. При создании EJB вам понадобится создать соответствующий проект EJB. Rational Application Developer автоматически создает проекты, требуемые для EJB . Обратите внимание на то, что для проектов EJB нужно обязательно определить целевой сервер. Если в процессе установки Rational Application Developer вы не установили среду IBM WebSphere Application Server 6.0 Integrated Test Environment, сделайте это сейчас. Чтобы создать проект EJB:
На этом этапе Rational Application Developer создает проект EJB и несколько вспомогательных проектов, как показано на рисунке 1. Речь идет о трех следующих проектах:
Создание диаграммы класса UMLТеперь, когда проект определен, вы можете создать диаграмму класса, используемую для генерирования EJB. Начните с создания папки для диаграммы класса. Находясь в Project Explorer:
Чтобы создать диаграмму класса UML:
На экране появится пустая диаграмма класса и визуальный редактор UML (как показано на рисунке 2). Палитра на правой стороне окна состоит из нескольких вкладок, содержащих различные элементы, которые могут быть созданы и отредактированы в рамках диаграммы класса. Открыть и закрыть вкладки можно одним щелчком мыши. В этой версии Rational Application Developer палитра стала составной (с возможностью наращивания). Обратите внимание на то, что вкладка EJB открыта. Так как данная диаграмма была создана внутри проекта EJB, соответствующая вкладка EJB добавляется в палитру. Рис. 2. Визуальный редактор UML Раздел 3. Построение диаграммы класса UMLДобавление объектов в диаграмму класса UMLПосле того как будет закончена вся подготовительная работа, можно перейти к непосредственному созданию компонентов EJB. Создайте четыре следующих компонента: Buyer, Seller, Bid и Item . Чтобы создать компонент Buyer:
Рис. 3. Информация в окне "Create a new Entity bean" Примечание: Давайте разберемся, что такое комментарии. Если вы уже работали с технологией EJB, то знаете, как много компонентов приходится синхронизировать, так как используемые интерфейсы должны в высокой степени точности соответствовать фактическому классу компонентов. На этом этапе очень легко сделать ошибку. Несмотря на то, что большинство интегрированных сред разработки (IDE) предполагает использование таких компонентов и обеспечивает их синхронизацию, пользователь не всегда имеет под рукой знакомый инструмент разработки. Так как множество правил и взаимоотношений по своей природе - механические, генератор кода может создать для вас большую часть артефактов, связанных с компонентами EJB. Тем не менее, для этого потребуется определенный объем метаданных, и как раз эту проблему можно решить с помощью комментариев (annotations). Основная цель разработки на базе комментариев - ограничить количество артефактов, за которые отвечают разработчики, тем самым упрощая процесс разработки. В качестве новой функциональной возможности в Rational Application Developer версии 6.0 пользователям предлагается поддержка комментариев, облегчающая выполняемую работу. За более подробной информацией обратитесь к справочным файлам, ознакомьтесь с работой механизма генерирования кода XDoclet, а также проектом объектно-реляционного отображения данных Hibernate (с открытыми исходными текстами) и ранней черновой версией спецификации EJB 3.0. Добавление подробной информации в компонентНа следующей странице мастера необходимо добавить в компонент подробные сведения. Компонент Buyer имеет три поля: имя, адрес и рейтинг. Чтобы добавить подробную информацию:
Рис. 4. Настройки для создания EJB Обратите внимание на то, что объект в диаграмме класса имеет методы, определенные интерфейсами. Это новая функциональная особенность Rational Application Developer. Повторите данную процедуру для остальных трех компонентов, добавляя каждый из них в модель класса в качестве компонентов CMP 2.x. Для компонента Seller:
Для компонента Bid:
Для компонента Item:
По окончании процедуры сохраните диаграмму. На данном этапе диаграмма класса должна выглядеть так, как показано на рисунке 5. Рис. 5. Завершенная диаграмма класса Добавление управляемых взаимоотношений в диаграмму класса UMLПосле того как объекты определены, настало время добавить между компонентами соответствующие связи. Определенный покупатель (Buyer) может представить несколько ценовых заявок (Bid), а продавец (Seller) может реализовывать сразу несколько позиций (Item). Заявки и позиции также взаимосвязаны. Первым делом необходимо определить взаимосвязь между покупателем (Buyer) и его заявками (Bid), а также между продавцом (Seller) и его позициями (Item). Чтобы добавить сопоставление:
Повторите указанные операции для установки схожих связей типа "один-множество" между продавцом и его позициями (не забудьте менять метку позиции на items). Таким же образом добавьте взаимосвязь между компонентами Item и Bid, используя регулярное отношение 0..1:0..* CMP Relationship, а затем переименуйте метку Рис. 6. Диаграмма класса с установленными взаимосвязями Раздел 4. Добавление бизнес-методовНа данном этапе у вас уже имеются смоделированные атрибуты, связанные с EJB, но для двух компонентов все еще необходимо создать дополнительные бизнес-методы. Для этого перейдите непосредственно к коду компонентов и добавьте требуемые методы. Начните с добавления методов
Созданные бизнес-методы следует сделать доступными для клиентов путем распространения этих методов на локальном интерфейсе. Так как данный класс был создан с помощью комментариев, вам просто необходимо вставить перед методами следующий программный код:
С помощью этого тега методы становятся видимыми на локальном интерфейсе. Также выполните указанную процедуру для метода Рис. 7. Класс BidBean с бизнес-методами Теперь необходимо добавить бизнес-методы для класса ItemBean. Данному классу требуются методы для отображения текущей, максимальной и начальной ценовой заявки. В поисках необходимой позиции эти три метода будут проводить итерацию в группе заявок, созданной вами при сопоставлении CMR между компонентами Item и Bid. Откройте ItemBean в редакторе программного кода и добавьте следующий код:
Не являясь самым эффективным программным кодом в мире, команды на языке Java все же просты для понимания (они понадобятся позже в этом руководстве - при работе с IBM Rational PurifyPlus). Если в процессе обработки группы заявок (Bids) будет выявлено, что рассматриваемая заявка имеет более раннюю метку времени, чем предыдущая заявка, то она помечается как начальная заявка (starting bid). В качестве результата метод отображает самую раннюю заявку. В нижеследующем коде представлены сведения о внедрении методов
В завершении необходимо добавить код, с помощью которого заявки добавляются в группу заявок:
По окончании разверните эти новые методы на локальном интерфейсе так же, как это было сделано для BidBean: путем добавления соответствующего комментария. Убедитесь в том, что все четыре метода отображаются в диаграмме класса в разделе ItemLocal. Другой способ создания компонентаДо этого момента при создании компонентов вы использовали возможности моделирования UML, присущие решению Rational Application Developer. Однако это не единственный способ решения задачи. Вы всегда можете создать компоненты непосредственно в самом проекте. Теперь, при наличии ключевых объектов, вам необходимо добавить генератор первичных ключей, чтобы в дальнейшем создавать собственные компоненты. Чтобы создать компонент:
Рис. 8. Информация для создания компонента (enterprise bean) В этом процессе создается новая диаграмма класса (под названием default , которое можно сменить), отображающая компонент UniqueKeyGenerator. Сохраните диаграмму. Вместо того чтобы предоставить прямой доступ к параметру
Обратите внимание на ошибку в своем коде, вызванную отсутствием какого-либо содержания для нового метода в компоненте UniqueKeyGenerator. Дважды нажмите иконку компонента UniqueKeyGenerator в Project Explorer, а затем перейдите вниз по списку к новому методу. Добавьте нижеследующий код:
При сохранении класса символ ошибки должен исчезнуть. Не забудьте вставить комментарий, делающий этот метод доступным на локальном интерфейсе! Находясь в компоненте UniqueKeyGenerator, измените метод
По окончании процедуры сохраните класс. Код для создания компонентов ItemBean и BidBeanТеперь пришло время воспользоваться возможностями генератора уникальных ключей. В этом разделе вам предстоит отредактировать методы Отредактируйте метод
Конечно, данный код предполагает, что UniqueKeyGenerator уже существует с идентификатором Раздел 5. Развертывание и тестирование компонентовСопоставление компонентов CMP с реляционной базой данныхНесомненно, что для использования созданных компонентов CMP необходимо сопоставить их с реляционной базой данных. Для этого необходимо создать файлы определения базы данных для таблиц, которые представляют ваши компоненты. Представленная ниже процедура показывает, как сопоставить компоненты с открытой базой данных Cloudscape (сопоставление возможно практически с любой реляционной базой данных). Так как компоненты уже были определены, можно использовать сопоставление нисходящего типа (top-down mapping). Вы можете генерировать компоненты на основе существующих таблиц (сопоставление восходящего типа), а также сопоставлять существующие компоненты с существующими таблицами (сопоставление типа meet-in-the-middle mapping). Чтобы создать файлы сопоставления с Cloudscape: Например, Rational Software Modeler (а также Rational Application Developer) использует присущие платформе Eclipse функции перспектив для обеспечения интеграции с другими компонентами и инструментальными средствами в пакете Rational Suite. В этом руководстве основное внимание уделяется интеграции с Rational RequisitePro и в этой связи пользователю предоставляется перспектива Requirements.
Компонент Buyer в диаграмме класса должен выглядеть так, как показано на рисунке 10. Рис. 10.Диаграмма класса с отображением таблицы Сопоставьте остальные компоненты, продолжая использовать существующую базовую папку (backend folder), которая использовалась при сопоставлении BuyerBean. Обратите внимание на то, что в рамках окна редактора вы не можете видеть всю диаграмму класса целиком (такое случается при работе с большинством нестандартных диаграмм класса). Специально для просмотра больших диаграмм Rational Application Developer снабжен режимом Outline (Набросок), который можно использовать для перемещения по разным областям диаграммы внутри окна редактора диаграмм (см. рисунок 11). Выделенный прямоугольник обозначает область, которая в данный момент просматривается в окне редактора. Рис. 11.Режим просмотра Outline в Rational Application Developer Развертывание и тестирование компонентовНа этом этапе завершается процесс написания кода и начинается тестирование компонентов! Прежде всего, вам необходимо сгенерировать весь служебный код, требуемый для функционирования EJB. В Rational Application Developer этот процесс не требует особых усилий. Чтобы сгенерировать требуемый программный код, в Project Explorer нажмите правой кнопкой мыши RAD tutorial, а затем выберите команду Deploy. Наберитесь терпения - этот процесс может занять много времени. После его окончания разверните узел ejbModule, а затем узел tutorial, чтобы убедиться в появлении нескольких новых классов. После того как будет сгенерирован код, необходимо запустить компоненты на сервере тестирования:
И вновь этот процесс может занять определенное время. При появлении окна Table and Data Source Creator нажмите OK. Перейти к тестированию компонентов можно будет сразу после открытия универсального клиента тестирования. Для работы с компонентами этот клиент предлагает стандартный интерфейс, привычный по приложению "Проводник". Тем не менее, прежде всего необходимо "запустить" компоненты на данном сервере:
Компонент должен появиться в универсальном клиенте тестирования в разделе EJB Beans (см. рисунок 12). Рис. 12.Новый компонент в универсальном клиенте тестирования Теперь вы можете перейти к детальному изучению и фактическому выполнению методов в созданных компонентах. Для начала необходимо создать используемый по умолчанию UniqueKeyGenerator:
На данном этапе вы можете перейти к работе с объектом, нажав кнопку Work with Object. Однако, прежде всего, вам необходимо создать и проверить компонент Item. При отсутствии каких-либо ошибок панели в окне программы должны выглядеть так, как показано на рисунке 14. Рис. 14.Создание компонента Item Теперь вы создали компонент Item. Если вы нажмете Work with Object, сам компонент будет доступен в окне Explorer, при этом будут отображаться его публичные методы. Тестирование других методовК этому времени вы должны были ознакомиться с работой клиента тестирования, использование которого не составляет какого-либо труда. При необходимости проверки других созданных методов, например
Понятно, что вы лишь поверхностно коснулись процессов разработки и тестирования. Тем не менее, вы смогли познакомиться с множеством функций Rational Application Developer и, тем самым, подготовиться к созданию собственных проектов. Раздел 6. ЗаключениеВ этой части руководства вы перешли от рассмотрения требований к созданию самого приложения. Платформа IBM Software Development Platform позволяет легко и быстро моделировать прецеденты, при этом генерирует для вас "основной" код, тем самым помогая сконцентрироваться на бизнес-методах, которые нужны вашим клиентам. Одновременная обработка модели и программного кода позволяет изучить их взаимоотношение. Завершив написание кода, вы начинаете развертывание компонентов в среде WebSphere, в которой производится последующая отладка кода и устранение ошибок, после чего программный код может допускаться к формальному тестированию. Тесная интеграция WebSphere со средой разработки существенно облегчает переход к упомянутому тестированию. По мере перехода к следующей фазе (тестирование и работа с запросами на изменение - тема части 3 данного руководства) вы начнете замечать, как модель постепенно обретает нужную форму. В то же время исходные требования и функциональность системы будут приближаться к своему окончательному формату. Ссылки по теме
|
|