Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Принципы разработки: различия между версиями

Материал из Платформа Эра. Документации
Строка 115: Строка 115:


Детально работа действий будет рассмотрена в одной из следующих статей.
Детально работа действий будет рассмотрена в одной из следующих статей.
=== Обработчики классов ===
[[Файл:Редактор обработчика.png|мини|Редактор обработчика]]
Обработчики (Handlers) это объект пакета, который служит для обработки событий классов.
Обработчик предназначен для выполнения каких-либо действий во время операций insert/modify/delete в любых классах (в том числе из других пакетов, включая системные). Если обработчик возвращает строковое сообщение об ошибке либо false, операция отменяется.
Включенные обработчики активных пакетов выполняются в порядке заданного приоритета после родных методов класса (заданных в свойствах класса beforeInsertCode, beforeModifyCode, beforeDeleteCode).
Детальному обзору обработчиков посвящена следующая статья курса.


= Разработка в файловой системе =
= Разработка в файловой системе =

Версия от 12:18, 3 марта 2025

Предыдущая статья курса: Задание 7. Создание служебного сценария

Общая информация

Любое приложение на платформе эра состоит из набора пакетов. При переходе от No-Code разработки к разработке с помощью кода этот подход не меняется.

Все объекты пакета, созданные с помощью No-Code редакторов, преобразуются механизмами платформы в набор классов. Большинство классов не доступно для редактирования внешними средствами. Исключение составляют сервисы пакета, для них доступно полное изменение исходного кода и его замена.

Разработка приложений на платформе эра выполняется с помощью языка TypeScript. В большинстве случаев, можно выбрать контекст исполнения кода - он может быть клиентский (в браузере) или серверный (на сервере приложений продуктового слоя). В случае использования серверного контекста, код будет исполняться при помощи NodeJS версии 14.Х.

В рамках платформы, при разработке, применяется принцип разделения интерфейсов (см. SOLID).

Более полную архитектуру платформы и её модулей можно найти в соответствующей статье.

Применение TS-кода в No-Code редакторах

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

Переопределение методов

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

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

Переопределенные клиентские методы будут автоматически применены в сгенерированном системой контроле.

Методы, доступные для переопределения в редакторах:

Методы, доступные для переопределения
Имя объекта Имя метода Контекст исполнения Комментарий
Класс afterApplyUpdatesCode Серверный Метод вызывается после применения изменений в данных объекта класса
beforeInsertCode Серверный Метод вызывается перед добавлением нового объекта класса
beforeModifyCode Серверный Метод вызывается перед изменением данных объекта класса
beforeDeleteCode Серверный Метод вызывается перед удалением объекта класса
autoCalcCondition Серверный
doubleClickCode Клиентский
autoFocusConditionCode Клиентский
beforeInitCode Клиентский Метод вызывается перед инициализацией контрола в браузере
afterInitCode Клиентский Метод вызывается после инициализации контрола в браузере
Класс/DataProperty beforeSetCode Серверный Метод вызывается перед установкой нового значения в свойство объекта класса
afterSetCode Серверный Метод вызывается после установки нового значения в свойство объекта класса
dynamicEditorCode Клиентский
visibilityConditionCode Клиентский Метод, определяющий видимость свойства класса. Должен возвращать true или false
readOnlyConditionCode Клиентский Метод, определяющий доступность свойства класса для редактирования. Должен возвращать true или false
dynamicFilterCode Клиентский
afterValueChangedCode Клиентский Метод вызывается после измнеения значения свойства класса (на клиенте)
validationCode Клиентский Метод вызывается после изменения значения свойства, для его валидации. Должен возвращать true или false

Действия классов

Действие класса

Одна из важных возможностей реализации бизнес-логики объектов - это действия классов. Набор действий задается в коллекции Actions каждого класса.

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

Детально работа действий будет рассмотрена в одной из следующих статей.

Обработчики классов

Редактор обработчика

Обработчики (Handlers) это объект пакета, который служит для обработки событий классов.

Обработчик предназначен для выполнения каких-либо действий во время операций insert/modify/delete в любых классах (в том числе из других пакетов, включая системные). Если обработчик возвращает строковое сообщение об ошибке либо false, операция отменяется.

Включенные обработчики активных пакетов выполняются в порядке заданного приоритета после родных методов класса (заданных в свойствах класса beforeInsertCode, beforeModifyCode, beforeDeleteCode).

Детальному обзору обработчиков посвящена следующая статья курса.

Разработка в файловой системе

Сервисы. Исходный код

В рамках платформы, допускается разработка в файловой системе сервисов пакета.

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

Архив будет содержать набор классов-обёрток всех пакетов системы, а так же исходные коды сервиса.

Так как все классы-обёртки генерируются системой автоматически, не рекомендуется вносить в них изменения, кроме как для отладки при запуске сервиса на компьютере разработчика. Данный функционал используется для удобства разработки сервисов и применения функционала современных IDE.

Для разработки и отладки сервисов, необходимо наличие на компьютере разработчика NodeJS v14 и npm v6.

В качестве среды разработки подходит Visual Studio Code или любая другая современная IDE.

Разработке сервисов в дальнейшем курсе будет посвящено несколько отдельных статей.

Запуск TS-модулей и отладка

Справка сервисов

Инструкцию по запуску сервисов можно всегда найти в справке раздела Services.

Общий подход к работе с сервисами на локальной машине следующий:

  1. Создать в пакете серверный сервис
  2. Активировать пакет
  3. Отключить микросервис в приложении Настройки, раздел Прочее. Данное действие необходимо для того, чтобы запущенный сервис не конфликтовал с системным. На время разработки, сервис поднимаемый платформой отключается, и его будет замещать отладочный экземпляр сервиса разработчиком
  4. Включить в таблице Services отображение столбца sourceCode
  5. Скачать и распаковать zip-архив
  6. Установить на компьютер NodeJS v14 и npm v6, Visual Studio Code либо аналогичную IDE
  7. В файле package.json в строке build:live указать актуальные адрес сервера, имя домена и токен. Доступы настраиваются в приложении Настройки, раздел Прочее, Каналы интеграции. Для отладки можно использовать доступ product_layer, однако рекомендуется создать отдельный токен доступа с необходимыми правами.
  8. Выполнить npm ci
  9. Выполнить npm start
  10. Открыть папку src в IDE

Запущенный сервис контролируется утилитой nodemon, и при изменении исходных кодов, сервис будет автоматически перезапускаться, применяя необходимые изменения.

Более подробно про отладку и работу сервисов будет расказанно в дальнейших статьях курса.

Следующая статья курса: Обработчики данных
Предыдущая статья курса: Задание 7. Создание служебного сценария