ORDA – 歯抜けのエンティティセレクションにさよならを

これは誰もが遭遇した問題かもしれません。ユーザーのために、エンティティセレクションを表示する素敵なインターフェースをデザインしたとします。ユーザーはエンティティを削除して表示を絞り込むことができますが、その後には削除したエンティティがあった場所に空のスペースが現れてしまいます。

この場合、どうしたらいいのでしょう。削除後にエンティティセレクションを作り直す? いいえ、その心配はもうありません! 4D 20 R6 では、たった 1行のコードでこの問題を解消する便利な機能が導入されました。

この機能がどうやってインターフェースを美しく保ち、ユーザーを満足させるかについて説明していきます。

 

HDI: エンティティセレクションから未定義エンティティを取り除く

エンティティセレクションのclean関数

この機能がどのように動作するのか見てみましょう。

エンティティセレクションがリストボックスに表示され、ユーザーはいくつかのエンティティを削除することができます。

下のリストボックスには、Form.persons のエンティティセレクションが表示されます。ユーザーはそのうちのいくつかのエンティティを選択し (リストボックスの “選択された項目” にForm.selectedが設定されています)、削除ボタンをクリックします。このとき、以下のコードだけを実行すると

Form.selected.drop()
Form.persons:=Form.persons

このように歯抜けのエンティティセレクションとなります:

しかし、コードの最後の行に、新しいclean() 関数を下のように追加するだけで:

Form.persons:=Form.persons.clean()

空白スペースは魔法のように消え、とてもユーザーフレンドリーなインターフェースになります:

blank

REST API $entityset の $cleanパラメーター

アプリケーションが REST API を使用している場合、$entityset REST API で $clean パラメーターを使用することもできます。

次のような、削除されたエンティティ (__STAMP プロパティだけの青いオブジェクトの箇所) を含むエンティティセレクションがあるとします:

{
"__DATACLASS": "Persons",
"__entityModel": "Persons",
"__GlobalStamp": 0,
"__COUNT": 3,
"__FIRST": 0,
"__ENTITIES": [
{

"__STAMP": 0


}
,
{
"__KEY": "2",
"__TIMESTAMP": "2024-05-23T09:26:19.658Z",
"__STAMP": 1,
"ID": 2,
"firstname": "Broddy",
"lastname": "Cristofanini"
},
{
"__KEY": "3",
"__TIMESTAMP": "2024-05-23T09:26:19.658Z",
"__STAMP": 1,
"ID": 3,
"firstname": "Candie",
"lastname": "Figin"
}
],
"__SENT": 3
}

以下のリクエストを実行すると、削除されたエンティティを含まない新しいエンティティセットを取得できます (949062617AF6408CB198B3CB41FB72FB はエンティティセットID です):

/$entityset/949062617AF6408CB198B3CB41FB72FB?$clean=true&$method=entityset

結果はどうなるでしょう? 削除された要素を含まないエンティティセットが返されます:

{
"__ENTITYSET": "/rest/Persons/$entityset/8F658F3BA1884DE6BEC1FCFF4A7938F0",
"__DATACLASS": "Persons",
"__entityModel": "Persons",
"__GlobalStamp": 0,
"__COUNT": 2,
"__FIRST": 0,
"__ENTITIES": [
{
"__KEY": "2",
"__TIMESTAMP": "2024-05-23T09:47:50.933Z",
"__STAMP": 1,
"ID": 2,
"firstname": "Broddy",
"lastname": "Cristofanini"
},
{
"__KEY": "3",
"__TIMESTAMP": "2024-05-23T09:47:50.933Z",
"__STAMP": 1,
"ID": 3,
"firstname": "Candie",
"lastname": "Figin"
}
],
"__SENT": 2
}

この新機能により、エンティティセレクションの管理がかつてないほど簡単になりました。インターフェースを整頓し、ユーザーエクスペリエンスを向上させましょう!

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