サポート > リポジトリ > CSV・Excel入出力 > アップロード更新時にスクリプトを呼び出すスクリプト

アップロード更新の処理のタイミングでスクリプトを呼び出すことができます。

「ヘルパ」で設定できるスクリプトは次の通りです。

タイミング 説明 生成されるファイル
アップロード更新(開始時) アップロード更新処理の開始時に一回だけ呼び出されます。 UploadUpdate<モデルID>_processStart.js
アップロード更新(終了時) アップロード更新処理の終了時に一回だけ呼び出されます。 UploadUpdate<モデルID>_processEnd.js
アップロード更新(1件読み込み後) アップロード更新でデータを1件読み込んだ直後に呼び出されます。対象データの数だけ呼び出されることになります。ファイルから読み込んだ値を書き換える場合は、このスクリプトを使ってください。 UploadUpdate<モデルID>_AfterRead.js
詳細画面表示(アップロード更新) アップロード更新でデータを1件処理するときに呼び出されます。対象データの数だけ呼び出されることになります。さらに1回の処理で複数回呼び出されることがあるため、このスクリプトで値を変更するような処理を記述しないようにしてください。想定している使い方はイレギュラーデータを発見したときにエラーメッセージをセットすることです。(エラーがセットされた場合、そのデータは処理されません。) <モデルID>Helper_beforeShowInUploadUpdate.js

アップロード更新(1件読み込み後)の例

このスクリプトは更新と削除のいずれでも呼び出されるため、どちらかの処理に限定したい場合は UPLOADACTION の値で判断させるようにしてください。

if (UPLOADACTION === "update") {
  // ストアモデルの値を変更する処理
}

詳細画面表示(アップロード更新)の例

model1 モデルの item1 項目の値が空でない場合、その行(データ)の処理を失敗させる例を示します。

var s = model1.item1;
if (s !== null) {
  var error = new Jfcerror();
  error.content = "値がセット済みです。";
  p.errors.addJfcerror(error);
}

「コントローラ > アップロード更新」で設定できるスクリプトは次の通りです。

タイミング 説明 生成されるファイル
ステータス表示 ステータスを表示するときに呼び出されます。 UploadUpdate<モデルID>_ShowStatus.js
アップロード実行 アップロードの開始ボタンを押下したときに呼び出されます。 UploadUpdate<モデルID>_Update.js
処理の停止 アップロードの停止ボタンを押下したときに呼び出されます。 UploadUpdate<モデルID>_Stop.js
アップロード更新後(1件毎) アップロード更新で1件のデータの登録または更新が成功した後に呼び出されます。削除時も呼び出されるようにする場合は「削除時のスクリプトを記述できるようにする」の設定を行ってください。 UploadUpdate<モデルID>_AfterUpdate.js
図1 スクリプトを記述する

アップロード更新後(1件毎)の詳細

削除時のスクリプトを記述できるようにする

「コントローラ > アップロード更新 > アップロード更新後(1件毎)」に記述したスクリプトは登録または更新時に呼び出されます。
これを削除時にも呼び出されるようにするためには、「画面 > アップロード > アップロード更新設定 > スクリプトで削除を扱う」を有効にしてください。

図2 削除時のスクリプトを記述できるようにする
この設定を有効にすると、削除前にいったんデータベースから値を読み込むようになります。読み込んだ値をスクリプトに渡します。そのため、削除処理のパフォーマンスに影響があります。(データベース読み込みという手順が削除処理の都度、発生します。)

スクリプトで利用できるオブジェクト

このスクリプト内では UPLOADACTION というオブジェクトが利用できます。 現在の処理が登録、更新、削除のいずれかを示します。

説明
insert そのデータが新規に登録されたことを示します。
update そのデータが更新されたことを示します。
delete そのデータが削除されたことを示します。

例 アップロード更新後にメールを送信する

アップロード対象データにメールアドレスが含まれていると仮定します。アップロード更新成功時に、そのメールアドレスに対してメール送信を行う例を紹介します。

var replaceMap = new java.util.HashMap();
replaceMap.put("${customer_p.mailaddress}", customer_p.mailaddress.content);
var mailman = p.appctx.getBean("MailMessageManager");
mailman.send("customer_upload", replaceMap, errorManager, "SendmailAtUploadCustomer ", p);

2行目の replaceMap の値部分はプレゼンテーションモデルの項目を使うため、".content" を付与して値部分を取得するようにしてください。

仕様

  • 登録、更新、削除いずれも同じスクリプトが呼び出されます。UPLOADACTION の値をみて、いずれの動作によるものかを知ることができます。
  • 処理が失敗した場合は、このスクリプトは呼び出されません。例えばユニーク制約によりデータベース例外が発生し、更新が失敗した、などがあります。
  • スクリプト中に、モデルの値を変更することはできません。(変更しても無視されます。)スクリプトは登録、更新処理の「後」に呼び出されるためです。