はじめに
この記事ではOracle Integration Cloud(以下略OIC)でZIPファイルを作成する方法について説明します。
Oracle Integration Cloudについてはこちら
https://www.oracle.com/jp/integration/application-integration/
OIC3についてはこちら
https://docs.oracle.com/ja-jp/iaas/application-integration/index.html
事前準備
-
OICのプロビジョニングおよびユーザー・ロール設定が完了していること
https://docs.oracle.com/ja-jp/iaas/integration/index.html -
FTP Adapterの接続定義が完了していること
https://docs.oracle.com/en/cloud/paas/application-integration/ftp-adapter/create-ftp-adapter-connection.html -
OICに組み込まれているFile Serverへの有効化が完了、および接続ができること
https://docs.oracle.com/cd/E83857_01/paas/application-integration/file-server/file-server.html -
ファイルサーバへ任意のファイル・ディレクトリを配置していること。今回は以下のようなファイルを配置しています。
ディレクトリ名:ziptest
圧縮対象ファイル:test1.txt, test2.txt, test3.txt
OICフローの作成
最初にOICフローを作成します。
FTP Adapterでファイルサーバからファイル一覧情報を取得
最初にファイルサーバーからファイル一覧のパスなどの情報を取得します。
統合フローの作成画面に遷移したら事前に作成したFTP Adapterを選択します。
Operationは「List Files」、Input deirectoryは事前にファイルサーバーに用意したディレクトリ、File name patternは用意した圧縮対象のファイルパターン(すべての場合は*)を入力し、「Continue」を押します。
一覧情報をループ
ファイル一覧情報をループして対象のファイルをOICインスタンス内にダウンロードします。
先ほど配置したFTPの定義の下に「For each」のアクションを配置します。
Repeating elementでは何を繰り返し処理するかを選択します。今回はファイル一覧で取得した情報がFTPで実行したレスポンスに格納されているのでその中のFileをドラッグアンドドロップで配置します。※ここで指定できるのはこのアイコン「」がついているものだけです。
Current element nameは初期値のままにします。ちなみにCurrent element nameはループ中の配列内の一要素が格納されています。拡張for文の要素名のようなものです。
ファイルをダウンロード
次にループの中で一つ一つのファイルをOICインスタンス内にダウンロードします。
配置した「For each」のなかで、FTPの接続を選択(配置)します。
Operationは「Download file」を選択、Input directory, File nameはマッピングするので空、※Download directoryは任意の名前を入力します。
※このDownload directoryはFile Serverのディレクトリではなくダウンロードしたファイルを置く場所を指定します。ここで入力した名前でOICに認識されているステージングされた場所にディレクトリが作成され、ファイルがダウンロードされます。ここに置かれたファイルはFTPアダプタではなく、Stage File Actionというアクションで処理することができます。
Input directory, File nameをマッピングします。
配置したFTPアダプタの上にあるMapを「Edit」で編集します。
以下のようにマッピングします。左側のf0_FileはFor eachの中の一要素が格納されています。要素の中にDirectoryとFilenameがあるのでそれぞれ右側のDownload Requestにマッピングします。「Validate」を押した後、左上の「<」を押して前の画面に戻ります。
Stage File Actionを使ってダウンロードしたファイルをZIP
次にStageされた場所にダウンロードされたファイルをStage File Actionを使ってZIPします。
Stage File Actionについてはこちらをご確認ください。
Select Operationに「Download File」を選択し、以下のように入力します。
シングルクォートで囲ってください。
入力項目 | 値 | 説明 |
---|---|---|
Specify the File Name | 'test.zip' | zipファイルの名前(任意の名前) |
Specify the Directory to zip | '/temp' | zip対象のディレクトリ(ここで入力したDownload directoryの値) |
Specify the Output Directory | '/tempzip' | zipファイルの配置先ディレクトリ(任意の名前) |
ZIPファイルをファイルサーバに出力
FTP Adapterで作成したZIPファイルをファイルサーバに出力します。
Select Operationに「Write File」を選択し、以下のように入力します。
入力項目 | 値 | 説明 |
---|---|---|
Transfer Mode | Binary | 変換モード、今回はZIPファイルなのでBinary |
Output directory | 任意のパス | ファイル出力するファイルサーバーのディレクトリ |
File name pattern | test-%SEQ%.zip | 出力ファイル名 |
先ほど配置したFTPの上にマッピングがあるのでクリックして「Edit」を押します。出力するZIPファイルのディレクトリをマッピングで指定します。
左側のStage File Actionのレスポンスの中にFile Referenceという項目があるので、右側のFTPのICS Fileの中のFile Referenceにマッピングします。「Validate」→「<」を押して前の画面に戻ります。
以上でフローの作成が完了しました。出来上がったフローの全体図は以下のようになります。
ビジネス識別子の設定
スケジュールの統合のお決まり事ですが、右上の(I)マークからBusiness identifierを指定します。startTimeをドラッグアンドドロップでビジネス識別子として指定します。
右上の「Save」を押して、保存したら一覧画面に戻ります。
アクティベート
それでは作成したアプリケーションをアクティベートして実行してみます。
本番ではなくただの検証なのでDebugをチェックして「Activate」を押します。
Activateが完了するのを待ちます。
実行
Activateができたら実行します。
Activity Streamで正常に完了したか確認します。「Processing completed Successfully」と表示されたら正常に処理が終わっています。
動作確認
最後に出力されたファイルを確認します。FTPサーバーにZIPファイルが出力されていることを確認します。
FTPクライアントソフトなどを使ってファイルの中身を確認します。
以上です。