9.2 Backend de APP

9.2.1 Variables incorporadas y definiciones de APP

9.2.1.1 Tipo Application

El tipo Application es el tipo de App en código C++

class Application{
    json ExecSql(string sql);
    bool HasAevice(string code);
    Variable GeVariable(string device_code,string variable_mapped_code);
    string code;
}
9.2.1.1.1 Ejecutar sentencia SQL
  • Definición: ExecSql(sql)

  • Método

  • Parámetros:

    • sql: string Sentencia sqlite3 a ejecutar
  • Retorna: table Resultado después de la ejecución SQL, una lista de mapas key-value, ej., [{“id”:1,“name”:“xx”}]. Retorna array vacío [] si la ejecución falla

  • Ejemplo

    -- 当前APP为app
    -- 查询所有的产品
    local goods = app:ExecSql("select * from goods;")
9.2.1.1.2 Verificar si existe dispositivo

Verifica si la APP actual tiene mapeado cierto dispositivo * Definición: HasAevice(code) * Método * Parámetros: - code: string Código de dispositivo * Retorna: bool Retorna true si existe, false si no existe * Ejemplo

```lua
-- 当前APP为app
-- 查询是否有fanuc001设备
local has_fanuc = app:HasAevice("fanuc001")
```
9.2.1.1.3 Obtener puntero a variable original de variable mapeada
  • Definición: GeVariable(device_code, variable_mapped_code)

  • Método

  • Parámetros:

    • device_code: string Código de dispositivo
    • variable_mapped_code: string Nombre de variable mapeada
  • Retorna: Variable Variable de recopilación original, el tipo es Variable incorporado. Retorna nil si no existe

  • Ejemplo

    -- 当前APP为app
    -- 查找prodiuct变量的原始变量
    local product = app:GeVariable("fanuc001","product")
9.2.1.1.4 Nombre de variable
  • Definición: code
  • Propiedad
  • Tipo: string
  • Descripción: Código de APP

9.2.1.2 Tipo HttpRequest

Parámetros de solicitud API, formato como sigue

---@class HttpRequest
---@field path_arg table<string, string> PathArg
---@field query table<string, string> Query
---@field body any Body
---@field headers table<string, string> Header
9.2.1.2.1 Parámetro path de solicitud
  • Definición: path_arg
  • Propiedad
  • Tipo: table<string, string>
  • Descripción: Resultado de análisis de variables PATH con <>, como /test_api/<code>
9.2.1.2.2 Parámetro query de solicitud
  • Definición: query
  • Propiedad
  • Tipo: table<string, string>
  • Descripción: Parámetros de solicitud después de ? en /test_api?a=1&b=2
9.2.1.2.3 Parámetro body de solicitud
  • Definición: body
  • Propiedad
  • Tipo: any
  • Descripción: Body de solicitud HTTP post o put
9.2.1.2.4 Parámetro headers de solicitud
  • Definición: headers
  • Propiedad
  • Tipo: table<string, string>
  • Descripción: Headers de solicitud HTTP

9.2.1.3 Tipo HttpResponse

Contenido de respuesta API, formato como sigue

---@class HttpResponse
---@field code integer StatusCode
---@field body any Body
---@field headers table<string, string> Header
9.2.1.3.1 status_code de respuesta HTTP
  • Definición: code
  • Propiedad
  • Tipo: integer
  • Descripción: Código de respuesta HTTP
9.2.1.3.2 Contenido de respuesta HTTP
  • Definición: body
  • Propiedad
  • Tipo: any
  • Descripción: Body de respuesta HTTP
9.2.1.3.3 Headers de respuesta HTTP
  • Definición: headers
  • Propiedad
  • Tipo: table<string, string>
  • Descripción: Headers de respuesta HTTP

9.2.1.4 Tipo MappedDevice

Dispositivo mapeado dentro de App, formato como sigue

---@class MappedDevice
---@field code string Device Code
---@field type string Device Type
---@field class string Device Class
9.2.1.4.1 Código de MappedDevice
  • Definición: code
  • Propiedad
  • Tipo: string
  • Descripción: Código de dispositivo, corresponde a Device.code de variable base
9.2.1.4.2 Tipo de MappedDevice
  • Definición: type
  • Propiedad
  • Tipo: string
  • Descripción: Tipo de dispositivo, corresponde a Device.type de variable base
9.2.1.4.3 Clase de MappedDevice
  • Definición: class
  • Propiedad
  • Tipo: string
  • Descripción: Clasificación de dispositivo, una cadena definida internamente por APP

9.2.1.5 Tipo TriggerVariable

Dispositivo mapeado dentro de App, formato como sigue

---@class TriggerVariable
---@field current integer | number | string | boolean | table  当前采集值
---@field last integer | number | string | boolean | table  上次采集值
9.2.1.5.1 current de TriggerVariable
  • Definición: current
  • Propiedad
  • Tipo: integer | number | string | boolean | table
  • Descripción: Valor de recopilación actual de variable
9.2.1.5.2 last de TriggerVariable
  • Definición: last
  • Propiedad
  • Tipo: integer | number | string | boolean | table
  • Descripción: Valor de recopilación anterior de variable

9.2.2 Formato de script

Formato mínimo de APP como sigue


--- test_api 测试API
---@param request HttpRequest  -- 请求参数
---@return  HttpResponse    -- 返回参数
local function test_api(request)
    return {}
end



--- Trigger 设备采集后触发函数
---@param device MappedDevice  -- 当前设备
---@param data table<string,TriggerVariable>  -- 映射后的变量code与变量采集值
---@return  table<string,any>    -- 返回参数,更新到最终的设备采集数据
function Trigger(device, data)
    local result = {}
    return result
end


Api = {
    {
        path = "/test_api/<code>",
        method = "GET",
        func = test_api
    },
}

其中定义如下

9.2.2.1 Función Trigger

Para aplicaciones mapeadas a APP, la función Trigger se activa después de cada ronda de recopilación de datos, pasando las variables mapeadas del dispositivo

  • Definición: Trigger(device, data)
  • Función
  • Parámetros:
    • device: MappedDevice Dispositivo actual, este dispositivo
    • data: table<string,TriggerVariable> Código de variable mapeada y valor de recopilación de variable
  • Retorna: table<string,any> Los datos retornados actualizarán directamente los resultados de recopilación del dispositivo. Solo los valores de retorno modificarán los resultados de recopilación, la manipulación directa de data no lo hará

9.2.2.2 Tabla Api

La tabla Api define interfaces http expuestas externamente, es una lista de mapas anidados

  • Campos:
    • path: string Ruta de solicitud, use <> para establecer parámetros de ruta
    • method: string Método de solicitud HTTP
    • func: function Función activada cuando la ruta coincide
  • Retorna: table<string,any> Los datos retornados actualizarán directamente los resultados de recopilación del dispositivo. Solo los valores de retorno modificarán los resultados de recopilación, la manipulación directa de data no lo hará
  • Función de activación
    • Entrada: request tipo HttpRequest
    • Valor de retorno tipo HttpResponse