[OutSystems]画面のInput ParameterをURL指定で渡す


のコメント欄の質問から。

画面をURL指定で開くときに、Input Parameterを指定する方法。

画面サンプル

以下のような画面をURLで開くとします。

Input Parameterとして、Text型のTextVarと、DateTime型のDateTimeVarを持つ。
また、User Entityを検索するAggregate GetUsersByCreationDateを持っている。

Aggregateのフィルタ(Input Parameterを使ってUser Entityを検索する)

このAggregateの結果を、画面に配置したWidgetに紐付けることで、検索したUser Entityのデータを表示する画面です。

URLでサンプル画面とそのInput Parameterを指定する

OutSystemsの画面アクセスは、要するにHTTP GETの通信。
そのため、Input Parameterは、URLのクエリストリングに指定すればよい。
(クエリストリングとは何か、という点についてはWeb上に解説があるのでGoogleで検索してみてください)

すなわち

/モジュール名/画面名?InputParameter1=値&InputParameter2=値&...

のような形式になります。
モジュール名等は実際のアクセス先に応じて変更する。
例えば、アクセス元と同じモジュールのPDFTestTo画面(サンプルの画面)であれば、以下のように指定する。

GetOwnerURLPath() + "PDFTestTo?TextVar=" + TextVar + "&DateTimeVar=" + DateTimeToText(DateTimeVar)

 GetOwnerURLPath()はビルトイン関数の1つで、所属するモジュールの相対パスを返す。
 「?」はクエリストリングの開始を示す区切り文字で1回だけ登場。
 「&」はクエリストリング内で、各パラメータ間の区切り文字。パラメータ数-1回だけ登場。
 「=」はクエリストリング内で、各パラメータ名とその値の区切り文字。パラメータ数回だけ登場
 TextVarはText型なので値をそのまま渡せばよいが、DateTimeVarは元がDateTimeなので文字列であるクエリストリングに渡すためにText型に変換している点に注意。

上記の式は実行時に以下のようになる

/AssociateReactive/PDFTestTo?TextVar=Te&DateTimeVar=2021-06-29 23:51:00