9.2 APPバックエンド

9.2.1 APP組み込み変数と定義

9.2.1.1 Applicationタイプ

Applicationタイプは、C++コード内のAppのタイプです

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 SQLステートメントの実行
  • 定義: ExecSql(sql)

  • メソッド

  • パラメータ:

    • sql: string 実行するsqlite3ステートメント
  • 戻り値: table SQL実行後の結果、key-valueで構成されるmapのlist、例:[{“id”:1,“name”:“xx”}]。実行失敗時は空配列[]を返します

  • 例

    -- 当前APP为app
    -- 查询所有的产品
    local goods = app:ExecSql("select * from goods;")
9.2.1.1.2 デバイスの存在確認

現在のAPPが特定のデバイスをマッピングしているかどうかを確認します * 定義: HasAevice(code) * メソッド * パラメータ: - code: string デバイスCode * 戻り値: bool 存在する場合はtrue、存在しない場合はfalseを返します * 例

```lua
-- 当前APP为app
-- 查询是否有fanuc001设备
local has_fanuc = app:HasAevice("fanuc001")
```
9.2.1.1.3 マッピングされた変数の元の変数のポインタを取得
  • 定義: GeVariable(device_code, variable_mapped_code)

  • メソッド

  • パラメータ:

    • device_code: string デバイスCode
    • variable_mapped_code: string マッピング後の変数名
  • 戻り値: Variable 元の収集変数、タイプは組み込み変数のVariable。存在しない場合はnilを返します

  • 例

    -- 当前APP为app
    -- 查找prodiuct变量的原始变量
    local product = app:GeVariable("fanuc001","product")
9.2.1.1.4 変数名
  • 定義: code
  • 属性
  • タイプ: string
  • 説明: APPのcode

9.2.1.2 HttpRequestタイプ

APIのリクエストパラメータ、形式は以下の通り

---@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 リクエストのpathパラメータ
  • 定義: path_arg
  • 属性
  • タイプ: table<string, string>
  • 説明: /test_api/<code> のようなPATH内の<>変数の解析結果
9.2.1.2.2 リクエストのqueryパラメータ
  • 定義: query
  • 属性
  • タイプ: table<string, string>
  • 説明: /test_api?a=1&b=2 リクエスト内の?の後のリクエストパラメータ
9.2.1.2.3 リクエストのbodyパラメータ
  • 定義: body
  • 属性
  • タイプ: any
  • 説明: HTTP postまたはputリクエストのbody
9.2.1.2.4 リクエストのheadersパラメータ
  • 定義: headers
  • 属性
  • タイプ: table<string, string>
  • 説明: HTTPリクエストのheaders

9.2.1.3 HttpResponseタイプ

APIの戻り値の内容、形式は以下の通り

---@class HttpResponse
---@field code integer StatusCode
---@field body any Body
---@field headers table<string, string> Header
9.2.1.3.1 HTTP戻り値のstatus_code
  • 定義: code
  • 属性
  • タイプ: integer
  • 説明: HTTP戻り値のcode
9.2.1.3.2 HTTP戻り値の内容
  • 定義: body
  • 属性
  • タイプ: any
  • 説明: HTTP戻り値のbody
9.2.1.3.3 HTTP戻り値のHeaders
  • 定義: headers
  • 属性
  • タイプ: table<string, string>
  • 説明: HTTP戻り値のheaders

9.2.1.4 MappedDeviceタイプ

App内でマッピングされたデバイス、形式は以下の通り

---@class MappedDevice
---@field code string Device Code
---@field type string Device Type
---@field class string Device Class
9.2.1.4.1 MappedDevice Code
  • 定義: code
  • 属性
  • タイプ: string
  • 説明: デバイスのCode、基本変数のDevice.codeに対応します
9.2.1.4.2 MappedDevice Type
  • 定義: type
  • 属性
  • タイプ: string
  • 説明: デバイスのタイプ、基本変数のDevice.typeに対応します
9.2.1.4.3 MappedDevice Class
  • 定義: class
  • 属性
  • タイプ: string
  • 説明: デバイスの分類、APP内部で定義された文字列

9.2.1.5 TriggerVariableタイプ

App内でマッピングされたデバイス、形式は以下の通り

---@class TriggerVariable
---@field current integer | number | string | boolean | table  当前采集值
---@field last integer | number | string | boolean | table  上次采集值
9.2.1.5.1 TriggerVariable current
  • 定義: current
  • 属性
  • タイプ: integer | number | string | boolean | table
  • 説明: 変数の現在の収集値
9.2.1.5.2 TriggerVariable last
  • 定義: last
  • 属性
  • タイプ: integer | number | string | boolean | table
  • 説明: 変数の前回の収集値

9.2.2 スクリプト形式

APPの最小形式は以下の通り


--- 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 Trigger関数

APPにマッピングされたアプリケーションでは、各データ収集ラウンド後にTrigger関数がトリガーされ、デバイスマッピングされた変数が渡されます

  • 定義: Trigger(device, data)
  • 関数
  • パラメータ:
    • device: MappedDevice 現在のデバイス、このデバイス
    • data: table<string,TriggerVariable> マッピング後の変数codeと変数収集値
  • 戻り値: table<string,any> 戻り値のデータはデバイスの収集結果に直接更新されます。戻り値のみが収集結果を変更し、dataの直接操作では変更されません

9.2.2.2 Apiテーブル

Apiテーブルは外部に公開されるhttpインターフェースを定義し、listでネストされたmapです

  • フィールド:
    • path: string リクエストパス、<>を使用してpathパラメータを設定
    • method: string HTTPリクエストメソッド
    • func: function ルートが一致したときにトリガーされる関数
  • 戻り値: table<string,any> 戻り値のデータはデバイスの収集結果に直接更新されます。戻り値のみが収集結果を変更し、dataの直接操作では変更されません
  • トリガー関数
    • 入力: request HttpRequestタイプ
    • 戻り値 HttpResponseタイプ