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

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

После добавления функций MATLAB для развертывания в приложении Production Server Compiler, в разделе Include MATLAB function signature file, нажмите кнопку Create File. Это действие создает шаблон файла JSON с именем <projectName>functionSignatures.json.

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

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

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

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

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

validateFunctionSignaturesJSON функция не поддерживает валидацию MATLAB Production Server <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

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

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

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

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

{
  "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, который генерирует приложение Production Server Compiler, по умолчанию не имеет этого объекта.

В схеме укажите объект 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"
               }
           ]
       }
   }