i ntra-mart The Power for Enterprise Web Solution
動作概要
【 Function Container 篇 】

種類

ファンクションコンテナは、サーバで実行される JavaScript で記述された intra-mart のビジネスロジック・プログラム・ファイルです(Client Side JavaScript は、これに含まれません)

ファンクションコンテナは、用途により4種に大別されます。

  • 初期起動用
  • Web ページ連携用
  • バッチプログラム用
  • 特殊プログラム
※) 共通関数登録用および独立型関数定義用などは、その性質の類似から『初期起動用』と同義と扱います。




初期起動用

初期起動用ファンクションコンテナは、サーバによりプログラムファイルがロードされると、ファイル内に記述された init() 関数が実行されます。
共通関数登録などの初期化処理は、init() 関数内に記述するようにしてください。

サーバの初期起動時には、init.js 内に定義された init() 関数が実行されます。
intra-mart 標準インストールをした状態の場合、init.js により、intra-mart Information Server の SYSTEM_DOCUMENT_ROOT 直下のディレクトリ内にある init.js ($SYSTEM_DOCUMENT_ROOT/ディレクトリ/init.js) が自動的にロードされ、その中に定義されている init() 関数 が実行されます(ファンクションコンテナ init.js のオートサーチ機能は、SYSTEM_DOCUMENT_ROOT 直下のディレクトリのみを対象としていて、さらにそのディレクトリが持つサブディレクトリまでは検索しません)

オートサーチされるそれぞれの init.js ファイルのロード順は、常に一定ではなく、環境により実行順が前後することがあります。

実行シーケンス
  1. init.js のロード
  2. init.js 内の init() 関数の実行
  3. SYSTEM_DOCUMENT_ROOT 直下のディレクトリ内にある init.js 群のロードおよび init() 関数の実行(順不同)




Web ページ連携用

プレゼンテーションページと連動するファンクションコンテナは、サーバにより実行される時に、引数を伴って呼び出されます。

HTTP リクエストにより実行された場合、URL引数を持つ request オブジェクトを引数として init() 関数が実行されます。
また、リンクやフォームの action 属性により任意の関数実行が指定されている場合、URL引数を持つ request オブジェクトを引数として指定の関数が実行されます。

HTTP リクエスト以外の方法(API forward() 等)により実行された場合、ファンクションコンテナ内の init() 関数は、その方法によって定義された引数を伴って実行されます(詳細に関しては、各々のAPI仕様を参照してください)

プレゼンテーションページの実行が完了したあと、ファンクションコンテナ内に close() 関数が定義されていた場合、URL引数を持つ request オブジェクトを引数として close() 関数を実行されます。

実行シーケンス
  1. action 属性指定関数の実行
  2. init() 関数の実行
  3. プレゼンテーションページの実行
  4. close() 関数の実行

action 属性関数の実行指定がない場合は、action 属性関数の実行フェーズはスキップされます。
プレゼンテーションページ実行中は、プレゼンテーションページ側の要求に応じて、ファンクションコンテナ内の任意の関数が実行されることがあります。



バッチプログラム用

intra-mart Batch Server により、定められた時刻に実行されるファンクションコンテナが、これに該当します。

バッチ設定メンテナンスにより設定されている時刻になると、ファンクションコンテナ batch.js 内に定義された init() 関数が intra-mart Batch Server により実行されます。

バッチの設定画面により設定された任意のプログラムファイルは、この batch.js から呼び出されます。



特殊プログラム

session.js は、intra-mart Application Server が HTTP リクエストを受け付けた時に実行されるプログラムです。

intra-mart Application Server が HTTP リクエストを受け付けると、session.js 内に定義された init() 関数が実行されます。
また、intra-mart Application Server がプレゼンテーションページの作成を完了した後、HTTP レスポンスを返す前に close() 関数が実行されます。

session.js ファイルを変更した場合は、intra-mart Application Server を再起動するまでシステムには反映されません。



注意事項

ファンクションコンテナ内に定義された init() 関数および close() 関数は、特別な意味を持ちます。
これらの関数を正規の目的を除いて、無闇に定義しないで下さい。



戻る

Copyright(C) NTT DATA INTRAMART CO.,LTD. 2000,2001 All Rights Reserved.