連載 Magic V10リッチクライアント
第9回 サブフォームを利用した受注入力タスクの作成(その3)
これで、データリポジトリの準備が整いました。それでは早速、受注ファイルと明細ファイルを用いて、親子関係にある1対Nの構造のリッチクライアントタスクの作成に取り掛かりたいと思います。
はじめにAPGで受注ファイルだけの単体のタスクを作成し、その後、サブフォーム機能を使用して明細入力用のサブタスクを追加します。そしてさらに、イベントドリブンによる顧客選択プログラム、商品選択プログラムなどを追加していきます。
丹田 昌信 (プロフィール)
ウィンドウタイプのデフォルト値
この連載は英語版Magic eDeveloper V10.1 SP3のリッチクライアントβ版を用いて執筆を開始しましたが、このたび画面参照用の目的で日本語版リッチクライアントの“開発途上版”が提供されましたので、ここから先は同開発途上版の画面を引用して、解説を進めていきたいと思います。ただし、日本語β版は本稿執筆の段階ではまだ配布されておりませんので、その点をあらかじめご了承いただきたいと思います。
さて、これまでの連載ではリッチクライアントタスクの「ウィンドウタイプ」は、英語β版のデフォルト値である「SDI」を基準に解説してきましたが、日本語β版のリリースに向けてはこの特性値が「SDI」から「モーダル」に変更されることがわかりました。
この仕様変更により、これまでの解説内容とデフォルト設定のリッチクライアントタスクの動作仕様が一部異なる部分が発生しますが、これらの特性値はいずれもフォーム特性シート上で変更可能な値となっていますので、適宜、値を変更して動作検証を行っていただければと思います。以降、本連載ではリッチクライアントタスクのウィンドウタイプはデフォルト値として「モーダル(*1)」が使用されることを前提に解説を行っていきます。
(*1)M=モーダル(ヘルプより抜粋)……フォームがモーダルウィンドウとしてオープンされます。このウィンドウを閉じない限り、他のウィンドウにフォーカスを移すことができません。モーダルウィンドウからデフォルトウィンドウやフローティングウィンドウをオープンした場合、そのウィンドウはモーダルでオープンされます。
APGでリッチクライアントタスクを作成
画面1は、前号までに定義したデータリポジトリの内容をMagic Studio V10日本語版で表示したものです。プロジェクト名は同じく、「PetShop」です。
プログラムリポジトリにはまだメインプログラム以外、何も登録されていません。この状態でプログラムリポジトリを開き、受注ファイルを用いてリッチクライアントタスクをAPGで作成します。
作成手順の詳細については、すでに「第5回APGでリッチクライアントタスクを作成する」で解説済みですので、ここでは日本語版の画面を適宜、参照しながら手順の確認だけを行っておきます。
プログラムリポジトリを開き、新しい行を作成してCtrl+GでAPGを起動します。APGパラメータの「オプション」を「C=リッチクライアント」とし、「メインソース」を「受注ファイル」とします(画面2)。
「表示モード」は「S=スクリーン」として、APGを実行します。ダイアログが閉じてプログラムリポジトリに戻ると、リッチクライアントタスクが1件登録されていることが分かります(画面3)。
では、このリッチクライアントタスクをデバッグモードで実行してみることにしましょう。F7キーを押してタスクを実行します。しばらくして、画面の左上コーナーに小さな実行ウィンドウが表示されたことが分かります。(画面4)。
初回の起動はWebサーバとの接続、SQLServerとの接続等で少々時間が掛かるかもしれませんが、2回目からはキャッシュが効いて、短時間で起動されるようになります(*2)。
(*2)リッチクライアントの実行環境として、IISおよびJREがインストールされている必要があります。詳細は「第2回リッチクライアントとは何か(その2)」~「第3回リッチクライアントの開発環境」を参照してください。
タスクをインターネット経由で起動
では次に、このタスクをインターネット経由で起動するためのJNLPファイルを作成します。JNLPファイル作成手順の詳細は、「第6回リモートでリッチクライアントタスクを起動する」を参照してください。
なお、JNLPファイルの作成に先立ち、プログラムリポジトリ上でこのタスクの名称と公開名を分かりやすい名称に変更しておきます。ここでは、タスク名を「受注入力」とし、公開名を「OrderEntry」とします。そして、ウィザードからこのタスクを認識させるために、「外部」欄にチェックを入れておきます(画面5)。
ウィザードの起動は、プルダウンメニューの「オプション」→「インタフェースビルダ」→「リッチクライアント」から行います(画面6)。
ウィザードが完了すると、プロジェクトフォルダに「PetShop.html」と「PetShop.jnlp」ファイルが自動作成されます(画面7)。
では、PetShop.jnlpファイルをダブルクリックして、プログラムリポジトリ上の「OrderEntry」を呼んでみることにしましょう。はじめに、開発版のPetShopプロジェクトを実行モードに切り替えます(画面8)。
IISが稼動していることを確認し、PetShop.jnlpファイルをダブルクリックします。Java Web Startが始動し、アプリケーションをWebサーバからロードしはじめます(画面9)。
続いて、初回のセキュリティ警告では「はい」、または「常に」を選択します(画面10)。
ショートカットの作成確認で「はい」を選択すると、デスクトップ上にショートカット用のアイコンが作成されます(画面11)。
そして、プログラムの実行ウィンドウは画面12のようになります。
Windowsコントロールパネルの「Java」にあるアプリケーションキャッシュビューアにもPetShopが登録されたことが分かります(画面13)。
では、ここから画面12の実行ウィンドウを改良して、受注入力ウィンドウの親タスクの部分を作成してみることにしましょう。タスクの実行ウィンドウを閉じ、プログラムリポジトリに戻ります。
タスクを受注入力の親タスクとして改良
「受注入力」タスクをズームし、データビューエディタを開きます。顧客ファイルから「顧客名」、「住所」、「顧客メモ」の値を取得するために顧客ファイルにリンクを張り、受注ファイルの顧客番号で位置付けします(画面14)。
フォームエディタからフォームをズームして、レイアウトを画面15のように整えます。ここでは、フォーム特性の「開始時の位置」は「D=デスクトップの中央」としてあります。
さらに、フォーム特性の「ウィンドウタイプ」欄を「S=SDI」とし、「最小化ボタン」欄を「Yes」の設定にします。これにより、このタスクが実行されたときにWindowsのタスクバーにタスクボタンが表示されるようになり、最小化ボタンも有効となります(画面16)。
タスクを保存してF7キーで実行すると、実行ウィンドウは画面17のようになります。Windowsのタスクバーにも「受注入力」というタスクボタンが表示されていることを確認してください。モーダルの設定の場合は、タスクボタンは表示されません。
なお、これでJNLPファイル生成後にもプログラムを修正したことになるのですが、JNLPファイルで指定しているアプリケーション名とプログラム名には変更はありませんので、元のPetShop.jnlpファイルからタスクを再び起動しても画面17と同じ実行ウィンドウが表示されることになります。
次回は、サブフォームコントロールを使用して明細入力用のサブタスクを追加します。
(以上、2008年3月1日号)