Чтобы клиент RESTful получил сигнатуры функций MATLAB® функции, развернутые в MATLAB Production Server™ с помощью API обнаружения, необходимо встраивать информацию о функциях MATLAB в файл JSON при упаковке развертываемого архива.
После добавления функций MATLAB для развертывания в приложении Production Server Compiler, в разделе Include MATLAB function signature file, нажмите кнопку Create File. Это действие создает шаблон файла JSON с именем
.<projectName>
functionSignatures.json
The
файл является одним объектом JSON. Он содержит версию схемы и список объектов функции. Каждый объект функции содержит список объектов подписи, а каждый объект подписи - список объектов аргументов.<projectName>
functionSignatures.json
Если ваши функции MATLAB имеют struct
или cell
типы данных в качестве входных или выходных параметров, можно добавить их описание к файлу JSON с помощью объектов typedef.
Файл JSON не поддерживает добавление описаний для datetime
и enumeration
значения, хотя ваши функции MATLAB могут иметь эти типы данных в качестве входных или выходных параметров.
Доступ к файлу объекта JSON с сервера можно получить с помощью службы обнаружения.
Предупреждение
validateFunctionSignaturesJSON
функция не поддерживает валидацию MATLAB Production Server
<projectName>
.functionSignatures.json
Версия схемы имеет значение, являющееся строкой JSON в формате <major#>.<minor#>.<patch#>
, с каждым числом должно быть неотрицательным целым числом.
Объекты функции автоматически наследуют свое имя от имени функций MATLAB, которые вы добавляете в проект. Линия назначения для объекта функции наследуется из описания функции, предоставленного в функции MATLAB. Значение каждого объекта функции является объектом подписи.
{ "functionName1": { signatureObj1}, "functionName2": { signatureObj2} }
Объект подписи определяет список входа и выходных аргументов и поддерживаемых платформ для функции. Значение свойств является массивом объектов аргументов.
{ "functionName1": { "inputs": [ argumentObj1, argumentObj2 ] } }
Свойство | Описание | Тип значения данных JSON |
---|---|---|
| Список входных аргументов функции | Массив объектов аргументов |
| Список выходных аргументов функции | Массив объектов аргументов |
Объекты аргумента определяют информацию для каждого из входных и выходных аргументов.
{ "functionName1": { "inputs": [ {"name":"in1", "type":["double"], "purpose":"<input 1 description>"}, {"name":"in2", "type":["logical"], "purpose":"<input 2 description>"} ] } }
functionName1
функция, in1
должен появиться перед in2
.Каждый объект аргумента может включать следующие свойства.
Объект 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" } ] } }