Edited at

[OutSystems]構造体の定義(Recordの活用)


初めに

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として定義した方が効率的ではないかと考えています。