Site Tools


Hotfix release available: 2026-07-14c "Mort". upgrade now! [57.3] (what's this?)
Hotfix release available: 2026-07-14b "Mort". upgrade now! [57.2] (what's this?)
Hotfix release available: 2026-07-14a "Mort". upgrade now! [57.1] (what's this?)
New release available: 2026-07-14 "Mort". upgrade now! [57] (what's this?)
devpark:dev:developer_manual

Руководство разработчика

Пространства имен

Все пространства имен образуются путем добавления к общей части названия DevPark.Cloud названия конкретного модуля через точку. В проекте используются следующие пространства имен:

  1. Devpark.Cloud.CC.Module.BusinessObjects - пространство имен, в котором описываются все бизнес объекты модуля ClientCenter.
  2. DevPark.Cloud.СС.Module.Enums - пространство имен перечислений.
  3. DevPark.Cloud.СС.Module.BusinesLogics - пространство имен, в котором описываются классы, содержащие бизнес-логику.
  4. DevPark.Cloud.СС.Module.Web.Controllers - пространство имен, в котором описываются классы контроллеров приложения для управления пользователями системы.
  5. DevPark.Cloud.СС.Module.Web.Controllers.Editors - пространство имен, в котором описываются классы редакторов приложения для управления пользователями системы.
  6. DevPark.Cloud.CC.Module.Utils - пространство имен вспомогательных классов.
  7. Devpark.Cloud.WS - пространство имен веб-службы, предназначенной для связи пользователя системы с центральной базой данных (веб-служба).
  8. DevPark.Cloud.UI.Widgets.Common - пространство имен для виджетов общего назначения (регистрация, вход).
  9. DevPark.Cloud.UI.Widgets.Fitness - пространство имен для виджетов ориентированных на систему управления фитнесом.
  10. DevPark.Cloud.UI.Widgets.Lobix - пространство имен для виджетов ориентированных на систему Lobix.
  11. DevPark.Cloud.Tests.VCTests - пространство имен для тестов контроллеров.
  12. DevPark.Cloud.Tests.ObjectTests - пространство имен для тестов объектов.
  13. DevPark.Clouds.Tests.BLTests - пространство имен для тестирования бизнес-логики.
  14. DevPark.Cloud. - пространство имен для общих классов для всех приложений

Структура решения

Список проектов в решении

  1. DevPark.Cloud.CC.Module - проект, содержащий описание бизнес объектов и бизнес логики для приложения управления пользователями системы.
  2. DevPark.Cloud.CC.Module.Web - проект, содержащий классы контроллеров приложения для управления пользователями системы.
  3. DevPark.Cloud.CC.Web - проект ASP приложения для управления пользователями системы.
  4. DevPark.Cloud.UI - проект, для предоставления интерфейса пользователя (виджеты) и связи с центральной базой данных.
  5. DevPark.Cloud.Tests - проект содержащий тесты NUnit.

Структура проекта DevPark.Clouds.CC.Module

  1. BusinessObjects - папка для файлов классов бизнес-объектов.
  2. Enums - папка для хранения файлов перечислений
  3. Controllers - папка для файлов классов контроллеров.
  4. BuisnessLogics - папка для файлов классов содержащих бизнес-логику.
  5. Images - папка для файлов изображений.
  6. EmbededReports - папка для файлов отчетов.
  7. SQL - папка для файлов хранимых процедур.
  8. Utils - папка для файлов вспомогательных классов.

Структура проекта DevPark.Clouds.CC.Module.Web

  1. Controllers - папка для файлов классов контроллеров, содержащих специфичный, ориентированный на Web код.
  2. Editors - папка для классов пользовательских редакторов.
  3. Images - папка для хранения изображений.

Структура проекта DevPark.Clouds.Tests

  1. ObjectTests - папка для классов тестов объектов.
  2. BuisnessLogicsTests - папка для классов тестов бизнес-логики.
  3. ControllerTests - папка для классов тестов контроллеров.
  4. Utils - папка для классов поддержки системы тестирования.

Структура проекта DevPark.Cloud

Проект содержит классы которые должны быть во всех приложениях. Например работа с шаблонами, с системой сообщений.

  1. Notifications.BussinessObjects - папка для файлов классов бизнес-объектов.
  2. Notifications.Enums - папка для хранения файлов перечислений
  3. Notifications.Controllers - папка для файлов классов контроллеров
  4. Notifications.BuisnessLogics - папка для файлов классов содержащих бизнес-логику.

Правила разработки

Правила настройки интерфейса

<note important>

  1. Настройка интерфейса должна осуществляться через атрибуты. Необходимо использовать Model.DesignedDiffs.xafml в проекте DevPark.Cloud.CC.Module.Web.

</note>

Атрибуты настройки


Атрибуты класса:
[VisibleInReport] - показывать в отчетах.
[XafDisplayNameAttribute] - отображаемое имя объекта.
[ImageNameAttribute] - изображение для объекта.
[XafDefaultPropertyAttribute] - поле по-умолчанию.
[ModelDefault…] - настройки разрешений на создание, удаление, редактирование, заголовок. Пример: ModelDefault(“AllowDelete”, “false”)
[MapInheritance(MapInheritanceType.ParentTable)] - родительская таблица.
[RuleRequiredField…] - поля, обязательные к заполнению.
[Appearance…] - поведение полей (visible, hide, e.t.c)

Атрибуты полей:
[ModelDefault(“Caption”, “Account name”)] - заголовок поля.
[ModelDefault(“DisplayFormat”, “{0:F4}”)] - формат отображения.
[ModelDefault(“EditMask”, “F4”)] - маска редактирования.
[ModelDefault(“AllowEdit”, “False”)] - разрешение на редактирование.
[Browsable(false)] - видимость поля.
VisibleInLookupListViewAttribute - показывать в Lookup View.
VisibleInListViewAttribute - показывать в List View.
VisibleInDetailViewAttribute - показывать в Detail View.
[NonPersistent] - поле не сохраняется в базе.
[Persistent(“AccountCategoryId”)] - название столбца в таблице базы данных.
[ImmediatePostData] - немедленное обновление всех полей при изменении текущего.
[Size(100)] - размер поля (для String - длина строки).
[LookupEditorMode(LookupEditorMode.AllItems)] - режим редактирования при просмотре в Lookup
[NullValue()] - нулевое значение поля

Атрибуты правил:
Описание атрибутов правил здесь: http://documentation.devexpress.com/#Xaf/CustomDocument3008

Правила добавления бизнес-объектов

<note important>

  1. Бизнес-объекты приложения для управления пользователями (ClientCenter) добавляются в проект DevPark.Clouds.CC.Module в папку BuisnessObjects
  2. Для добавления объекта следует использовать шаблон DXperience v12.1 Domain Object (Code only).

Список обязательных атрибутов класса:

  1. XafDisplayNameAttribute - отображаемое имя объекта.
  2. ImageNameAttribute - изображение для объекта.
  3. XafDefaultPropertyAttribute - поле по-умолчанию.
  4. [MapInheritance(MapInheritanceType.ParentTable)] - для производных классов.

Список обязательных атрибутов поля:

  1. XafDisplayNameAttribute - отображаемое имя поля.
  2. ToolTipAttribute - всплывающая подсказка
  3. VisibleInLookupListViewAttribute - показывать в Lookup View.
  4. VisibleInListViewAttribute - показывать в List View.
  5. VisibleInDetailViewAttribute - показывать в Detail View.
  6. SizeAttribute - размер поля (обязателен для полей типа String).
  7. ModelDefault(“DisplayFormat”, …) - формат отображения (обязателен для полей типа DateTime).
  8. ModelDefault(“EditMask”, …) - маска редактирования (обязателен для полей типа DateTime).

</note>

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

<note important>

  1. Для одной сущности должен существовать только один контроллер.
  2. Контроллеры по возможности необходимо добавлять в проект DevPark.Cloud.CC.Module папка Controllers. Если это невозможно т.к. необходим доступ к сборкам Web, контроллер следует добавлять в проект DevPark.Cloud.CC.Module.Web папка Controllers.
  3. Перед добавлением нового контроллера необходимо убедится, что уже не существует аналогичный.
  4. Правило образования имени контроллера: Название объекта + VC
  5. Поле Name в Action должно начинаться с сокращенного обозначения типа Action (SimpleAction - sa, ParametrizedAction - pa, SingleChoiceAction - sca, PopupWindowShow - pwsa).
  6. Поле Id в Action должно соответствовать полю Name с добавлением Id.
  7. Логика не должна содержаться в контроллере. Для этого необходимо использовать отдельные классы бизнес-логики, находящиеся в проекте DevPark.Cloud.CC.Module в папке BuisnesLogics.

</note>

Правила поддержки проекта

<note warning>

  1. Не допускается заливать в SVN код, содержащий предупреждения и ошибки.
  2. Не допускается заливать в SVN код, не прошедший все тесты из тестового проекта.
  3. Обязательно добавление тестов после добавления новых бизнес-объектов, контроллеров, функционала.
  4. Не допускается заливать в SVN код c предупреждениями StyleCop.
  5. Обязательно указание задач в Jira при заливке кода в SVN.

</note>

Правила кодирования

<note important>

  1. Все поля, классы и методы необходимо комментировать.
  2. Имена классов, полей, методов и.т.д. должны максимально отражать их сущность.
  3. Строки Xaf-сообщений должны добавляться и локализовываться в соответствии с http://documentation.devexpress.com/#Xaf/CustomDocument2655
  4. Все остальные строки должны добавляться через ресурсы приложения

<note warning>

  1. Запрещено использовать метод Save()!
  2. Запрещено использовать ObjectSpace.CommitChanges() в контроллерах!
  3. Запрещено использовать обработчик OnSaved()!

</note> </note>

Правила логирования

<note important>

  1. Для поддержки логирования используется библиотека NLog. Для логирования следует вызывать метод статического поля CurrentLogger класса Logger сборки DevPark.Clouds.CC.Module.
  2. Каждый метод должен содержать логирование входа в метод (с указанием названия метода и передаваемых параметров) и выхода из метода (с указанием названия метода и возвращаемого значения). Уровень логирования Debug.
  3. Каждый обработчик исключения также должен содержать логирование ошибки (с названием метода, в котором произошла ошибка и сообщения об ошибке). Уровень логирования Error.

</note>

Регламент поддержки тестирования

Инструменты тестирования

  1. Для тестирования используется NUnit и EasyTest.
  2. Для проверки Xaf-функционала в проект добавлен механизм использования Easy Test из Unit-тестов.
  3. Для вызова команд EasyTest используется класс TestCommandAdapter. Для его поддержки необходимо, чтобы класс с набором тестов наследовал класс WebTest.

Настройка модуля тестирования

Необходимо указать путь к папке с Web-приложением в файле TestApplcationTests.cs.

  public class WebTestApplicationHelper : WebEasyTestFixtureHelperBase
  {
      public WebTestApplicationHelper() : base(@"..\..\..\DevPark.Cloud.CC.Web", @"D:\Work\DevPark.Clouds\DevPark.Cloud.CC.Web") { }
  }

Описание команд адаптера Easy Test

  1. DoAction(“Название действия”, “Параметр”) - вызов action. Эмитирует нажатие на кнопку. Например кнопку “New”. В параметре “Название действия” необходимо указывать именно то название, которое отображается на форме. Может использоваться также для выполнения действий добавленных разработчиком. “Параметр” используется при выполнении действия Navigation. В нем указывается название пункта навигации к которому надо перейти.
  2. SelectRecords(“Название таблицы”, “Коллекция названий столбцов, по которым надо сделать выборку”, “Коллекция значений столбцов, по которым надо сделать выборку”) - выбор записей в таблице.
  3. SetFieldValue(“Название поля”, “Значение”) - проставить значение в поле формы.
  4. ProcessRecords(“Название таблицы”, “Коллекция названий столбцов, по которым надо сделать выборку”, “Коллекция значений столбцов, по которым надо сделать выборку”, “Название действия”) - обработка (открытие детальной формы) записи в таблице. В качестве Действия можно указать например Edit и открыть форму в режиме редактирования.
  5. ValidatationResult(“Строки сообщения об ошибке”) - проверка отработки валидации. Проверяем, что показано сообщение об ошибке.
  6. GetFieldValue(“Название поля”) - получить значение поля в детальной форме
  7. GetCellValue(“Название таблицы”, “Индекс строки”, “Заголовок столбца”) - получить значение ячейки в строке таблицы.

Правила поддержки тестирования

<note important>

  1. После добавления каждого нового бизнес-объекта необходимо реализовывать для него набор тестов.
  2. Файлы с описанием классов тестов бизнес-объектов находятся в проекте DevPark.Cloud.Tests в папке ObjectTests.
  3. Для каждого бизнес-объекта должен существовать свой класс тестов. Название класса формируется из названия объекта + Test. Каждый такой класс должен реализовывать интерфейс IObjectCommonTests, содержащий набор обязательных тестов.
  4. Если в объекте применяются правила валидации для каждого из них должен существовать свой тест.
  5. Для любого тестового класса необходимо указывать атрибуты [TestFixture, RequiresSTA].
  6. Все тестовые классы должны наследоваться от класса WebTests.
  7. Для каждого контроллера необходимо создавать свой класс с набором тестов. Файлы с описанием классов для тестирования контроллеров находятся в DevPark.Cloud.Tests в папке ControllerTests.
  8. Название класса для тестирования контроллера формируется следующим образом: Название объекта + VC + Test. Например: ClientVCTests.
  9. Для каждого Action в контроллере необходимо реализовывать набор тестов, проверяющих его функциональность.
  10. Классы, содержащие тесты предназначенные для проверки бизнес-логики для объекта находятся в проекте DevPark.Cloud.Tests в папке BuisnessLogicsTest.
  11. Название класса для тестирования бизнес-логики объекта формируется из названия объекта + BL + Test.

</note>

Список тестов

Процесс разработки

Добавление нового бизнес-объекта

  1. Объекты добавляются согласно правилам описанным в пункте Правила добавления бизнес-объектов.
  2. После добавления нового объекта необходимо добавить класс для его тестирования.
  3. Необходимо исправить все предупреждения StyleCop.
  4. Провести комплексное тестирование. Если будут обнаружены ошибки - исправить их.
  5. Залить код в СВН с указанием задач в Jira.

Добавление нового контроллера

  1. Контроллеры добавляются согласно пункту Правила добавления контроллеров.
  2. После добавления контроллера необходимо добавить класс для его тестирования.
  3. Необходимо исправить все предупреждения StyleCop.
  4. Провести комплексное тестирование. Если будут обнаружены ошибки - исправить их.
  5. Залить код в СВН с указанием задач в Jira.

Исправление ошибок и доработка функционала

  1. Для каждого нового функционала необходимо добавить тесты проверяющие его.
  2. Необходимо исправить все предупреждения StyleCop.
  3. Провести комплексное тестирование. Если будут обнаружены ошибки - исправить их.
  4. Залить код в СВН с указанием задач в Jira.

Ссылки на ресурсы

devpark/dev/developer_manual.txt · Last modified: by 127.0.0.1