サポート > Wagby定義ファイル > 8 モデル連携 > 1つのモデルで複数の検索画面、登録画面を作成する

1つのモデルに対して複数の一覧表示画面、詳細表示画面、登録画面を作成することができます。

構成イメージ

1つのモデルで複数の画面を作成する場合は、まずメインとなるモデル(以後「メインモデル」と呼びます)を定義した後に、その定義内容をコピーして新しいモデル(以後「サブモデル」と呼びます)を定義します。 1つのメインモデルに対して複数のサブモデルを用意することもできます。
構造イメージを示します。


図1 構成イメージ

画面を複数用意できますが、データをやり取りするモデルそのものは1つです。
データベース上では、メインモデルとサブモデルは共通のテーブルが使用されます。

サブモデルはメインモデルのサブセットの関係にあるので、既存項目(主キーを除く)を削除して減らすことはできますが、メインモデルにない新たな項目を追加定義することはできません。 また、サブモデルを定義する場合、項目名(英語)、項目の型は変更せず、すべてメインモデルに合わせます。

実行例

画面動作を確認します。ここでは、メインモデルに「顧客」、サブモデルに「顧客サブモデル」を用意し、 一方の画面で登録したデータが、もう一方の画面で確認できる例を示します。 まず「顧客サブモデル」から見てみます。


図2 メニュー画面

「顧客サブモデル」にデータを登録してみます。


図3 サブモデル登録画面

続いて、メインモデルである「顧客」モデルのデータを確認してみます。 図3と比較して、「生年月日」のレイアウトが異なること、「メモ」が「備考」になっていること、 また、サブモデルにはなかった「商談履歴」が表示されていることが分かります。 このように、一部項目名は代わっていますが、顧客のデータとして、サブモデルから登録したデータを閲覧、更新することができます。 もちろん、メインモデル側で登録したデータは、サブモデルでも確認することができます。


図4 メインモデルでデータを確認

これを応用すると、権限のあるユーザにはメインモデルを見せる、権限のないユーザには項目の少ないサブモデルを見せるというアプリケーションも設計できます。

設定方法

それでは定義方法を見てみましょう。ここではモデルを2つ定義します。
まず、メインモデルとなる「顧客モデル」を定義します。これは通常のモデル定義であることが分かります。


図5 メインモデルとなる「顧客モデル」の定義

続いて、この顧客モデルをメインモデルとする「顧客サブモデル」を定義します。 「顧客サブモデル」では、「顧客モデル」の項目数以下で、同じ項目名、項目の型を定義する必要があります。 ほぼ同じ項目の定義になるため、定義をコピーする方法を紹介します。(もちろん手で定義しても構いませんが、定義ミスなどの問題が予想されますので、非推奨です。)
xls-model内で「顧客モデル」が定義されている定義ファイルをコピーし、ファイル名を変更して保存します。


図6 メインモデルの定義ファイルをコピーする

コピー後、サブモデル用の定義ファイルを開きます。「顧客モデル」名「customer」を任意の名前に変更します。 マスタモデルの定義はすでにメインモデルで定義されているため消去します。


図7 メインモデルの定義ファイルをコピーする
マスタモデルが定義されている場合、「消去」ボタンをクリックして、定義を消去してください。 消去しない場合メインモデルですでに定義されているため、ビルド時にエラーが発生してしまいます。

モデル名を変更し、「詳細表示」ボタンをクリックすると、次のような確認ダイアログが表示されます。


図8 確認ダイアログ

確認ダイアログで「OK」ボタンをクリックすると、変更したモデル名でモデル定義シートが表示されます。 次に「画面動作定義」ボタンをクリックし、画面動作定義シートを開きます。


図9 サブモデルの画面動作定義を行う

画面動作定義シートの「モデルの関連性」-「メインモデル名」にメインモデルとなる顧客モデルの名前「customer」を記述します。


図10 メインモデル名の指定
「メインモデル名」に自モデル名を指定するとビルドエラーとなります。 定義ファイルをコピーして使用する場合には、コピー元の定義が残っていないかご確認ください。

メインモデル指定後、モデル定義シートに戻り、サブモデルのモデル定義を行います。 定義の際、項目名を減らすことはOKですが、項目を追加したり、項目名(英語)、項目の型を変更したりすることはできません
ここでは次のような変更を行いました。下記の他、表示する画面なども任意で変更することができます。

  1. モデル名(日本語)を「顧客サブモデル」と変更。
  2. 「商談履歴」の項目を削除。
  3. 「個人情報 >生年月日」とレイアウトを変更。
  4. 「備考」の項目名(日本語)を「メモ」に変更します。

図11 サブモデルの定義

注意

サブモデルは、メインモデルの部分集合のため、テーブル構造が変わるような変更を行うことはできません。 よって、サブモデルを定義する場合、メインモデルで定義された以下の点は変更してはいけません。 (もし変更した場合は、ビルド時にエラーとなります。)

  • 項目名(英語)
  • 項目の型
  • 項目を追加すること(サブモデルに独自に項目を追加できません。)
  • モデル項目定義シートの「リレーショナルデータベースの詳細」、「必須チェック」等の設定について、メインモデルと異なる定義をすること(メインモデル、サブモデルともに同じ設定にする必要があります。)