9.1 Diseño de APP
9.1.1 Estructura básica
La estructura básica de APP se define en formato JSON y contiene los siguientes campos principales:
{
"code": "vip.woody.app.test1",
"name": "测试应用",
"logo": "",
"script": "",
"schema": "",
"pages": "",
"config": ""
}- Descripción de campos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
code |
String | ✅ | Identificador único de la aplicación. Al instalar con el mismo code se sobrescribirá la aplicación existente |
name |
String | ✅ | Nombre de visualización de la aplicación |
logo |
String | ❌ | Icono de la aplicación, admite codificación base64 o URL de imagen |
script |
String | ❌ | Script de backend Lua que controla la lógica de la aplicación. Ver APP Backend para detalles |
schema |
String | ❌ | Definición de la aplicación en formato JSON codificado |
pages |
String | ❌ | Definición de páginas frontend en formato JSON codificado |
config |
String | ❌ | Información de configuración después de la instalación de la aplicación |
9.1.2 Schema de definición de aplicación
9.1.2.1 Resumen de estructura
Resumen de estructura
{
"data": [
{
"name": "products",
"readable": true,
"writable": false,
"type": "table",
"struct": [
{
"name": "device",
"type": "string"
},
{
"name": "value",
"type": "int"
},
{
"name": "delta",
"type": "int"
},
{
"name": "time",
"type": "int"
}
]
}
],
"input": [
{
"class": "cnc1",
"define": [
{
"code": "products",
"name": "产量",
"type": "int"
}
],
"title": "一类加工机床"
}
]
}9.1.2.2 Definición de campo data
El campo data define la estructura de almacenamiento de datos de la aplicación, usando formato de array. Cada elemento contiene los siguientes atributos:
| Campo | Tipo | Descripción |
|---|---|---|
name |
String | Nombre de tabla de datos |
readable |
Boolean | Si es legible |
writable |
Boolean | Si es escribible |
type |
String | Tipo de datos, actualmente solo admite table |
struct |
Array | Definición de estructura de tabla |
- Solo los permisos de acceso de las API de acceso a tablas generadas automáticamente son controlados por los campos readable y writable. El acceso a datos en scripts Lua de backend no se ve afectado.
9.1.2.3 Definición de estructura de tabla
struct 数组中每个字段包含:
name: Nombre de campotype: Tipo de campo, admite los siguientes tipos:stringTipo cadenaintTipo enterofloatTipo punto flotante
9.1.2.3.1 Interfaces API generadas automáticamente
Basándose en la definición data, el sistema expondrá automáticamente las siguientes interfaces API RESTful:
Parámetros de ruta
code: Identificador de aplicacióntable: Nombre de tabla de datosid: Identificador único de registroConsulta de lista de datos
GET /api/app/{code}/data/{table}
Parámetros de consulta
| Campo | Tipo | 默认值 | Descripción |
|---|---|---|---|
_start |
Number | 0 | Posición de registro inicial |
_limit |
Number | 10 | Número de registros devueltos |
{field} |
Any | - | Filtro de valor igual, ej., ?value=1 |
>{field} |
Any | - | Filtro mayor o igual que, ej., ?>value=1 |
<{field} |
Any | - | Filtro menor o igual que, ej., ?<value=1 |
order |
String | - | Orden ascendente, ej., ?order=value |
-order |
String | - | Orden descendente, ej., ?-order=value |
- Agregar registro
POST /api/app/{code}/data/{table}
- Consulta de registro único
GET /api/app/{code}/data/{table}/{id}
- Actualizar registro
PUT /api/app/{code}/data/{table}/{id}
- Eliminar registro
DELETE /api/app/{code}/data/{table}/{id}
9.1.2.4 Definición de campo input
El campo input define los dispositivos dentro de la APP y los campos después del mapeo de dispositivos. La idea de diseño es que una App puede apuntar a múltiples tipos diferentes de dispositivos, como varios PLC y CNC. Algunas funciones requieren abstraer diferentes dispositivos en un tipo de dispositivo, por lo que se necesita definir un tipo de dispositivo aquí para el mapeo durante la configuración:
{
"class": "cnc1",
"define": [
{
"code": "products",
"name": "产量",
"type": "int"
}
],
"title": "一类加工机床"
}| Campo | Tipo | Descripción |
|---|---|---|
class |
String | Tipo de dispositivo |
title |
String | Nombre de tipo de dispositivo |
define |
Array | Definición de variable |
Definición de variable
| Campo | Tipo | Descripción |
|---|---|---|
code |
String | Código de variable |
name |
String | Nombre de variable |
type |
String | Tipo de variable |
9.1.3 Campo de configuración config
El campo config se usa para almacenar el contenido de configuración después de que se instala la app
9.1.3.2 Definición de campo device
El campo device define el mapeo de dispositivos recopilados por IoTBoX a dispositivos dentro de la APP, usando formato de array
| Campo | Tipo | Descripción |
|---|---|---|
code |
String | Código de máquina |
class |
Boolean | Tipo de dispositivo dentro de App |
variable |
Array | Definición de variable de mapeo |
Definición de variable de mapeo
| Campo | Tipo | Descripción |
|---|---|---|
dst |
String | Código de variable original |
src |
Boolean | Código de variable dentro de App |
El significado de la configuración anterior es: mapear el dispositivo de recopilación M06 configurado en IoTBoX como un tipo cnc1 en la App, y mapear los cnc_products recopilados por M06 como la variable product de cnc1.