misc.log

日常茶飯事とお仕事と

HULFTファイル転送での「配信後ジョブ」に引数を渡す

まだ具体的な試行はやっていないので、調べ物のメモです。

HULFTで、ファイル転送を行った後にそのファイルについて何かしら手を入れる必要がある場合の方策について調べています。やりたいのは

  • 配信が成功した時のみ、配信したファイルを特定して処理を行う。

ということ。
選択肢としては

  • 転送実行処理(バッチファイル)などの中で、UTLSENDの処理結果を見て後続処理を実行する。
  • HULFTの「配信後ジョブ」機能で配信成功時の処理を定義したスクリプトを登録しておく。

の2つ。前者は、UTLSENDの戻り値が成功時には0になることを利用してバッチのコマンドを組めばよいのですが、バッチ処理の中で処理を増やすことになるので少々複雑になる可能性が。また、後者のHULFT配信後ジョブの機能があるにも関わらずそれを使わないということなので、将来的なメンテなどを考えると設計資料などにきちんとそちらの選択をした理由なども含めて明記しないと「どこでやってるのかわからない」となる可能性があります。

後者の配信後ジョブを利用した場合ですが、問題が1点。処理したい対象ファイルの情報は、UTLSENDを呼び出す側はわかっていますが、配信後ジョブを実行するHULFT自体はそのファイルIDなどを特に情報としてもらっていません(UTLSENDは知っていますが、配信を監視しているHULFTの監視機能は結果やログ情報を受け取っているだけでしょう)。なので、配信後ジョブに、処理対象ファイルを特定するための情報を何かしらの方法で引き渡す必要があります。

それについて少し検索したところ、HULFTのサイトで答えがありました。

hulftorangelab.zendesk.com

これが使えるのではないかと。UTLSENDに引数「-msg0」~「-msg5」までの5種類のメッセージを指定でき、指定されたメッセージは配信後ジョブ呼び出し定義の文中で「$MSG0」~「$MSG5」のような変数として利用できるようです。なので、UTLSENDを呼ぶ側でこのパラメータを「-msg0 filename.csv」のように指定しておき、そこにファイル名を特定する情報を渡し、後続の配信後ジョブ呼び出し時にジョブスクリプトの引数として「script.bat $MSG0」のようにすればファイル名を引数として取得できそうです。

配信後ジョブの設定方法については下記のページに説明があります。

hulftorangelab.zendesk.com

まだ試していませんが、この方式で実現できないか検討してみます。

JP1によるジョブ管理の実践ノウハウ

JP1によるジョブ管理の実践ノウハウ