|
アプリケーション構成・動作内容
|
NOMADを使用したWebアプリケーションの構成と実行時の動作内容を説明します。
アプリケーションの構成
NOMADを使用したアプリケーションは、最低でも3つ以上のファイルから構成されます。
プロファイルはアプリケーション1つに対し1つしか存在しませんが、HTMLファイル・プロシージャは複数存在する場合もあります。
各ファイルを置く場所
サーバー上で、HTMLファイル、B/NOMADプロシージャを置く場所はデフォルトでは以下の通りです。
- HTMLファイル
「dsm.ini」の[DSMCGI]セクションのbnWWWPathで指定されたディレクトリ内に置きます。
IP2HTMLで使用するひな形HTMLは、このディレクトリに置いてください。
- NOMADプロシージャファイル・プロファイル
「nomad.ini」のSEARCHで指定されたディレクトリ内に置きます。
リソース設定で、指定のアプリケーション名・アプリケーションIDごとに、ファイルを置くディレクトリを指定することもできます。
動作内容
NOMADを使用したアプリケーションは、実行時に以下のような流れで処理を行います。
Webブラウザからサーバーにアクセスしたときに、サーバー上のWebサーバーを通してHTMLファイルが呼び出されます。そのHTMLファイルの中にDSMCGIを呼び出す記述がされています。
HTMLのFORMタグ内のボタンをクリックすると、サーバー上のDSMCGIが起動するようにHTMLソースを記述するのが一般的です。DSMCGIはB/NOMAD(サーバー上で動くNOMADプログラム)を実行し、最終的にはWebブラウザに返すためのHTMLファイルを出力します。

- NOMADの環境情報の取得
サーバー上の設定ファイル(dsm.ini)から環境情報を読み込みます。CGI部分が読み込む内容はインストールディレクトリ、CGIエラー時のHTMLファイル、スケジュール設定、リソース設定です。
この情報を元にDSMCGIの実行、出力ファイルの送信を行います。
- DSMCGIのID情報生成
CGIパラメータのIDを解析して、実際にDSMCGIへ渡すIDを生成します。
生成するIDは「ホスト名_CGIパラメータ値」です。
- アプリケーションプロファイルの実行
B/NOMADはそのアプリケーションの全体で同じ変数や関数を使用できるように「アプリケーション名_ prf.nom」というプロシージャを実行します。プロシージャの内容は、B/NOMAD内で使用するグローバル変数や関数の宣言です。
新たなアクセスがあった場合にこのプロシージャを実行します。このプロシージャにはB/NOMADが使用する環境変数の宣言も行われているため、正しく記述されていなかったり、このプロシージャが存在しない場合、アプリケーションは正しく動作しません。
セッションを保持しない場合でもグローバル変数の宣言はここで行う必要があります。
以下にアプリケーションプロファイルの例を示します。
DEC &HACYU_HTML_BUTTON AS V100; ! 押下されたボタン名 !
DEC &HACYU_NOMADPROC AS V100; ! プロシージャ名 !
DEC &HACYU_NOMADSID AS V200; ! DSMCGIの管理ID !
DEC &HACYU_USERID AS V100; ! ユーザーID !
DEC &HACYU_BNOMCURDIR AS V254; ! 実行中のNOMADカレントディレクトリ !
DEC &HACYU_END_SESSION AS LOGICAL INITVALUE='TRUE'; ! 実行後のセッション管理 !
DEC &HACYU_APPNAME_OPT AS LOGICAL INITVALUE='FALSE'; ! 複数アプリケーション実行 !
- CGIパラメータの解析
CGIパラメータを解析して、「アプリケーション名_get_form.nom」というプロシージャを作成します。このプロシージャをB/NOMAD内でCALLすることにより、CGIパラメータをNOMADで使用することができます。
- B/NOMADプロシージャの実行
HTMLのHIDDEN情報から、プロシージャ名・DSMCGIのオプションを取得して、DSMCGIによりB/NOMADプロシージャを実行します。この中で「アプリケーション名_result.html」という出力ファイルを生成する必要があります。
(このファイル名は、HTML情報のRETURN_FILEにより変更できます)
- 出力ファイルの送信
B/NOMAD内で作成された出力HTMLファイルをブラウザに送信します。
CGIパラメータの解析
ここではブラウザ(クライアント)から送信されるCGIパラメータの取得、解析について説明します。
CGI機能
- メソッド情報の取得
Webサーバーが設定する「REQUEST_METHOD」環境変数からメソッド情報を取得します。DSMCGIはGETメソッドとPOSTメソッドをサポートしています。これ以外のメソッドの場合はエラーになります。
- CGIパラメータの取得
CGIの仕様通り、以下の方法でCGIパラメータを取得します。
- GETメソッド
Webサーバーが設定する「QUERY_STRING」環境変数からCGIパラメータを取得します。
- POSTメソッド
Webサーバーが設定する「CONTENT_LENGTH」環境変数からCGIパラメータの長さを取得し、その長さ分、DSMCGIの標準入力からCGIパラメータを取得します。
- CGIパラメータのデコード
DSMCGIはURLエンコードのみサポートします。URLエンコードの場合は、そのエンコード法則に従ってデコードします。URLエンコード以外の場合はエラー(エラー2)になります。
- CGIパラメータの解析
CGIの仕様に従い、CGIパラメータを"&"を区切り文字として分割します。その後、HTML情報でDSMCGIでの必須情報を取得します。必須情報が存在しない場合はエラー(エラー2)になります。
基本認証情報
Webサーバーにはユーザーの基本認証機能があります。その情報は「REMOTE_USER」環境変数へ格納されます。その情報をB/NOMADで利用できるように取得します。その情報の取得に失敗した場合は、DSMCGIが実行されているユーザー(Webサーバーで設定されているユーザー)を取得します。
注意:
IntraVerse使用時は、IntraVerseで認証されたユーザー名になります。