Общие положения#

Назначение раздела#

Раздел описывает правила проектирования и разработки проектных расширений Global ERP.

Проектное расширение используется, когда в системе требуется реализовать функциональность, отсутствующую в типовой поставке, либо адаптировать типовую функциональность под требования конкретного проекта без нарушения сопровождаемости системы.

Основная цель раздела — задать единые правила, по которым проектные команды добавляют новые сущности, атрибуты, выборки, печатные формы, JEXL-скрипты, серверную логику и настройки. Эти правила должны снижать риск конфликтов с типовой поставкой и будущими обновлениями Global ERP.

Раздел отвечает на практические вопросы проектного разработчика:

  • когда задачу нужно решать настройкой через интерфейс;

  • когда требуется разработка в коде;

  • как именовать проектные классы, атрибуты, выборки, печатные формы и другие сущности;

  • как отличать проектные объекты от типовых;

  • как добавлять новые атрибуты так, чтобы они не конфликтовали с типовыми и будущими атрибутами системы;

  • когда допустимо использовать проектное переопределение;

  • какие изменения нельзя выполнять напрямую в типовой поставке.

Область применения#

Раздел применяется при разработке и сопровождении проектных расширений Global ERP.

Раздел обязателен для:

  • проектных разработчиков;

  • ведущих разработчиков и технических архитекторов проекта;

  • специалистов, выполняющих ревью проектных доработок;

  • специалистов, отвечающих за сборку и передачу проектных изменений между экземплярами системы.

Раздел рекомендуется для ознакомления:

  • функциональным консультантам;

  • аналитикам;

  • администраторам системы;

  • специалистам сопровождения.

Раздел не заменяет руководство разработчика Global ERP и документацию по отдельным механизмам платформы. Если в руководстве разработчика или в документации по конкретному механизму указаны более строгие правила, применяются более строгие правила.

Связанные разделы документации#

Настоящий раздел не дублирует общую документацию по разработке, именованию сущностей, Git, релизам, SQL и оптимизации кода.

При выполнении проектной разработки дополнительно используются следующие разделы документации:

  • Организация разработки — структура проекта, project.yaml, работа с модулями, релизы, миграционные пакеты, Git и рабочее место разработчика;

  • Оптимизация работы системы — ревью Scala-кода, оптимизация Scala-кода, работа с данными и кэшем, ревью SQL-запросов, оптимизация SQL-запросов;

  • JEXL-скрипты в Global ERP — правила написания и применения JEXL-скриптов;

  • справочные разделы по классам, выборкам, типам объектов, печатным формам и универсальному фильтру.

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

Основные термины#

Типовая поставка — стандартные модули, классы, выборки, пакеты, настройки и другие объекты Global ERP, поставляемые в составе продукта.

Проектное расширение — функциональность, которая создается для конкретного проекта без изменения типовой поставки либо с минимальным и контролируемым использованием поддерживаемых механизмов расширения.

Модификация — изменение типового компонента Global ERP. Модификация выполняется только по согласованному решению и должна попадать в поставку продукта или отдельный согласованный комплект обновления.

Конфигурационное расширение — изменение поведения системы через настройки, не требующее изменения программного кода. Например, настройка типа объекта, объектных характеристик, печатных форм, переходов состояний, JEXL-скриптов или правил проверки.

Проектное переопределение — расширение стандартного поведения через проектный класс, который наследуется от типовой логики и переопределяет отдельные методы.

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

Проектный префикс — буквенный идентификатор проекта или заказчика, используемый в системных именах проектных модулей и объектов.

Проектный атрибут — атрибут, характеристика или поле, добавленное проектной командой и не входящее в типовую поставку Global ERP.

Общие принципы проектной разработки#

Приоритет стандартной функциональности#

Проектная разработка выполняется только после проверки, что требование невозможно или нецелесообразно реализовать стандартными средствами Global ERP.

Перед началом разработки необходимо проверить:

  • есть ли стандартная настройка на типе объекта;

  • можно ли использовать объектные или универсальные характеристики;

  • можно ли подключить печатную форму через интерфейс;

  • можно ли использовать JEXL-скрипт в поддерживаемом месте применения;

  • есть ли точка расширения для нужного сценария;

  • можно ли решить задачу созданием нового проектного объекта без изменения типового.

Если требование закрывается настройкой, разработка в коде не выполняется.

Разделение типовой и проектной части#

Проектные изменения должны быть отделены от типовой поставки.

Проектная команда не должна изменять типовые файлы, типовые ODM/ORM-разметки, типовые DataInstall-скрипты и типовые настройки напрямую, если для этого нет отдельного согласованного решения.

Для проектной разработки используются:

  • проектные модули;

  • проектные классы;

  • проектные выборки и отображения;

  • проектные пакеты, библиотеки, Api и Avi;

  • проектные печатные формы;

  • проектные JEXL-скрипты;

  • объектные и универсальные характеристики;

  • проектные настройки типов объектов;

  • точки расширения;

  • проектные переопределения.

Сохраняемость при обновлениях#

Проектные расширения должны сохраняться при обновлении версии Global ERP.

Даже если расширение выполнено по стандартным правилам, обновление типовой поставки может повлиять на проектную логику. Поэтому перед установкой обновления необходимо проверять:

  • изменились ли типовые классы, от которых наследуется проектная логика;

  • изменились ли методы, которые переопределяются проектным кодом;

  • изменились ли типовые выборки, к которым привязаны проектные отображения;

  • изменились ли типовые атрибуты, используемые в проектных отчетах, JEXL-скриптах и интеграциях;

  • не появились ли в типовой поставке атрибуты или объекты с именами, похожими на проектные.

Если обновление затрагивает используемую проектную логику, необходимо выполнить регрессионное тестирование соответствующих бизнес-процессов.