付録¶
項目
スクリプト開発モデルの実行処理シーケンスについて¶
ブラウザから intra-mart Accel Platform に対してアクセスした場合の動作仕様を説明します。ブラウザから HTTP リクエストにより スクリプト開発モデルのプログラムが実行される場合、ページを作成するために必要な サーバサイドJavaScript と html を実行します。ページプログラムは、サーバサイドJavaScript と html の2ファイルで1対となります。2つのファイルは、ファイルラベル名で関連付けられます。それぞれのファイル(html および js)は、必ず同じファイルラベル名で作成してください。拡張子は、htmlの場合は .html で、サーバサイドJavaScript の場合は .js となります。(どちらの拡張子も小文字のみとなります。大文字で記述した場合、正しく動作しなくなります。)js が必要ない場合には、jsの省略は可能ですが、html の省略はできません。
ブラウザからリクエストがあった場合の処理が流れ¶
ブラウザからリクエストがあった場合、以下のように処理が流れます。
- ブラウザからのリクエスト受付
- session.js 内 init() 関数実行
- action 属性関数の実行
- page 属性 js内 init() 関数の実行
- page 属性 html の実行
- session.js 内 close() 関数実行
- ページ返却
action 属性¶
action 属性関数とは、intra-mart 連携用のリンク(<IMART type=”link”>)またはフォーム(<IMART type=”form”>)またはサブミット(<IMART type=”submit”>)からのリクエストであり、action 属性関数の実行指定がされていた場合にのみ処理されます(action 属性関数の実行指定がなかった場合には、この処理フェーズはスキップされます)。action 属性関数には引数として、URL引数情報を持つオブジェクト(request)が渡されます。コラム
action 属性関数指定が複数同時に行われていた場合、以下の順位付けにしたがって実行対象となる関数を決定します。1. submit2. form3. linkaction 属性関数の引数 request の詳細に関しては、[APIドキュメント - スクリプト開発モデルim-BizAPI - platform - Request]を参照してください。注意
action, page属性や、imart type=”form”の利用は互換目的で残されており、利用の推奨はしておりません。代わりの手段として、[スクリプト開発モデル プログラミングガイド - 応用( intra-mart Accel Platform の機能を使いこなす) - ルーティング]を参照してください。
page 属性¶
page 属性とは、intra-mart 連携用のリンク(<IMART type=”link”>)またはフォーム(<IMART type=”form”>)またはサブミット(<IMART type=”submit”>)からのリクエストであり、page 属性関数の実行指定がされていた場合にのみ処理されます。page 属性指定がない場合は、リクエストをしてきたページを再実行します。コラム
page 属性 サーバサイドJavaScript 内 init() 関数には引数として、URL引数情報を持つオブジェクト(request)が渡されます。page 属性関数の引数 request の詳細に関しては、[APIドキュメント - スクリプト開発モデルim-BizAPI - platform - Request]を参照してください。注意
action, page属性や、imart type=”form”の利用は互換目的で残されており、利用の推奨はしておりません。代わりの手段として、[スクリプト開発モデル プログラミングガイド - 応用( intra-mart Accel Platform の機能を使いこなす) - ルーティング]を参照してください。
エラーが発生した場合¶
各スクリプトの実行フェーズにおいて、何らかの要因でエラーが発生した場合、即座にスクリプト実行を中止して、ブラウザに対してはエラー画面を送信します。エラーが発生した場合は、エラーの発生した実行フェーズおよび『session.js 内 close() 関数実行』および『ページ返却』を除く残りの実行フェーズはスキップされます。
session.js¶
session.js 内 close() 関数実行フェーズは、ページ処理に関する終了処理を行うことを目的とします。注意
session.js 内 close() 関数実行フェーズにおいて、Debug.browse() や forward() などのスクリプト実行を強制的に中断して処理を遷移させるAPIを実行した場合、正しく処理されない場合があります。
サーバサイドJavaScript の種類¶
サーバサイドJavaScript は、用途により3種に大別されます。
初期起動用¶
初期起動用 サーバサイドJavaScript は、サーバによりプログラムファイルがロードされると、ファイル内に記述された init() 関数が実行されます。共通関数登録などの初期化処理は、init() 関数内に記述するようにしてください。サーバの初期起動時には、ソースのルートディレクトリ(標準では、jssp/src )にある init.js 内に定義された init() 関数が実行されます。
- 実行シーケンス
- init.js のロード
- init.js 内の init() 関数の実行
html 連携用¶
html と連動する サーバサイドJavaScript は、引数を伴って呼び出されます。HTTP リクエストにより実行された場合、URL引数を持つ request オブジェクトを引数として init() 関数が実行さ れます。また、リンクやフォームの action 属性により任意の関数実行が指定されている場合、URL引数を持つ requestオブジェクトを引数として指定の関数が実行されます。HTTP リクエスト以外の方法(API forward() 等)により実行された場合、サーバサイドJavaScript 内の init() 関数 は、その方法によって定義された引数を伴って実行されます。(詳細に関しては、各々のAPI仕様を参照してください)html の実行が完了したあと、サーバサイドJavaScript 内に close() 関数が定義されていた場合、URL引数を持つ request オブジェクトを引数として close() 関数が実行されます。
- 実行シーケンス
- action 属性指定関数の実行
- init() 関数の実行
- html の実行
- close() 関数の実行