監視フォルダーのヒントとテクニック

ここでは、監視フォルダーエンドポイントを設定する際のヒントとテクニックを示します。

  • Windows で、画像ファイルを処理するための監視フォルダーがある場合、「ファイルパターンを含める」オプションまたは「ファイルパターンを除外」オプションに値を指定して、Windows により自動生成される Thumbs.db ファイルが監視フォルダーによってポーリングされないようにする必要があります。

  • Cron 形式を指定した場合、繰り返し間隔は無視されます。Cron 形式の使用方法は、Quartz オープンソースジョブスケジュールシステムのバージョン 1.4.0 に基づきます(CronTrigger クラスに関するページを参照)。

  • バッチサイズは、監視フォルダーの各スキャンで取得するファイルまたはフォルダーの数です。バッチサイズを 2 に設定している場合、10 個のファイルまたはフォルダーが監視フォルダーの入力フォルダーに入っても、各スキャンではそのうち 2 個のみが取得されます。繰り返し間隔に指定されている時間の経過後に発生する次回のスキャンでは、次の 2 ファイルが取得されます。

  • ファイルパターンには正規表現を指定できるほか、ワイルドカードパターンもサポートされます。監視フォルダーは、*.* や *.pdf などのワイルドカードパターンをサポートするように正規表現を変更します。このようなワイルドカードパターンは、正規表現ではサポートされていません。

  • 監視フォルダーは、入力フォルダーをスキャンして入力の有無を調べますが、ソースファイルまたはソースフォルダーの処理を開始する前に、ソースファイルやソースフォルダーが完全に入力フォルダーにコピーされているかどうかを認識しません。ソースファイルやソースフォルダーを完全に監視フォルダーの入力フォルダーにコピーしてから、ソースファイルまたはソースフォルダーを取得するようにするには、次のタスクを実行します。

    • 待機時間、つまり最後に変更されてから監視フォルダーが待機する時間(ミリ秒単位)を使用します。処理するファイルが大きい場合は、この機能を使用します。例えば、ファイルのダウンロードに 10 分かかる場合は、待機時間を 10*60*1000 ミリ秒に指定します。これで、監視フォルダーは生成されてから 10 分経っていないファイルを取得しないようになります。

    • 「ファイルパターンを除外」および「ファイルパターンを含める」を使用します。例えば、「ファイルパターンを除外」を ex*、「ファイルパターンを含める」を in* とした場合、は「in」で始まるファイルを取得し、「ex」で始まるファイルを取得しません。大きなファイルまたはフォルダーをコピーするには、まず「ex」で始まるようにファイルまたはフォルダーの名前を変更します。「ex」という名前のファイルまたはフォルダーが監視フォルダーに完全にコピーされたら、その名前を「in*」に変更します。

  • クリア期間を使用して、結果フォルダーを空にしておきます。監視フォルダーは、クリア期間に設定されている期間よりも古いファイルをすべてクリーンアップします。期間は日単位です。

  • 監視フォルダーエンドポイントを追加した場合、操作名を選択すると、入力パラメーターのマッピングが入力されます。操作を入力するたびに、入力パラメーターのマッピングフィールドが 1 つ生成されます。ここでは、入力パラメーターのマッピングの例をいくつか示します。

    • com.adobe.idp.Document 入力の場合:サービス操作の入力タイプが Document である場合、マッピングの種類を Variable に指定できます。監視フォルダーは、入力パラメーター用に指定されているファイルパターンに基づいて監視フォルダーの入力フォルダーから入力を取得します。*.pdf を入力パラメーターとして指定した場合、拡張子が .pdf の各ファイルが取得され、com.adobe.idp.Document に変換されてから、サービスが呼び出されます。

    • java.util.Map 入力の場合:サービス操作の入力タイプが Map である場合、マッピングの種類を Variable に指定し、*.pdf のようなパターンを使用してマッピング値を入力できます。例えば、サービスが 1.pdf や 2.pdf など入力フォルダー内のファイルを表す 2 つの com.adobe.idp.Document オブジェクトのマップを必要としているとします。監視フォルダーは、キーがファイル名で、値が com.adobe.idp.Document であるマップを作成します。

    • java.util.List 入力の場合:サービス操作の入力タイプが List である場合、マッピングの種類を Variable に指定し、*.pdf のようなパターンを使用してマッピング値を入力できます。PDF ファイルが入力フォルダーに入ると、監視フォルダーは PDF ファイルを表す com.adobe.idp.Document オブジェクトのリストを作成し、ターゲットのサービスを呼び出します。

    • java.lang.String の場合:管理者にはオプションが 2 つ用意されています。1 つは、マッピングの種類を Literal に指定し、マッピング値に hello などの文字列を入力することです。監視フォルダーは、文字列 hello でサービスを呼び出します。もう 1 つは、マッピングの種類を Variable に指定し、*.txt のようなパターンを使用してマッピング値を入力することです。後者の場合、拡張子が .txt のファイルは、サービスを呼び出す文字列となるドキュメントとして読み込まれます。

    • Java プリミティブ型:マッピングの種類を Literal に指定し、値を指定できます。監視フォルダーは、指定の値でサービスを呼び出します。

  • 監視フォルダーはドキュメントを扱えるようになっています。サポートされている出力は、com.adobe.idp.Documentorg.w3c.Documentorg.w3c.Node のほか、これらのタイプのリストおよびマップです。それ以外のタイプを使用すると、失敗した出力が失敗フォルダーに記録されることになります。

  • 結果が結果フォルダーにない場合は、失敗フォルダーを調べて出力が失敗していないかどうかを確認してください。

  • 監視フォルダーは、非同期モードで使用した場合に最も有効に機能します。非同期モードでは、監視フォルダーはキューに呼び出し要求を配置し、コールバックします。キューは非同期に処理されます。非同期オプションを設定しないと、監視フォルダーは同期的にターゲットのサービスを呼び出すため、プロセスエンジンはサービスが要求を完了し、結果が生成されるまで待機します。ターゲットのサービスが要求を処理するのに長い時間がかかる場合、監視フォルダーはタイムアウトエラーを受け取ることがあります。

  • 読み込みおよび書き出し操作用の監視フォルダーの作成では、ファイル拡張子を抽象化できません。監視フォルダーを使用して Form Data Integration サービスを呼び出すときに、出力ファイルの拡張子の種類が、ドキュメントオブジェクトタイプで意図している出力形式と一致しないことがあります。例えば、書き出し操作を呼び出す監視フォルダーに対する入力ファイルが、データを含む XFA フォームの場合、出力は XDP データファイルである必要があります。正しいファイル拡張子が設定された出力ファイルを取得するため、出力パラメーターマッピングでその拡張子を指定できます。この例では、出力パラメーターマッピングに %F.xdp を使用できます。

  • 監視フォルダーは、まだフォルダーに完全にコピーされていない入力ファイルを処理することがあります。Windows とは異なり、UNIX ではファイルのロックは必須ではありません。このため、ファイルが監視フォルダーにコピーされているとき、ファイルのコピーが完了するのを待たずに監視フォルダーによってファイルがステージに移動される場合があります。その結果、入力ファイルの一部のみしか処理されません。現時点では 2 つの対処方法があります。

    • 対処方法 1

      1. 「ファイルパターンを除外」に temp*.ps などのパターンを指定します。

      2. temp で始まるファイル(temp1.ps など)を監視フォルダーにコピーします。

      3. ファイルを監視フォルダーに完全にコピーした後で、「ファイルパターンを含める」に指定されているパターンに合わせてファイル名を変更します。すると、監視フォルダーによって完全なファイルがステージに移動されます。

    • 対処方法 2

      ファイルを監視フォルダーにコピーするのに要する最大時間がわかっている場合は、その時間を「待機時間」に秒単位で指定します。監視フォルダーは、指定された時間だけ待機してから、ファイルをステージに移動します。

      Windows では、1 つのスレッドでファイルの書き込みが行われるときにはファイルがロックされるので、ファイルについてはこのような問題は発生しません。ただし、Windows でもフォルダーについては同じ問題が発生します。フォルダーの場合は、対処方法 1 の手順に従う必要があります。

  • 監視フォルダーの保存用フォルダー名のエンドポイント属性が null のディレクトリパスに設定されていると、通常は空になるステージングディレクトリが空になりません。このディレクトリには、処理済みのファイルと一時フォルダーが含まれています。