Выполненные задания по курсу "Разработка Enterprise-приложений"
Записанные видео с занятий по курсу можно посмотреть на канале FlexberryPLATFORM на YouTube: Плейлист c занятиями
Ссылки на презентации с занятий, а также инструкции по просмотру находятся в файле: PRESENTATIONS.md
Распределение по вариантам участников курса находится в файле: TaskVariants.txt
Правила выполнения и сдачи заданий приведены в файле: CONTRIBUTING.md
Описания предметных областей, на основании которых разрабатывается модель предметной области, а также последующая генерация и доработка приложения, находятся в файле: DomainVariants.txt
На протяжении курса будут даваться задания, связанные с проектированием, генерацией и последующей доработкой веб-приложения с использованием инструментов платформы Flexberry и платформы Microsoft .NET. При этом каждое задание будет охватывать один из этапов или одну из частей работ, которые необходимо выполнять на проекте по разработке корпоративного приложения, в котором используются перечисленные инструменты.
Для ознакомления с основными возможностями платформы Flexberry будут также даваться для выполнения лабораторные работы в качестве вспомогательных заданий.
Срок: 19.10.2015 и 21.10.2015 для каждой из групп соответственно
Выполнить лабораторные работы №№1-3: https://yadi.sk/d/PeXA0BVZjince
Срок: 19.10.2015 и 21.10.2015 для каждой из групп соответственно
Создать модель предметной области при помощи Flexberry Designer, сгенгенерировать веб-приложение, доработать клиентскую часть сгенерированного веб-приложения.
Описания предметных областей по вариантам приведены в файле: DomainVariants.txt
- Построить модель предметной области с использованием Flexberry Designer (обязательно)
- Сгенерировать веб-приложение (обязательно)
- Выполнить доработку клиентской части (минимум для двух тем - обязательно):
- Логитип и название системы (обязательно)
- Добавить иконки для пунктов иерархического меню (обязательно)
- Любые "красивости" на ваше усмотрение (не обязательно)
- Выполнить доработку рабочего стола главной страницы по своему усмотрению (обязательно)
- Продемонстрирвать умение использовать скрипты (не обязательно):
- Например, добавить любые эффекты анимации с использованием jQuery
- Подключить готовый плагин jQuery и использовать его функционал на какой-либо странице
Срок: 26.10.2015 и 28.10.2015 для каждой из групп соответственно
Добавить страницы с запросами для веб-приложения, полученного в результате выполнения задания №2.
Перечень запросов по вариантам приведен в файле: QueriesVariants.txt
- Проанализировать запросы и при необходимости внести исправления в модель предметной области на диаграммах классов - добавить необходимые атрибуты/классы/связи. В случае внесения изменений в модель предметной области исправить соответствующие представления у классов, при необходимости также выполнить повторное создание прототипа приложения (если были добавлены новые классы; перед этим необходимо удалить сгенерированную ранее диаграмму классов с прототипом приложения и все представления из всех классов предметной области). Если были внесены изменения в модель предметной области, необходимо также выполнить повторную генерацию всех проектов решения (обязательно).
- Создать страницы для выполнения запросов - по одной странице на запрос. Страницы добавить с использованием Flexberry Designer - на диаграмме классов с прототипом приложения добавить пользовательские (пустые) формы со стереотипом "userform", настроить контейнеры веб-приложения (меню), после чего выполнить повторную генерацию проекта с формами для веб-приложения (обязательно).
- В исходном коде сгенерированных форм для запросов разместить необходимые разметку и компоненты, а также написать соответствующие LINQ-запросы (либо функции ограничения) с использованием сервиса данных и LINQ-провайдера Flexberry ORM. Для отображения результатов запроса можно использовать любую разметку и компоненты (для отображения списка объектов, как вариант, можно использовать компонент WebObjectListView) (обязательно).
Срок: 16.11.2015
Добавить реализацию визуальной логики и бизнес-логики для веб-приложения, полученного в результате выполнения задания №3.
Варианты заданий по реализации прикладной логики приведены в файле: BusinessLogicVariants.md
- Добавить валидацию вводимых пользователем данных на формах редактирования: выполнить проверку на реалистичность вводимых значений (например, неотрицательные цена и количество и т.п.) Для валидации данных использовать (способ(ы) выбрать самостоятельно) (обязательно):
- Валидаторы ASP.NET
- Валидация с использованием специализированных плагинов jQuery
- Валидация с использованием бизнес-серверов
- Рализовать прикладную логику веб-приложения согласно заданиям по вариантам. При необходимости добавить нужные изменения в модель предметной области и выполнить перегенерацию приложения (обязательно, постараться сделать максимум пунктов в своем варианте).
- Добавить запись в лог информации обо всех исключениях или ошибках, которые инициируются в созданном серверном коде, при помощи Flexberry LogService. Тип (категорию) ошибок при записи в лог определить самостоятельно. Запись сообщений, которые попадают в лог, должна производиться как в базу данных веб-приложения, так и в лог-файл (обязательно).
Срок: 16.11.2015
Включить и настроить подсистемы полномочий и аудита для веб-приложения, полученного в результате выполнения задания №4.
- Настроить подсистему полномочий для веб-приложения (обязательно):
- Установить AccessType во Flexberry Designer для всех классов предметной области, выполнить перегенерацию и перекомпиляцию объектов данных и веб-приложения
- Выполнить создание полномочий при помощи Flexberry Designer (генерацию необходимых таблиц и записей в базу данных)
- Добавить как минимум одного пользователя помимо администратора, назначить ему права на объекты данных предметной области (решение по количеству пользователей, использованию ролей и назначению прав на конкретные объекты данных принять самостоятельно)
- Настроить процесс авторизации для созданных пользователей и ролей, а также вид иерархического меню в файлах Web.config и Web.sitemap
- Добавить код для всех списковых форм, который будет на основании имеющихся у текущего пользователя полномочий отключать отображение кнопок с соответствующими операциями у WebObjectListView (например, если у текущего пользователя нет прав на добавление объектов данных, кнопки для добавления объектов данных на списковой форме показываться не должны и т.п.)
- Включить подсистему аудита для веб-приложения (обязательно):
- Создать необходимые таблицы для подсистемы аудита, включить аудит для всех классов данных из Flexberry Designer, привести базу данных в соответствие с измененной моделью, выполнить перегенерацию и перекомпиляцию объектов данных и приложения
- Выполнить (проверить) небоходимые для работы подсистемы аудита настройки в файле Web.config
- Добавить код для инициализации подсистемы аудита в веб-приложение
- Добавить в иерархическое меню технологические формы для просмотра операций аудита, сделать эти формы доступными только для администратора
Срок: 23.11.2015
Написать модульные, интеграционные и автоматизированные системные тесты для веб-приложения, полученного в результате выполнения задания №5.
- Написать модульные тесты для бизнес-серверов с использованием тестового фреймворка MSTest (обязательно 3 теста, хотя бы один из них должен проверять выбрасываемое исключение на валидацию данных):
- Тесты написать для тех сценариев работы бизнес-серверов, которые не вызывают метод UpdateObject/UpdateObjects сервиса данных, а также не предполагают инициирования вызовов других бизнес-серверов
- Экземпляр бизнес-сервера необходимо создать в тесте вручную
- Результатом теста должно быть либо сравнение ожидаемых значений свойств изменяемого в бизнес-сервере объекта данных с их фактическими значениями, либо ожидание выброшенного исключения определенного типа
- Написать модульные тесты для JavaScript-кода с использованием тестового фреймворка QUnit и mock-библиотеки Sinon.JS (обязательно 1 тест):
- Написать тесты для вызовов веб-сервиса или вычислений на стороне клиента, которые было необходимо реализовать в рамках выполнения задания №4
- В случае тестирования вызовов веб-сервиса с использованием AJAX, необходимо использовать фейковый сервер Sinon.JS для возврата ожидаемых со стороны сервера данных
- Написать интеграционные тесты для бизнес-серверов с использованием тестового фреймворка MSTest (необязательно):
- Тесты написать для тех сценариев работы бизнес-серверов, которые предполагают каскадное удаление данных
- В данных тестах изолировать бизнес-сервер не требуется, должна использоваться рабочая инстанция сервиса данных
- Необходимо сделать копию базы данных (например, сгенерировать из Flexberry Designer) для использования в тестах и заполнить ее тестовыми данными
- При создании экземпляра бизнес-сервера в тесте необходимо передать ему инстанцию сервиса данных, которая создана на основе информации из конфигурационного файла
- В тесте необходимо предусмотреть добавление необходимых тестовых данных в базу данных или приведение существующих данных в базе данных в нужное состояние (можно использовать, например, методы с атрибутами TestInitializeAttribute и TestCleanupAttribute)
- После выполнения каскадного обновления необходимо прочитать требуемые данные из базы данных и сравнить фактическое состояние прочитанных объектов данных с ожидаемым
- Написать автоматизированные системные тесты с использованием Selenium WebDriver (обязательно 3 теста):
- Сценарии тестирования веб-приложения можно выбрать произвольно
- Вызовы Selenium WebDriver необходимо использовать внутри модульных тестов MSTest на основе фреймворка MSTest