列挙型を作成・使用する
列挙型を使用することにより、アプリケーションで値をハードコーディングしなくてもよくなります。これにより、コーディングの理解や変更がしやすくなり、入力が強化され、エラーが発生しにくくなります。OutSystemsでは、データベースに保存される 静的エンティティとして列挙型をモデル化します。これにより、そのレコードをデータベースから取り出すことが可能になります。さらに、静的エンティティ識別子を使用して外部キーをモデル化することも可能になります。
静的エンティティを作成・使用するには、以下の手順を実行します。
- モジュールのエンティティ図を開きます。
- メインエディタの空いているスペースを右クリックし、静的エンティティ追加のオプションを選択します。
- 列挙型の各値に識別子を設定することにより、レコードを追加します。
- 以下のいずれかの方法で静的エンティティを使用します。
- 新しい静的エンティティ識別子を使用して他のエンティティに外部キーを作成します。
- Aggregateを使用してデータベースから静的エンティティレコードを取り出します。
次のように静的エンティティレコードを割り当てるかテストします:
Entities.<静的エンティティ>.<レコード>
.
例
GoOutは、場所の検索やレビューができるモバイルアプリケーションです。GoOutWebは、そそうした場所を管理するWebアプリケーションです。場所をカテゴリ分けするようにこのアプリケーションを変更します。これにより、たとえばレストランを検索できるようになり、検索体験が向上します。
GoOutWebモジュールで場所をカテゴリ分けするには、以下の手順を実行します。
-
GoOutDataModelエンティティ図を開きます。
-
メインエディタの空いているスペースを右クリックし、静的エンティティ作成のオプションを選択します。
-
静的エンティティの名前を
Category
に設定します。 -
識別子を設定することにより、以下のレコードを作成します。
レストラン
、カフェ
、博物館
、アトラクション
、ホテル
。 -
関係コネクタを、Category静的エンティティからPlaceエンティティにドラッグします。これにより、1対多の関係が作成されます。
-
[PlaceDetail]画面を開き、新しいCategoryIdアトリビュートを、画面上のフォームにドラッグ&ドロップします。これにより、関係を編集して場所をカテゴリ分けすることができます。
-
パブリッシュして各場所にカテゴリを設定します。
これで、場所がカテゴリを持つようになり、検索で使用できます。GoOutアプリケーションの[Home]画面でカテゴリをリスト表示するには、以下の手順を実行します。
- カテゴリを取り出せるように、画面にAggregateを追加します。
- 画面にリストを追加します。
- 手順1で作成したAggregateを展開します。
- Labelアトリビュートをこのリストにドラッグ&ドロップします。
- リスト内のリストアイテムを選択し、[Search]画面に移動するためのOn Clickイベントを設定します。
GetCategories.List.Current.Category.Label
を使用して入力パラメータの値を設定します。- [Search]画面上でGetPlacesWithReviews Aggregateを開きます。
- Category静的エンティティをAggregateにドラッグ&ドロップします。
- [Filters]オプションを開いてフィルタを編集し、最後に次のように追加します:
or Category.Label like "%" + SearchKeyword + "%"
.
最終結果は次のようになるはずです。
[Home]画面にはすでに、評価ランキング上位5件の場所がリスト表示されています。このリストは昼休み中に表示できます。このリストにはレストランだけを載せたいと考えています。
- GetPlaces Aggregateを開きます。
- 静的エンティティ レコードを使用してレストランだけを表示するフィルタを追加します。
Place.CategoryId = Entities.Category.Restaurant
- 一貫性を保つために、このAggregateの名前を「GetRestaurants」に変更します。