Для получения клиентом RESTful сигнатур функций MATLAB ®, развернутых в MATLAB Production Server™ с помощью API обнаружения, необходимо встроить информацию о функциях MATLAB в файл JSON при упаковке развертываемого архива .
После добавления функций MATLAB для развертывания в приложение компилятора Production Server в разделе Включить файл подписи функции MATLAB нажмите кнопку Создать файл. Это действие создает шаблон файла JSON с именем .<projectName>functionSignatures.json
является одним объектом JSON. Содержит версию схемы и список объектов функций. Каждый объект функции содержит список объектов сигнатуры, а каждый объект сигнатуры содержит список объектов аргументов.<projectName>functionSignatures.json
Если функции MATLAB имеют struct или cell типы данных в качестве входных или выходных данных можно добавить их описания в файл JSON с помощью объектов typedef.
Файл JSON не поддерживает добавление описаний для datetime и enumeration значения, хотя функции MATLAB могут иметь эти типы данных в качестве входных или выходных данных.
Доступ к файлу объекта JSON можно получить с сервера с помощью службы обнаружения.
Предупреждение
validateFunctionSignaturesJSON функция не поддерживает проверку производственного сервера MATLAB
.<projectName>functionSignatures.json

Версия схемы имеет значение, являющееся строкой JSON в формате <major#>.<minor#>.<patch#>, с каждым числом должно быть неотрицательное целое число.
Объекты-функции автоматически наследуют свое имя из имени функций MATLAB, добавляемых в проект. Строка назначения для объекта функции наследуется из описания функции, приведенного в функции MATLAB. Значение каждого объекта функции является объектом сигнатуры.
{
"functionName1": { signatureObj1},
"functionName2": { signatureObj2}
}Объект сигнатуры определяет список входных и выходных аргументов и поддерживаемых платформ для функции. Значение свойств представляет собой массив объектов-аргументов.
{
"functionName1":
{
"inputs": [ argumentObj1, argumentObj2 ]
}
}| Собственность | Описание | Тип значения данных JSON |
|---|---|---|
| Список аргументов ввода функции | Массив объектов-аргументов |
| Список аргументов вывода функции | Массив объектов-аргументов |
Объекты Argument определяют информацию для каждого из входных и выходных аргументов.
{
"functionName1":
{
"inputs":
[
{"name":"in1", "type":["double"], "purpose":"<input 1 description>"},
{"name":"in2", "type":["logical"], "purpose":"<input 2 description>"}
]
}
}functionName1 функция, in1 должен появиться до in2.Каждый объект аргумента может содержать следующие свойства.
Объект 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"
}
]
}
}