ORDAに関して言えば、4D v18 R3は朗報に満ちています!新しいメンバーメソッドは、あなたのコーディング体験をさらに向上させるために、自由に使うことができます。
まず、エンティティセレクションからのデータ抽出が大幅に強化され、エンティティセレクションのデータで完全にカスタマイズされたコレクションを構築 することが可能になりました。
さらに、エンティティ選択に対して、そのデータを直ちにサーバーから リフレッシュする必要があることを示す方法を提供し、キャッシュされたデータを無効にします。
詳細について知りたいですか?読み進めてください。必要なことはすべて以下に書いてあります。
エンティティ選択からデータを抽出する
新しい extract()member メソッドは、エンティティセレクション時に利用できます。
エンティティ選択からカスタマイズされたコレクションを構築できるようになりました!
例 1
この extract()member メソッドでは、抽出したいデータ・クラス属性とその名前を結果のコレクションで指定できます。
このシンプルなデータベースがあるとします。
$mailing 特定のプロパティ名を持つオブジェクトのコレクションを構築します。受信者”、”都市”、”郵便番号”。
C_COLLECTION($mailing)
$mailing :=ds.Interns.all().extract("lastname"; "recipient";\
"employer.city"; "city";\
"employer.zipCode"; "zipCode")
そして、出来上がったのがこちら
$mailing コレクションです。
[ {recipient:Hodge,city:Blakeslee,zipCode:18610}, {recipient:Metzler,city:Medfield,zipCode:02052}, {recipient:Broyles,city:Madison,zipCode:13402} ]
例 2
関連するエンティティであるデータ・クラス属性は、エンティティの コレクションとして抽出できることに注意。
考えられるユースケースは、異なるデータクラスからのエンティティのコレクションを処理することです。
以下の例では、Company および School データクラスからのエンティティを含むForm.partners コレクションを構築しています。
C_COLLECTION// $schools is a collection of entities of School dataclass ($companies;$schools)
// $companies is a collection of entities of Company dataclass
$companies :=ds.Interns.all().extract("employer")
$schools :=ds.Interns.all()extract ("school")
Form partners :=$companies.concat($schools)
// Form.partners is a collection
これで、Form.partners のコレクションをリストボックスに表示する準備が整いました!
のドキュメントを確認してください。 refresh()および extract()メンバー・メソッドのドキュメントを参照してください。
エンティティセレクションをリフレッシュする
新しい refresh()メンバ・メソッドは、エンティティセレクションで使用できます。これは、ORDAキャッシュ内のエンティティ選択データを無効にして、次にそのデータを使用するときにサーバーからの更新をトリガーするようにします。
デフォルトでは、ORDAキャッシュは30秒後に失効します。 refresh()メンバーメソッドを使用してください。
例
Form.invoices のエンティティ選択のいくつかの属性をリストボックスに表示し、ある時間に、他のクライアントがそれらのエンティティ選択属性に対して行った更新を表示したいとします。簡単!ただ refresh()member メソッドを使うだけです。
Forminvoices. refresh()
// The Form.invoices entity selection displayed data will be refreshed from the server