Подписи функции 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 с сервера при помощи Сервиса Открытия.

Версия схемы имеет значение, которое является строкой 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 — для аргумента

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

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

В схеме это обозначается с помощью имени, _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"
               }
           ]
       }
   }

Похожие темы