システム関連のスクリプト

最終更新日: 2023年7月31日

ログオン

Designerの環境タブからスクリプトを選びます。実行タイミング "ログオン" のスクリプトを作成することができます。

ログオン時のスクリプト

実際のスクリプトファイルは WEB-INF/script/__sys/logon.js として保存されます。

仕様・制約

  • スクリプト中では暗黙変数 p が制限付きで利用できます。具体的には p.user と p.appctx のみ利用できます。
  • return で文字列を返すことができます。ここで文字列に "forward:" または "redirect:" を接頭語につけると画面遷移を制御できます。そうでない場合、画面表示用のエラーメッセージと解釈されます。

print("hello, "+p.user.username);// p.user が利用できる。
var entityService = p.appctx.getBean("JuserEntityService");// p.appctx が利用できる。
var user = entityService.findById(p.user.username, false);
print(user);
return "forward:showListModel1.do?action_Search";// ログオン後に遷移する画面を指定できる。

ログオフ

Designerの環境タブからスクリプトを選びます。実行タイミング "ログオフ" のスクリプトを作成することができます。

ログオフ時のスクリプト

実際のスクリプトファイルは WEB-INF/script/__sys/logoff.js として保存されます。

仕様・制約

  • このスクリプトはログオフ処理の後に呼び出されます。セッションタイムアウトでも呼び出されます。
  • ジョブおよびアップロード更新では呼び出されません。
  • スクリプトでは暗黙変数 p は p.user と p.appctx のみ利用できます。

ジョブ実行の前・後

ジョブパラメータ "beforeScript", "afterScript" を設定します。

パラメータの設定
パラメータ
beforeScript ジョブ実行前に実行するスクリプトのファイル名。
beforeScriptParam:XX beforeScriptで指定したスクリプトに渡すパラメータ。XXはパラメータ名。
afterScript ジョブ実行後に実行するスクリプトのファイル名。
afterScriptParam:XX afterScriptで指定したスクリプトに渡すパラメータ。XXはパラメータ名。

スクリプトの例

スクリプトはDesignerで作成することはできません。開発者はテキストエディタでスクリプトファイルを作成し、WEB-INF/script/__job フォルダの下に保存してください。

beforeCheckDisk.jsというスクリプト名で保存した例を示します。

function process() {
  print("BEFORE "+param1+","+param2);
}

スクリプト用のパラメータがそれぞれ param1, param2 という名前で利用できます。

アプリケーション起動

Designerの環境タブからスクリプトを選びます。実行タイミング "起動時" のスクリプトを作成することができます。

起動時のスクリプト

実際のスクリプトファイルは WEB-INF/script/__job/startup.js として保存されます。

ジョブの登録

起動時のスクリプトは「今すぐ実行されるジョブ」として扱われます。そのためジョブの作成を行ってください。

ジョブとして登録する
  • ジョブパラメータは、キー名 "filename" 値(ファイル名) "startup.js" としてください。
  • このジョブは「有効」にはしません。つまり時間指定ジョブという扱いとならないため、時間の設定は無視されます。
  • 実行アカウントは必ず指定してください。

仕様・制約

  • スクリプト中では暗黙変数 p が制限付きで利用できます。具体的には p.user と p.appctx のみ利用できます。
  • p.user はジョブ実行アカウントになります。
  • return で文字列を返すことはできません。ログにメッセージを記録することはできます。

var entityService = p.appctx.getBean("JuserEntityService");// p.appctxは利用できる。
var user = entityService.findById(p.user.username);// ジョブ実行アカウント
scriptLogger.info(user);// ログへの出力

メニュー画面に遷移したとき、スクリプトファイル WEB-INF/script/__sys/menu.js が呼び出されます。

仕様・制約

  • スクリプト内でモデルを扱う場合、EntityService などを利用して取得する必要があります。(スクリプトですぐに利用できるモデルはありません。