Подписи функции MATLAB в JSON

Для УСПОКОИТЕЛЬНОГО клиента, чтобы получить функциональные подписи функций MATLAB®, развернутых на MATLAB Production Server™ с помощью API открытия, необходимо встроить информацию о функциях MATLAB в файле JSON при упаковке развертываемого архива.

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

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

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

Файл 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 — ArrayDimensions

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

Объект определения типа

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

В схеме укажите на объект определения типа при помощи имени _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"
               }
           ]
       }
   }

Для просмотра документации необходимо авторизоваться на сайте