9.1 APP 设计

9.1.1 基础结构

APP 的基础结构采用 JSON 格式定义,包含以下核心字段:

{
    "code": "vip.woody.app.test1",
    "name": "测试应用",
    "logo": "",
    "script": "",
    "schema": "",
    "pages": "",
    "config": ""
}
  • 字段说明
字段 类型 必填 说明
code String ✅ 应用唯一标识符,相同 code 安装时会覆盖现有应用
name String ✅ 应用显示名称
logo String ❌ 应用图标,支持 base64 编码或图片 URL
script String ❌ Lua 后端脚本,控制应用逻辑,详见 APP后端
schema String ❌ 应用定义,经过编码的 JSON 格式
pages String ❌ 前端页面定义,经过编码的 JSON 格式
config String ❌ 应用安装后的配置信息

9.1.2 应用定义 Schema

9.1.2.1 结构概览

结构概览

{
    "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 data 字段定义

data 字段定义应用的数据存储结构,采用数组格式,每个元素包含以下属性:

字段 类型 说明
name String 数据表名称
readable Boolean 是否可读
writable Boolean 是否可写
type String 数据类型,目前仅支持 table
struct Array 表结构定义
  • 只有自动生成的表格访问API的访问权限受 readable 和 writable 字段控制,后端 Lua 脚本的数据访问不受影响。

9.1.2.3 表结构定义

struct 数组中每个字段包含:

  • name: 字段名称
  • type: 字段类型,支持以下类型:
    • string 字符串类型
    • int 整数类型
    • float 浮点数类型
9.1.2.3.1 自动生成的 API 接口

基于 data 定义,系统会自动暴露以下 RESTful API 接口:

路径参数

  • code: 应用标识符

  • table: 数据表名称

  • id: 记录唯一标识符

  • 数据列表查询

GET /api/app/{code}/data/{table}

查询参数

字段 类型 默认值 说明
_start Number 0 起始记录位置
_limit Number 10 返回记录数量
{field} Any - 等值筛选,如 ?value=1
>{field} Any - 大于等于筛选,如 ?>value=1
<{field} Any - 小于等于筛选,如 ?<value=1
order String - 正序排序,如 ?order=value
-order String - 倒序排序,如 ?-order=value
  • 新增记录

POST /api/app/{code}/data/{table}

  • 单条记录查询

GET /api/app/{code}/data/{table}/{id}

  • 修改记录

PUT /api/app/{code}/data/{table}/{id}

  • 删除记录

DELETE /api/app/{code}/data/{table}/{id}

9.1.2.4 input 字段定义

input 字段定义APP内的设备和设备映射后的字段,设计思路是因为一个App可能会针对多种不同型号的设备,比如各种PLC和各种CNC,有些功能是需要将不同的设备抽象成一类设备的,需要在此定义一个设备类型,用于之后配置时映射:

{
    "class": "cnc1",
    "define": [
        {
            "code": "products",
            "name": "产量",
            "type": "int"
        }      
    ],
    "title": "一类加工机床"
}
字段 类型 说明
class String 设备的类型
title String 设备的类型名称
define Array 变量的定义

变量的定义

字段 类型 说明
code String 变量code
name String 变量名
type String 变量的类型

9.1.3 配置字段 config

config字段用来存储app安装后的配置内容

9.1.3.1 结构概览

结构概览

{
    "device": [
        {
            "code": "M06",
            "class": "cnc1",
            "variable": [
                {
                    "dst": "products",
                    "src": "cnc_products",
                }
            ]
        }
    ]
}

9.1.3.2 device 字段定义

device 定义IoTBoX采集的设备到APP内设备的映射,采用数组格式

字段 类型 说明
code String 机床Code
class Boolean App内设备的类型
variable Array 映射变量的定义

映射变量的定义

字段 类型 说明
dst String 原始变量code
src Boolean App内变量code

以上配置的含义是,将IoTBoX内配置的采集设备M06作为一个cnc1类型映射进入App,并且将M06采集到的cnc_products作为cnc1的product变量映射进去.