nomfjmtFileMakerセッションモデル普段IWPで開発するときによく使うパターンがあります。レコードが1件だけのユーティリティテーブルのグローバルフィールドにログインユーザのアカウント名を保持して、そこに貼ったリレーションから関連レコードのみをポータルで表示させるという方法です。今回の記事で紹介しているモデルのリレーションシップグラフを最初に見た時、それのことかと思ったのですが、ビデオを見てみると、UUIDなどをセッションIDとして(アカウント名ではなく)接続ごとにレコードを生成する、本格的なセッション管理の手法でした。以下は、私の拙訳です。Kingが「FileMaker分離モデル」を考え出しました。このモデルの一部として、中心となるファイル/テーブルからリレーションを介してのみデータを表示するという考え方が含まれていました。このパターンはその後「セッションモデル」と呼ばれるようになりました。今回のビデオではその考え方と長所・短所を説明します。厳格な管理すべてはリレーションを介して表示されるので、開発者が明示的に提供するレコード以外は、ユーザが閲覧したり編集することはできません。通常は開発者がステータスエリアを隠してロックすることで、すべてをスクリプトの管理下におきます。ユーザは、検索モードやリストビューを見ることはありません。他の方法でも不可能というわけではありませんが、FileMakerセッションモデルを使用すれば標準の状態で厳格な管理が可能になります。元のテーブルを持たないFileMakerのすべてのレイアウトには、ベースとなるテーブルオカレンス(TO)が必要です。「連絡先」を参照するためのレイアウトは「連絡先」TOの上に作成します。FileMakerセッションモデルでは、この目的のために「セッション」と呼ばれる特別なユーティリティテーブルを提供します。セッションTOは、ベースとなるTOを持たないすべてのレイアウトのベースになります。多くの場合、このタイプの画面のためのデータは複数の異なるテーブルから集められているので、「ホーム」や「ダッシュボード」のような画面に適しています。「連絡先」から「請求書」に画面を切り替える時に、効果的な画面遷移のためにスライドパネルを使用したいとします。両方を同じレイアウトに表示できれば、これは簡単です。パネルを切り替えて、リレーションを生成あるいは有効化することによって表示したいレコードを選択するだけです。FileMakerセッションモデルを使用しない選択このモデルが常に有効というわけではありません。リストビューや検索モードは利用できません。大きな影響として、スクリプトトリガーを起動するイベントが通常よりも少なくなります。スクリプトは、(本来反応してほしい関連レコードではなく)セッションテーブルのレコードに基づいて起動されます。このような制限があるので、私は一部の画面でのみこの方法を使用しています。技術的な解説セッションレコードには1つの重要な役割があります。他のユーザ(WebDirectの場合は、他のブラウザタブ)によってレコードがロックされないようにすることです。それを、データベースへの接続ごとにユニークなレコードを持つことによって実現しています。ここで「接続」という言い方をしましたが、これをもし「アカウント名」とした場合、WebDirectではブラウザタブごとに新しいデータベース接続が発生して問題になるからです。同じユーザがデータベースに対して複数の独立した接続を開くことができます。それらの接続には同じレコードを共有させないようにします。しないと相互にロックがかかってしまうことになるからです。下の図は、FileMakerセッションモデルのリレーションシップグラフです。FileMakerセッションモデルのリレーションシップグラフ。すべてのレコードを表示するためのリレーションシップの使い方に注目してくださいまた、ここで行っているように、テーブルの接続キーのフィールドを設定することによって、リレーションを介して表示されるレコードを選択するためにも使用されます。それは必須ではありません。機能をモジュール化したければ、セレクタモデルと組み合わせて使用することができます。開発時には、できるかぎり機能ごとにモジュール化することをお勧めします。その場合、リレーションシップグラフは以下のようになります。セレクタモデルと共にセッションモデルを使用するこの場合、セレクタモデルが表示するレコードの選択を処理し、セッションモデルがユーザからのデータベース接続ごとにレコードがロックされずに編集可能な状態で提供されることを保証します。私はこのようにできる限りすべてがモジュール化された方法を好みます。それはModularFileMaker.orgの哲学に沿うものです。サンプルファイルビデオで使用したファイルはここからダウンロードできます。