初めに
OutSystemsでは通常、構造体をStructureとして定義しますが、ある程度の規模のシステムを開発していると、このStructureだらけになってきてしまいます。また、Entityとほぼ同じStructureを定義すると、初期作成が面倒なだけでなく、EntityのAttributeが変わったときにStructureまで変更するはめになり大変です。そこでRecordをうまく活用する方法を紹介します。
利用したOutSystemsのバージョン
- サーバー:Version 11.0.118.0
- Service Studio:11.0.207.0
ケース1:一覧画面へのチェックボックスの追加
例えば以下のような画面を作成するとします。チェックボックスを選択し、Deleteボタンを押すと選択したレコードが削除されるといった機能を持ちます。
このデータは以下のSample_Employeeに保持されています。当然ながらこのEntityにはチェックボックスのAttributeは存在しません。そのため、どこかにチェックボックスの選択/非選択の情報を保持する必要があります。このときにStructureを一から作るのではなくRecordを使うと便利です。
以下のようにPreparationのGetEmployeesの中のSourcesにBooleanを追加します(Structure BooleanはRichWidgets配下にあります)。当然、この処理でこのBooleanに値が設定されることはありません。
しかしながら先ほどのようにしておくことで、TableRecords内に配置したCheckBoxのVariableとしてBoolean.Valueが選択できるようになります。これによりEntity Sample_Employeeを拡張した(BooleanのAttributeを追加した)Structureを一から作ることなく、チェックボックスの値を保持できるようになりました。
ケース2:ActionのParameter、Variable
似たようなことはActionのParameterやVariableでも実現可能です。Data TypeとしてRecordを選択することで、任意のData Type(Basic、Entity、Structure)を組み合わせたRecordを作成可能です。再利用性の低いものはStructureを作成するのではなくRecordとして定義した方が効率的ではないかと考えています。