GUID データタイプは、分散環境で作業するときに重要になります。
GeneXus では、各タイプのオブジェクトを識別するために、このデータタイプを内部で使用します。
その目的は、たとえば、オブジェクトが別のナレッジベースにエクスポートされ、変更されてから、元のナレッジベースにインポートされたとします。このような場合でも、GUID が付いていれば、変更されているオブジェクトが元々エクスポートされたものであることが分かります。さらに、オブジェクトをナレッジベースにインポートしたときに、そのナレッジベースに同じ名前のオブジェクトが存在する場合でも、GUID が異なるので、2 つのオブジェクトが相互に対応するものでないことが分かります。
GUID には、生成したアプリケーションでも同じような用途があります。小売店の POS アプリケーションで考えてみましょう。営業時間中はオフラインで使いますが、毎晩本社と接続してすべてのデータを送ります。
すべてのキーの値を変更することなくデータをコピーするのによく使われる方法は、それぞれの POS (店舗) の番号と販売番号を組み合わせた複合キーを定義することです。
ここで、2 番目または 3 番目のレベルのトランザクションを考えてみます。POS が多数存在することから、これらのトランザクションのキーには、そのキーを一意にするためだけの項目属性が含まれることになります。したがって、このトランザクションが別のトランザクションで参照されるたびに、キーのすべての構成要素が必要になり、インデックスを保守管理する手間がかかります。
GUID データ タイプを使用すると、このような問題は発生しません。
その使用は、主キー項目属性やレコードに限定されません。ヘルプファイルの生成 (ファイルの名前の重複を防ぐ) やサイトキーの生成をはじめ、グローバルに一意の識別子が必要な場合にいつでも使用することができます。
- GUID.NewGuid()
- GUID.Empty()
- GUID.FromString(“XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”)
If &GUID <> GUID.FromString("2ac61739-b024-438e-a6e5-e507d8be4667")
msg("Bad Site Key")
EndIf
- ToString() は、「XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」形式の文字列を返します。
- FromString() は、生成された GUID を 16 進数値の文字列 (ハイフンの区切り文字あり、またはなし) で返します。
- IsEmpy()
- IsNull()
- SetEmpty()
- SetNull()
&GUID.FromString("12daa4b3-d7c2-4df4-a634-18bed4f2374c")
msg("GUID: " + &GUID.ToString())
GUID データタイプに基づく項目属性および変数には、挿入の実行時に GUID 値が自動的に生成されるように設定するための [ Autogenerate Guid ] プロパティがあります。
|