exponenta event banner

Сигнатуры функций MATLAB в JSON

Для получения клиентом RESTful сигнатур функций MATLAB ®, развернутых в MATLAB Production Server™ с помощью API обнаружения, необходимо встроить информацию о функциях MATLAB в файл JSON при упаковке развертываемого архива .

После добавления функций MATLAB для развертывания в приложение компилятора Production Server в разделе Включить файл подписи функции MATLAB нажмите кнопку Создать файл. Это действие создает шаблон файла JSON с именем <projectName>functionSignatures.json.

<projectName>functionSignatures.json является одним объектом JSON. Содержит версию схемы и список объектов функций. Каждый объект функции содержит список объектов сигнатуры, а каждый объект сигнатуры содержит список объектов аргументов.

Если функции MATLAB имеют struct или cell типы данных в качестве входных или выходных данных можно добавить их описания в файл JSON с помощью объектов typedef.

Файл JSON не поддерживает добавление описаний для datetime и enumeration значения, хотя функции MATLAB могут иметь эти типы данных в качестве входных или выходных данных.

Доступ к файлу объекта JSON можно получить с сервера с помощью службы обнаружения.

Предупреждение

validateFunctionSignaturesJSON функция не поддерживает проверку производственного сервера MATLAB <projectName>functionSignatures.json.

Example of a function signature JSON file.

Версия схемы имеет значение, являющееся строкой JSON в формате <major#>.<minor#>.<patch#>, с каждым числом должно быть неотрицательное целое число.

Объекты функций

Объекты-функции автоматически наследуют свое имя из имени функций MATLAB, добавляемых в проект. Строка назначения для объекта функции наследуется из описания функции, приведенного в функции MATLAB. Значение каждого объекта функции является объектом сигнатуры.

{
  "functionName1": { signatureObj1},
  "functionName2": { signatureObj2}
}

Объекты подписи

Объект сигнатуры определяет список входных и выходных аргументов и поддерживаемых платформ для функции. Значение свойств представляет собой массив объектов-аргументов.

{
  "functionName1":
  {
     "inputs": [ argumentObj1, argumentObj2 ]
  }
}
Каждая сигнатура может содержать следующие свойства.

СобственностьОписаниеТип значения данных JSON

inputs

Список аргументов ввода функции

Массив объектов-аргументов

outputs

Список аргументов вывода функции

Массив объектов-аргументов

Объекты аргументов

Объекты Argument определяют информацию для каждого из входных и выходных аргументов.

{
  "functionName1":
  {
     "inputs":
     [
        {"name":"in1",  "type":["double"], "purpose":"<input 1 description>"},
        {"name":"in2",  "type":["logical"], "purpose":"<input 2 description>"}
     ]
  }
}
Порядок отображения входных данных в файле JSON является значительным. Например, в вызове functionName1 функция, in1 должен появиться до in2.

Каждый объект аргумента может содержать следующие свойства.

 name — Имя аргумента

 type — Тип данных аргумента

 size — Размеры массива

 purpose — Описание аргумента

Объект Typedef

Объект typedef определяет массивы и структуры ячеек. Добавьте объект typedef только в том случае, если к объектам-аргументам относятся ячейки или структуры. Шаблон файла JSON, создаваемый приложением компилятора производственного сервера, по умолчанию не имеет этого объекта.

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

Пример использования однородного массива ячеек: если функция MATLAB sortinput принимает массив ячеек в качестве входных данных и возвращает массив ячеек в качестве выходных данных, и каждая ячейка на входе состоит из структуры, представление JSON которой выглядит следующим образом.

{
    "_schemaVersion": "1.1.0",
    "_typedefs" : {
        "struct_names_scores_of_students": {
            "purpose": "Names and scores of students",
            "type": "struct",
            "fields": [
                {"name": "Name",  "type": "char"},
                {"name": "Score", "type": ["double","size=1,1"]}
            ]
        },
        "cell_student_information": {
            "purpose": "Cell representing student information",
            "type": "cell",
            "elements": {
                "type": "struct:struct_names_scores_of_students"
            }
        }
    },
    "sortinput": {
        "inputs": [
            {
                "name": "unsorted_input",
                "type": ["cell:cell_student_information"],
                "purpose": "Unsorted list of students and their scores"
            }
        ],
        "outputs": [
            {
                "name": "sorted_output",
                "type": ["cell:cell_student_information"],
                "purpose": "Sorted list of students with respect to their scores"
            }
        ]
    }
}

Пример использования гетерогенного массива ячеек: если функция MATLAB organize принимает массив ячеек длиной 3, содержащий символ, квадратную матрицу и строку в качестве входных данных, и возвращает вектор удвоения в качестве выходных данных, его представление JSON выглядит следующим образом.

{
       "_typedefs": {
           "cell_het_mydata": {
               "purpose": "cell containing character, matrix, and string",
               "type" : "cell",
               "elements" : [
                   { "type": ["char", "size=1,1"], "purpose": "cell element 1 is a character" },
                   { "type": ["double", "size=N,N"], "purpose": "cell element 2 is a square matrix" },
                   { "type": "char", "purpose": "cell element 3 is a string" }
           ]
       },
       "organize": {
           "inputs": [
               {
                   "name": "data",
                   "type": ["cell:cell_het_mydata","size=3,1"],
                   "purpose": "heterogenous cell array"
               }
           ],
           "outputs": [
               {
                   "name": "numerator",
                   "type": "double",
                   "purpose": "result of function"
               }
           ]
       }
   }