ExeMES Server - реализуется сервисом ExeMES Middleware, который предоставляет API интерфейс для выполнения основных производственных операций (потребление, списание, производство и т.д.) и доступа к данным производственной модели MES, как метаданным модели, так и транзакционным данным о производственных операциях.

Вызов web API возможен при наличии у пользователя, под которым производится вызов функции, соответствующего доступа

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

По умолчанию все API ExeMES возвращают параметры с типом время в локальном времени экземпляра ExeMES Server без указания тайм-зоны (в формате YYYY-MM-DDThh:mm:ss), если необходимо:

  • получать метки времени с отличной тайм-зоной от часового пояса экземпляра ExeMES Server необходимо передавать требуемую тайм-зону при вызове API функции в параметре time-zone в формате смещения от UTC: ±hh:mm;
  • получать метки времени с указанием тайм-зоны необходимо при вызове API функции в параметре date-with-tz передать значение true.

Вызов web API ExeMES

Вызов web API ExeMES можно реализовывать различными способами в зависимости от способов и методов реализации на стороне клиентских приложений.

Пример вызова web API функции Attr, возвращающей список всех атрибутов производственной модели:

на JavaScript:
 var myHeaders = new Headers();
var accessToken = "token"; // здесь необходимо задать Access Token, полученный от KeyCloak
myHeaders.append("Authorization", `Bearer ${accessToken}`);

var requestOptions = {
  method: 'GET',
  headers: myHeaders
};

fetch("https://mesmiddleware.[домен]/api/Attr", requestOptions)
  .then(response => response.json())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
на C#:
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://mesmiddleware.[домен]/api/Attr");
var accessToken = "token"; // здесь необходимо задать Access Token, полученный от KeyCloak
request.Headers.Add("Authorization", $"Bearer {accessToken}");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());

Документация по web API ExeMES

ExeMES использует бесплатные инструменты Swagger в качестве встроенного инструмента документирования web API ExeMES.

Swagger — это набор инструментов, который позволяет автоматически описывать API на основе его кода. На основе кода Swagger автоматически генерирует документацию в формате JSON-файла. Ее можно встроить на страницу сайта или в приложение, чтобы пользователи могли интерактивно знакомиться с документацией. Часть инструментов Swagger доступна бесплатно и имеет открытый исходный код, часть — платная и предназначена для коммерческого использования.

 Документация по web API ExeMES доступна в Swagger по адресу https://mesmiddleware.[домен]/swagger/index.html. В интерфейсе swagger представлен список всех доступных web API функций ExeMES с описанием.

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

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

Для авторизации в Swagger необходимо нажать на кнопку «Authorize», размещенную в правом верхнем углу основной страницы, после чего в открывшемся окне нажать на кнопку «Authorize».

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

Для вызова функции необходимо нажать на кнопку «Try it out» в выпадающей области, после чего задать необходимые параметры функции и нажать на кнопку «Execute». В случае успешного выполнения функции, возвращаемые функцией данные станут доступны в поле «Response body».

При неуспешном выполнении функции в Server response будет предоставлена информация об ошибке.

Swagger используется только при разработке и тестировании прикладного ПО и не должен использоваться для каких-либо пользовательских функций в продуктивных средах. API функции ExeMES должны вызываться в клиентских приложениях с использованием встроенных средств на стороне клиентских приложений.

Также в онлайн документации к web API указана информация об ограничениях лицензии.
В описании каждой функции представлено в какой функциональный модуль она входит:

  • [Operations] - функция доступна в модуле Производство;
  • [Performance] - функция доступна в модуле Учёт работы оборудования;
  • [Quality] - функция доступна в модуле Качество;
  • [] -  использование функции не ограничено определенным функциональным модулем.

Доступ к некоторым функциям также ограничен настройками доступа к объектам из объектной модели. В описании таких функций содержится информация об ограничениях.

Кастомизация web API ExeMES

БД ExeMES состоит из двух схем: public и custom.

Public схема содержит базовые таблицы, процедуры и функции, которые обеспечивают хранение и управление метаданными производственной модели и транзакционными производственными данными. Public схема не может изменяться пользователями в части структуры таблиц, кода процедур и функций. Данные, хранящиеся в таблицах public схемы должны изменяться только с использованием:

  • ExeMES Client;
  • Web API ExeMES;
  • процедур и функций custom схемы.

Custom схема может быть использована в рамках проектов по внедрению ExeMES для создания пользовательской логики работы с данными ExeMES с целью упрощения извлечения и обновления данных.

В custom схеме пользователи могут создавать собственные процедуры и функции, которые могут извлекать (выполнять select) и изменять (выполнять update) данные в таблицах public схемы. Удаление данных в таблицах public схемы запрещено настройками прав доступа.

Функции и процедуры из custom схемы можно вызывать с использованием:

  • провайдеров данных (например ADO.Net) для представления данных в отчетных системах (BI, report);
  • Web API ExeMES для работы с данными ExeMES в клиентских приложениях.

Для вызова функций и процедур из custom схемы через Web API ExeMES с целью получения данных необходимо использовать функции GetDsByFN и GetDsBySP соответственно, с целью записи данных – PostDataByFN и PostDataBySP соответственно.

Для вызова web API функций GetDsByFN или GetDsBySP необходимо в качестве параметра name передать имя функции/процедуры в формате custom.[имя функции/процедуры], в качестве параметра parameters – массив параметров функции/процедуры в формате [{"name":"имя параметра 1","type":"тип данных параметра 1","value":"значение параметра 1"},{"name":"имя параметра 2","type":"тип данных параметра 2","value":"значение параметра 2"}].

Пример:

В схеме custom БД ExeMES разработана функция custom.report_demo_wo(_wo_id text). Вызов указанной функции с использованием web api функции GetDsByFN представлен ниже:

 https://mesmiddleware.[домен]/api/GetDsByFN?name=custom.report_demo_wo¶meters=%5B%7B%22name%22%3A%22_wo_id%22%2C%22type%22%3A%22text%22%2C%22value%22%3A%22%D0%9A%D0%A6%D0%9C-%D0%94%D0%B5%D0%BC%D0%BE-1%22%7D%5D

Вызов web api функции GetDsBySP производится аналогично вызову web api функции GetDsByFN.

Для вызова web API функций PostDataByFN или PostDataBySP необходимо в качестве параметра name передать имя функции/процедуры в формате custom.[имя функции/процедуры], в качестве тела запроса – массив параметров функции/процедуры в формате [{"name":"имя параметра 1","value":"значение параметра 1","type":"тип данных параметра 1"},{"name":"имя параметра 2","value":"значение параметра 2","type":"тип данных параметра 2"}].

  • No labels