Дальнейшие статьи курса расчитаны на наличие опыта в разработке приложений и сервисов. Крайне желательно наличие опыта разработки на языке TypeScript и работе с NodeJS.</blockquote>
'''Дальнейшие статьи курса расчитаны на наличие опыта в разработке приложений и сервисов. Крайне желательно наличие опыта разработки на языке TypeScript и работе с NodeJS.'''</blockquote>
Дальнейшие статьи курса расчитаны на наличие опыта в разработке приложений и сервисов. Крайне желательно наличие опыта разработки на языке TypeScript и работе с NodeJS.
Общая информация
Любое приложение на платформе эра состоит из набора пакетов. При переходе от No-Code разработки к разработке с помощью кода этот подход не меняется.
Все объекты пакета, созданные с помощью No-Code редакторов, преобразуются механизмами платформы в набор классов. Большинство классов не доступно для редактирования внешними средствами. Исключение составляют сервисы пакета, для них доступно полное изменение исходного кода и его замена.
Разработка приложений на платформе эра выполняется с помощью языка TypeScript. В большинстве случаев, можно выбрать контекст исполнения кода - он может быть клиентский (в браузере) или серверный (на сервере приложений продуктового слоя). В случае использования серверного контекста, код будет исполняться при помощи NodeJS версии 14.Х.
В рамках платформы, при разработке, применяется принцип разделения интерфейсов (см. SOLID).
Платформа предлагает широкие возможности по модификации логики объектов с помощью переопределения некоторых 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.
Общий подход к работе с сервисами на локальной машине следующий:
Создать в пакете серверный сервис
Активировать пакет
Отключить микросервис в приложении Настройки, раздел Прочее. Данное действие необходимо для того, чтобы запущенный сервис не конфликтовал с системным. На время разработки, сервис поднимаемый платформой отключается, и его будет замещать отладочный экземпляр сервиса разработчиком
Включить в таблице Services отображение столбца sourceCode
Скачать и распаковать zip-архив
Микросервисы в приложении НастройкиУстановить на компьютер NodeJS v14 и npm v6, Visual Studio Code либо аналогичную IDE
В файле package.json в строке build:live указать актуальные адрес сервера, имя домена и токен. Доступы настраиваются в приложении Настройки, раздел Прочее, Каналы интеграции. Для отладки можно использовать доступ product_layer, однако рекомендуется создать отдельный токен доступа с необходимыми правами.
Выполнить npm ci
Выполнить npm start
Открыть папку src в IDE
Запущенный сервис контролируется утилитой nodemon, и при изменении исходных кодов, сервис будет автоматически перезапускаться, применяя необходимые изменения.
Более подробно про отладку и работу сервисов будет расказанно в дальнейших статьях курса.