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

前提

ここでは、intra-mart Batch Server により実行されるバッチプログラム(ファンクションコンテナ)の動作仕様を説明します。

intra-mart のバッチ機能を利用するには、intra-mart Batch Server, intra-mart File Server および intra-mart Information Server をインストールして正しく動作していることが必要になります。



動作に必要なプログラム(初期起動)

intra-mart Batch Server の初期起動時には、指定のファンクションコンテナを実行します。

初期起動時に実行したいプログラムを記述したファンクションコンテナを適切なディレクトリに保存して、適切に呼び出されるようにしてください。
初期起動時にアプリケーション(共通関数など)の初期化や初期設定などを実行すると有効です。

注意)初期化プログラム内では、データベースアクセスができません。初期起動時にデータベースアクセスをする必要のあるプログラムは、データベースアクセス前に、必ずデータベース接続APIを実行し、データベースアクセスAPIに対して、接続参照名を明示的に指定するようにして下さい。


動作に必要なプログラム(バッチ)

バッチプログラム起動設定をした上で intra-mart Batch Server を運用した場合、設定した時刻に batch.js 内に定義されている init() 関数が実行されます。
標準インストールをしている場合、 batch.js ではバッチ起動設定画面で設定したプログラムをロードします。その結果、指定のファンクションコンテナ内の init() 関数が実行されます。

batch.js および指定のファンクションコンテナ内に定義されている init() 関数には、バッチ設定に関する情報オブジェクトが引数として実行時に引き渡されます。

引数オブジェクトが持つプロパティ
group バッチ設定をしたログイン・グループID
name バッチ名称
establish バッチ実行時間設定
year バッチ実行指定年
month バッチ実行指定月
date バッチ実行指定日
day バッチ実行指定曜日
hour バッチ実行指定時間
minute バッチ実行指定分
second バッチ実行指定秒
program バッチとして実行するプログラム・パス
WWW_HOST バッチ設定をした時の Web サーバ
WWW_PORT バッチ設定をした時の Web サーバのポート
WWW_PROTOCOL バッチ設定をした時の Web サーバのプロトコル
WWW_LOCATION バッチ設定をした時の接続URL

バッチ実行指定の 年・月・日・曜日・時・分・秒 のうち“毎”指定(「毎日」など)をしている場合は、非数(NaN)が格納されています。
Web サーバ関連の情報は、バッチ設定メンテナンス画面でバッチ設定した時の接続情報になります。

intra-mart Batch Server により実行されたファンクションコンテナ(batch.js および指定のファンクションコンテナ)内に定義されている init() 関数は、1つの引数を取り実行されます。また、init() 関数の実行終了時には、1つの真偽値型返却値を返すことが義務づけられています。
intra-mart Batch Server および batch.js により実行されたファンクションコンテナ内の init() 関数の返却値は以下のような意味を持ちます。

バッチプログラムの返却値
真値(true) バッチ処理の正常終了
偽値(false) バッチ処理中にエラーが発生

init() 関数の返却値の目的は、上記のような意味を intra-mart Batch Server に通知することにあります。
※) init() 関数が真偽値を返却しなかった場合、intra-mart Batch Server は指定のバッチプログラムは正常に処理を終了できなかったと判断します。




実行シーケンス

バッチ起動設定時刻になった場合、以下のように処理が流れます。

  1. batch.js 内 init() 関数実行
  2. 設定ファンクションコンテナのロード
  3. 設定ファンクションコンテナ内 init() 関数の実行
  4. 設定ファンクションコンテナ内 init() 関数の batch.js 内 init() 関数への結果通知
  5. batch.js 内 init() 関数の intra-mart Batch Server への結果通知

設定時刻になると、必ず batch.js 内の init() 関数が実行されます。
ファンクションコンテナ batch.js は、初期起動時にロードされるプログラムであるため、このプログラムを変更した場合には、intra-mart Batch Server の再起動が必要になります。



標準インストールと batch.js

intra-mart を標準インストールした場合、intra-mart Batch Server により実行される batch.js では、バッチ設定をされたログイングループに対して疑似ログインをするようにプログラムされています。
このため、バッチ処理時間が設定されているセッションタイムアウト時間を超える場合、バッチプログラムの実行中にセッションタイムアウトが発生する場合があります。

処理に時間のかかるバッチプログラムを実行する場合には、セッションタイムアウト時間を長く設定するか、またはログイングループに密接に関係したAPIの利用を控えるか、またはログイングループに関係したAPIに対して明示的に参照IDを指定するようにしてください。

セッションタイムアウトの影響を受けるAPI
回避不可 回避可能
  • Client.*
  • Module.workflow.*
  • Module.almanac.*
  • Module.database.*



バッチプログラム例

バッチ起動設定をした時の Web サーバの HTTP リクエスト受付ポートが 80 ならばバッチ成功(true)、80 以外の場合はバッチ失敗(false)となるようなバッチプログラムです。

function init(oArg){
  if(oArg.WWW_PORT == 80){
    return true;
  }
  else{
    return false;
  }
}




注意事項

バッチ・プログラム内では、ページ遷移などの一部のAPIは利用できません

バッチ・プログラム内で利用できない Function Container API
  • request.*
  • forward()
  • redirect()
  • transmission()
  • Debug.browse()
  • Module.mobile.alert()
  • Web.*
  • Module.alert.*
  • Module.client.*
  • Module.download.*
  • Module.external.*



戻る

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