アップロード更新ジョブ

最終更新日: 2021年10月20日
R8 | R9

定義方法

アップロード更新処理を画面上から手動で行うこととは別に、時間指定ジョブとして実行することができます。

アップロードするファイルは「本番運用サーバ」からアクセスできるパスに用意してください。

「画面 > アップロード > アップロード更新ジョブ」にて、「アップロード更新ジョブを作成する」を有効にします。あわせて「説明文」にこのジョブの説明を記述します。

図1 ジョブを用意する

ジョブの登録

jobadminアカウントを用意する

「サポート > 管理者ガイド(R9) > 準備:ジョブ実行アカウントを利用可能にする」の手順に従って、jobadmin アカウントを用意してください。

権限(プリンシパル)の割り当て

jobadmin アカウントは、対象モデルを操作できる権限(プリンシパル)を与えるようにしてください。権限がない場合、アップロード更新ジョブは失敗します。

データ権限の変更を伴う場合

データ権限を適用したモデルについて、jobadmin アカウントによるジョブ実行では、通常、データ所有者やデータ所属グループの変更ができません。(この対応が必要な場合はジョブ実行アカウントを admin とするか、または jobadmin アカウントにシステム管理者プリンシパルを与える必要があります。)

アップロード更新ジョブを設定する

Wagbyのジョブを初めて扱う場合は"サポート > 管理者ガイド(R9) > ジョブ管理"をお読みください。ここでは、ジョブの具体的な使い方を説明します。

  1. 管理者権限をもったアカウントでログオンします。
  2. メニューから「ジョブ管理」「ジョブスケジュール検索」画面を開きます。
  3. 「登録画面へ」ボタンを押下し、ジョブスケジュールの新規登録処理を行います。
  4. ジョブ名から「UploadUpdate + モデルID + Job」を選択します。その下の説明欄に、Designerで入力した説明文が表示されます。
  5. ジョブパラメータに、実行したいコマンドを記述します。[後述]
  6. スケジュールを指定します。
  7. 「有効」フラグをチェックします。
  8. このジョブを実行する管理者のアカウントおよびパスワードを入力します。先ほど用意した jobadmin を使うとよいです。
  9. ジョブスケジュールを登録します。指定した時間になると、コマンドが実行されます。
図2 アップロード更新ジョブを作成する
図3 アップロード更新ジョブパラメータを設定する

注意

図2で対象モデルのジョブの選択肢が表示されない場合は、ビルド後に jfcjob モデルのデータインポートを行なっていない可能性があります。初期リポジトリ data_init 内にある jfcjob フォルダに、追加したジョブに関する xml ファイルが追加されていますので、ご確認ください。

指定できるジョブパラメータ

このジョブに関する制御はすべてジョブパラメータとして指定します。

パラメータ名 説明 記述例
processfilename 処理対象のファイル名。本番運用サーバに存在すること。このパラメータはprocessdirnameより優先されます。processfilename又はprocessdirnameのいずれかを指定してください。両方が未指定の場合、エラーとなります。 C:\Downloads\YOURFILE.csv
/home/wagby/YOURFILE.csv
processdirname 処理対象ファイルが格納されているフォルダ名。本番運用サーバに存在すること。processfilename又はprocessdirnameのいずれかを指定してください。両方が未指定の場合、エラーとなります。 C:\Downloads
/home/wagby/downloads
processdirfilter 処理対象ファイルのファイル名の正規表現式を指定します。
省略時は ".*\.(csv|tsv|xls|xlsx|zip)"です。
つまり拡張子が csv, tsv, xls, xlsx, zip のいずれかのみのファイルを対象とします。拡張子アルファベットの大文字小文字を区別しません。拡張子が csv または CSV のいずれも対象となります。
.*\.csv
isLockModel モデル全体ロックを行う場合は "true" を設定します。
処理行ごとにモデル1件づつロックする場合は "false" を設定します。
省略時は "true" です。
false
processedfilemode 処理対象ファイルの処理後の扱いを指定します。
"delete" の場合は削除します。
"rename" の場合は指定先に移動します。
省略時は "delete" となります。
なお "rename" を指定する場合には renamedirrenamefilenamerenamefilenameheaderrenamefilenamefooterのいずれかを設定することができます。これらがすべて省略されていた場合、renamefilenamefooterに ".processed" が設定されたものとして動作します。
rename
renamedir processedfilemodeが"rename"の場合に有効です。
処理完了後の処理対象ファイルの移動先フォルダを指定します。
指定されているフォルダが存在しない場合は作成します。
この指定を行うと「処理結果ファイル」「エラーファイル」も指定フォルダに移動します。
相対パス表記も可能です。処理対象ファイルが置かれているディレクトリからの相対パスとして扱います。
指定されていない場合は、処理対象ファイルが置かれているディレクトリへの移動となります。

{0,date,yyyyMMdd-HHmmss}と指定することで、全体の処理開始日時を指定することができます。
{1,date,yyyyMMdd-HHmmss}と指定することで、ファイルの処理開始日時を指定することができます。
{2}と指定することで、処理ファイル件数を指定できます。
{3}と指定することで、処理ファイル総件数を指定できます。
customer{0,date,yyyyMMdd-HHmmss}
customer20150801-100000などとなります。
renamefilenameheader processedfilemodeが"rename"の場合に有効です。
移動先のファイル名の先頭部分を指定します。
例えば "Processed_" と指定すると、a.csv というファイルは処理後に、Processed_a.csv に名前が変更されます。

{0} {1},... といった表記を使うこともできます。(renamedirの説明文を参照のこと)
{1,date,yyyyMMdd-HHmmss}_
20150801-100000_a.csvなどとなります。
renamefilenamefooter processedfilemodeが"rename"の場合に有効です。
移動先のファイル名の末尾部分を指定します。
例えば "_Processed" と指定すると、a.csv というファイルは処理後に、a.csv_Processed に名前が変更されます。

{0} {1},... といった表記を使うこともできます。(renamedirの説明文を参照のこと)
_{1,date,yyyyMMdd-HHmmss}
a.csv_20150801-100000などとなります。
renamefilename processedfilemodeが"rename"の場合に有効です。
移動先のファイル名を指定します。

{0} {1},... といった表記を使うこともできます。(renamedirの説明文を参照のこと)
さらに次の表記も有効です。
{4} - ファイル名(例:a.csv)
{5} - 拡張子を除いたファイル名(例:a)
{6} - 拡張子(例:.csv)
{5}_backup{6}
a_backup.csvとなります。
processingdir 処理開始時の対象ファイルの移動先を指します。
指定すると、対象ファイルをこのフォルダに移動後に処理を行うようになります。
未指定の場合はprocessingfilenamefooterに ".processing" が設定されたとみなします。
C:\work
/tmp
processingfilenameheader 処理を開始した対象ファイルの先頭に指定文字を付与します。作業中であることを示します。
指定すると、対象ファイルの名前を変更したあとに、処理を行うようになります。
未指定の場合はprocessingfilenamefooterに ".processing" が設定されたとみなします。 Excelファイルをアップロードする場合、この値を設定してください。[仕様・制約...]
processing_
processingfilenamefooter 処理を開始した対象ファイルの末尾に指定文字を付与します。作業中であることを示します。
指定すると、対象ファイルの名前を変更したあとに、処理を行うようになります。
_processing
processingfilename 処理を開始した対象ファイルを、指定した名前に変更します。作業中であることを示します。 Working.csv
errordir エラー発生時の対象ファイルの移動先を指します。
指定すると、エラー発生時に対象ファイルをこのフォルダに移動後に処理を行うようになります。
未指定の場合はerrorfilenamefooterに ".error" が設定されたとみなします。
C:\errorfile
/home/wagby/errorfile
errorfilenameheader エラー発生時に対象ファイルの先頭に指定文字を付与します。
指定すると、エラー発生時に対象ファイルの名前を変更します。
未指定の場合はerrorfilenamefooterに ".error" が設定されたとみなします。
error_
errorfilenamefooter エラー発生時に対象ファイルの末尾に指定文字を付与します。 _error
errorfilename エラー発生時に指定した名前に変更します。 Error.csv
isAttachmentProcessfilesInMail 実行結果メール送信で、処理結果(全て)のファイルをメールに添付します。 true
isAttachmentErrorfilesInMail 実行結果メール送信で、処理結果(エラー)のファイルをメールに添付します。 true
uploadfilename processfilename でファイル名を指定したとき、スクリプトで利用できるUPLOADFILENAME変数の値は、本番運用サーバのディスクに保存されたファイル名が反映されます。しかし、ここでuploadfilenameをさらに指定すると、UPLOADFILENAME変数の値は(実際のファイル名ではなく)uploadfilenameで指定した値が反映されるようになります。ただし processdirname で指定した場合は(このuploadfilenameの値は)無視され、実際にディスクに保存されたファイル名が使われます。 (任意のファイル名)

[補足] 更新結果レポートを指定のフォルダへ移動する

アップロード更新の完了時に作成される "すべての処理結果" と "エラー処理結果" を指定のフォルダへ移動させることができます。 ジョブパラメータを次のように設定してください。

  • processedfilemode に "rename" と指定する。
  • renamedir に移動先フォルダを指定する。

システム管理者はこのサーバのフォルダを経由して、これらの結果レポートを直接、参照することができます。

ジョブの実行を停止する

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

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

実行結果をメールで送信する

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

送信されるメールの例を示します。

処理対象ファイル .\a.csv を処理します。
開始時刻:2015-07-09 11:56:16 / 終了時刻:2015-07-09 11:56:17
End 処理した行数:3/新規登録:1/更新:1/削除:0/エラー:0
処理対象ファイル .\a.csv.processing を .\20150709-115616\a.csv に移動しました。
処理結果ファイル C:\wagbyapp\temp\process_model13555561895887649907.csv を .\20150709-115616 に移動しました。
エラー結果ファイル C:\wagbyapp\temp\error_model1387678353843031222.csv を .\20150709-115616 に移動しました。

なおジョブパラメータ processfilename, processdirname で指定されたファイルが存在しない場合、メール本文は空としています。これは、ジョブパラメータ mail:doNotSendEmptyMessage の設定でスキップしてもらうことを想定しているためです。

多重実行の抑制

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

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

すぐに実行する

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

仕様・制約

  • 複数ファイル処理の途中でエラーが発生した場合、そのファイルはスキップして次のファイル処理を行います。またその際、エラーとなったファイルは名前が変更されます。(エラーとなったことがわかるようになります。)
  • 処理開始前のエラー発生時には、エラーメッセージがログ(system.log)とメールにそれぞれ記録されます。