メニュー技術解説

見出しのアイコン

仮想端末ジョブが起動されると次にユーザー・プロフィールの 「初期プログラム」の欄に登録されている
ユーザー・プログラムが実行されます。
この「初期プログラム」は AutoWeb によってメニューの起動であると解釈されます。

多くの IBM i のユーザーは初期プログラムとして CLP などを起動してユーザー・メニューを表示するように
設定しているからです。 (初期メニューの登録は無視されます。)
ユーザー・メニューのメニュー項目を正しく検出するためにユーザー・メニューの画面のメニュー項目は、
次の形式でなくてはなりません。

数字 + . (ピリオド) + メニュー・テキスト

例えば、

  • 1. マスター保守メニュー
  • 2. 受注管理メニュー

のような形式です。
メニュー画面の項目bヘ連続した自然数である必要は
ありません。
また必ずしも昇順に並んでいる必要もありません。
昇順の配置されていなくても AutoWeb によって
メニュー項目bフ昇順に表示されます。

ツリー・メニューの設定

ツリー・メニューを表示するかどうかは AUTOWEB 構成(GO AUTOWEB)の
2. 実行環境の設定(WEBENV) の設定に依ります。
ツリー・メニューを表示するには、下記のように
TREE_MENU *YES として設定しておく必要があります。
TREE_MENU ディレクティブは実行ライブラリーを指定して設定することもできます。

【実行環境の設定(WEBENV)の一部】
#------------------------------------------------------
#  ツリー・メニューの表示  *YES/*NO +  ライブラリー指定可能
#  例  :  ライブラリー  QTROBJ  からだけの起動を  *YES
#            TREE_MENU    *NO
#            TREE_MENU    *YES   QTROBJ
#
# [ 注 ] この設定を変更した場合は、ブラウザのキャッシュを
#        すべて消去してからやり直してください。
#------------------------------------------------------
   TREE_MENU     *YES
#  TREE_MENU     *NO
#  TREE_MENU     *YES     QTROBJ

ツリー・メニューが正しく表示されない場合は一旦、 TREE_MENU *NO として
表示させてから原因を調査する方法があります。
ただし本稼動ではやはりツリー・メニューを表示するように設定することをお勧めします。
Web の世界では一般的に IBM i のオプション・メニューのように
オプションを選択するようなメニュー形式は存在しません。
オプション選択のメニューは Web化とは言えないからです。
AutoWeb ではツリー・メニューに変換すべきであると考えています。

※ ツリー・メニューとする適用業務の除外

ツリー・メニューから選択されて実行される適用業務は、その適用業務の終了後には
元の実行されたツリー・メニューに実行スタックが復帰することが条件です。
ツリー・メニューから起動された適用業務が終了するともう一段ジャンプして
上位のスタックまで復帰するようなアプリケーションはサポートしておりません。

メニュー・アイコンの設定

メニューに使用されているアイコンを設定したり変更することができます。
どのアイコンを使用するかの判定方法は
メニュー項目に記述されている指定の文字列が見つかれば
その文字列に対応づけられているアイコンが採用されます。

メニュー・アイコン

HTTPCFG のアイコン記述

#------------------------------------------------------
#  メニュー・アイコンの設定
#------------------------------------------------------
   MENU_ICON    一覧表     /AS400-NET.USR/WWWMENU/PRT.GIF
   MENU_ICON    明細表     /AS400-NET.USR/WWWMENU/PRT.GIF
   MENU_ICON    印刷       /AS400-NET.USR/WWWMENU/PRT.GIF
   MENU_ICON    出力       /AS400-NET.USR/WWWMENU/PRT.GIF
   MENU_ICON    入力       /AS400-NET.USR/WWWMENU/DSP.GIF
   MENU_ICON    明細       /AS400-NET.USR/WWWMENU/TXT.GIF
   MENU_ICON    照会       /AS400-NET.USR/WWWMENU/QRY.GIF
   MENU_ICON    登録       /AS400-NET.USR/WWWMENU/DSP.GIF
   MENU_ICON    *OTHER     /AS400-NET.USR/WWWMENU/EDT.GIF
【解説】

例えばあるメニュー項目は

1.部品マスターの登録

と表記されていたとします。この文字列には「登録」という文字列が
含まれていますのでアイコンは

/AS400-NET.USR/WWWMENU/DSP.GIF

となります。
また、

12.部品マスターの更新

というメニュー項目の文字列に対しては上記のどれにも該当するものが
ありませんので *OTHER と定義されている、

/AS400-NET.USR/WWWMENU/EDT.GIF

が採用されます。

1. 社内ルールに従ってアイコンを設定する

社内での「一覧表」や「報告書」などの副名称を明確に統一しておけば
それらに対するアイコンを設定することにより視認性を高めることができます。
エンド・ユーザーはアイコンを見るだけでどのような処理であるかを
即座に見つけることができ、適用業務の操作がよりやさしいものとなります。

2. 独自のアイコンを作る

独自のアイコンを作成してそれを IFS のどこかに配置したものを指定することができます。
ただし /AS400-NET.USR 配下に配置した場合は PTF や リリース・アップによって
上書きされて失われる可能性についても配慮してください。
独自のアイコンの開発と保守はお客様の責任においてお願い致します。
またアイコンを設定したフォルダーは PASS が定義されている必要もあります。
アイコンを独自のものに変更することはできますが
導入してまだ十分に慣れていない場合はやはり省略時のとおりに従ってください。
十分な知識と経験の後で変更することをお勧めします。

メニュー・オプションの設定

一般的にはメニュー・オプションの表記は 数字 + . (ビリオド)+ (テキスト)の形式で表記されており
AutoWeb はエンド・ユーザーがメニュー項目をクリックすると、
この数字を仮想端末API に入力することによって
エンド・ユーザーに代わってオプションの選択操作を実行します。
しかし中にはこのような形式でないメニューもあるかも知れません。
これらの事情もAUTOWEB 構成(GO AUTOWEB)の
2. 実行環境の設定(WEBENV)で設定することができます。

【実行環境の設定(WEBENV)の一部】
#------------------------------------------------------
#  Menu_Opt  :  メニュー・オプション番号の表記方法
   Menu_Opt             9.
   Menu_Opt            99.
   Menu_Opt            D99
   Menu_Opt            Y99

数字 9 の部分は数字であることを表しています。
例えば 99: とは 11: , 12: や 13: のようなオプションを表しています。
ただし 1: のような数字の部分が 1桁しかない場合も含めようとすると
9: というディレクティブも登録しなければなりません。

サブ・メニューの表示について

メイン・メニューの配下のメニュー項目テキストに「メニュー」という文字列が含まれている場合は、
それらはサブ・メニューと解釈されて「アイコン」としてサブ・メニュー表示されます。
逆に、実際はサブ・メニューであっても「メニュー」という文字列が含まれない場合は
サブ・メニューとは解釈されませんのでご注意ください。
この場合はユーザーによって、「メニュー」という文字列を追加する必要があります。
サブ・メニューの階層構造は最大 99個までの階層が可能です。

サブ・メニューの設定

最初に表示されたメイン・メニューの各項目の文字列に「メニュー」という文字列が含まれていれば
その項目はサブ・メニューであるとAutoWebによって判断されます。
しかし適用業務によっては「メニュー」とは表現せずに「MENU」と英語表記されているかも知れません。
これらの事情もAUTOWEB 構成(GO AUTOWEB)の
2. 実行環境の設定(WEBENV)で設定することができます。

【実行環境の設定(WEBENV)の一部】
#------------------------------------------------------
#  メニューの定義
#------------------------------------------------------
#  Menu_Tree :  この文字列が含まれているときに、
#           これがメニューであることを示します。
#           下位メニューに展開を指示します。
#
   Menu_Tree     メニュー
   Menu_Tree     xpャー
   MENU_TREE     MENU
   MENU_TREE     MENU
   MENU_TREE     タスク
   MENU_TREE     TASKS
   MENU_TREE     文字作成ユーティリティー

数字 9 の部分は数字であることを表しています。
例えば 99: とは 11: , 12: や 13: のようなオプションを表しています。
ただし 1: のような数字の部分が 1桁しかない場合も含めようとすると
9: というディレクティブも登録しなければなりません。

サブ・メニューの展開と Ajax

メニューは最初から展開されて表示されるわけではありません。
記号をユーザーがクリックすることによって初めて、そのサブ・メニューが展開されて
ダウンロードされるような仕組みとなっています。
このとき威力を発揮しているのが Web2.0 Ajax です。
サブ・メニューの展開操作は Ajax によってサーバーへ展開要求が伝えられます。
サーバー側では AutoWeb が Ajax からの要求結果としての展開したメニュー構造を XML として
Ajax へ戻します。
Ajax は、この結果を下位構造としてメニュー追加に追加して表示します。
操作としては一瞬で終わってしまいますが、ブラウザの表示画面全体を書き換えるのではなく
要求された操作によって画面の一部だけを瞬時に更新できる機能こそが Ajax のパワーです。
Ver5.0 では Ajax は他にも数多く利用されて操作性を向上させています。

サブ・メニューの複数同時表示について

複数のサブ・ツリーを同時に開いているときに、あるサブ・ツリーの項目を実行してから
別のサブ・ツリーの項目の実行に移るときには、
実際には内部では AutoWeb がエンド・ユーザーに代わって
上位へ戻るための機能キーを押して戻っています。

つまりメニューを終了して上位のメニューに戻るための機能キーを決めなければなりません。
多くの場合は「F12= 取消し」キーであるはずですが、これも業務によって異なるようであれば
ライブラリー名を指定して実行環境の設定(WEBENV)に登録しておく必要があります。

【実行環境の設定(WEBENV)の一部】
#------------------------------------------------------
#  Menu_Return  上位メニューに戻るための機能キーを
#               定義します。
#
#               ツリー構造メニューで上位に戻るためには
#               この定義が必要となります。
#------------------------------------------------------
   Menu_Return         CF12

あるライブラリー KEILIB からの戻りキーが F1 であるなら

Menu_Return         CF01    KEILIB
Menu_Return         CF12
のように登録してください。

メニュー内の初期設定やユーザー独自の内部処理について

メニューを表示する直前に省略時のプリンターや作業ファイルなどの環境の設定をユーザーCLP の中で
行うことはよく見られる手法ですが、このようなユーザー独自の処理もそのまま保持されて実行されます。
起動プログラムにユーザー名をパラメータとして渡す処理も、
そのまま変更することなく保持することができます。

起動される仮想端末ジョブについて

メニューを起動すると AutoWeb は、子プロセス : AURORA_EGN から、
別の仮想端末ジョブを起動して、それと会話を開始します。
仮想端末ジョブは、サブ・システム ENTPRSSVR の配下ではなく、
導入されている IBM i の対話式サブ・システム (QINTER、QBASE 等) の配下で
対話式ジョブとして開始されます。
メニューがオープンされていたり、適用業務が待機している場合に、
操作員がボタンを押したりして ブラウザを終了してしまっても、問題はありません。
AutoWeb も仮想対話式環境として稼動しており、
ブラウザのボタンの終了イベントは確実にサーバーに 伝えられます。

ボタンが押されると対応する仮想端末ジョブも強制的に終了され、
AURORA_EGN も AutoWeb の処理を終了します。

通信の切断について

HTTP/1.1プロトコルの仕様では、ブラウザは「KEEP-ALIVE」(接続保持要求) を HTTPサーバーに伝えて、
できるだけ通信を保持しようとします。
他の HTTPサーバーの多くは静的な HTMLコンテンツの送受信には通信は保持されますが
CGI の結果の送信では、通信は送信と同時に切断されてしまいます。
しかし、HTTPサーバーAlaska は、CGI の要求であっても通信状態を保持することができます。
ただし、実際の処理ではブラウザの挙動として、
ブラウザ自身が 60秒間、操作がないと通信を切断してしまいます。

 この 60秒という値はブラウザの設定で変更することはできません。
この値はレジストリに書かれていますが通常のユーザーがレジストリを
手動で修正することは好ましくありません。

通信が切断されても、その後にユーザーの操作によって再接続が行われると
サーバーでは元の AURORA_EGN のジョブに戻って通信を開始します。
元の子プロセスのジョブ: AURORA_EGN に復帰して、通信が遮断された後の再接続されることによって、
あたかも通信が最初から切れ目なく続いていたかのような処理とすることができます。
これを「仮想対話式環境」と呼び、この機能があるのは Alaska だけです。
仮想対話式環境をサポートする HTMLソースには非表示フィールドとして
「AURORA_EGN=(ジョブ番号)」として元の子プロセス: AURORA_EGN のジョブ番号が埋め込まれており、
これによってもとの子プロセスに復帰できる仕組みとなっています。