Прежде, чем приступить к работе с 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

Новое поле Weight в классе Product

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

(2) Создадим перечисление PositionList (тип enumeration) со значениями:

Кладовщик → Storekeeper
Менеджер → Manager

Добавление перечисления

Далее также будем считать, что материально ответственными лицами будут являться кладовщики.

(3) Добавим поле Position (в значении должность) типа PositionList в класс Employee

Новое поле Position типа PositionList в классе Empoyee

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

Итог

В результате всех изменений диаграмма классов должна принять следующий вид:

Итог переименования и дораоботки структуры модели

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

Заказ - Order - Zakaz

Выбор способа именования устанавливается руководителем проекта или ведущим разработчиком и является единым для всей команды.

Перейти