Дополнительные действия
AZykov (обсуждение | вклад) |
AZykov (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
= Применение TS-кода в No-Code редакторах = | = Применение TS-кода в No-Code редакторах = | ||
[[Файл:Переопределение TypeScript-методов в классе.png|мини|Переопределение методов в редакторе класса]] | [[Файл:Переопределение TypeScript-методов в классе.png|мини|Переопределение методов в редакторе класса]] | ||
=== Переопределение методов === | |||
Платформа предлагает широкие возможности по модификации логики объектов с помощью переопределения некоторых TypeScript-методов в редакторах объектов. Переопределен может быть как серверный, так и клиентский код. | Платформа предлагает широкие возможности по модификации логики объектов с помощью переопределения некоторых TypeScript-методов в редакторах объектов. Переопределен может быть как серверный, так и клиентский код. | ||
Строка 105: | Строка 107: | ||
|Метод вызывается после изменения значения свойства, для его валидации. Должен возвращать true или false | |Метод вызывается после изменения значения свойства, для его валидации. Должен возвращать true или false | ||
|} | |} | ||
=== Действия классов === | |||
[[Файл:Действие класса.png|мини|Действие класса]] | |||
Одна из важных возможностей реализации бизнес-логики объектов - это действия классов. Набор действий задается в коллекции Actions каждого класса. | |||
Действие может выполняться как в серверном так и в клиентском контексте. Платформа не накладывает ограничений на логику работы действий, таким образом в действии может быть заложена сложная логика обработки данных класса, взаимодействий с другими модулями и сервисами системы, а так же внешними интеграциями. | |||
Детально работа действий будет рассмотрена в одной из следующих статей. | |||
= Разработка в файловой системе = | = Разработка в файловой системе = | ||
[[Файл:Сервисы. Исходный код.png|мини|Сервисы. Исходный код]] | |||
В рамках платформы, допускается разработка в файловой системе '''сервисов''' пакета. | |||
После создания сервиса и переактивации пакета, система сгенерирует исходный код и обвязку для сервиса. В разделе '''Services''', в колонке ''sourceCode'' можно скачать архив исходных кодов для разработки сервиса. | |||
Архив будет содержать набор классов-обёрток всех пакетов системы, а так же исходные коды сервиса. | |||
Так как все классы-обёртки генерируются системой автоматически, не рекомендуется вносить в них изменения, кроме как для отладки при запуске сервиса на компьютере разработчика. Данный функционал используется для удобства разработки сервисов и применения функционала современных IDE. | |||
Для разработки и отладки сервисов, необходимо наличие на компьютере разработчика NodeJS v14 и npm v6. | |||
В качестве среды разработки подходит Visual Studio Code или любая другая современная IDE. | |||
Разработке сервисов в дальнейшем курсе будет посвящено несколько отдельных статей. | |||
= Запуск TS-модулей и отладка = | = Запуск TS-модулей и отладка = | ||
[[Файл:Справка сервисов.png|мини|Справка сервисов]] | |||
Инструкцию по запуску сервисов можно всегда найти в справке раздела Services. | |||
Общий подход к работе с сервисами на локальной машине следующий: | |||
# Создать в пакете серверный сервис | |||
# Активировать пакет | |||
# Отключить микросервис в приложении Настройки, раздел Прочее. Данное действие необходимо для того, чтобы запущенный сервис не конфликтовал с системным. На время разработки, сервис поднимаемый платформой отключается, и его будет замещать отладочный экземпляр сервиса разработчиком | |||
# Включить в таблице Services отображение столбца sourceCode | |||
# Скачать и распаковать zip-архив | |||
# Установить на компьютер NodeJS v14 и npm v6, Visual Studio Code либо аналогичную IDE | |||
# В файле package.json в строке build:live указать актуальные адрес сервера, имя домена и токен. Доступы настраиваются в приложении Настройки, раздел Прочее, Каналы интеграции. Для отладки можно использовать доступ product_layer, однако рекомендуется создать отдельный токен доступа с необходимыми правами. | |||
# Выполнить npm ci | |||
# Выполнить npm start | |||
# Открыть папку src в IDE | |||
Запущенный сервис контролируется утилитой nodemon, и при изменении исходных кодов, сервис будет автоматически перезапускаться, применяя необходимые изменения. | |||
Более подробно про отладку и работу сервисов будет расказанно в дальнейших статьях курса. | |||
Следующая статья курса: [[Обработчики данных]] | Следующая статья курса: [[Обработчики данных]] | ||
Предыдущая статья курса: ''[[Задание 7. Создание служебного сценария]]'' | Предыдущая статья курса: ''[[Задание 7. Создание служебного сценария]]'' | ||
[[Категория:Курс "Разработка приложений"]] | [[Категория:Курс "Разработка приложений"]] |
Версия от 12:00, 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 каждого класса.
Действие может выполняться как в серверном так и в клиентском контексте. Платформа не накладывает ограничений на логику работы действий, таким образом в действии может быть заложена сложная логика обработки данных класса, взаимодействий с другими модулями и сервисами системы, а так же внешними интеграциями.
Детально работа действий будет рассмотрена в одной из следующих статей.
Разработка в файловой системе

В рамках платформы, допускается разработка в файловой системе сервисов пакета.
После создания сервиса и переактивации пакета, система сгенерирует исходный код и обвязку для сервиса. В разделе Services, в колонке sourceCode можно скачать архив исходных кодов для разработки сервиса.
Архив будет содержать набор классов-обёрток всех пакетов системы, а так же исходные коды сервиса.
Так как все классы-обёртки генерируются системой автоматически, не рекомендуется вносить в них изменения, кроме как для отладки при запуске сервиса на компьютере разработчика. Данный функционал используется для удобства разработки сервисов и применения функционала современных IDE.
Для разработки и отладки сервисов, необходимо наличие на компьютере разработчика NodeJS v14 и npm v6.
В качестве среды разработки подходит Visual Studio Code или любая другая современная IDE.
Разработке сервисов в дальнейшем курсе будет посвящено несколько отдельных статей.
Запуск TS-модулей и отладка

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