初めに
画面に情報を表示するために、基本的にはAggregateとDataActionを使っている。
自分のメモのために使い分けの基準をメモしておこうと思う。
環境
Service Studio Version 11.54.37
Reactive Web
DataActionとAggregateの違い
Aggregateはテーブルの機能の実装がしやすい
AggregateやDataActionをそのままScreenに配置すればTableが簡単に実装できるのは両方同じであるが、
Aggregateはそのままページネーションやソート機能が実装される。
DataActionはEntity以外のリソースにアクセスできる
AggregateはEntityからのみ情報を取得する。DataActionはServerActionから情報するためその他のリソースから情報を取得することができる。
SitePropertyの値を取得する
SitePropertyで設定されている値を取得するのに使うことができる。画面に表示する環境名を取得するのによく使っている。
外部APIの値を取得する
他システムから画面表示のために都度情報を取得する必要がある場合は、DataActionにて外部API経由で値を取得する。
DataActionは処理を実装することができる
AggregateやServerActionで取得した値を編集することができる。独自の集計処理や、データの整形処理を実行することができる。
DataActionは情報を隠匿できる
DataActionはAggregateで取得した値であっても、画面で利用しない値に関しては返却しない。
- 隠匿したい情報が露出しにくい
- データの通信料が削減できる
といったメリットがある。
Aggregateについても公式ドキュメントに利用しない値は返却しない旨があったと思ったのですが、Chromeの開発者ツールで確認したところDataActionは隠匿され、Aggregateでは隠匿されない結果となった。
さいごに
データの隠匿については双方変わりのないものと思っていたので意外だった。
またAggregateでTableを作成したときに自動でページネーションやソートが実装されるのはよいが、それが必要かどうかはきちんと考えて機能を削除するか残すかは考えないといけない認識をあらたにした。