OutSystems環境で、特定の種類のアプリケーションだけをリストアップする方法を確認してみました。
Service CenterやService Studioでアプリケーションをリストアップすると、アイコンで種類を確認できます。
しかし、その方法だと、特定の種類のアプリケーションのみのリストではないので、若干不便です。
サンプル
Forgeコンポーネント:https://www.outsystems.com/forge/Component_Overview.aspx?ProjectId=7086
ApplicationEntity Screenを参照してください。
こんな感じに、指定した種類のアプリケーションのみをリストアップできます(例ではモバイルのみ)。
環境
Personal Environment(Version 11.0.606.0)
Service Studio(Version 11.6.22)
アプリケーションリストを取得する
この方法には、(System)モジュールに含まれるApplication Entityが使えます。
このあたりのEntityについては、正式なドキュメントが見つかりません。
そのため、観測からの判断ですが、それぞれ以下の役割を持っているものを持っているものと思われます。
- Application
- 接続している環境内のアプリケーションを表すEntity
- Name:アプリケーション名
- Description:アプリケーション作成時に指定する説明文
- CreatedBy:作成ユーザーのID
- Is_Active:アプリケーションが環境内で削除されていないか(削除されるとFalseが設定される模様)
- Application Icon
- アプリケーション作成時に指定したアイコン画像
- RuntimeKind
- Static Entity
- アプリケーションの種別(モバイルアプリケーションならMobile、など)を表す
- UserMT
- Users Entityのビュー
- Usersのマルチテナント版
ApplicationのRuntimeKindを、Entities.RuntimeKind.Mobileで絞り込みすることによって、モバイルアプリケーションだけが表示されるようになります。
削除済みのアプリケーションを表示したくなければ、Is_Active=Trueを追加してください。
UserMTを使用する理由
UsersでなくUserMTを使うのは、アプリケーションを作成するユーザが、Service Centerのユーザだからですね。
モジュールのUser Provider moduleプロパティを展開してみると、デフォルトがUsersで、別の候補にService Centerがあると思います。
User Providerは、アプリケーションにログインできるユーザーアカウントを管理するモジュールのことです。
User Providerとテナントが結びついています。そのため、アプリケーションが動作するUsersにいないユーザーをApplication.CreatedByが指しているために、マルチテナント版のUserMTを使っています。