モデル参照を行うタイミングで、関連するその他の項目を自動的に参照することができます。Wagby ではこれを参照連動と呼びます。

「顧客モデル」と「サポートモデル」を例に説明します。サポートモデルで「顧客名」を参照すると、それに関連する最新の「顧客会社名」が同時に表示されます。この方式によりデータの重複入力の手間がなくなり、かつ、常に最新のデータを参照することができます。

図1 関連項目を自動的に参照させる

図2に参照連動を設定したサポートモデルの新規登録画面を紹介します。
「検索...」ボタンから、顧客名を確定させます。(この詳細は「参照先モデルの参照>検索画面」をお読みください。

図2 サポート新規登録画面

顧客名を確定させると会社名が自動設定されます。会社名項目は参照連動型として定義しています。

図3 顧客を確定させると会社名が自動設定される(参照連動)

定義方法

サポートモデルを図4のように定義しています。

図4 サポートモデルの定義

「顧客名」項目は、顧客モデルを参照しています。

図5 顧客名項目の定義

「顧客会社名」項目も、同じ顧客モデルを参照しています。連動する項目名「顧客名」が決まると、参照先モデル項目名「会社名」が定まる、としています。

図6 顧客会社名を参照連動として定義する
このように、Wagbyのモデルは「データベースに保持される情報」だけでなく「画面に表示される情報」も含めることができます。

データベースとの関係

参照連動項目は標準ではデータベースに保存されません。(テーブルにもカラムが生成されません。)

参照連動を設定すると、データベース保存設定は自動的に解除されます。表示のタイミングで、データベースから最新の値を取得します。

(保存できるように設定することもできます。詳細は"参照連動項目を自モデルに保存する"をお読みください。"参照連動項目を参照先モデルに保存する"も関連する内容です。

図7 参照連動を設定すると、データベース保存設定は自動的に解除される

自動的に読み込み専用になる

参照連動項目は自動的に「読み込み専用」となります。

図8 参照連動項目を選択すると、読み込み専用設定が自動的に行われる

検索時の動作

参照連動が数珠つなぎになっている場合でも、検索することができます。

参照連動 > 参照連動 > 参照連動 > 文字列型項目
参照連動 > 参照連動 > モデル参照(検索画面)

などのパターンで検索できます。

参照先項目がテキストエリアの場合

参照先項目が文字列型(テキストエリア)の場合、これを参照連動した場合は次のようになります。

  • 登録・更新・詳細・一覧画面では、テキストエリア(読み取り専用)で表示されます。
  • 参照連動にて「出力制御>テキストエリア>ラベルで表示する」を有効にすると、詳細画面ではテキストエリアにしない、という設定を行うことができます。

設計上の留意点

参照元項目(上記例ではサポートモデルの顧客名)が "DB保存なし" の場合、参照連動は機能しません。

参照連動型項目に、次の設定を行うことはできません。

  • 参照元項目(上記例ではサポートモデルの顧客会社名)が繰り返し項目である。
  • 参照元項目が繰り返しコンテナで、参照先項目(上記例では顧客モデルの顧客会社名)が繰り返し項目である。
  • 参照先項目(上記例では顧客モデルの顧客会社名)が繰り返しコンテナ内にある。
  • データ指定項目(上記例ではサポートモデルの顧客名)に下記以外を指定すること。
    • 項目の型が「参照先モデルの項目参照(リストボックス)」
    • 項目の型が「参照先モデルの項目参照(ラジオボタン)」
    • 項目の型が「参照先モデルの項目参照(検索画面)」
    • 外部キー項目
図9 参照連動として指定できる項目と、指定できない項目

参照連動項目をデータベースに保存する設定を行うこともできます。

図10は、参照連動項目「顧客会社名」をサポートモデルで保存可能とした例です。参照連動された値を修正して保存することができます。

図10 参照連動項目を修正して保存する

定義方法

サポートモデルの「顧客会社名」項目の詳細定義ダイアログを開きます。「詳細>データベースの詳細」で、「値をデータベースに保存する」を有効とします。さらに、参照モデルの格納先を「自モデル」とします。

図11 参照連動項目の値をデータベースに保存する設定

また、入力できるようにするため、読み込み専用の設定を解除します。

図12 読み込み専用設定を解除する

データベースとの関係

保存後の値は、顧客モデルの顧客会社名と切り離されて管理されます。その後、顧客モデルの変更が発生した場合でも、サポートモデル側に反映されることはありません。

図13 自モデル格納のイメージ

この対策として、顧客モデルが修正されたとき、この顧客モデルを参照しているサポートモデルを非同期で更新するというアプローチがあります。この対応は非同期処理のためのメッセージサーバを用意し、かつスクリプトで更新処理を行うというものです。[詳細...]

上で説明した参照連動自モデル保存は次のような動作になっています。

  • 参照連動項目が空白であれば、参照連動を機能させる。
  • 参照連動項目に値があれば、参照連動させない。

ここで、参照連動元が計算式で求められる場合、次のように変更することができます。

  • 参照連動項目に値があっても、参照連動元を変更したときは参照連動させる。

動作例

参照先のモデル「取引先」を用意しておきます。

図14 取引先マスタ

上の取引先を参照する「受注入力」の新規登録画面を開きます。ここで「取引先」を選択するのはサブウィンドウ(検索画面)ですが、この値のコピーを「取引先キー連動元(リストボックス)」という項目で保持するようにしています。実際の参照連動元となるのは、この項目です。

図15 受注入力 新規登録
本番運用では、「取引先キー連動元(リストボックス)」は隠し項目とするとよいでしょう。

「取引先主キー」を確定すると、その値が「取引先キー連動元(リストボックス)」に転記されます。さらにこの値を元に「取引先コード」「取引先口座」が参照連動されます。これらは自モデル保存項目ですので、参照連動後に値を書き換えて保存することができます。

図16 取引先主キーを確定する

ここで「取引先主キー」を変更してみます。標準では「取引先コード」「取引先口座」が空白でなければ、参照連動されません。これは参照連動後に値を書き換えた場合、書き換えた値を優先するという動作になっているためです。

図17 参照連動で上書きされない

この動作を変更し、「取引先キー連動元(リストボックス)」が変わった場合は常に参照連動させるという設定を行うことができます。

図18 常に参照連動で上書きした場合

定義方法

今回の例で用いた「取引先マスタ」と「受注入力」モデルです。

図19 「取引先マスタ」と「受注入力」モデル

受注入力モデルです。「取引先キー連動元(リストボックス)」を参照連動元としています。

図20 「取引先キー連動元(リストボックス)」が参照連動元となっている

「取引先キー」はモデル参照(検索画面)としています。

図21 「取引先キー」の設定

「取引先キー連動元(リストボックス)」は、モデル参照(リストボックス)としています。

図22 「取引先キー連動元(リストボックス)」の設定

この「取引先キー連動元(リストボックス)」は、自動計算によって求められます。今回の設定のポイントは、参照連動元は入力ではなく計算によって求めるようにするというものです。

図23 「取引先キー」の値を転記する

「取引先コード」「取引先口座」は参照連動です。

図24 「取引先コード」の設定

自モデル保存ですので、値をデータベースに保存します。

図25 値をデータベースに保存する

また、読み込み専用を解除し、入力可能とします。

図26 読み込み専用を解除する

参照連動元が変わったときに上書きするための設定を行います。モデル参照の設定のオプションから、「連動タイミング(参照元が自動計算)」を "連動する項目の変更時" とします。標準は空白であり、空白のときは値が空のときのみ参照連動するようになっています。

図24 「連動タイミング(参照元が自動計算)」の設定

動作例

図25は、参照連動項目「顧客会社名」をサポートモデルで保存可能とした例です。修正した値は、参照先である「顧客」モデルに反映されます。

図25 参照連動項目を修正して保存する

(参照先である)顧客モデルが修正されています。

図26 参照先モデルの項目が修正されている

定義方法

サポートモデルの「顧客会社名」項目の詳細定義ダイアログを開きます。「詳細>データベースの詳細」で、「値をデータベースに保存する」を有効とします。さらに、参照モデルの格納先を「参照先のモデル」とします。

図27 参照連動項目の値をデータベースに保存する設定(参照先モデル)

また、入力できるようにするため、読み込み専用の設定を解除します。

図28 読み込み専用設定を解除する

データベースとの関係

この設定は「トランザクション」として扱われます。複数のモデルを更新し、データベースにコミットされます。
図29 参照先モデル格納のイメージ

参照連動自モデル(または他モデル)保存項目の入力フィルタは次のルールとなります。

フィルタ指定を空白とする フィルタを指定する
参照先項目と同じフィルタが使われます。 指定したフィルタが使われます。

動作例

検索条件に参照連動の値を表示させることができます。検索項目としては機能しませんので、確認用という位置づけになります。

図30 検索条件に参照連動の値を表示する

定義方法

サポートモデル定義の全体を図20に示します。「顧客名」と「会社名」は顧客モデルを参照しており、かつ「会社名」は参照連動項目で、検索条件を有効にしています。

図31 サポートモデルの定義

会社名項目について、「検索制御>読み込み専用にする」を有効にします。

図32 読み込み専用の設定

制約

本機能は、次の検索画面には適用されません。

  • カレンダビュー
  • CSV・Excel ダウンロード

"固定メッセージの選択・追加による入力方式の実現"をお読みください。

Wagby Developer Day 2018