Metadata API
Механизм метаданных позволяет исследовать структуру сущностей и отношения между ними в Jmix. Для этого используются операции REST API, начинающиеся с /metadata
.
Metadata API состоит из следующих конечных точек:
-
Entity Metadata предоставляет информацию о сущностях и их сущностей.
-
Fetch Plans предоставляет информацию о доступных фетч-планах.
-
Enum Values предоставляет информацию о доступных перечислениях и их возможных значениях.
Метаданные объекта
Entity Metadata API состоит из двух операций получения информации об атрибутах сущности:
/metadata/entities
-
Описание метаданных для всех сущностей
/metadata/entities/:entityName
-
Описание метаданных данной сущности
GET http://localhost:8080/rest
/metadata
/entities
/rstex11_Order
{
"entityName": "rstex11_Order",
"ancestor": null,
"properties": [
{
"name": "date",
"attributeType": "DATATYPE",
"type": "localDate",
"cardinality": "NONE",
"mandatory": true,
"readOnly": false,
"description": "Date",
"persistent": true,
"transient": false
},
{
"name": "amount",
"attributeType": "DATATYPE",
"type": "decimal",
"cardinality": "NONE",
"mandatory": true,
"readOnly": false,
"description": "Amount",
"persistent": true,
"transient": false
},
{
"name": "id",
"attributeType": "DATATYPE",
"type": "uuid",
"cardinality": "NONE",
"mandatory": true,
"readOnly": false,
"description": "Id",
"persistent": true,
"transient": false
},
{
"name": "lines",
"attributeType": "COMPOSITION",
"type": "rstex11_OrderLine",
"cardinality": "ONE_TO_MANY",
"mandatory": false,
"readOnly": false,
"description": "Lines",
"persistent": true,
"transient": false
},
{
"name": "customer",
"attributeType": "ASSOCIATION",
"type": "rstex11_Customer",
"cardinality": "MANY_TO_ONE",
"mandatory": true,
"readOnly": false,
"description": "Customer",
"persistent": true,
"transient": false
}
]
}
Фетч-планы
Fetch Plan Metadata API предоставляет информацию о структуре доступных фетч-планов для данной сущности. Он состоит из двух операций:
/metadata/entities/:entityName/fetchPlans
-
Все доступные фетч-планы данной сущности
/metadata/entities/:entityName/fetchPlans/:fetchPlanName
-
Информация о конкретном фетч-плане
В следующем примере запрашиваются все фетч-планы для сущности rstex11_Order
:
GET http://localhost:8080/rest
/metadata
/entities
/rstex11_Order
/fetchPlans
[
{
"name": "order-with-details",
"entity": "rstex11_Order",
"properties": [
"date",
"amount",
"createdDate",
"createdBy",
"lastModifiedDate",
"deletedDate",
"lastModifiedBy",
"id",
"version",
"deletedBy",
"customer",
{
"name": "lines",
"fetchPlan": {
"name": "_base",
"properties": [
"quantity",
"createdDate",
"createdBy",
"lastModifiedDate",
"deletedDate",
"lastModifiedBy",
"id",
"version",
"deletedBy",
{
"name": "product",
"fetchPlan": {
"name": "_instance_name",
"properties": [
"name"
]
}
}
]
}
}
]
}
]
Значения перечислений
Enum Metadata API предоставляет информацию о возможных значениях перечислений.
/metadata/enums
-
Имена и значения всех перечислений
/metadata/enums/:enumClassName
-
Имена и значения конкретного перечисления
Параметр :enumClassName должен содержать полное имя класса перечисления. Например, rest.sample.entity.CustomerType вместо просто CustomerType .
|
В следующем примере запрашивается информация о перечислении rest.sample.entity.CustomerType
:
GET http://localhost:8080/rest
/metadata
/enums
/rest.sample.entity.CustomerType
{
"name": "rest.sample.entity.CustomerType",
"values": [
{
"name": "BUSINESS",
"id": "BUSINESS",
"caption": "Business"
},
{
"name": "PRIVATE",
"id": "PRIVATE",
"caption": "Private"
}
]
}