FTP

IBM® App Connect Enterprise ツールキットを使用して、 IBM の App Connect Professional FTPアクティビティから変換されたメッセージフローノードを設定します。

このタスクの概要

FTPアクティビティを含むオーケストレーションをインポートすると、変換ユーティリティは FileReadFileOutputFileInput ノード、および JavaCompute ノードを含むメッセージ・フローを作成します。 各アクティビティに使用されるノードについては、 表1を参照のこと。

表 1. IBM App Connect Professional FTPアクティビティと、それに対応する IBM App Connect Enterprise メッセージフローノード
IBM App Connect Professional 活動 IBM App Connect Enterprise ノード
Get file

FileRead ノード

Put file

FileOutput ノード

Rename file

FileRead ノード

FileOutput ノード

Delete file

FileRead ノード

List files

JavaCompute ノード

Poll directory

FileInput ノード

FileOutput ノード

FTPサーバーに接続する手順

手順

  1. FTPノードを選択します:
    IBM App Connect Enterprise でメッセージフローを開き、適切なFTPノード(例: FileInput,、 FileOutput, File Read、または FileExists )をフローにドラッグします。
  2. FTPを設定する:
    プロパティ・タブで、FTPタブを選択します
    1. リモート転送チェックボックスを選択する
    2. 転送プロトコルのプロパティのドロップダウンからSFTPを選択します。リモートファイル転送のプロパティを選択するためのインターフェイス。 転送プロトコル入力ボックスでFTPが強調表示される
  3. FTPサーバーの接続を設定します:
    サーバーとポート
    • FTPサーバーのアドレスとポート番号を入力してください。 9.20.192.15:21サーバーのアドレスとポート番号を指定するインターフェース
  4. セキュリティ・アイデンティティ:
    すべてのFTPノードに対してsecurityidentityを作成するには、次のコマンドを使用する
    mqsisetdbparms -w workDir -n ftp::secId -u <userName> -p <password>
    例:

    mqsisetdbparms -uftp::DUMMYFTP-nC:\ACE12NODEWS\TEST_SERVER-w builduser-p builduser

    置換:
    • workDir: 統合サーバーの作業ディレクトリ
    • secId: セキュリティ・アイデンティティに定義した名前
    • userName: FTPサーバーのユーザー名
    • password: FTPサーバーのパスワード

    ここで、DUMMYFTP は、 IBM App Connect Enterprise コンソールで実行するために指定されたサーバーIDです:App Connect Enterprise サーバーIDが作成されたコンソール

    Server Directory:ファイルがあるFTPサーバーのディレクトリ(File inputノードの場合)、またはファイルがアップロードされるディレクトリ(File Outputノードの場合)を指定します。 例えば、ファイルの読み込みには /incoming/ 、ファイルの書き込みには /outgoing/

    FTP エンドポイントの詳細画面:すべての入力ボックスが満たされ、プロパティが指定されていることを示すFTPエンドポイント画面

    注: コマンドの実行が正常に完了したら、 IBM App Connect Enterprise で統合サーバーを再起動し、変更を反映させてください。 ツールキット内で統合サーバー(例: TEST_SERVER1 )を右クリックし、「再起動」を選択します。統合サーバーと対話するためのオプションを一覧表示したコンテキストウィンドウのスクリーンショット
  5. FileZilla や のようなサードパーティツールを使って、FTP接続をテストする。 WinSCP FTPの詳細(ホスト、ユーザー名、パスワード、ポート)を入力し、接続してください。

FileRead ファイル・アクティビティ取得ノード

このタスクの概要

ファイルは、 IBM App Connect Enterprise の「File Read」ノードを使用して読み込むことができます

手順

  1. 入力ディレクトリ・プロパティには、任意のローカル・ディレクトリ・パスを設定する。 例えば、こうだ: C:\Users\Administrator\Desktop\FileReadNode
  2. 処理するファイルを識別するために、ファイル名またはパターンを入力します(たとえば、*.txt*、*.JSON*、複数ファイル用)。
    処理に成功した場合のデフォルトのアクションは削除です。 ファイルを削除する代わりに移動するには、ドロップダウンで他のオプションを選択します。 終了時にアクションのオプションを表示するドロップダウン。 何もしない」が強調表示される
  3. メッセージ・ドメイン解析プロパティで、ドロップダウンからメッセージ・ドメインを選択し、ファイル・コンテンツの解釈方法を指定する。 例えば、JSON:Javaスクリプト・オブジェクト記法によるメッセージ。
    メッセージ・ドメイン解析のドロップダウンリストのスクリーンショット。 JSON: Javascript Object Notationのメッセージがハイライトされます
  4. File InputノードのプロパティのFTPセクションにFTPエンドポイントの詳細を入力します。
  5. FTPタブで、ファイルを読み込むサーバーのディレクトリを指定します。 このディレクトリは、FTPサーバー上のファイルが保存されている場所に対応していなければならない。

メッセージの流れの例:

HttpInput ノード > ファイル読み込み ノード > ノード HttpReply

FileOutput プットファイル活動用ノード

このタスクの概要

IBM App Connect Enterprise の「File Output」ノードを使用して、ファイルに書き込むことができます

手順

  1. directoryプロパティには、任意のローカル・ディレクトリ・パスを設定する。 例えば、こうだ、 C:\Users\Administrator\Desktop\FileOutputNodeLocal
  2. 出力ファイル名を生成するためのファイル名またはパターンを定義します(複数ファイルの場合は'*')。
    ファイル出力ノードのプロパティを定義するための入力ボックスのスクリーンショット
  3. FileOutput ノード・プロパティの FTP セクションに FTP エンドポイントの詳細を入力します。
  4. FTPタブで、ファイルを書き込むサーバー・ディレクトリを指定します。 このディレクトリは、処理されたファイルがFTPサーバーに保存される場所です。

メッセージの流れの例:

FileInput ノード > ノード FileOutput

FileRead および FileOutput リネーム・ファイル・アクティビティのためのノード

このタスクの概要

「 FileRead 」および「 FileOutput 」ノードを使用して、 IBM App Connect Enterprise でファイルの名前を変更するには、以下の手順に従ってください

手順

  1. FileRead ノードの Input directory プロパティを、 のようなローカル・ディレクトリ・パスに設定する。 C:\Users\Administrator\Desktop\FileInputNodeLocal 新しいファイル名またはパターンを入力
  2. FileRead ノード・プロパティの基本タブで、アクションを削除に設定する。
    FileRead ノードのプロパティを指定するインターフェース
  3. FileRead ノード・プロパティの FTP セクションに FTP エンドポイントの詳細を入力します。
  4. File ReadノードのFTPタブで、ファイルを読み込むサーバーのディレクトリを指定します。 これは、処理されたファイルが保存されるFTPサーバー上のディレクトリです。
  5. ファイル出力ノードのディレクトリ・プロパティを、次のようにローカル・ディレクトリ・パスに設定する。 C:\Users\Administrator\Desktop\FileOutputNodeLocal
    FileOutput ノードは、希望する名前の新しいファイル(複数ファイルの場合は *)に内容を書き込む。ファイル出力ノードのプロパティを指定するための入力ボックスを示すインターフェース
  6. ファイル出力ノードのプロパティのFTPセクションに、FTPエンドポイントの詳細を入力します。
  7. FileOutput ノードの FTP タブで、ファイルを書き込むサーバー・ディレクトリを指定します。 これは、処理されたファイルが保存されるFTPサーバー上のディレクトリである。

メッセージの流れの例:

HttpInput ノード > ノード > ファイル出力 ノード > ノード FileRead HttpReply

FileRead ファイル削除アクティビティのノード

このタスクの概要

ファイルは、 IBM App Connect Enterprise 内の「 FileRead 」ノードを使用して削除できます。

手順

  1. FileRead ノードの Input directory プロパティを、次のようなローカル・ディレクトリ・パスに設定する。 C:\Users\Administrator\Desktop
  2. File Readノードを設定して、特定のファイルをターゲットにする。 例えば Employee.json。
  3. FileRead ノードのプロパティの「基本」タブで、アクションを「削除」に設定する。
    File Read ノードのプロパティを指定するインターフェース

    読み込みに成功すると、ファイルはサーバーから自動的に削除される。

  4. FileRead ノード・プロパティの FTP セクションに FTP エンドポイントの詳細を入力します。
  5. FTPタブで、ファイルを読み込むサーバー・ディレクトリを指定します。 このディレクトリは、あなたのファイルがFTPサーバーに保存されている場所に対応していなければなりません。

メッセージの流れの例:

HttpInput ノード > ノード > ノード FileRead HttpReply

JavaCompute ファイル・アクティビティ一覧ノード

このタスクの概要

以下のタスクを実行するJava Compute Nodeのコード・スニペット:

手順

  1. FTPサーバーからファイルのリストを取得する
  2. を使用して、フローの前のノードから渡されたファイルの詳細にアクセスする。 LocalEnvironment
  3. コードにハードコードされたFTP接続の詳細を使用する。
  4. 依存関係: Apache Commons Net ライブラリを ACE 環境に追加します:
    1. commons-net-3.11.1.jar ファイルを ACE 共有ライブラリに追加する。
    IBM App Connect Enterprise 環境インターフェース。 コモンズネットライブラリと共有ライブラリファイルのパスが強調表示される

    Java Compute NodeコードでFTPClientの問題にまだ直面している場合は、プロジェクトのビルドパスにそのjarを追加してください。

    ビルド・パス内のjarファイルとクラス・フォルダを表示するインターフェース
  5. JavaCompute ノード
    package com.ibm.acp.ace.ftp.example;
    
    import com.ibm.broker.javacompute.MbJavaComputeNode;
    
    import com.ibm.broker.plugin.MbElement;
    
    import com.ibm.broker.plugin.MbException;
    
    import com.ibm.broker.plugin.MbMessage;
    
    import com.ibm.broker.plugin.MbMessageAssembly;
    
    import com.ibm.broker.plugin.MbOutputTerminal;
    
    import com.ibm.broker.plugin.MbUserException;
    
    import org.apache.commons.net.ftp.FTPClient;
    
    import java.io.IOException;
    
    public class AcpToAceFileName extends MbJavaComputeNode {
    
        @Override
    
        public void evaluate(MbMessageAssembly inAssembly) throws MbException {
    
            MbOutputTerminal out = getOutputTerminal("out");
    
            MbMessage inMessage = inAssembly.getMessage();
    
            MbMessage outMessage = new MbMessage(inMessage);
    
            MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
    
            FTPClient ftpClient = new FTPClient();
    
            try {
    
                // Step 1: Get file information from LocalEnvironment
    
                MbElement localEnv = inAssembly.getLocalEnvironment().getRootElement();
    
                String localDirectory = null;
    
                String localFileName = null;
    
                if (localEnv.getFirstElementByPath("$LocalEnvironment/Destination/File/Directory") != null) {
    
                    localDirectory = localEnv.getFirstElementByPath("$LocalEnvironment/Destination/File/Directory").getValueAsString();
    
                }
    
                if (localEnv.getFirstElementByPath("$LocalEnvironment/File/Name") != null) {
    
                    localFileName = localEnv.getFirstElementByPath("$LocalEnvironment/File/Name").getValueAsString();
    
                }
    
                // Log the local directory and file name
    
                System.out.println("Local Directory: " + localDirectory);
    
                System.out.println("Local File Name: " + localFileName);
    
                // Step 2: Connect to the FTP server
    
                String ftpHost = "9.20.192.15"; 
    
                int ftpPort = 21;              
    
                String ftpUser = "builduser";  
    
                String ftpPassword = "builduser"; 
    
                String remoteDirectory = "/MyTest/VendorImport/Dummy/POLLTO"; 
    
                ftpClient.connect(ftpHost, ftpPort);
    
                ftpClient.login(ftpUser, ftpPassword);
    
                // Step 3: List files in the remote FTP directory
    
                String[] ftpFileList = ftpClient.listNames(remoteDirectory);
    
                // Log the list of files retrieved from the FTP server
    
                if (ftpFileList != null) {
    
                    System.out.println("Files in FTP directory:");
    
                    for (String fileName : ftpFileList) {
    
                        System.out.println(fileName);
    
                    }
    
                } else {
    
                    System.out.println("No files found in the FTP directory.");
    
                }
    
                // Step 4: Build output message
    
                MbElement outRoot = outMessage.getRootElement();
    
                MbElement outBody = outRoot.createElementAsLastChild(MbElement.TYPE_NAME, "XMLNSC", null);
    
                MbElement fileListElement = outBody.createElementAsLastChild(MbElement.TYPE_NAME, "FileDetails", null);
    
                // Add local file details from FileOutput Node
    
                if (localDirectory != null) {
    
                    fileListElement.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "LocalDirectory", localDirectory);
    
                }
    
                if (localFileName != null) {
    
                    fileListElement.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "LocalFileName", localFileName);
    
                }
    
                // Add file names from FTP server
    
                if (ftpFileList != null) {
    
                    MbElement ftpFilesElement = fileListElement.createElementAsLastChild(MbElement.TYPE_NAME, "FTPFiles", null);
    
                    for (String fileName : ftpFileList) {
    
                        ftpFilesElement.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "File", fileName);
    
                    }
    
                }
    
                // Step 5: Disconnect from FTP server
    
                ftpClient.logout();
    
                ftpClient.disconnect();
    
            } catch (IOException e) {
    
                throw new MbUserException(this, "evaluate", "", "", e.toString(), null);
    
            }
    
            // Propagate the message to the next node
    
            out.propagate(outAssembly);
    
        }
    
    }
  6. Javaコンピュート・ノードの後にトレース・ノードを追加して、メッセージ・ツリー全体を記録する。

FileInput および FileOutput ポール・ディレクトリ・アクティビティのためのノード

このタスクの概要

ACEでPoll Directory機能を実現するには、 FileInputFileOutput の両方のノードを使用して、以下の手順に従ってください:

手順

  1. FileInput ノードの Input directory プロパティを、次のようなローカル・ディレクトリ・パスに設定する。 C:\Users\Administrator\Desktop\FileInputNodeLocal
  2. 処理するファイルを識別するためのファイル名パターンを定義します(例えば、*.txt、*.json、*複数のファイル)。
    入力ノード・ディレクトリを指定するインターフェース
  3. ポーリング間隔を設定し、ノードがディレクトリに新しいファイルがないかチェックする頻度を制御する。
    FTPリモート転送が選択されているので、ポーリング間隔は無効になっている。ポーリング間隔の選択画面指定されたファイル入力ノードのプロパティを示すインターフェース
  4. ポーリングを有効にするためにFTPリモート転送のチェックを外し、ポーリングプロパティを編集して保存します。 リモート転送を選択してFTPエンドポイントに接続します。
    ポーリング間隔を10秒に変更したスクリーンショット
  5. メッセージ・ドメイン解析プロパティで、ドロップダウンからメッセージ・ドメインを選択します。例えば、JSON : JavaScript Object Notation メッセージの場合
    メッセージ・ドメイン解析のドロップダウンリストのスクリーンショット。 JSON: Javascript Object Notationのメッセージがハイライトされます
  6. FileInput ノード・プロパティの FTP セクションに FTP エンドポイントの詳細を入力します。
  7. FileInput 」ノードの「FTP」タブで、ファイルをポーリングするサーバー・ディレクトリを指定します。 これは、あなたのファイルがFTPサーバーに保存されている場所と一致していなければなりません。
  8. FileOutput ノードのディレクトリ・プロパティを、次のようにローカル・ディレクトリ・パスに設定する。 C:\Users\Administrator\Desktop\FileOutputNodeLocal
    複数のファイルをポーリングするには、File name または pattern プロパティでワイルドカードとして * を使用します。ディレクトリのプロパティを指定するインターフェース
  9. FileOutput ノード・プロパティの FTP セクションに FTP エンドポイントの詳細を入力します。
  10. FileOutput ノードの FTP タブで、ファイルを書き込むサーバー・ディレクトリを指定します。 これは、処理されたファイルが保存されるFTPサーバー上のディレクトリである。

メッセージの流れの例:

FileInput ノード > ノード FileOutput

他のノードからマッピングする際のファイル名やパターンの設定

このタスクの概要

FileInput ノードから FileOutput ノードへファイル名を渡す手順(例付き

手順

  1. FileInput ノードの設定
    1. 入力ディレクトリを次のようなローカル・ディレクトリ・パスに設定する。 C:\Users\Administrator\Desktop\FileInputNodeLocal)
    2. ファイル名またはパターンを指定する(例. JSONTEST.json).
    3. FTPタブでFTP接続の詳細を入力します。
    4. でメッセージ・ドメインを設定する(例:JSONファイルの場合はJSON)。
  2. FileOutput ノードの設定
    1. ローカルディレクトリに設定する。 C:\Users\Administrator\Desktop\FileOutputNodeLocal
      FileOutput ノードのプロパティを指定するインターフェース
    2. FTP接続の詳細を入力

ファイル出力ノードからファイル読み込みノードにファイル名を渡す手順の例

手順

  1. FileOutput ノードの設定
    1. ローカルディレクトリに設定する。 C:\Users\Administrator\Desktop\FileOutputNodeLocal
    2. ファイル名またはパターンを指定
      ファイルは FileInput ノードから FileOutput ノードに来るので、そのままにしておく
    3. 出力ファイルに直接書き込む場合は、"Mode for writing to file "を選択する。
      ファイルが存在すれば追加する
    4. FTPタブで、FTP接続の詳細を入力します。
    5. メッセージドメインを設定する(JSONファイルの場合はJSONなど)
  2. FileRead ノードの設定
    1. ローカルディレクトリに設定する。 C:\Users\Administrator\Desktop\FileReadNode
  3. リクエストファイル名のプロパティの場所を以下のように指定します。
    FileRead ノードのプロパティを指定するためのインターフェース

バイナリコードの設定

このタスクの概要

ISO-8859-1, UTF-8, US-ASCII, Shift-JIS, EBCDIC_XML_US, EUC-JP, などの異なるエンコーディングを扱うためのバイナリコード。 Windows-1252

すべての異なるエンコーディングの符号化文字集合識別子(CCSID)は以下の通り:異なる符号化文字セット識別子のエンコーディングのスクリーンショット

入力メッセージ解析における ISO-8859-1 テキスト・ハンドリングの設定

ISO-8859-1 エンコーディングのテキストを使用するには、以下の手順に従います:

手順

  1. 基本タブに移動する:
    1. メッセージフロー設定を開く
    2. 基本タブへ
  2. 入力メッセージの解析を設定する:
    1. メッセージ符号化文字セットID(819( ISO-8859-1 の場合))を指定する。
    2. メッセージのエンコーディングをリストから選択するか、エンコーディングの数値を入力する。
      メッセージのエンコーディング:統合サーバーシステムが決定 メッセージエンコーディングのオプションを示すインターフェイス。 統合サーバー・システムによる決定
      注: 受信メッセージがASCIIまたはASCII互換エンコーディングの場合(例: ISO-8859-1UTF-8US-ASCIIShift-JISEBCDIC_XML_USEUC-JPWindows-1252、) FileOutput ノードは特定の CCSID(符号化文字セット ID)を必要とせずに転送を処理できる

Secure File Transfer プロトコル (SFTP)

このタスクの概要

SFTPサーバーに接続する手順

手順

  1. ACE でメッセージフローを開き、適切な FTP ノード ( FileInputFileOutputFileReadFileExists など) をフローにドラッグします。
  2. SFTPを設定します:
    1. プロパティ]タブで[FTP]タブを選択し、[リモート転送]チェックボックスを選択します。
    2. 転送プロトコルのプロパティのドロップダウンからSFTPを選択します。
    転送プロトコルのオプションを示すインターフェース。 SFTPがハイライトされている
  3. SFTP サーバー接続を設定します:
    1. SFTPサーバーのアドレスとポート番号を入力します: 9.30.51.177:22
  4. セキュリティ・アイデンティティ(ユーザー名とパスワードによる認証):
    このコマンドを使用して、すべてのノードにSFTP用の securityIdentity
    mqsisetdbparms -w workDir -n sftp::myidentity -u <myuserid> -p <mypassword>
    例:
    mqsisetdbparms -w C:\ACE12NODEWS\TEST_SERVER -n sftp::SFTPSERIDENTITY -u user1 -p Access2sftpuser
    置換:

    workDir 統合サーバーの作業ディレクトリ

    myidentity セキュリティ・アイデンティティの名前

    userName をSFTPサーバーのユーザー名

    password SFTPサーバーのパスワード

    App Connect Enterprise コンソールのコマンド例を示すスクリーンショット

    ファイルが置かれている SFTP サーバー上のディレクトリ( FileInput ノードの場合)またはファイルをアップロードするディレクトリ( FileOutput ノードの場合)を指定します。 例えば、ファイルの読み込みには /incoming/ 、ファイルの書き込みには /outgoing/

    SFTP エンドポイントの詳細画面:すべてのプロパティが入力された SFTP エンドポイント画面を示すインターフェイス

    注: コマンドの実行が正常に完了したら、 IBM App Connect Enterprise (ACE)で統合サーバーを再起動し、変更を反映させてください。 IBM App Connect Enterprise Toolkit で統合サーバー(例: TEST_SERVER1)を右クリックし、「再起動」を選択します。
  5. FileZilla や WinSCP のようなサードパーティツールを使ってSFTP接続をテストし、FTPの詳細(ホスト、ユーザー名、パスワード、ポート)を入力して接続する。

安全なファイル転送プロトコル

このタスクの概要

FTPSサーバーに接続する手順

手順

  1. FTPノードを選択
    IBM App Connect Enterprise でメッセージフローを開き、適切なFTPノード(File Read FileInput,FileOutput など FileExists)をフローにドラッグします
  2. FTPSを設定する:
    1. プロパティ・タブで、FTPタブを選択します。
    2. リモート転送チェックボックスを選択
    3. 転送プロトコルのプロパティのドロップダウンからFTPSを選択します。

      IBM ( App Connect Professional )において、明示的な TLS でFTPSが選択された場合、デフォルトのポートは21です

      「 TLS 」を明示的に設定した場合のデフォルトポートを表示するインターフェース
    4. 暗黙的にFTPSを選択した場合、ポートは990になります。
      TLS の暗黙的な設定におけるデフォルトポートを表示するインターフェース
    ステップ3からステップ5まで、前述のFTPと同じ手順を繰り返します。 以下の手順がFTPSにも適用できることを確認してください

IBM App Connect Enterprise での証明書の設定

このタスクの概要

証明書は通常、FTPサーバーから生成されます。 IBM App Connect Professional 通常、証明書は FTP サーバから生成され、Tools メニューの PGP Utility を使用して Studio にインポートされます。

IBM App Connect Enterprise では、証明書情報は ディレクトリ内の ファイル server.conf.yaml で設定 JVM ResourceManagerされます。 keystoreトラストストアの詳細を指定し、それに従って証明書をインポートすることができる。

ACEは、 SSL / TLS への接続を検証するために、Java KeyStore (JKS) または PKCS12 のトラストストアを使用します。

IBM App Connect Enterprise で証明書を設定する手順

手順

  1. server.conf.yaml ファイルを探す
  2. の下にキーストアとトゥルーストアを作成する。 JVM ResourceManagers
    例:

    keystoreType: 「JKS」

    keystoreFile: C:/Users/Administrator/keystore.jks

    keystorePass: <password> ( <password> を実際のキーストア・パスワードに置き換える)

    truststoreType: 「JKS」

    truststoreFile: C:/Users/Administrator/truststore.jks

    truststorePass: <password> ( <password> を実際の truststore パスワードに置き換える)

    ACE で Keystore と Truststore を作成するには、以下のエース文書を参照すること: https://www.ibm.com/docs/en/app-connect/13.0?topic=ps-viewing-setting-keystore-truststore-runtime-properties-integration-server-level
  3. 変更を加えた後、変更を反映させるために IBM App Connect Enterprise 統合サーバーを再起動してください