ORDAでジェネリックコードを書く

Deeplからの自動翻訳

ORDAは、4D Summit 2018の 大きな発表の一つで、4Dの新しい可能性を切り開くものでした。ORDAの詳細とそのメリットについては、こちらの記事をご覧いただき、ORDAがあなたの仕事のやり方をどのように変えるかをご確認ください。

はじめに

ORDAでは、データはデータストアという抽象化レイヤーを介してアクセスされます。データストアは、オブジェクトを通してデータベースとそのデータへのインターフェイスを提供するオブジェクトです。例えば、テーブルはデータクラスオブジェクトにマッピングされ、フィールドはデータクラスの属性となります。new dsコマンドは、アプリケーション・データストアの参照を返します。もっと詳しく知りたい場合は、ドキュメントの概要記事を参照してください。

ORDAの 機能を探求するためのガイドとして、さまざまな用語や概念について、その定義とともに用語集を用意しました。

また、ORDAは データベースの構造に関する有用な情報を提供します。

これは、データベースの構造を知らずに汎用的なコード……を書くときに、とても役に立ちます。

ダイナミックソートツールのダウンロード TIP

以下はその例です。

コマンドによって返される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の概要です。

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。