ファイルをコピーする

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ジョブの構成の例 >

ファイルをコピーする

このサンプルは、 FlowForce Server ジョブの助けを得てローカルファイルシステム上の複数のファイルをコピーする方法について説明しています。

 

C:\Source から全てのファイルを、新規のディレクトリ C:\Target. (UNIX システム上では、 パスを適宜調整してください) にコピーするとします。 この目的を達成するには、ディレクトリ内のすべてのファイルを繰り返す 「for-each」 ステップを使用して、ループ内の各アイテムのために /system/filesystem/copy 関数を呼び出します。

 

必要条件

必須のライセンス: FlowForce Server
FlowForce Server が構成された ネットワークアドレスとポートで動作していること (以下を参照: ネットワークアドレスとポートの設定)
コンテナー の1つでパーミッションを有する FlowForce Server ユーザーアカウントを有していること (デフォルトでは、この例で使用されている /public コンテナーには、認証されたユーザーがアクセスすることができます)。
ディレクトリ C:\Source からディレクトリ C:\Target にファイルをコピーします。ジョブを作成する前にローカルファイルシステム上にこれらのディレクトリが作成されていることを確認してください。 また、ジョブをテストするためにソースディレクトリにファイルが含まれていることを確認してください。

 

ジョブの作成

FlowForce Server 管理者インターフェイスにログオンし、「構成」をクリックします。 /public コンテナーを開き、新規のジョブを作成します。 (例えば、 「CopyFiles」 などの) ジョブ名を入力し、オプションでジョブの詳細を入力します。

ff_example_copy_01

リスト内のアイテムを繰り返すために、 FlowForce Server には 「for-each」 実行ステップが搭載されています。このようなステップは、シーケンス内の最後のアイテムを含むアイテムのシーケンス (リスト) を繰り返します。このサンプル内では、アイテムのシーケンスはソースディレクトリ内のファイルのリストになります。 リクエストされたリストを作成するには、「次の実行ステップ」 をクリックして、「関数の実行」 の横に 「/system/compute」 を入力します。下記の通り、ドロップダウンリストからこのパスを選択することもできます。

ff_example_copy_02

次に、式フィールド内に次の式を入力します:

 

list-files("C:\Source\*.*")

 

次に 「このステップの結果を次に割り当てる」 フィールドにリストの名前を入力します (この場合、名前は list です)。これにより以降のステップ内の新規のファイルのリストを簡単に参照することができます。実行ステップは以下のようになります:

ff_example_copy_03

上記の式は list-files 式関数を呼び出します。関数は引数 (この場合、 C:\Source\*.*) としてパスを取り、特定のパスでファイル (または、ディレクトリ) のリストを返します。ディレクトリ内のすべてのファイルを選択するために、パスにはワイルドカード *.* が含まれていることに注意してください。必要な場合、ワイルドカードを調節して、特定のファイル拡張子を選択することができます。例えば、 *.txt。 FlowForce 内の式に関する詳細は、FlowForce 式言語 を参照してください。

 

実際の 「for-each」 繰り返しステップの作成を開始することができます。「新規の For-Each ステップ」 をクリックして、「シーケンス内」ボックス内に list を入力します。 (これは前の実行ステップで作成された list を参照しています)。

ff_example_copy_04

ヒント: You could also copy 式 list-files("C:\Source\*.*") を 「for-each」 ステップの「シーケンス内」ボックスにコピーし、最初のステップを削除することもできます。

 

次に add ボタンをクリックし、「for-each」 ステップ内に新規の実行ステップを追加します。 このステップは、下記の通りループ内の各アイテムのために /system/filesystem/copy 関数を呼び出します。

ff_example_copy_05

上記のとおり、copy 関数が次の引数を使用して呼び出されます:

 

ループ内の ソース は現在のアイテム (ファイル) です。ソースボックス内で {item} を入力、または、 ff_ic_set_to ボタンをクリックして「アイテム」を選択します。
ターゲット はターゲットパスです。このサンプルでは、パスはそのまま入力されます。しかしながら、ジョブに対する引数として提供することもできます。
「上書き」 オプションが有効化されていると、すなわち、ソースディレクトリ内で同じ名前を持つファイルが既存の場合、上書きされています。上書きを回避するために、 delete ボタンをクリックしてください。

 

便宜上、このサンプル内では他の2つの引数は設定されていません。 詳細に関しては、 /system/filesystem/copy 関数を参照してください。

 

作成されたジョブは、必要とされるすべての処理ステップを含んでいますが、トリガーはまだ存在しません。ジョブを再帰的な時間の間隔でトリガーするには、タイマートリガーを使用することができます。タイマートリガーを参照してください。または、変更のためにソースディレクトリをモニターし、ファイルシステムトリガーの方法を用いてジョブをトリガーすることもできます。ファイルシステムトリガーを参照してください。 最後に、 Web サービスの呼び出しとして、ジョブをオンデマンドでトリガーすることができます。

 

このサンプルでは、 ブラウザー内の URL をクリックして、ジョブをオンデマンドでトリガーします (実際には、ジョブが Web サービスとして呼び出されます)。ジョブを Web サービスにするには、「HTTP によりこのジョブを使用できるようにする」 チェックボックスを選択し、 Web サービスの名前を入力します。

ff_example_copy_06

最後に、作動するためにジョブは資格情報を必要とします。このために、(「資格情報」セクションで表示されている FlowForce Server ユーザー名とパスワードではなく) オペレーティングシステムのユーザー名とパスワードを入力してください。 または、資格情報の定義 で説明されているとおり、スタンドアロンの資格情報が作成されている場合、「既存の資格情報を選択」オプションを使用して選択することができます。

fs_deploy_mapping_05

資格情報の記録は、ジョブが実行されるオペレーティングシステム上のユーザーアカウントに関連したユーザー名とパスワードにより構成されています。 FlowForce Server ジョブを定義すると、実行される必要のあるジョブの資格情報を与える必要があります。与えられた資格情報に関連したユーザーアカウントが、オペレーティングシステム上で十分な権利がない場合、ジョブを成功裏に実行することはできません。

 

 

ジョブの実行

ジョブをテストするには、FlowForce Server がデフォルトのホストとポート名で作動していることが前提で、ブラウザーのアドレスバーに http://127.0.0.1:4646/service/CopyFilesService を入力します。他のホストとポート設定が構成ページで既に定義されている場合、 ネットワークアドレスとポートの設定で説明されているとおり、アドレスを適宜変更してください。Web サービスにアクセスする際に資格情報をプロンプトされた場合、 FlowForce Server にログオンするために使用する同じ資格情報を提供してください。

 

実行に成功すると、ジョブはすべてのファイルをソースからターゲットディレクトリにコピーします。それ以外の場合、「サービスの実行に失敗しました」エラーがブラウザーに表示されます。エラーが表示されると、 ジョブのログをチェックしてください。詳細に関しては、ジョブログの確認を参照してください。 エラーの原因には、正確ではない資格情報、ファイルシステム上の正確ではないパーミッションなどが含まれます。例えば、下記のとおり 「上書き」 チェックボックスが選択されていない場合、および、ターゲットディレクトリが既に同じ名前を持つファイルを含む場合、ジョブは失敗します:

ff_example_copy_07


(C) 2019 Altova GmbH