ORDAは、4D Summit 2018の 大きな発表の一つで、4Dの新しい可能性を切り開くものでした。ORDAの詳細とそのメリットについては、こちらの記事をご覧いただき、ORDAがあなたの仕事のやり方をどのように変えるかをご確認ください。
はじめに
ORDAでは、データはデータストアという抽象化レイヤーを介してアクセスされます。データストアは、オブジェクトを通してデータベースとそのデータへのインターフェイスを提供するオブジェクトです。例えば、テーブルはデータクラスオブジェクトにマッピングされ、フィールドはデータクラスの属性となります。new dsコマンドは、アプリケーション・データストアの参照を返します。もっと詳しく知りたい場合は、ドキュメントの概要記事を参照してください。
ORDAの 機能を探求するためのガイドとして、さまざまな用語や概念について、その定義とともに用語集を用意しました。
また、ORDAは データベースの構造に関する有用な情報を提供します。
これは、データベースの構造を知らずに汎用的なコード……を書くときに、とても役に立ちます。
以下はその例です。
コマンドによって返されるdataStoreはオブジェクトなので dsコマンドで返されるデータストアはオブジェクトなので、それを for each ループを使用して反復処理し、その属性(別名、dataClass)を取得することができます。
これにより、dataStore で公開されているすべてのテーブルに適用できる汎用的なコードを書くことができます。
以下の例では、dataClass を含むオブジェクトのコレクションを構築しています。
C_OBJECT
($dataClassObj)
C_TEXT ($dataClassName)
For each ($dataClassName;ds)
$dataClassObj :=New object
$dataClassObj .name:=$dataClassName $dataClassObj .value:=ds[$dataClassName]
Form .dataClassList.push($dataClassObj)
End for each
このコレクションをリストボックスに表示し,ユーザが dataClass を選択できるようにすることができる.そして、選択された dataClass に対してジェネリックコードを続行することができます。
dataClassオブジェクトは、ループを使って反復処理することができます。 for each ループを使用して反復処理し、有用なプロパティを含む属性を取得することができます。
-
- name: データモデル内の dataClassAttribute の名前
- kind: 属性のカテゴリ。
- “storage”: 4Dデータベースのフィールドに相当するもの
- 「relatedEntity”: N -> 1の関係属性
- “relatedEntities”: 1 -> N個の関係属性
- relatedDataClass: 属性に関連するデータクラス名 (種類が“relatedEntity “または “relatedEntities “の場合)
これらの情報があれば、データベースの構造を知らなくても、一般的なコードを書くことができます。
提供された TIP のサンプルデータベースでは、動的にデータクラスを選択する方法を学びます。
- dataStore の dataClass を選択する。
- 第一レベルの関連エンティティを含むすべての dataClass プロパティでリストボックスを構築する。
- ソートツールの構築
以下は、このTIPの概要です。