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内のデバイスとデバイスマッピング後のフィールドを定義します。設計の考え方は、1つのAppが複数の異なるタイプのデバイス(さまざまなPLCやCNCなど)を対象とする可能性があるため、一部の機能では異なるデバイスを1つのタイプのデバイスに抽象化する必要があり、設定時にマッピングするためにデバイスタイプをここで定義する必要があるためです:

{
    "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フィールドは、アプリインストール後の設定内容を保存するために使用されます

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変数としてマッピングすることです。