目標(GOAL)
ファイルアップロード画面からファイルをアップロードしたら、そのファイルを使ってすぐに処理(xoBlos業務)を実行したいときがあります。
アップロードしたExcelファイルからデータを抽出したり、ファイルの名前を継承して別名のファイルに出力したりなどです。
coraboでのアップロードページ設定画面
[業務定義ファイル] に、ファイルアップロード時に実行する「業務定義ファイル(xbt/xob ファイル)」を指定します。
Designerでのシステム変数設定と手順設定
実行する「業務定義ファイル(xbt/xob ファイル)」は、Designerで通常通り定義しますが、少し留意点があります。
実際にアップロードしたファイルが、指定した対象フォルダーに置かれるのは、xbt/xob 業務が正常終了した後となります。
参考記事
corabo:アップロードファイルの取り扱い http://xoblos.hatenablog.jp/entry/2020/01/14/114902
このため、「a.値の名前(必須)」の右側プルダウンリストから、システム変数を選択して設定します。(「SYS_INPUTFILE」、「SYS_UPLOADNAME」、「SYS_WKDIR」など)
xbt/xob 業務の手順では、入力ファイルとして「SYS_INPUTFILE」の値を使用することができます。
「ファイルのコピー」手順で、
コピー元ファイル名 $(val:SYS_INPUTFILE)
コピー先 $(val:SYS_WKDIR)\$(val:SYS_UPLOADNAME)
のように設定すると、アップロードされたファイル名通りで扱いやすくなります。
「SYS_INPUTFILE」には、フルパス(ファイル名は一時的な _tmpUpldFile.xlsx のような名前) が設定されていますので、
【悪い例】
コピー元ファイル名 $(val:SYS_INPUTFILE)
コピー先 $(val:SYS_WKDIR)\
[一度に複数のファイルアップロードをする] 場合の留意点
ファイルアップロード時に業務実行するケースで、corabo アップロード設定画面で、 [一度に複数のファイルアップロードをする] をチェックオンにし、複数のファイルをアップロードする場合には留意点があります。
複数のファイルをアップロードして xbt/xob 業務を実行する場合、その xbt/xob 業務は、アップロードする1ファイルに付き1回、8個のファイルをアップロードするときは8回実行されます。
このため、出力ファイルを固定の名前にしての、同名ファイル出力方式は避け、出力ファイル名に入力ファイル名を含ませたり、ユーザー名+タイムスタンプを付与して上書きを阻止する方式をとる必要があります。
業務手順冒頭の「ファイルの削除」手順で、
削除するファイル名 入力フォルダー\*
のような指定だと、ファイル8個アップロードの例だと、7回目までのアップロードファイルを削除してしまい、最後の8回目のファイルだけが残る結果になります。
[一度に複数のファイルアップロードをする] 要件の場合は、上記のようなアップロードフォルダーのファイル削除手順は使用しないようにしてください。