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

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

「画面 > スクリプト > コントローラ > 画面」から "アップロード更新" を選びます。 また「実行タイミング」で "アップロード更新後(1件毎)" を選びます。

図1 スクリプトを記述する

スクリプトの書き方の詳細は「業務ロジック」をお読みください。

スクリプトが呼び出されるタイミング

ここで作成したスクリプトは、アップロード更新で登録または更新が成功した後に呼び出されます。

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

標準では登録または更新時にスクリプトが呼び出されます。
これを削除時にも呼び出されるようにするためには、「画面 > アップロード > アップロード更新設定 > スクリプトで削除を扱う」を有効にしてください。

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

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

スクリプト内では次のオブジェクトが利用できます。

UPLOADACTION

現在の処理が登録、更新、削除のいずれかを示します。

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

仕様

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

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

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);

Designerに標準で用意されているエディタを使って入力する場合、2行目の replaceMap のキー部分は、$${{...}} と記述してください。実際に出力されるファイル「UploadUpdateモデルID_AfterUpdate.js」では、${...} となっています。

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

アップロード更新処理の開始時および終了時に「一回だけ」呼び出すスクリプトを記述することができます。

図3 開始時および終了時に呼び出されるスクリプト
それぞれ UploadUpdate<モデルID>_processStart.js, UploadUpdate<モデルID>_processEnd.js というスクリプトが生成されます。