基本仕様 第 4 章 前の章 次の章

4. アプリの型 (タイプ)

MANDALA.net を用いると、 データのエントリ (追加) 処理も照会 (表示) 処理も更新処理も削除処理も行うような多機能な画面アプリケーションを簡単に開発することができます。 ただし、このように多彩な芸当を自在に行う画面 (マルチ機能画面) に仕立てるには、 動作モードの切換えに関する理解が必要です。

特定の処理だけを行う単純な画面アプリケーションの場合は、動作モードの切換えは不要です。 プログラムが起動されたとき、最初にどの動作モードで処理を始めたいのかを明確にして、 それを指定すればよいだけです。 これに関係して、画面アプリケーションは次の 4 種のアプリの型 (タイプ) に分類されます。 なお、プログラムが起動時の動作モードという意味では、最初と最後のものは同じですので、 最初の三つのアプリの型が意味があるといえます。

この章では、これらの動作モードがどのように遷移していくかに関する詳細が、以下の順に記述してあります。

4.1 プログラム開始時の動作モード

4.2 実行時の動作モード遷移


4.1 プログラム開始時の動作モード

プログラム開始時の動作モードを追加モードにしたければ、 アプリの型をデータエントリまたはデータエントリ更新にしてください。 表示モードにしたければ、アプリの型をデータ照会にしてください。 更新モードにしたければ、アプリの型をデータ更新にしてください。

このようにアプリの型は、どの動作モードで処理を開始したいのかということと密接に関係しています。 しかし、正確にいうとアプリの型だけで動作モードが決まるわけではありません。 プログラム開始時の動作モードは、次の二つによって決定されます。

(1) データエントリ型アプリの開始時の動作モード

データエントリ型アプリは、プログラムの開始時に追加モードになります。

ただし、フックメソッド AppendChk (追加モード) が組み込まれていれば、 まず最初にそれが呼び出されて、その後で追加モードになります。 なお、このとき AppendChk フックメソッドでは、追加モードになることを拒否してはならないことになっています。

(2) データ照会型アプリの開始時の動作モード

データ照会型アプリは、プログラムの開始時に次のような関門を通って、 最終的に表示モードになるのが普通です。

第一関門はフックメソッド Select (選択モード) です。 これが組み込まれていれば、まず最初に選択モードになって、このメソッドが呼び出されます。 そして、このメソッドの中で選択モードの指定をすれば、本格的な選択モードになります。 選択モード以外の指定をすれば、それに従います。 なお、アプリの型に従ったモード (FormBase.SELECT_AppType) 指定をすれば、 または Select メソッドが組み込まれていない場合には、 表示モードになります。

表示モードになると述べましたが、ここを正確にいうと、第二関門として フックメソッド Indicate (表示モード) があります。 これが組み込まれていれば、表示モードになる直前に、これが呼び出されて、 その後で表示モードになります。なお、画面に表示すべきデータの読込みは、 フックメソッド Current (現画面) の役割です。

以上の流れの中で、表示モードの前に一時的に選択モードになる場合、 このことをアプリ操作者に意識させるアプリもありますし、 意識させないアプリもあります。アプリの中の フックメソッド Select からアプリ操作者にどのデータを表示するのかを問い合わせるアプリであれば、 アプリ操作者は選択モードになったことが分かります。 しかし、あらかじめ決めてあるデータを表示するアプリであれば、 アプリ操作者は一時的に選択モードになったことに気が付かないでしょう。 アプリ操作者は、プログラムが開始と同時に表示モードになったと思うことでしょう。

(3) データ更新型アプリの開始時の動作モード

データ更新型アプリは、プログラムの開始時に次のような関門を通って、 最終的に更新モードになるのが普通です。

第一関門はフックメソッド Select (選択モード) です。 これが組み込まれていれば、まず最初に選択モードになって、このメソッドが呼び出されます。 そして、このメソッドの中で選択モードの指定をすれば、本格的な選択モードになります。 選択モード以外の指定をすれば、それに従います。 なお、アプリの型に従ったモード (FormBase.SELECT_AppType) 指定をすれば、 または Select メソッドが組み込まれていない場合には、 更新モードになります。

更新モードになると述べましたが、ここを正確にいうと、 第二関門としてフックメソッド UpdateChk (更新モード) があります。 これが組み込まれていれば、更新モードになる直前に、これが呼び出されて、 その後で更新モードになります。なお、画面に表示すべきデータの読込みは、 フックメソッド Current (現画面) の役割です。

以上の流れの中で、更新モードの前に一時的に選択モードになる場合、 このことをアプリ操作者に意識させるアプリもありますし、意識させないアプリもあります。 アプリの中のフックメソッド Select からアプリ操作者にどのデータを更新する (ために表示する) のかを問い合わせるアプリであれば、 アプリ操作者は選択モードになったことが分かります。 しかし、あらかじめ決めてあるデータを表示する (ことで更新の準備とする) アプリであれば、 アプリ操作者は一時的に選択モードになったことに気が付かないでしょう。 アプリ操作者は、プログラムが開始と同時に更新モードになったと思うことでしょう。

(4) データエントリ更新型アプリの開始時の動作モード

データエントリ更新型アプリは、プログラムの開始時に追加モードになります。

ただし、フックメソッド AppendChk (追加モード) が組み込まれていれば、 まず最初にそれが呼び出されて、その後で追加モードになります。 なお、このとき AppendChk フックメソッドでは、追加モードになることを拒否してはならないことになっています。

お気付きのように、プログラム開始時の動作モードだけを取り上げると、 データエントリ更新型アプリは、データエントリ型アプリと全く同じです。


4.2 実行時の動作モード遷移

データのエントリ (追加) 処理も照会 (表示) 処理も更新処理も削除処理も行う画面 (マルチ機能画面) にするには、動作モードの切換えが必要になります。 このためには、アプリ操作者が動作モードの切換えの指示を与えることができるように、指示コントロール (Cm_AppendC, Mn_AppendC, Cm_SelectCm, Mn_SelectCm, Cm_Indicate, Mn_Indicate, Cm_UpdateC, Mn_UpdateC など) を画面上に設けておくことが必要です。

このような準備をしておくと、次の二つによって動作モードを切換えて、 マルチ機能画面を実現することができます。

アプリ操作者が追加,選択,表示,更新のいずれかの動作モードに移ることを指示した場合には、 それぞれ AppendChk (追加モード), Select (選択モード), Indicate (表示モード), UpdateChk (更新モード) の各フックメソッドが呼び出されます。 そして、これらのメソッドでは 「アプリ操作者の指示通りにするかしないか」 を選択することができます。 特に、フックメソッド Select では、どの動作モードに移るのかを指定することができます。

また、アプリ操作者が削除の指示を与えた場合には、 Delete (削除処理) フックメソッドが呼び出されます。 そして、このメソッドでは 「アプリ操作者の指示通りにするかしないか」 を選択することができます。 指示通りにしない場合には、どの動作モードに移るのかを指定することができます。

さらに、アプリ操作者が画面データをファイルまたはデータベースへ追加するように指示した場合、 または画面データに従ってファイルまたはデータベースを更新するように指示した場合には、 それぞれ Append (追加処理) または Update (更新処理) フックメソッドが呼び出されます。これらのフックメソッドでは、 どの動作モードに移るのかを指定することができます。

なお、アプリ操作者があいまいな指示 (追加モードからデータの選択をせずに直接、 表示モードや更新モードに移行するような指示) をした場合に、 MANDALA.net はその指示を無効にします。 また、更新モードでないとき、MANDALA.net は削除の指示を無効にします。

以上のように動作モードの遷移は、上記の二つの要素によってほぼ決定されるのですが、 正確にいうと、アプリの型も少しばかり影響を与えます。それは、次の五つの場合です。

この五つの場合、アプリの型がデータエントリまたはデータ照会のアプリ (すなわち表示系のアプリ) においては、表示モードに遷移します。 また、アプリの型がデータ更新またはデータエントリ更新のアプリ (すなわち更新系のアプリ) においては、更新モードに遷移します。