Прежде, чем приступить к работе с Flexberry Ember, рассмотрим вопрос выбора языка для именования классов и прочих элементов модели предметной области.
В практическом руководстве по Flexberry ASP.NET для именования объектов данных и прочих элементов модели предметной области используется преимущественно русский язык. Данный подход удобен с точки зрения восприятия для аналитиков и разработчиков, которые работают с моделью. Однако при разработке приложений на Flexberry Ember рекомендовано использовать английский язык для именования тех элементов модели, с которыми работает разработчик.
Данное требование обусловлено не только сложившейся практикой программирования на языке JavaScript (именование переменных в JavaScript), но и дополнительными особенностями при работе с Flexberry Ember. Во-первых, возможна ситуация, в которой определенный код фреймворка Ember.js может некорректно работать из-за наличия кириллицы в именах. Во-вторых, ряд браузеров могут работать нестабильно, если в серверном API присутствует кириллица. В связи с этим, прежде чем приступить к дальнейшим шагам практического руководства, давайте переведем нашу модель предметной области на английский язык.
Дополнительно с общими рекомендациями по именованию переменных на языке JavaScript можно ознакомиться тут.
Копирование стадии
Для того, чтобы исходная модель, пригодная для разных практических руководств, оставалась неизменной, продублируем стадию. Для этого выполним команду “Экспорт стадии”:
Сохраним стадию локально, после чего вновь загрузим эту стадию во Flexberry Designer с использованием команды “Импорт стадии”:
Сохраним копию стадии под названием Стадия (ember).
Переименование классов
В первую очередь давайте переименуем классы. Для этого откроем диаграмму классов “Сущности” и выделим класс Заказ. Для того, чтобы переименовать класс, требуется вызвать контекстное меню и далее выбрать пункт “Переименовать”:
Заказ → [правая кнопка мыши (ПКМ)] → Переименовать
Введем в появившемся поле новое имя - Order.
Самостоятельно переименуйте остальные классы следующим образом:
Заказ → Order
СтрокаЗаказа → OrderItem
СостояниеЗаказа → OrderStatus
Накладная → Invoice
ЗаписьВНакладной → InvoiceItem
СостояниеНакладной → InvoiceStatus
Склад → Storehouse
ТоварНаСкладе → StoreProduct
Товар → Product
Сотрудник → Employee
Документ → Document
В результате данного шага у вас должна получиться следующая диаграмма:
Для того, чтобы в пользовательском интерфейсе приложения наименования классов сразу отображались на русском языке, требуется указать свойство Caption у класса. Для того, чтобы это сделать, выполните:
Order → [ПКМ] → ORM: Редактировать свойства
Мы видим, что соответствующее имя на русском языке уже указано. Это произошло потому, что мы создавали классы именно на русском языке, и при создании классов автоматически были проставлены значения свойств “Description” И “Caption”.
Если вы будете именовать классы изначально на английском языке, не забывайте указывать значение их заголовков в свойстве “Caption”.
Переименование атрибутов
Переименуем атрибуты на примере класса Order (Заказ). Для этого выполним следующие действия:
Order → [ПКМ] → ORM: Редактировать свойства → Атрибуты
В открывшемся окне изменим поля следующим образом:
Статус → Status
ДатаОтгрузки → ShipmentDate
ДатаОплаты → PaymentDate
Цена → TotalSum
Самостоятельно переименуйте атрибуты остальных классов следующим образом:
Order
Отменить() → Cancel() *
OrderItem
Количество → Amount
ЦенаСНалогами → PriceWTaxes
Сумма → TotalSum
Invoice
Статус → Status
ДатаВремяОтгрузки → ShipmentDateTime
Сумма → TotalSum
Вес → TotalWeight
Примечание → Note
ФИОПолучателя → CustomerName
Особо: СостояниеНакладной → InvoiceStatus
InvoiceItem
Количество → Amount
Вес → Weight
Цена → Price
Сумма → TotalSum
Storehouse
Номер → Number
Адрес → Address
StoreProduct
Количество → Amount
Product
КодТовара → ProductCode
Название → Name
ЕдиницаИзмерения → Measure
Описание → Description
Цена → Price
Employee
ТабельныйНомер → Number
Фамилия → LastName
Имя → FirstName
Отчество → MiddleName
Телефон → PhoneNumber
EMail → Email
Document
Номер → Number
ДатаЗаполнения → CreateDate
Подсказка:
переименовать метод можно прямо на диаграмме или на соответствующей вкладке в свойствах класса:
Order → [ПКМ] → ORM: Редактировать свойства → Методы
Переименование ролей ассоциаций
Рядом с классом Employee (Работник) указаны наименования ролей для ассоциаций, связыающих класс Работник с другими классами, так как для разных связей роль Работника отличается. Их имена также нужно изменить:
МатериальноОтветственноеЛицо → ResponsiblePerson
Кладовщик → Storekeeper
Менеджер → Manager
Локализация перечислений
Классы со стереотипом “enumeration” представляют собой особый тип данных - это фиксированный набор значений, который указывается для свойств различных классов. Чтобы их переименовать, выполним следующие действия:
OrderStatus → [ПКМ] → ORM: Редактировать свойства → Возможные значения
Для внутренней работы приложения требуется в поле Name ввести английские наименования. Однако, чтобы значения перечислений отображались в приложении сразу на русском языке, перенесем русские наименования в столбец Caption:
Новый → New
Оплаченный → Paid
Отменённый → Canceled
Самостоятельно переименуйте значения остальных перечислений следующим образом:
InvoiceStatus
Новая → New
Выписанная → Issued
Приостановленная → Paused
Готовая → Ready
Отгруженная → Shipped
Доработка структуры модели
Внесем также дополнительные изменения в диаграмму классов, чтобы она более точно описывала предметную область:
(1) Добавим поле Weight типа double в класс Product
Это поле необходимо для того, чтобы описать вес единицы конкретного товара. Таким образом, вес в строке накладной может далее быть автоматически рассчитан на основании веса единицы товара и его количества.
(2) Создадим перечисление PositionList (тип enumeration) со значениями:
Кладовщик → Storekeeper
Менеджер → Manager
Далее также будем считать, что материально ответственными лицами будут являться кладовщики.
(3) Добавим поле Position (в значении должность) типа PositionList в класс Employee
Оно необходимо, так как конкретного сотрудника принимают на конкретную должность, и мы должны это учитывать, чтобы в дальнейшем фильтровать список сотрудников по их должности.
Итог
В результате всех изменений диаграмма классов должна принять следующий вид:
Нужно отметить, что перевод русских имен в модели предметной области на английский язык применяется не всегда. Такой подход применяется в том случае, когда вся команда способна вести разработку на английском языке. Если вся команде не владеет английским языком на достаточном уровне, то вместо полноценного перевода иногда используют транслитерацию, когда слова на русском языке просто пишутся латиницей, например:
Заказ - Order - Zakaz
Выбор способа именования устанавливается руководителем проекта или ведущим разработчиком и является единым для всей команды.