サポート > 管理者ガイド(R7) > スクリプトの実行
ja | en

定期的にサーバサイドで動作するJavaScriptを実行させることができます。

開発者が用意した「スクリプト」を定期的に実行することができます。

図1 ジョブの設定
この設定を行う前に、ジョブ実行アカウントを準備してください。
  1. 管理者権限をもったアカウントでログオンします。
  2. メニューから「ジョブ管理」「ジョブスケジュール検索」画面を開きます。
  3. 「登録画面へ」ボタンを押下し、ジョブスケジュールの新規登録処理を行います。
  4. ジョブ名から「ScriptCodeRunner」を選択します。その下の説明欄に「スクリプト実行」と表示されます。
  5. ジョブパラメータに、実行したいスクリプトのファイル名を記述します。図1は、myjob.js というファイルを指定しています。拡張子は .js になります。
    myjob.js
  6. スケジュールを指定します。
  7. 「有効」フラグをチェックします。
  8. このジョブを実行するアカウント "jobadmin" を入力します。
  9. ジョブスケジュールを登録します。指定した時間になると、スクリプトが実行されます。
ここでいうスクリプトは、アプリケーションサーバで稼動するものです。

スクリプトとは

Java が標準で提供する「サーバサイド JavaScript」をいいます。Wagby では、この仕組みを利用して JavaScript 文法を使った業務処理プログラムの開発を行うことができます。詳細は「リポジトリ > 業務ロジック」をお読みください。

スクリプトファイルのテンプレート

スクリプトファイルのテンプレートは「リポジトリ > 業務ロジック > 生成されるスクリプトファイルの詳細 > 基本テンプレート」を参照してください。次のようになります。

function process() {
var ExcelFunction = Java.type("jp.jasminesoft.util.ExcelFunction");
var Jfcerror = Java.type("jp.jasminesoft.jfc.error.Jfcerror");
var Jfcwarn = Java.type("jp.jasminesoft.jfc.error.Jfcwarn");
var Jfcinfo = Java.type("jp.jasminesoft.jfc.error.Jfcinfo");
var stdout = java.lang.System.out;

...ここに開発者独自のコードが埋め込まれる...

}

スクリプトには process という名前の関数をご用意ください。この関数が実行されます。

スクリプトファイルの保存先

作成したスクリプトファイルは wagbyapp/webapps/wagby/WEB-INF/script/__job というフォルダに保存してください。

実際の開発では、customize/webapp/WEB-INF に script/__job フォルダを用意し、ここに保存するとよいでしょう。customize 以下のフォルダに存在するファイルは、ビルド時に常に反映(上書き)されます。

動作を確認する

次のファイルを myjob.js として wagbyapp/webapps/wagby/WEB-INF/script/__job フォルダに保存します。(最初、この __job フォルダは存在しませんので、手動で作成してください。)

function process() {
var ExcelFunction = Java.type("jp.jasminesoft.util.ExcelFunction");
var Jfcerror = Java.type("jp.jasminesoft.jfc.error.Jfcerror");
var Jfcwarn = Java.type("jp.jasminesoft.jfc.error.Jfcwarn");
var Jfcinfo = Java.type("jp.jasminesoft.jfc.error.Jfcinfo");
var stdout = java.lang.System.out;
stdout.println("Hello,JobScript");
}

上記スクリプトを保存後、ScriptCodeRunner ジョブを設定し、「今すぐ実行」ボタンを使います。wagbyapp を実行中の Tomcat コンソールに Hello,JobScript と表示されます。

ジョブに指定するパラメータを複数、指定することができます。 ここで指定できるパラメータは次のとおりです。

パラメータ名 必須 説明 記述例
filename スクリプトファイルを指定します。 myjob.js
maintenance このジョブを実行する前にメンテナンスモードに切り替えることができます。ジョブ実行後にメンテナンスモードも終了します。 true
maintenanceOption メンテナンスモード切り替え時にログオン済みであったアカウントへの対応方法を指定します。 logout : ジョブ実行前にログオンしていたアカウントを強制ログアウトさせる。
fail : ジョブ実行前にログオンしているアカウントがいれば、ジョブを失敗させる。
(省略時) : ログオンしているアカウントはそのままに、モードを切り替える。
lock 実行前にロックするモデルを指定します。ジョブ終了後、ロックは解除されます。 customerなどのモデル名英語。空白区切りで複数のモデルを指定できます。
cache ジョブ終了後、指定したモデルのキャッシュをクリアします。 customerなどのモデル名英語。空白区切りで複数のモデルを指定できます。
param:パラメータ名 7.10 スクリプトに渡すパラメータを指定します。"param:" の後に続く文字列がパラメータ名になります。 param:targetdate

スクリプトでパラメータを受け取る7.10

図2に示すように二つのパラメータを指定する例を説明します。

キー
param:targetdate2016-12-01
param:owneradmin
図2 パラメータを指定する

スクリプトファイル中では、パラメータ名を直接、内部の変数として利用できます。型は文字列となります。

function process() {
var ExcelFunction = Java.type("jp.jasminesoft.util.ExcelFunction");
var Jfcerror = Java.type("jp.jasminesoft.jfc.error.Jfcerror");
var Jfcwarn = Java.type("jp.jasminesoft.jfc.error.Jfcwarn");
var Jfcinfo = Java.type("jp.jasminesoft.jfc.error.Jfcinfo");
var stdout = java.lang.System.out;

stdout.println("targetdate="+targetdate);
stdout.println("owner="+owner);
}
  • パラメータに渡す「値」は固定値(文字列)です。ここに関数を指定することはできません。例えば今日の日付が必要、という場合は、スクリプト内で new Date() を使って今日の日付を取得するようにしてください。例: var d = new Date();
  • スクリプトを実行したアカウントは、p.user.username で取得することができます。例: stdout.println(p.user.username);

ジョブを一時的に無効にすることができます。

  1. 管理者権限をもったアカウントでログオンします。
  2. メニューから「ジョブ」「ジョブスケジュール検索」画面を開きます。
  3. 該当する「ジョブスケジュール」を検索し、更新画面を開きます。
  4. 「有効」フラグについているチェックをはずし、保存します。
    図3 ジョブを無効にする

ジョブの実行結果をメールで送信することができます。

ジョブの多重実行を行うことはできません。

あるジョブを 1 分毎に起動させるようにした場合、1 分後にこのジョブの実行が終了していなければ、新しいジョブは実行されません。

時間指定ではなく、このジョブを今すぐ実行することもできます。「ジョブの即時実行」をお読みください。