メインコンテンツまでスキップ
バージョン: 開発中

Get locked records info

Get locked records info ( aTable ) -> 戻り値

引数説明
aTableテーブル🡒ロックされたレコードの情報を取得したいテーブル
戻り値オブジェクト🡐ロックされたレコードの詳細(あれば)

説明

Get locked records info コマンドは、aTable で指定したテーブル内で現在ロックされているレコードについての様々な情報を含んだobject を返します。

注: このコマンドは 4D と 4D Server に対してのみ有効です。4D リモートまたはコンポーネントから呼び出された場合には無効なオブジェクトを返します。ただし、呼び出しメソッドに"Execute on server" オプションが有効化されている場合には呼び出し可能です。この場合返されるオブジェクトには、サーバーの情報が含まれます。コンポーネントから呼び出された場合には、常にホストデータベースに対して適用されます。

返されたオブジェクトは、オブジェクトのコレクションである"records"プロパティを格納しています:

{    "records": [        description object,        (…)    ]}

それぞれの"description object" コレクション要素は、指定されたテーブル内でのロックされたレコードを検知します。各要素はロックの要因(4D プロセスまたはREST API)に応じた異なるプロパティを格納しています

  • レコードが4D プロセスによってロックされている場合:
プロパティ詳細
contextIDUUID (文字列)ロックをしているデータベースコンテキストのUUID
contextAttributesオブジェクトLOCKED BY コマンドをレコードに適用したときと似たような情報を含むオブジェクト。違いは、Get locked records info が返すのはシステムで定義されたユーザー名であり、4Dユーザーのユーザー名ではないという点と、追加の情報を返すという点です(以下の説明参照)。
recordNumber倍長整数ロックされたレコードのレコード番号

contextAttributes オブジェクトは以下のプロパティから構成されています:

プロパティ名詳細
task_id数値プロセス参照番号
user_name文字列OSによって定義されたユーザー名
user4d_alias文字列SET USER ALIAS によって定義されたユーザーエイリアス、または4D データベースディレクトリ内のユーザー名
user4d_id数値4D ユーザー番号(*)
host_name文字列ホストマシンの名前
task_name文字列プロセス名
client_version数値クライアントアプリケーションのバージョン
以下のプロパティはレコードがリモートの 4D側によって ロックされているときに4D Server側でコマンドが実行された場合に限り表示されます:
is_remote_contextブールリモートの4Dによってロックされているかどうかを表します(それ以外の場合には表示されないので常にtrueとなります)
client_uidUUID (文字列)ロックしている4DリモートのUUID

(*) *バイナリーデータベースでのみ返されます。*以下のコードを使用することによって、user4d_id の4Dユーザー名を取得することができます:

 GET USER LIST($arrNames;$arrIDs)
 $User4DName:=Find in array($arrIDs;user4d_id)
  • レコードが $lock REST request によって(セッションレベルで)ロックされていた場合:
プロパティ名詳細
host文字列エンティティをロックしているURL 例:"127.0.0.1:8044"
IPAddr文字列エンティティをロックしているURL で使用されているIP アドレス 例: "127.0.0.1"
recordNumber数値ロックされているレコードのレコード番号
userAgent文字列ロッカーのユーザーエージェント 例: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"

例題

以下のコードを実行します:

 $vOlocked :=Get locked records info([Table])

[Table]のテーブル内にて二つのレコードがロックされていた場合には、以下の様なオブジェクトが$vOlockedに返されます:

{    "records": [        {            "contextID": "A9BB84C0E57349E089FA44E04C0F2F25",            "contextAttributes": {                "task_id": 8,                "user_name": "roland",                "user4d_id": 1,                "host_name": "iMac de roland",                "task_name": "P_RandomLock",                "client_version": -1342106592            },            "recordNumber": 1        },        {            "contextID": "8916338D1B8A4D86B857D92F593CCAC3",            "contextAttributes": {                "task_id": 9,                "user_name": "roland",                "user4d_id": 1,                "host_name": "iMac de roland",                "task_name": "P_RandomLock",                "client_version": -1342106592            },            "recordNumber": 2        }    ]}

コードが4D Server上で実行され、リモートのクライアントマシンによってロックされている場合、以下の様なオブジェクトが$vOlocked 内に返されます:

{    "records": [        {            "contextID": "B0EC087DC2FA704496C0EA15DC011D1C",            "contextAttributes": {                "task_id": 2,                 "user_name": "achim",                 "user4d_id": 1,                "host_name": "achim-pcwin",                "task_name": "P_RandomLock",                 "is_remote_context": true,                "client_uid": "0696E66F6CD731468E6XXX581A87554A",                "client_version": -268364752            },            "recordNumber": 1        }    ]}

参照

Locked