URLにIDを使用する
階層的なデータ構造の作り方
グローバル変数の使用は、すべてのケースに対応できるわけではありません。選択したエントリへのリンクを与えることができなくなります。結局のところ、変数の値は、それが設定されたブラウザのタブにのみ保存されます。この問題を解決するには、必要な情報を直接URLに記述して、特定の要素への正確なリンクを渡すことが可能です。
具体的な例を挙げて、その方法を説明しましょう。国の一覧表で、任意の行をダブルクリックすると、その国に属する都市に関する情報だけが表示されるようにします。こうすることで、親要素から子要素に移動するような、階層的なデータ構造によるナビゲーションが実現できるようになります。
ページ設定
まず最初に、都市の表があるページのアドレスを変更する必要があります。これを行うには、対応するメニュー項目の設定を開き、URLアドレスに :id変数を URL アドレスに指定します。
次に、ナビゲーションを設定して、指定されたページに移動するだけでなく、ID パラメータを URL に追加する必要があります。これを行うには、国のリストを持つテーブルに戻り、アクションを設定します。 onRowDoubleClickトリガーにアクションを設定します。これで、テーブルの行をダブルクリックすると、ページに移動し、そのアドレスには選択したレコードのIDが含まれます。
URLからIDを取得する業務処理
次に、与えられたIDをURLから取得する処理を行います。この機能は様々なビジネスプロセスで必要とされる可能性があるので、そのための関数を別途作成するのが最適でしょう。これは、Webアプリケーションセクションの対応するタブに作成することができます。同時に、以前にバックエンド用に作成されたビジネスプロセスとは異なり、サーバー上で実行されるのではなく、それを起動したユーザーのデバイス上で直接実行されることになります。
ビジネスプロセスでは、以下のブロックを使用します。
- Get Current Pageを使用して、現在の URL を取得します。
- Split stringは、区切り文字として「/」を選択することで、URLを個別のブロックに分割するためのものです。
- 特定のページについては、得られた配列から目的のString をインデックスで即座に指定することができました。しかし、このビジネスプロセスは普遍的なものであり、異なる構造のURLにも使えるので、少しロジックを複雑にしたほうがいい。を使って、分割後の配列に含まれるString の要素数を確認してみましょう。 Array sizeブロックを使用します。
- ブロックを使って Subtractブロックを使って、結果の量から3を引きます(私たちの要素は最後から2番目で、インデックスの番号付け自体は0から始まっています)。
- 計算した値をインデックスとして Array Elementブロックにインデックスとして渡し、配列から必要なString を取得します。
- 最終的にString を変換します。 to Integer.
そして、あとは作成したビジネスプロセスからの値を、テーブルにデータを取得するための GETリクエストで作成したビジネスプロセスの値を使用して、テーブルにデータを取り込むだけです。