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

Работа с внешними системами. Возможности интеграции

Материал из Платформа Эра. Документации
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Предыдущая статья курса: Работа с данными платформы. API

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

Для работы с запросами ко внешним системам, в платформе Эра предусмотрен специализированный утилитарный класс EraRequest.

Данный класс имеет набор методов для осуществления различных запросов (get, post, put и т.д.), а так же методом request, который позволяет тонко настроить запрос под необходимости разработчика.

Пример выполнения запроса во внешнюю систему:

import { GlobalUtils, Converter, EraRequest } from "./../../utils";
import { Service } from "./../../platform/core";
import { ITicket, ITickets } from "../model";
import { Tickets } from "../classes";
import { IBaseEntity, IDataUpdateParams } from "../../base/model";


class Server2Service extends Service {
    private _tickets: ITickets; //свойство класса, через которое мы будем доступаться к коллекции Tickets
    
    constructor() {
        super("creomate_tutorial.Server2Service");
        
        // onCreateCode
        this._tickets = new Tickets(this.context); //инициализируем коллекцию Tickets
       
        this.load();
    } 
    async sendPOSTRequest(id: string, status:string){
        
        const result = await EraRequest.request({
            method: "POST",
            url: "https://example.com/api/v1/request",
            contentType:"application/json",
            data: {
                objectId: id,
                statusId: status
            },
            timeout: 300
        });

        const ResultObject = result?.response

        
    }
}
export default Server2Service;

Получение данных из параметров системы

Параметры системы

Одна из частых задач - это хранение различных данных для работы интеграции в параметрах системы, для возможности быстрого редактирования. Как правило это различные URL'ы, ключи, токены доступа и т.д.

Параметры проекта

Для хранения таких настроек, в приложении Администратор платформы существуют разделы "Параметры системы" и "Параметры проекта".

В параметрах системы хранятся все системные настройки, их набор изменить нельзя, однако можно использовать эти параметры в своём коде.

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

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

Для получения значений параметров, используется утилитарный класс PlatformServices, распологающийся в папке platform/core.

В классе PlatformServices присутствует свойство settings, реализующее несколько методов для получения значений параметров:

  • getSettingByName - Позволяет получить значение любого параметра по имени
  • getProjectSettingByName - Позволяет получить значение проектного параметра по имени
  • getUserSettingByName - Позволяет получить значение пользовательского параметра по имени


Пример получения URL для исполнения запроса из параметров:

import { GlobalUtils, Converter, EraRequest  } from "./../../utils";
import { PlatformServices, Service } from "./../../platform/core";
import { ITicket, ITickets } from "../model";
import { Tickets } from "../classes";
import { IBaseEntity, IDataUpdateParams } from "../../base/model";
import { EraEnvironment } from "../../../lowlevel";


class Server2Service extends Service {
    private _tickets: ITickets; //свойство класса, через которое мы будем доступаться к коллекции Tickets
    
    constructor() {
        super("creomate_tutorial.Server2Service");
        
        // onCreateCode
        this._tickets = new Tickets(this.context); //инициализируем коллекцию Tickets
       
        this.load();
    } 
    async sendPOSTRequest(id: string, status:string){
        
        const URL = PlatformServices.settings.getSettingByName("creomate_tutorial.integration.url");
        const result = await EraRequest.request({
            method: "POST",
            url: URL,
            contentType:"application/json",
            data: {
                objectId: id,
                statusId: status
            },
            timeout: 300
        });

        const ResultObject = result?.response

        
    }
}
export default Server2Service;


Следующая статья курса: Задание 10. Обработка данных
Предыдущая статья курса: Работа с данными платформы. API