intra-mart Accel Platform スクリプト開発モデル プログラミングガイド 第17版 2021-12-01

付録

スクリプト開発モデルの実行処理シーケンスについて

ブラウザから intra-mart Accel Platform に対してアクセスした場合の動作仕様を説明します。
ブラウザから HTTP リクエストにより スクリプト開発モデルのプログラムが実行される場合、ページを作成するために必要な サーバサイドJavaScript と html を実行します。
ページプログラムは、サーバサイドJavaScript と html の2ファイルで1対となります。
2つのファイルは、ファイルラベル名で関連付けられます。それぞれのファイル(html および js)は、必ず同じファイルラベル名で作成してください。
拡張子は、htmlの場合は .html で、サーバサイドJavaScript の場合は .js となります。
(どちらの拡張子も小文字のみとなります。大文字で記述した場合、正しく動作しなくなります。)
js が必要ない場合には、jsの省略は可能ですが、html の省略はできません。

ブラウザからリクエストがあった場合の処理が流れ

ブラウザからリクエストがあった場合、以下のように処理が流れます。
  1. ブラウザからのリクエスト受付
  2. session.js 内 init() 関数実行
  3. action 属性関数の実行
  4. page 属性 js内 init() 関数の実行
  5. page 属性 html の実行
  6. session.js 内 close() 関数実行
  7. ページ返却

action 属性

action 属性関数とは、intra-mart 連携用のリンク(<IMART type=”link”>)またはフォーム(<IMART type=”form”>)またはサブミット(<IMART type=”submit”>)からのリクエストであり、action 属性関数の実行指定がされていた場合にのみ処理されます(action 属性関数の実行指定がなかった場合には、この処理フェーズはスキップされます)。
action 属性関数には引数として、URL引数情報を持つオブジェクト(request)が渡されます。

コラム

action 属性関数指定が複数同時に行われていた場合、以下の順位付けにしたがって実行対象となる関数を決定します。
1. submit
2. form
3. link
action 属性関数の引数 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() 関数が実行されます。
  • 実行シーケンス
    1. init.js のロード
    2. 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() 関数が実行されます。
  • 実行シーケンス
    1. action 属性指定関数の実行
    2. init() 関数の実行
    3. html の実行
    4. close() 関数の実行

特殊プログラム

session.js は、HTTP リクエストを受け付けた時に実行されるプログラムです。
HTTP リクエストを受け付けると、session.js 内に定義された init() 関数が実行されます。
また、 html の作成を完了した後、HTTP レスポンスを返す前に close() 関数が実行されます。
session.js ファイルを変更した場合は、intra-mart Accel Platform を再起動するまでシステムには反映されません。